Source code for piqueserver.core_commands.map

from piqueserver.map import check_rotation, MapNotFound
from piqueserver.commands import command, parse_maps


[docs]@command() def mapname(connection): """ Tell you what's the name of the current map /mapname """ return 'Current map: ' + connection.protocol.map_info.name
[docs]@command('showrotation') def show_rotation(connection): """ Tell you the current map rotation /showrotation """ return ", ".join(connection.protocol.get_map_rotation())
[docs]@command('map', admin_only=True) def change_planned_map(connection, *pre_maps): """ Set the next map to be loaded after current game ends and inform everyone of it /map <mapname> """ name = connection.name protocol = connection.protocol # parse seed numbering maps, _map_list = parse_maps(pre_maps) if not maps: return 'Invalid map name' planned_map = maps[0] try: protocol.planned_map = check_rotation([planned_map])[0] protocol.broadcast_chat('%s changed next map to %s' % (name, planned_map), irc=True) except MapNotFound: return 'Map %s not found' % (maps[0])
[docs]@command('rotation', admin_only=True) def change_rotation(connection, *pre_maps): """ Change the current map rotation and informs everyone on the server of it /rotation <map1> ... <mapN> """ name = connection.name protocol = connection.protocol maps, map_list = parse_maps(pre_maps) if len(maps) == 0: return 'Usage: /rotation <map1> <map2> <map3> ...' try: protocol.set_map_rotation(maps) except MapNotFound as e: return 'Invalid map in map rotation (%s)' % e.map protocol.broadcast_chat("%s changed map rotation to %s." % (name, map_list), irc=True)
[docs]@command('rotationadd', admin_only=True) def rotation_add(connection, *pre_maps): """ Append a given map to the current map rotation and informs everyone on the server of it /rotationadd <map> """ name = connection.name protocol = connection.protocol new_maps, map_list = parse_maps(pre_maps) maps = connection.protocol.get_map_rotation() map_list = ", ".join(maps) + map_list maps.extend(new_maps) try: protocol.set_map_rotation(maps) except MapNotFound as e: return 'Invalid map in map rotation (%s)' % e.map protocol.broadcast_chat("%s added %s to map rotation." % (name, " ".join(pre_maps)), irc=True)
[docs]@command('revertrotation', admin_only=True) def revert_rotation(connection): """ Invert the current map rotation /revertrotation """ protocol = connection.protocol name = connection.name maps = protocol.config['maps'] protocol.set_map_rotation(maps) protocol.irc_say("* %s reverted map rotation to %s" % (name, maps))
[docs]@command('advancemap', 'advance', admin_only=True) def advance(connection): """ Force the next map to be immediately loaded instead of waiting for the time limit to end /advancemap """ connection.protocol.advance_rotation('Map advance forced.')
[docs]@command('loadmap', admin_only=True) def load_map(connection, map): """ Instantly switches map to the specified /loadmap <mapname> """ protocol = connection.protocol try: protocol.planned_map = check_rotation([map])[0] protocol.advance_rotation() except MapNotFound: return 'Map %s not found' % (map)