Skip to content
This repository has been archived by the owner on Jul 8, 2023. It is now read-only.

Crash [Live dora tiles can't be less than 0] #160

Open
Nihisil opened this issue Dec 8, 2020 · 1 comment
Open

Crash [Live dora tiles can't be less than 0] #160

Nihisil opened this issue Dec 8, 2020 · 1 comment

Comments

@Nihisil
Copy link
Contributor

Nihisil commented Dec 8, 2020

Bots played on commit: 1e4d477

Seed to reproduce:

15996451505448234089
2020-11-24_03_16_38.log-Traceback (most recent call last):
2020-11-24_03_16_38.log-  File "bots_battle.py", line 47, in main
2020-11-24_03_16_38.log-    manager.play_game()
2020-11-24_03_16_38.log-  File "/app/game/bots_battle/game_manager.py", line 105, in play_game
2020-11-24_03_16_38.log-    results = self.play_round()
2020-11-24_03_16_38.log-  File "/app/game/bots_battle/game_manager.py", line 435, in play_round
2020-11-24_03_16_38.log-    meld, discard_option = other_client.player.try_to_call_meld(tile, is_kamicha_discard)
2020-11-24_03_16_38.log-  File "/app/game/player.py", line 240, in try_to_call_meld
2020-11-24_03_16_38.log-    return self.ai.try_to_call_meld(tile, is_kamicha_discard)
2020-11-24_03_16_38.log-  File "/app/game/ai/main.py", line 126, in try_to_call_meld
2020-11-24_03_16_38.log-    meld, discard_option = self.current_strategy.try_to_call_meld(tile_136, is_kamicha_discard, tiles_136)
2020-11-24_03_16_38.log-  File "/app/game/ai/strategies/main.py", line 184, in try_to_call_meld
2020-11-24_03_16_38.log-    chosen_meld_dict = self._find_best_meld_to_open(tile, possible_melds, new_tiles, closed_hand, tile)
2020-11-24_03_16_38.log-  File "/app/game/ai/strategies/main.py", line 405, in _find_best_meld_to_open
2020-11-24_03_16_38.log-    selected_tile = self.player.ai.hand_builder.choose_tile_to_discard(after_meld=True)
2020-11-24_03_16_38.log-  File "/app/game/ai/hand_builder.py", line 47, in choose_tile_to_discard
2020-11-24_03_16_38.log-    discard_options, threatening_players = self.player.ai.defence.mark_tiles_danger_for_threats(discard_options)
2020-11-24_03_16_38.log-  File "/app/game/ai/defence/main.py", line 482, in mark_tiles_danger_for_threats
2020-11-24_03_16_38.log-    discard_options = self.calculate_danger_borders(discard_options, threatening_player, threatening_players)
2020-11-24_03_16_38.log-  File "/app/game/ai/defence/main.py", line 206, in calculate_danger_borders
2020-11-24_03_16_38.log-    threatening_player_hand_cost = threatening_player.get_assumed_hand_cost(tile_136)
2020-11-24_03_16_38.log-  File "/app/game/ai/defence/enemy_analyzer.py", line 161, in get_assumed_hand_cost
2020-11-24_03_16_38.log-    return self._calculate_assumed_hand_cost_for_riichi(tile_136)
2020-11-24_03_16_38.log-  File "/app/game/ai/defence/enemy_analyzer.py", line 272, in _calculate_assumed_hand_cost_for_riichi
2020-11-24_03_16_38.log-    assert live_dora_tiles >= 0, "Live dora tiles can't be less than 0"
2020-11-24_03_16_38.log-AssertionError: Live dora tiles can't be less than 0
@Nihisil
Copy link
Contributor Author

Nihisil commented Oct 23, 2021

Проблема в том, что shouminkan неправильно сериализируется в тенховский формат и из-за этого called tile добавляется в revealed_tiles дважды.

Возможно дело в этой строчке:

Нужно собрать больше примеров с самой тенхи.

Баг не критичный потому что он не в логике бота, а в сериализаторе локальных игр.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant