def desires_group(life, group_id): if life['group']: return wants_to_abandon_group(life, life['group'], with_new_group_in_mind=group_id) if judgement.judge_group(life, group_id)>get_minimum_group_score(life): return True return False
def get_jobs(life, group_id): _group = get_group(life, group_id) _jobs = [] _leader = LIFE[_group['leader']] if not has_camp(group_id): _nearest_camp = camps.get_nearest_known_camp(_leader) if _leader['known_camps']: _j = jobs.create_job(_leader, 'Raid', gist='start_raid', description='Raid camp %s.' % _nearest_camp['id']) _pos = lfe.get_current_chunk(_leader)['pos'] _chunk_key = lfe.get_current_chunk_id(_leader) jobs.add_task(_j, '0', 'announce_to_group', action.make_small_script(function='announce_to_group', kwargs={'group_id': group_id, 'gist': 'announce_group_job', 'message': jobs.get_job(_j)['description'], 'job_id': _j}), player_action=action.make_small_script(function='always'), description='Gather group members.') jobs.add_task(_j, '1', 'move_to_chunk', action.make_small_script(function='travel_to_position', kwargs={'pos': _pos}), player_action=action.make_small_script(function='is_in_chunk', kwargs={'chunk_key': _chunk_key}), description='Travel to position %s, %s' % (_pos[0], _pos[1]), delete_on_finish=False) jobs.add_task(_j, '2', 'wait_for_number_of_group_members_in_chunk', action.make_small_script(function='number_of_alife_in_chunk_matching', kwargs={'amount': 2, 'chunk_key': _chunk_key, 'matching': {'group': _leader['group']}}), description='Wait until everyone arrives.') #jobs.add_task(_j, '3', 'talk', # action.make_small_script(function='travel_to_position', # kwargs={'pos': chunks.get_nearest_chunk_in_list(_leader['pos'], camps.get_camp(_nearest_camp['id'])['reference'])}), # requires=['1'], # delete_on_finish=False) _jobs.append(_j) if len(_leader['known_groups'])>1: _lowest = {'score': 0, 'group': None} for group_id in [g for g in _leader['known_groups'] if not g==_leader['group']]: _score = judgement.judge_group(_leader, group_id) if not _lowest['group'] or _score < _lowest['score']: _lowest['score'] = _score _lowest['group'] = group_id print 'RAID', _lowest else: print 'ony one' return _jobs
def desires_group(life, group_id): if life['group']: return wants_to_abandon_group(life, life['group'], with_new_group_in_mind=group_id) if judgement.judge_group(life, group_id) > get_minimum_group_score(life): return True return False
def get_minimum_group_score(life): if life['group']: return judgement.judge_group(life, life['group']) return 0
def get_jobs(life, group_id): _group = get_group(life, group_id) _jobs = [] _leader = LIFE[_group['leader']] if not has_camp(group_id): _nearest_camp = camps.get_nearest_known_camp(_leader) if _leader['known_camps']: _j = jobs.create_job(_leader, 'Raid', gist='start_raid', description='Raid camp %s.' % _nearest_camp['id']) _pos = lfe.get_current_chunk(_leader)['pos'] _chunk_key = lfe.get_current_chunk_id(_leader) jobs.add_task( _j, '0', 'announce_to_group', action.make_small_script(function='announce_to_group', kwargs={ 'group_id': group_id, 'gist': 'announce_group_job', 'message': jobs.get_job(_j)['description'], 'job_id': _j }), player_action=action.make_small_script(function='always'), description='Gather group members.') jobs.add_task( _j, '1', 'move_to_chunk', action.make_small_script(function='travel_to_position', kwargs={'pos': _pos}), player_action=action.make_small_script( function='is_in_chunk', kwargs={'chunk_key': _chunk_key}), description='Travel to position %s, %s' % (_pos[0], _pos[1]), delete_on_finish=False) jobs.add_task(_j, '2', 'wait_for_number_of_group_members_in_chunk', action.make_small_script( function='number_of_alife_in_chunk_matching', kwargs={ 'amount': 2, 'chunk_key': _chunk_key, 'matching': { 'group': _leader['group'] } }), description='Wait until everyone arrives.') #jobs.add_task(_j, '3', 'talk', # action.make_small_script(function='travel_to_position', # kwargs={'pos': chunks.get_nearest_chunk_in_list(_leader['pos'], camps.get_camp(_nearest_camp['id'])['reference'])}), # requires=['1'], # delete_on_finish=False) _jobs.append(_j) if len(_leader['known_groups']) > 1: _lowest = {'score': 0, 'group': None} for group_id in [ g for g in _leader['known_groups'] if not g == _leader['group'] ]: _score = judgement.judge_group(_leader, group_id) if not _lowest['group'] or _score < _lowest['score']: _lowest['score'] = _score _lowest['group'] = group_id print 'RAID', _lowest else: print 'ony one' return _jobs