Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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