Exemple #1
0
def generate_world(source_map, dynamic_spawns='Sparse', wildlife_spawns='Sparse', simulate_ticks=1000, combat_test=False, save=True, thread=True):
	WORLD_INFO['inittime'] = time.time()
	WORLD_INFO['start_age'] = simulate_ticks
	WORLD_INFO['dynamic_spawns'] = dynamic_spawns
	WORLD_INFO['wildlife_spawns'] = wildlife_spawns
	WORLD_INFO['real_time_of_day'] = int(round(WORLD_INFO['length_of_day']*.10))
	WORLD_INFO['seed'] = time.time()
	WORLD_INFO['combat_test'] = combat_test
	WORLD_INFO['title'] = 'Operation %s' % language.generate_scheme_title().title()
	
	random.seed(WORLD_INFO['seed'])
	
	if WORLD_INFO['dynamic_spawns'] == 'Sparse':
		WORLD_INFO['dynamic_spawn_interval'] = [350, (1000, 1200)]
	elif WORLD_INFO['dynamic_spawns'] == 'Medium':
		WORLD_INFO['dynamic_spawn_interval'] = [350, (800, 999)]
	elif WORLD_INFO['dynamic_spawns'] == 'Heavy':
		WORLD_INFO['dynamic_spawn_interval'] = [350, (600, 799)]
	else:
		WORLD_INFO['dynamic_spawn_interval'] = [-1, (600, 799)]
	
	if WORLD_INFO['wildlife_spawns'] == 'Sparse':
		WORLD_INFO['wildlife_spawn_interval'] = [2500, (770, 990)]
	elif WORLD_INFO['wildlife_spawns'] == 'Medium':
		WORLD_INFO['wildlife_spawn_interval'] = [2500, (550, 700)]
	elif WORLD_INFO['wildlife_spawns'] == 'Heavy':
		WORLD_INFO['wildlife_spawn_interval'] = [2500, (250, 445)]
	else:
		WORLD_INFO['wildlife_spawn_interval'] = [-1, (250, 445)]

	weather.change_weather()
	create_region_spawns()
	randomize_item_spawns()
	lfe.focus_on(create_player())
	
	alife.camps.create_all_camps()
	
	if thread:
		tcod.console_rect(0,0,0,WINDOW_SIZE[0],WINDOW_SIZE[1],True,flag=tcod.BKGND_DEFAULT)
		_r = Runner(simulate_ticks)
		_r.start()

		while _r.running:
			draw_world_stats()
			
			if not SETTINGS['running']:
				return False
	else:
		simulate_life(simulate_ticks)
	
	WORLD_INFO['id'] = 0
	
	if save:
		WORLD_INFO['id'] = profiles.create_world()
		save_world(create=True)
	
	logging.info('World generation complete (took %.2fs)' % (time.time()-WORLD_INFO['inittime']))
Exemple #2
0
def end_dialog(dialog_id):
	_dialog = get_dialog(dialog_id)
	
	if dialog_id in LIFE[_dialog['started_by']]['dialogs']:
		LIFE[_dialog['started_by']]['dialogs'].remove(dialog_id)
	
	if dialog_id in LIFE[_dialog['target']]['dialogs']:
		LIFE[_dialog['target']]['dialogs'].remove(dialog_id)

	if SETTINGS['controlling'] in [_dialog['started_by'], _dialog['target']]:
		lfe.focus_on(LIFE[SETTINGS['controlling']])
Exemple #3
0
def end_dialog(dialog_id):
    _dialog = get_dialog(dialog_id)

    if dialog_id in LIFE[_dialog['started_by']]['dialogs']:
        LIFE[_dialog['started_by']]['dialogs'].remove(dialog_id)

    if dialog_id in LIFE[_dialog['target']]['dialogs']:
        LIFE[_dialog['target']]['dialogs'].remove(dialog_id)

    if SETTINGS['controlling'] in [_dialog['started_by'], _dialog['target']]:
        lfe.focus_on(LIFE[SETTINGS['controlling']])
Exemple #4
0
def show_next_event():
	if not EVENTS:
		return False
	
	EVENTS.pop(0)
	gfx.refresh_view('map')
	
	if not EVENTS:
		life.focus_on(LIFE[SETTINGS['following']])
		return False
	
	return True
