def make_target_surrender(entity): _last_seen_at = entity['ai']['life_memory'][ entity['ai']['nearest_target']]['last_seen_at'] movement.walk_to_position(entity, _last_seen_at[0], _last_seen_at[1], zones.get_active_astar_map(), zones.get_active_weight_map())
def _search_for_target(entity, target_id): _nodes = flags.get_flag(entity, 'search_nodes') if not _nodes: flags.delete_flag(entity, 'search_nodes') entities.trigger_event(entity, 'target_search_failed', target_id=target_id) return _node_list = _nodes.keys() _node_list.sort() _node_x, _node_y = _nodes[_node_list[0]][0] _distance = numbers.distance(movement.get_position(entity), (_node_x, _node_y)) if _distance <= 15 and life.can_see_position(entity, (_node_x, _node_y)): _nodes[_node_list[0]].remove((_node_x, _node_y)) if not _nodes[_node_list[0]]: del _nodes[_node_list[0]] else: movement.walk_to_position(entity, _node_x, _node_y, zones.get_active_astar_map(), zones.get_active_weight_map())
def handle_raid(entity, camp_id): entity['movement']['override_speed'] = 2 #60 * 1 ai_factions.FACTIONS[entity['faction']]['money'] -= get_attack_cost( entity, camp_id) movement.walk_to_position(entity, camp_id[0], camp_id[1], zones.get_active_astar_map(), zones.get_active_weight_map())
def find_cover(entity): _squad = entities.get_entity(ai_factions.FACTIONS[entity['ai']['faction']]['squads'][entity['ai']['squad']]) _cover_position = ai_squad_director.get_cover_position(_squad, entity['_id']) if not _cover_position or not numbers.distance(movement.get_position(entity), _cover_position): entities.trigger_event(entity, 'finish_turn') return movement.walk_to_position(entity, _cover_position[0], _cover_position[1], zones.get_active_astar_map(), zones.get_active_weight_map())
def find_push_position(entity): _squad = entities.get_entity(ai_factions.FACTIONS[entity['ai']['faction']]['squads'][entity['ai']['squad']]) _x, _y = movement.get_position(entity) _push_position = ai_squad_director.get_push_position(_squad, entity['_id']) if not _push_position: return #if not numbers.distance((_x, _y), _push_position) and not entity['ai']['visible_targets']: # entity['ai']['meta']['has_lost_target'] = True movement.walk_to_position(entity, _push_position[0], _push_position[1], zones.get_active_astar_map(), zones.get_active_weight_map())
def find_cover(entity): _squad = entities.get_entity(ai_factions.FACTIONS[entity['ai']['faction']] ['squads'][entity['ai']['squad']]) _cover_position = ai_squad_director.get_cover_position( _squad, entity['_id']) if not _cover_position or not numbers.distance( movement.get_position(entity), _cover_position): entities.trigger_event(entity, 'finish_turn') return movement.walk_to_position(entity, _cover_position[0], _cover_position[1], zones.get_active_astar_map(), zones.get_active_weight_map())
def find_push_position(entity): _squad = entities.get_entity(ai_factions.FACTIONS[entity['ai']['faction']] ['squads'][entity['ai']['squad']]) _x, _y = movement.get_position(entity) _push_position = ai_squad_director.get_push_position(_squad, entity['_id']) if not _push_position: return #if not numbers.distance((_x, _y), _push_position) and not entity['ai']['visible_targets']: # entity['ai']['meta']['has_lost_target'] = True movement.walk_to_position(entity, _push_position[0], _push_position[1], zones.get_active_astar_map(), zones.get_active_weight_map())
def handle_movement_order(x, y): global WALK_PATH, WALK_DEST if not is_squad_member_selected() or (x, y) in zones.get_active_solids({}, ignore_calling_entity=True): return False _entity = get_selected_squad_member() movement.walk_to_position(_entity, x, y, zones.get_active_astar_map(), zones.get_active_weight_map()) WALK_PATH = _entity['movement']['path']['positions'] WALK_DEST = _entity['movement']['path']['destination'] settings.set_tick_mode('normal') return True
def _get_item(entity, item_id, hold=False, weight=None): _item = entities.get_entity(item_id) _x, _y = movement.get_position(_item) _distance = numbers.distance(movement.get_position(entity), (_x, _y)) if weight: ai.set_meta_weight(entity, weight, 10*numbers.clip(_distance/30.0, 0, 1)) if _distance: movement.walk_to_position(entity, _x, _y, zones.get_active_astar_map(), zones.get_active_weight_map(), smp=True) else: if hold: life.get_and_hold_item(entity, item_id) else: life.get_and_store_item(entity, item_id)
def find_melee_position(entity): _target = entity['ai']['nearest_target'] _x, _y = entity['ai']['life_memory'][_target]['last_seen_at'] _closest_pos = {'pos': None, 'distance': 0} _solids = zones.get_active_solids(entity, ignore_entities=[_target]) for x, y in [(_x-1, _y), (_x+1, _y), (_x, _y-1), (_x, _y+1), (_x-1, _y-1), (_x+1, _y-1), (_x-1, _y+1), (_x+1, _y+1)]: if (x, y) in _solids: continue _distance = numbers.distance(movement.get_position(entity), (x, y)) if not _closest_pos['pos'] or _distance < _closest_pos['distance']: _closest_pos['distance'] = _distance _closest_pos['pos'] = (x, y) movement.walk_to_position(entity, _closest_pos['pos'][0], _closest_pos['pos'][1], zones.get_active_astar_map(), zones.get_active_weight_map())
def handle_movement_order(x, y): global WALK_PATH, WALK_DEST if not is_squad_member_selected() or (x, y) in zones.get_active_solids( {}, ignore_calling_entity=True): return False _entity = get_selected_squad_member() movement.walk_to_position(_entity, x, y, zones.get_active_astar_map(), zones.get_active_weight_map()) WALK_PATH = _entity['movement']['path']['positions'] WALK_DEST = _entity['movement']['path']['destination'] settings.set_tick_mode('normal') return True
def _get_item(entity, item_id, hold=False, weight=None): _item = entities.get_entity(item_id) _x, _y = movement.get_position(_item) _distance = numbers.distance(movement.get_position(entity), (_x, _y)) if weight: ai.set_meta_weight(entity, weight, 10 * numbers.clip(_distance / 30.0, 0, 1)) if _distance: movement.walk_to_position(entity, _x, _y, zones.get_active_astar_map(), zones.get_active_weight_map(), smp=True) else: if hold: life.get_and_hold_item(entity, item_id) else: life.get_and_store_item(entity, item_id)
def find_melee_position(entity): _target = entity['ai']['nearest_target'] _x, _y = entity['ai']['life_memory'][_target]['last_seen_at'] _closest_pos = {'pos': None, 'distance': 0} _solids = zones.get_active_solids(entity, ignore_entities=[_target]) for x, y in [(_x - 1, _y), (_x + 1, _y), (_x, _y - 1), (_x, _y + 1), (_x - 1, _y - 1), (_x + 1, _y - 1), (_x - 1, _y + 1), (_x + 1, _y + 1)]: if (x, y) in _solids: continue _distance = numbers.distance(movement.get_position(entity), (x, y)) if not _closest_pos['pos'] or _distance < _closest_pos['distance']: _closest_pos['distance'] = _distance _closest_pos['pos'] = (x, y) movement.walk_to_position(entity, _closest_pos['pos'][0], _closest_pos['pos'][1], zones.get_active_astar_map(), zones.get_active_weight_map())
def handle_raid(entity, camp_id): entity['movement']['override_speed'] = 2#60 * 1 ai_factions.FACTIONS[entity['faction']]['money'] -= get_attack_cost(entity, camp_id) movement.walk_to_position(entity, camp_id[0], camp_id[1], zones.get_active_astar_map(), zones.get_active_weight_map())
def make_target_surrender(entity): _last_seen_at = entity["ai"]["life_memory"][entity["ai"]["nearest_target"]]["last_seen_at"] movement.walk_to_position( entity, _last_seen_at[0], _last_seen_at[1], zones.get_active_astar_map(), zones.get_active_weight_map() )