Closed Cryolite closed 11 months ago
Here is another example of an unjustified error.
Log logs.2023-09-02-13-11-44.zip
Expected behavior
{"type":"start_kyoku","bakaze":"S","dora_marker":"9m","kyoku":1,"honba":1,"kyotaku":0,"oya":0,"scores":[34900,32100,22400,10600],"tehais":[["S","7m","5m","2s","F","1m","8p","9m","8m","3p","2m","1m","7s"],["8p","4m","6m","8p","2p","S","N","8m","8s","7p","S","5s","8p"],["4m","2m","5m","6s","3m","5s","2p","7s","7m","9$
{"type":"tsumo","actor":0,"pai":"1s"}
{"type":"dahai","actor":0,"pai":"S","tsumogiri":false},"1m","1m","2m","5m","7m","8m","9m","3p","8p","1s","2s","7s","F"
{"type":"pon","actor":1,"target":0,"pai":"S","consumed":["S","S"]}
{"type":"dahai","actor":1,"pai":"N","tsumogiri":false}
{"type":"tsumo","actor":2,"pai":"E"}
{"type":"dahai","actor":2,"pai":"E","tsumogiri":true}
{"type":"tsumo","actor":3,"pai":"9s"}
{"type":"dahai","actor":3,"pai":"E","tsumogiri":false}
{"type":"tsumo","actor":0,"pai":"2s"}
{"type":"dahai","actor":0,"pai":"F","tsumogiri":false},"1m","1m","2m","5m","7m","8m","9m","3p","8p","1s","2s","2s","7s"
{"type":"tsumo","actor":1,"pai":"C"}
{"type":"dahai","actor":1,"pai":"C","tsumogiri":true}
{"type":"tsumo","actor":2,"pai":"3m"}
{"type":"dahai","actor":2,"pai":"C","tsumogiri":false}
{"type":"tsumo","actor":3,"pai":"C"}
{"type":"dahai","actor":3,"pai":"C","tsumogiri":true}
{"type":"tsumo","actor":0,"pai":"3s"}
{"type":"dahai","actor":0,"pai":"2s","tsumogiri":false},"1m","1m","2m","5m","7m","8m","9m","3p","8p","1s","2s","3s","7s"
{"type":"tsumo","actor":1,"pai":"3p"}
{"type":"dahai","actor":1,"pai":"8s","tsumogiri":false}
{"type":"tsumo","actor":2,"pai":"C"}
{"type":"dahai","actor":2,"pai":"C","tsumogiri":true}
{"type":"tsumo","actor":3,"pai":"6p"}
{"type":"dahai","actor":3,"pai":"F","tsumogiri":false}
{"type":"tsumo","actor":0,"pai":"1m"}
{"type":"dahai","actor":0,"pai":"8p","tsumogiri":false},"1m","1m","1m","2m","5m","7m","8m","9m","3p","1s","2s","3s","7s"
{"type":"tsumo","actor":1,"pai":"7s"}
{"type":"dahai","actor":1,"pai":"7s","tsumogiri":true}
{"type":"tsumo","actor":2,"pai":"E"}
{"type":"dahai","actor":2,"pai":"E","tsumogiri":true}
{"type":"tsumo","actor":3,"pai":"N"}
{"type":"dahai","actor":3,"pai":"N","tsumogiri":true}
{"type":"tsumo","actor":0,"pai":"1p"}
{"type":"dahai","actor":0,"pai":"7s","tsumogiri":false},"1m","1m","1m","2m","5m","7m","8m","9m","1p","3p","1s","2s","3s"
{"type":"tsumo","actor":1,"pai":"2p"}
{"type":"dahai","actor":1,"pai":"5s","tsumogiri":false}
{"type":"tsumo","actor":2,"pai":"5m"}
{"type":"dahai","actor":2,"pai":"9s","tsumogiri":false}
{"type":"tsumo","actor":3,"pai":"6s"}
{"type":"dahai","actor":3,"pai":"9s","tsumogiri":false}
{"type":"tsumo","actor":0,"pai":"N"}
{"type":"dahai","actor":0,"pai":"5m","tsumogiri":false},"1m","1m","1m","2m","N","7m","8m","9m","1p","3p","1s","2s","3s"
{"type":"chi","actor":1,"target":0,"pai":"5m","consumed":["4m","6m"]}
{"type":"dahai","actor":1,"pai":"8m","tsumogiri":false}
{"type":"tsumo","actor":2,"pai":"8m"}
{"type":"dahai","actor":2,"pai":"2p","tsumogiri":false}
{"type":"pon","actor":1,"target":2,"pai":"2p","consumed":["2p","2p"]}
{"type":"dahai","actor":1,"pai":"3p","tsumogiri":false}
{"type":"tsumo","actor":2,"pai":"S"}
{"type":"dahai","actor":2,"pai":"S","tsumogiri":true}
{"type":"tsumo","actor":3,"pai":"5p"}
{"type":"dahai","actor":3,"pai":"W","tsumogiri":false}
{"type":"tsumo","actor":0,"pai":"4m"}
{"type":"dahai","actor":0,"pai":"4m","tsumogiri":true},"1m","1m","1m","2m","7m","8m","9m","1p","3p","1s","2s","3s","N"
{"type":"tsumo","actor":1,"pai":"P"}
{"type":"dahai","actor":1,"pai":"P","tsumogiri":true}
{"type":"tsumo","actor":2,"pai":"W"}
{"type":"dahai","actor":2,"pai":"W","tsumogiri":true}
{"type":"tsumo","actor":3,"pai":"4p"}
{"type":"dahai","actor":3,"pai":"4p","tsumogiri":true}
{"type":"tsumo","actor":0,"pai":"2p"}
{"type":"dahai","actor":0,"pai":"N","tsumogiri":false},"1m","1m","1m","2m","7m","8m","9m","1p","2p","3p","1s","2s","3s"
{"type":"tsumo","actor":1,"pai":"2m"}
{"type":"dahai","actor":1,"pai":"2m","tsumogiri":true}
{"type":"tsumo","actor":2,"pai":"3m"}
{"type":"dahai","actor":2,"pai":"3m","tsumogiri":true}
{"type":"tsumo","actor":3,"pai":"W"}
{"type":"dahai","actor":3,"pai":"W","tsumogiri":true}
{"type":"tsumo","actor":0,"pai":"P"} ===> Player 0 returns {"type": "hora", "actor": 0, "target": 2, "pai": "3m"}
{"type":"ryukyoku","deltas":[-12000,4000,4000,4000],"reason":"error"}
{"type":"end_kyoku"}
In the above example, despite Player 0 meeting the conditions to declare hora
at the point of {"type":"dahai","actor":2,"pai":"3m","tsumogiri":true}, the system does not pause nor wait for Player 0's output but proceeds to Player 0's tsumo
. As a result, this leads to an inconsistency.
@Cryolite Thanks for the report! I checked the first game log with the following code. Seems like it is incorrectly treated as a furiten. I will use a debugger later to find out the detail.
It's 同巡内フリテン. Player1 is waiting for 9m and E. So he cannot win with E in the same cycle as when he ignored 9m.
Oops, I'm sorry for taking up your time. It's completely my fault.
Describe the bug As stated in the title.
Log The log folder is attached as a .zip file to this bug report.
Expected behavior The following is an excerpt from
mjai_log.json
related to the round where the error occurred. Note that after the log of each dahai by Player 1, I provide the Player 1's hand and the meldings (副露) immediately following the dahai.As described above, Player 1 declares
hora
at the end of this round. However, this is flagged as an error. Since 'E' is the round wind, there is a valid hand and 1 han (飜), and it's a legitimate declaration of a win. This win declaration should be correctly accepted.