Exemple #5
0
def end_dialog(dialog_id):
	_dialog = get_dialog(dialog_id)
	
	if dialog_id in LIFE[_dialog['started_by']]['dialogs']:
		LIFE[_dialog['started_by']]['dialogs'].remove(dialog_id)
	
	if dialog_id in LIFE[_dialog['target']]['dialogs']:
		LIFE[_dialog['target']]['dialogs'].remove(dialog_id)

	if SETTINGS['controlling'] in [_dialog['started_by'], _dialog['target']]:
		lfe.focus_on(LIFE[SETTINGS['controlling']])
	
	logging.debug('Dialog between %s and %s is over.' % (' '.join(LIFE[_dialog['started_by']]['name']), ' '.join(LIFE[_dialog['target']]['name'])))
Exemple #6
0
def load_world(world):
    global LOADED_CHUNKS

    gfx.title('Loading...')

    LOADED_CHUNKS = {}
    WORLD_INFO['id'] = world
    maps.load_map('map', base_dir=profiles.get_world_directory(world))

    logging.debug('Loading life from disk...')
    with open(
            os.path.join(profiles.get_world_directory(WORLD_INFO['id']),
                         'life.dat'), 'r') as e:
        LIFE.update(json.loads(e.readline()))

    logging.debug('Loading items from disk...')
    with open(
            os.path.join(profiles.get_world_directory(WORLD_INFO['id']),
                         'items.dat'), 'r') as e:
        ITEMS.update(json.loads(e.readline()))

    logging.debug('Loading historic items...')
    #with open(os.path.join(profiles.get_world_directory(WORLD_INFO['id']), 'items_history.dat'), 'r') as e:
    #	ITEMS_HISTORY.update(json.loads(''.join(e.readlines())))

    maps.reset_lights()

    SETTINGS['controlling'] = None
    SETTINGS['following'] = None
    for life in LIFE.values():
        if life['dead']:
            continue

        if 'player' in life:
            SETTINGS['controlling'] = life['id']
            lfe.focus_on(life)
            break

    lfe.load_all_life()
    items.reload_all_items()

    if SETTINGS['chunk_handler']:
        SETTINGS['chunk_handler'].check_chunks(force=True)

    #logging.debug('Rendering map slices...')
    #maps.render_map_slices()

    logging.info('World loaded.')
Exemple #7
0
def load_world(world):
	global LOADED_CHUNKS
	
	gfx.title('Loading...')
	
	LOADED_CHUNKS = {}
	WORLD_INFO['id'] = world
	maps.load_map('map', base_dir=profiles.get_world_directory(world))

	logging.debug('Loading life from disk...')
	with open(os.path.join(profiles.get_world_directory(WORLD_INFO['id']), 'life.dat'), 'r') as e:
		LIFE.update(json.loads(e.readline()))

	logging.debug('Loading items from disk...')
	with open(os.path.join(profiles.get_world_directory(WORLD_INFO['id']), 'items.dat'), 'r') as e:
		ITEMS.update(json.loads(e.readline()))
	
	logging.debug('Loading historic items...')
	#with open(os.path.join(profiles.get_world_directory(WORLD_INFO['id']), 'items_history.dat'), 'r') as e:
	#	ITEMS_HISTORY.update(json.loads(''.join(e.readlines())))
	
	maps.reset_lights()
	
	SETTINGS['controlling'] = None
	SETTINGS['following'] = None
	for life in LIFE.values():
		if life['dead']:
			continue
		
		if 'player' in life:
			SETTINGS['controlling'] = life['id']
			lfe.focus_on(life)
			break
	
	lfe.load_all_life()
	items.reload_all_items()
	
	if SETTINGS['chunk_handler']:
		SETTINGS['chunk_handler'].check_chunks(force=True)
	
	#logging.debug('Rendering map slices...')
	#maps.render_map_slices()
	
	logging.info('World loaded.')
