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']))
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']])
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
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'])))
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.')
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.')
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
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
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
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
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
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']))
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