Пример #1
0
def tick_world():
    WORLD_INFO['ticks'] += 1
    alfe.groups.get_group_relationships()

    if WORLD_INFO['real_time_of_day'] < WORLD_INFO['length_of_day']:
        WORLD_INFO['real_time_of_day'] += WORLD_INFO['time_scale']
    else:
        WORLD_INFO['real_time_of_day'] = 0
        WORLD_INFO['day'] += 1
        weather.change_weather()

    if WORLD_INFO['real_time_of_day'] >= WORLD_INFO[
            'length_of_day'] - 22.00 or WORLD_INFO[
                'real_time_of_day'] <= WORLD_INFO['length_of_day'] * .15:
        if WORLD_INFO['time_of_day'] == 'day':
            gfx.message('Night falls.')

        WORLD_INFO['time_of_day'] = 'night'
    else:
        if WORLD_INFO['time_of_day'] == 'night':
            gfx.message('The sun rises.')

        WORLD_INFO['time_of_day'] = 'day'

    if WORLD_INFO['dynamic_spawn_interval'][0] > 0:
        WORLD_INFO['dynamic_spawn_interval'][0] -= 1
    elif not WORLD_INFO['dynamic_spawn_interval'][0]:
        spawns.generate_life(random.choice(['loner', 'bandit']))

        WORLD_INFO['dynamic_spawn_interval'][0] = random.randint(
            WORLD_INFO['dynamic_spawn_interval'][1][0],
            WORLD_INFO['dynamic_spawn_interval'][1][1])

        logging.info('Reset life spawn clock: %s' %
                     WORLD_INFO['dynamic_spawn_interval'][0])

    if WORLD_INFO['wildlife_spawn_interval'][0] > 0:
        WORLD_INFO['wildlife_spawn_interval'][0] -= 1
    elif not WORLD_INFO['wildlife_spawn_interval'][0]:
        worldgen.generate_wildlife()

        WORLD_INFO['wildlife_spawn_interval'][0] = random.randint(
            WORLD_INFO['wildlife_spawn_interval'][1][0],
            WORLD_INFO['wildlife_spawn_interval'][1][1])

        logging.info('Reset wildlife spawn clock: %s' %
                     WORLD_INFO['wildlife_spawn_interval'][0])

    #situations.form_scheme()
    #situations.execute_scheme()
    alfe.factions.direct()
    core.evaluate_overwatch_mood()

    cache.scan_cache()
Пример #2
0
def tick_world():
	WORLD_INFO['ticks'] += 1
	alfe.groups.get_group_relationships()
	
	if WORLD_INFO['real_time_of_day'] < WORLD_INFO['length_of_day']:
		WORLD_INFO['real_time_of_day'] += WORLD_INFO['time_scale']
	else:
		WORLD_INFO['real_time_of_day'] = 0
		WORLD_INFO['day'] += 1
		weather.change_weather()
	
	if WORLD_INFO['real_time_of_day']>=WORLD_INFO['length_of_day']-22.00 or WORLD_INFO['real_time_of_day']<=WORLD_INFO['length_of_day']*.15:
		if WORLD_INFO['time_of_day'] == 'day':
			gfx.message('Night falls.')
		
		WORLD_INFO['time_of_day'] = 'night'
	else:
		if WORLD_INFO['time_of_day'] == 'night':
			gfx.message('The sun rises.')
		
		WORLD_INFO['time_of_day'] = 'day'
	
	if WORLD_INFO['dynamic_spawn_interval'][0]>0:
		WORLD_INFO['dynamic_spawn_interval'][0] -= 1
	elif not WORLD_INFO['dynamic_spawn_interval'][0]:
		spawns.generate_life(random.choice(['loner', 'bandit']))
			
		WORLD_INFO['dynamic_spawn_interval'][0] = random.randint(WORLD_INFO['dynamic_spawn_interval'][1][0], WORLD_INFO['dynamic_spawn_interval'][1][1])
		
		logging.info('Reset life spawn clock: %s' % WORLD_INFO['dynamic_spawn_interval'][0])
	
	if WORLD_INFO['wildlife_spawn_interval'][0]>0:
		WORLD_INFO['wildlife_spawn_interval'][0] -= 1
	elif not WORLD_INFO['wildlife_spawn_interval'][0]:
		worldgen.generate_wildlife()
			
		WORLD_INFO['wildlife_spawn_interval'][0] = random.randint(WORLD_INFO['wildlife_spawn_interval'][1][0], WORLD_INFO['wildlife_spawn_interval'][1][1])
		
		logging.info('Reset wildlife spawn clock: %s' % WORLD_INFO['wildlife_spawn_interval'][0])
	
	situations.form_scheme()
	situations.execute_scheme()
	artifacts.tick_fields()
	alfe.factions.direct()
	core.evaluate_overwatch_mood()
	
	cache.scan_cache()