Exemple #8
0
def create_player():
	PLAYER = life.create_life('human',
		name=['Tester','Toaster'],
		position=get_spawn_point(zone_entry_point=True))
	PLAYER['stats'].update(historygen.create_background(life))
	PLAYER['player'] = True
	
	for item in BASE_ITEMS:
		life.add_item_to_inventory(PLAYER, items.create_item(item))

	SETTINGS['controlling'] = PLAYER['id']
	
	_zes_leader = alife.factions.get_faction('ZES')['members'][0]
	_m = missions.create_mission('locate_target', target=_zes_leader)
	_m_id = missions.remember_mission(PLAYER, _m)
	
	missions.change_task_description(PLAYER, _m_id, 1, 'Find ZES outpost, talk to %s' % ' '.join(LIFE[_zes_leader]['name']))
	alife.factions.add_member('Loners', SETTINGS['controlling'])
	lfe.focus_on(LIFE[SETTINGS['controlling']])
	
	return PLAYER
Exemple #9
0
def create_player():
    PLAYER = life.create_life('human',
                              name=['Tester', 'Toaster'],
                              position=get_spawn_point(zone_entry_point=True))
    PLAYER['stats'].update(historygen.create_background(life))
    PLAYER['player'] = True

    for item in BASE_ITEMS:
        life.add_item_to_inventory(PLAYER, items.create_item(item))

    SETTINGS['controlling'] = PLAYER['id']

    _zes_leader = alife.factions.get_faction('ZES')['members'][0]
    _m = missions.create_mission('locate_target', target=_zes_leader)
    _m_id = missions.remember_mission(PLAYER, _m)

    missions.change_task_description(
        PLAYER, _m_id, 1,
        'Find ZES outpost, talk to %s' % ' '.join(LIFE[_zes_leader]['name']))
    alife.factions.add_member('Loners', SETTINGS['controlling'])
    lfe.focus_on(LIFE[SETTINGS['controlling']])

    return PLAYER
Exemple #10
0
def create_player():
	PLAYER = life.create_life('human',
		name=['Tester','Toaster'],
		position=get_spawn_point(zone_entry_point=True))
	PLAYER['stats'].update(historygen.create_background(life))
	PLAYER['player'] = True
	
	for item in BASE_ITEMS:
		life.add_item_to_inventory(PLAYER, items.create_item(item))
	
	life.add_item_to_inventory(PLAYER, items.create_item('glock'))
	life.add_item_to_inventory(PLAYER, items.create_item('9x19mm magazine'))
	life.add_item_to_inventory(PLAYER, items.create_item('electric lantern'))
	life.add_item_to_inventory(PLAYER, items.create_item('aspirin'))
	
	for i in range(17):
		life.add_item_to_inventory(PLAYER, items.create_item('9x19mm round'))

	SETTINGS['controlling'] = PLAYER['id']
	
	lfe.focus_on(LIFE[SETTINGS['controlling']])
	
	return PLAYER
Exemple #11
0
def show_next_event():
	if not EVENTS:
		return False
	
	_event = None
	
	for event in EVENTS:
		if not event['delay']:
			_event = event
			break
	
	if not _event:
		return False
	
	EVENTS.remove(_event)
	gfx.refresh_view('map')
	
	if not EVENTS:
		life.focus_on(LIFE[SETTINGS['following']])
		locks.lock('camera_free', reason='No more events')
		
		return False
	
	return True
