def destroy_area(self, area_name, playername):
        """Destroy an entire area! TODO: whoa nelly, they want to destroy a
        whole area! We should really make sure that's what they want by adding
        an extra game state that blocks all actions until they confirm. """
        self.log.warning('%s is attempting to destroy area %s.' % (playername, area_name))
        area = self.get_area(area_name)
        if not area:
            return 'Area %s doesn\'t exist.\n' % area_name
        if self.default_location and self.default_location.area == area:
            self.default_location = None
        for player in self.player_list.values():
            if player.location and (player.location.area.name == area.name):
                player.update_output('You are wisked to safety as the world collapses around you.\n')
                player.location.remove_char(player)
                player.location = self.default_location
            if player.mode and (player.mode.name == 'BuildMode'):
                if player.mode.edit_area and (player.mode.edit_area.name == area_name):
                    player.mode.edit_area = None
                    player.mode.edit_object = None
                    if playername != player.name:
                        player.update_output('The area you were working on was just nuked by %s.\n' % 
                                                                            playername.capitalize())
            if player.last_mode and (player.last_mode.name == 'BuildMode'):
                if player.last_mode.edit_area and (player.last_mode.edit_area.name == area_name):
                    player.last_mode.edit_area = None
                    player.last_mode.edit_object = None
                    if playername != player.name:
                        player.update_output('The area you were working on was just nuked by %s.\n' %
                                                                            playername.capitalize())
        item_keys = area.items.keys()
        for item in item_keys:
            self.log.debug(area.destroy_item(item))
        script_keys = area.scripts.keys()
        for script in script_keys:
            self.log.debug(area.destroy_script(script))
        npc_keys = area.npcs.keys()
        for npc in npc_keys:
            self.log.debug(area.destroy_npc(npc))
        room_keys = area.rooms.keys()
        self.log.debug('About to destroy the rooms.')
        for room in room_keys:
            self.log.debug(area.destroy_room(room))
        self.log.debug('Should have destroyed the rooms')
        area.destruct()
        del self.areas[area.name]
        area.name = None
        self.log.info((playername, area_name) % '%s destroyed area %s.')
        return 'Area %s was successfully destroyed. I hope you meant to do that.\n' % area_name
    
# ************************ Player Functions ************************
# Here exist all the functions that the world uses to manage the players
# it contains.
dataset/ETHPy150Open shinymud/ShinyMUD/src/shinymud/lib/world.py/World.destroy_area/swapped operands of `%`