Пример #3
0
def execute_scheme():
    if not WORLD_INFO['scheme']:
        return False

    _event = None

    for event in WORLD_INFO['scheme']:
        if event['time'] <= WORLD_INFO['ticks']:
            _event = event
            break

    if not _event:
        return False

    _situation = core.get_player_situation()
    _player = LIFE[SETTINGS['controlling']]

    if 'sound' in _event:
        alife.noise.create(_event['pos'], _event['volume'], _event['sound'][0],
                           _event['sound'][1])

    if 'radio' in _event and _situation['has_radio']:
        gfx.message('%s: %s' % (_event['radio'][0], _event['radio'][1]),
                    style='radio')

    if 'glitch' in _event:
        gfx.glitch_text(_event['glitch'], change_text_only=_event['change'])

    if 'life' in _event:
        _life = spawns.generate_life(_event['life']['type'],
                                     position=_event['life']['position'])[0]

        if 'injuries' in _event['life']:
            for limb in _event['life']['injuries']:
                lfe.add_wound(_life, limb, **_event['life']['injuries'][limb])

    if 'group' in _event:
        if 'stage' in _event:
            alife.groups.set_stage(LIFE[_event['member']], _event['group'],
                                   _event['stage'])

            if _event['stage'] == STAGE_RAIDING:
                alife.groups.raid(LIFE[_event['member']], _event['group'],
                                  _event['flags']['chunk_key'])

    WORLD_INFO['scheme'].remove(_event)
Пример #4
0
def execute_scheme():
	if not WORLD_INFO['scheme']:
		return False
	
	_event = None
	
	for event in WORLD_INFO['scheme']:
		if event['time'] <= WORLD_INFO['ticks']:
			_event = event
			break
	
	if not _event:
		return False
	
	_situation = core.get_player_situation()
	_player = LIFE[SETTINGS['controlling']]
	
	if 'sound' in _event:
		alife.noise.create(_event['pos'], _event['volume'], _event['sound'][0], _event['sound'][1])
	
	if 'radio' in _event and _situation['has_radio']:
		gfx.message('%s: %s' % (_event['radio'][0], _event['radio'][1]), style='radio')
	
	if 'glitch' in _event:
		gfx.glitch_text(_event['glitch'], change_text_only=_event['change'])
	
	if 'life' in _event:
		_life = spawns.generate_life(_event['life']['type'], position=_event['life']['position'])[0]
		
		if 'injuries' in _event['life']:
			for limb in _event['life']['injuries']:
				lfe.add_wound(_life, limb, **_event['life']['injuries'][limb])
	
	if 'group' in _event:
		if 'stage' in _event:
			alife.groups.set_stage(LIFE[_event['member']], _event['group'], _event['stage'])
			
			if _event['stage'] == STAGE_RAIDING:
				alife.groups.raid(LIFE[_event['member']], _event['group'], _event['flags']['chunk_key'])
	
	WORLD_INFO['scheme'].remove(_event)