Exemple #12
0
def _execute(action):
    _struct = {}

    if 'life' in action['kwargs']:
        _struct['life'] = LIFE[action['kwargs']['life']]

    if 'add_to' in action['kwargs']:
        _struct['add_to'] = action['kwargs']['add_to']
    else:
        _struct['add_to'] = []

    if 'retrieve' in action['kwargs']:
        _struct['list'] = retrieve(action['kwargs']['retrieve'],
                                   life=_struct['life'])

    if 'store_retrieve_as' in action['kwargs']:
        _struct['store_retrieve_as'] = action['kwargs']['store_retrieve_as']

    if 'filter_by' in action['kwargs']:
        for entry in action['kwargs']['filter_by']:
            if entry in _struct['list']:
                _struct['list'].remove(entry)

    if 'matching' in action['args']:
        _struct['match_mask'] = action['kwargs']['matching']
    else:
        _struct['match_mask'] = {'id': '*'}

    if 'question' in action['kwargs']:
        _struct['question'] = action['kwargs']['question']

    if 'ask' in action['args']:
        if not _struct['list']:
            return False

        lfe.speech.start_dialog_with_question(_struct['life'],
                                              _struct['list'][0],
                                              _struct['question'])

        if 'add_to' in _struct:
            if not _struct['list'][0] in _struct['list']:
                _struct['add_to'].append(_struct['list'][0])
                print 'LOOK OUT!' * 55, _struct['add_to']

        return True

    if 'return' in action['args']:
        if 'include' in action['kwargs']:
            _struct.update(action['kwargs']['include'])

        return _struct

    if 'return_key' in action['args']:
        if 'key' in action['kwargs']:
            return _struct[action['kwargs']['key']]

    if 'return_key' in action['kwargs']:
        return _struct[action['kwargs']['return_key']]

    if 'return_function' in action['kwargs']:
        return rawparse.FUNCTION_MAP[action['kwargs']['return_function']]

    if 'function' in action['kwargs']:
        _arguments = execute(action['kwargs']['arguments'])

        if 'filter' in action['args']:
            _ret_list = []

            for key in _arguments.keys():
                if not key in action['kwargs']['arguments']['kwargs']:
                    if 'include' in action['kwargs']['arguments'][
                            'kwargs'] and key in action['kwargs']['arguments'][
                                'kwargs']['include']:
                        continue

                    del _arguments[key]

            for result in _struct['list']:
                _arguments.update({_struct['store_retrieve_as']: result})
                if not action['kwargs']['function'](**_arguments):
                    _ret_list.append(result)
                    continue

            for entry in _ret_list:
                _struct['list'].remove(entry)

            print 'filter function', _struct['list']
            return _struct['list']

    if 'get_known_alife' in action['args']:
        return _struct['life']['know'].keys()

    if 'track_alife' in action['args']:
        if not _struct['list']:
            return False

        if movement._find_alife(_struct['life'], target=_struct['list'][0]):
            if not _struct['list'][0] in _struct['add_to']:
                _struct['add_to'].append(_struct['list'][0])
                print 'FOUND HIM!!!!!!!!!!!' * 50

        lfe.focus_on(_struct['life'])
        print _struct['life']['name'], 'Tracking', LIFE[_struct['list']
                                                        [0]]['name']
        print judgement.can_trust(_struct['life'], _struct['list'][0])

        return True
Exemple #13
0
def generate_world(source_map,
                   dynamic_spawns='Sparse',
                   wildlife_spawns='Sparse',
                   simulate_ticks=1000,
                   combat_test=False,
                   save=True,
                   thread=True):
    WORLD_INFO['inittime'] = time.time()
    WORLD_INFO['start_age'] = simulate_ticks
    WORLD_INFO['dynamic_spawns'] = dynamic_spawns
    WORLD_INFO['wildlife_spawns'] = wildlife_spawns
    WORLD_INFO['real_time_of_day'] = int(
        round(WORLD_INFO['length_of_day'] * .10))
    WORLD_INFO['seed'] = time.time()
    WORLD_INFO['combat_test'] = combat_test
    WORLD_INFO['title'] = 'Operation %s' % language.generate_scheme_title(
    ).title()

    random.seed(WORLD_INFO['seed'])

    if WORLD_INFO['dynamic_spawns'] == 'Sparse':
        WORLD_INFO['dynamic_spawn_interval'] = [350, (1000, 1200)]
    elif WORLD_INFO['dynamic_spawns'] == 'Medium':
        WORLD_INFO['dynamic_spawn_interval'] = [350, (800, 999)]
    elif WORLD_INFO['dynamic_spawns'] == 'Heavy':
        WORLD_INFO['dynamic_spawn_interval'] = [350, (600, 799)]
    else:
        WORLD_INFO['dynamic_spawn_interval'] = [-1, (600, 799)]

    if WORLD_INFO['wildlife_spawns'] == 'Sparse':
        WORLD_INFO['wildlife_spawn_interval'] = [2500, (770, 990)]
    elif WORLD_INFO['wildlife_spawns'] == 'Medium':
        WORLD_INFO['wildlife_spawn_interval'] = [2500, (550, 700)]
    elif WORLD_INFO['wildlife_spawns'] == 'Heavy':
        WORLD_INFO['wildlife_spawn_interval'] = [2500, (250, 445)]
    else:
        WORLD_INFO['wildlife_spawn_interval'] = [-1, (250, 445)]

    weather.change_weather()
    create_region_spawns()
    randomize_item_spawns()
    lfe.focus_on(create_player())

    alife.camps.create_all_camps()

    if thread:
        tcod.console_rect(0,
                          0,
                          0,
                          WINDOW_SIZE[0],
                          WINDOW_SIZE[1],
                          True,
                          flag=tcod.BKGND_DEFAULT)
        _r = Runner(simulate_ticks)
        _r.start()

        while _r.running:
            draw_world_stats()

            if not SETTINGS['running']:
                return False
    else:
        simulate_life(simulate_ticks)

    WORLD_INFO['id'] = 0

    if save:
        WORLD_INFO['id'] = profiles.create_world()
        save_world(create=True)

    logging.info('World generation complete (took %.2fs)' %
                 (time.time() - WORLD_INFO['inittime']))
