'Implement the command.
blue/red - vertical roots
yellow/green - horizontal roots'

def func(self):

    if (not self.arglist):
        self.caller.msg('What    do    you    want    to    move,    and    in    what    direction?')
        return
    if ('root' in self.arglist):
        self.arglist.remove('root')
    if (not (len(self.arglist) > 1)):
        self.caller.msg('You    must    define    which    colour    of    root    you    want    to    move,    and    in    which    direction.')
        return
    color = self.arglist[0].lower()
    direction = self.arglist[1].lower()
    root_pos = self.obj.db.root_pos
    if (color not in root_pos):
        self.caller.msg('No    such    root    to    move.')
        return
    if (color == 'red'):
        if (direction == 'left'):
            root_pos[color] = max((-1), (root_pos[color] - 1))
            self.caller.msg('You    shift    the    reddish    root    to    the    left.')
            if ((root_pos[color] != 0) and (root_pos[color] == root_pos['blue'])):
                root_pos['blue'] += 1
                self.caller.msg('The    root    with    blue    flowers    gets    in    the    way    and    is    pushed    to    the    right.')
        elif (direction == 'right'):
            root_pos[color] = min(1, (root_pos[color] + 1))
            self.caller.msg('You    shove    the    reddish    root    to    the    right.')
            if ((root_pos[color] != 0) and (root_pos[color] == root_pos['blue'])):
                root_pos['blue'] -= 1
                self.caller.msg('The    root    with    blue    flowers    gets    in    the    way    and    is    pushed    to    the    left.')
        else:
            self.caller.msg('You    cannot    move    the    root    in    that    direction.')
    elif (color == 'blue'):
        if (direction == 'left'):
            root_pos[color] = max((-1), (root_pos[color] - 1))
            self.caller.msg('You    shift    the    root    with    small    blue    flowers    to    the    left.')
            if ((root_pos[color] != 0) and (root_pos[color] == root_pos['red'])):
                root_pos['red'] += 1
                self.caller.msg('The    reddish    root    is    to    big    to    fit    as    well,    so    that    one    falls    away    to    the    left.')
        elif (direction == 'right'):
            root_pos[color] = min(1, (root_pos[color] + 1))
            self.caller.msg('You    shove    the    root    adorned    with    small    blue    flowers    to    the    right.')
            if ((root_pos[color] != 0) and (root_pos[color] == root_pos['red'])):
                root_pos['red'] -= 1
                self.caller.msg('The    thick    reddish    root    gets    in    the    way    and    is    pushed    back    to    the    left.')
        else:
            self.caller.msg('You    cannot    move    the    root    in    that    direction.')
    elif (color == 'yellow'):
        if (direction == 'up'):
            root_pos[color] = max((-1), (root_pos[color] - 1))
            self.caller.msg('You    shift    the    root    with    small    yellow    flowers    upwards.')
            if ((root_pos[color] != 0) and (root_pos[color] == root_pos['green'])):
                root_pos['green'] += 1
                self.caller.msg('The    green    weedy    root    falls    down.')
        elif (direction == 'down'):
            root_pos[color] = min(1, (root_pos[color] + 1))
            self.caller.msg('You    shove    the    root    adorned    with    small    yellow    flowers    downwards.')
            if ((root_pos[color] != 0) and (root_pos[color] == root_pos['green'])):
                root_pos['green'] -= 1
                self.caller.msg('The    weedy    green    root    is    shifted    upwards    to    make    room.')
        else:
            self.caller.msg('You    cannot    move    the    root    in    that    direction.')
    elif (color == 'green'):
        if (direction == 'up'):
            root_pos[color] = max((-1), (root_pos[color] - 1))
            self.caller.msg('You    shift    the    weedy    green    root    upwards.')
            if ((root_pos[color] != 0) and (root_pos[color] == root_pos['yellow'])):
                root_pos['yellow'] += 1
                self.caller.msg('The    root    with    yellow    flowers    falls    down.')
        elif (direction == 'down'):
            root_pos[color] = min(1, (root_pos[color] + 1))
            self.caller.msg('You    shove    the    weedy    green    root    downwards.')
            if ((root_pos[color] != 0) and (root_pos[color] == root_pos['yellow'])):
                root_pos['yellow'] -= 1
                self.caller.msg('The    root    with    yellow    flowers    gets    in    the    way    and    is    pushed    upwards.')
        else:
            self.caller.msg('You    cannot    move    the    root    in    that    direction.')
    self.obj.db.root_pos = root_pos
    if (listvalues(root_pos).count(0) == 0):
        self.obj.db.button_exposed = True
        self.caller.msg('Holding    aside    the    root    you    think    you    notice    something    behind    it    ...')
