def internal_attack(request, game_id, player_no, cell_no, civ, num_committed): cell_no = int(cell_no) g = Game.objects.get(id=int(game_id)) board = StandardBoard(g, 1) build_board_data(board) p = g.__getattribute__("player_" + player_no) if not internal_war_ruler(board, cell_no, "ruler-" + civ, player_no): return False if not g.current_turn == int(player_no): return False hand = Hand.objects.filter(player=p, turn_no=1, game=g).get() if not hand.batch_remove("temple", num_committed): return False hand.save() g.state = "INTERNAL|" + civ + "|" + str(cell_no) + "|" + num_committed g.waiting_for = _get_internal_defender(g, board, cell_no, civ) g.current_turn = player_no g.save() board.save() update_browsers(game_id) return game_state_json(request, game_id, player_no)
def _get_internal_war_info(board, player_no, civ_type): war_info = [] for cell_no, cell in enumerate(board): if internal_war_ruler(board, cell_no, "ruler-" + civ_type, player_no): kingdom_no = board.data[cell_no]["adjacent_kingdoms"][0] for defender_ruler, _, defender_cell in board.pieces_by_region[kingdom_no]["rulers"]: if defender_ruler == "ruler-" + civ_type: break war_info.append( [ cell_no, len(board.data[cell_no]["adjacent_temples"]), len(board.data[defender_cell]["adjacent_temples"]), ] ) return war_info