Exemple #14
0
def _execute(action):
    _struct = {}

    if "life" in action["kwargs"]:
        _struct["life"] = LIFE[action["kwargs"]["life"]]

    if "add_to" in action["kwargs"]:
        _struct["add_to"] = action["kwargs"]["add_to"]
    else:
        _struct["add_to"] = []

    if "retrieve" in action["kwargs"]:
        _struct["list"] = retrieve(action["kwargs"]["retrieve"], life=_struct["life"])

    if "store_retrieve_as" in action["kwargs"]:
        _struct["store_retrieve_as"] = action["kwargs"]["store_retrieve_as"]

    if "filter_by" in action["kwargs"]:
        for entry in action["kwargs"]["filter_by"]:
            if entry in _struct["list"]:
                _struct["list"].remove(entry)

    if "matching" in action["args"]:
        _struct["match_mask"] = action["kwargs"]["matching"]
    else:
        _struct["match_mask"] = {"id": "*"}

    if "question" in action["kwargs"]:
        _struct["question"] = action["kwargs"]["question"]

    if "ask" in action["args"]:
        if not _struct["list"]:
            return False

        lfe.speech.start_dialog_with_question(_struct["life"], _struct["list"][0], _struct["question"])

        if "add_to" in _struct:
            if not _struct["list"][0] in _struct["list"]:
                _struct["add_to"].append(_struct["list"][0])
                print "LOOK OUT!" * 55, _struct["add_to"]

        return True

    if "return" in action["args"]:
        if "include" in action["kwargs"]:
            _struct.update(action["kwargs"]["include"])

        return _struct

    if "return_key" in action["args"]:
        if "key" in action["kwargs"]:
            return _struct[action["kwargs"]["key"]]

    if "return_key" in action["kwargs"]:
        return _struct[action["kwargs"]["return_key"]]

    if "return_function" in action["kwargs"]:
        return rawparse.FUNCTION_MAP[action["kwargs"]["return_function"]]

    if "function" in action["kwargs"]:
        _arguments = execute(action["kwargs"]["arguments"])

        if "filter" in action["args"]:
            _ret_list = []

            for key in _arguments.keys():
                if not key in action["kwargs"]["arguments"]["kwargs"]:
                    if (
                        "include" in action["kwargs"]["arguments"]["kwargs"]
                        and key in action["kwargs"]["arguments"]["kwargs"]["include"]
                    ):
                        continue

                    del _arguments[key]

            for result in _struct["list"]:
                _arguments.update({_struct["store_retrieve_as"]: result})
                if not action["kwargs"]["function"](**_arguments):
                    _ret_list.append(result)
                    continue

            for entry in _ret_list:
                _struct["list"].remove(entry)

            print "filter function", _struct["list"]
            return _struct["list"]

    if "get_known_alife" in action["args"]:
        return _struct["life"]["know"].keys()

    if "track_alife" in action["args"]:
        if not _struct["list"]:
            return False

        if movement._find_alife(_struct["life"], target=_struct["list"][0]):
            if not _struct["list"][0] in _struct["add_to"]:
                _struct["add_to"].append(_struct["list"][0])
                print "FOUND HIM!!!!!!!!!!!" * 50

        lfe.focus_on(_struct["life"])
        print _struct["life"]["name"], "Tracking", LIFE[_struct["list"][0]]["name"]
        print judgement.can_trust(_struct["life"], _struct["list"][0])

        return True