battlefield.py (2798B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\behaviors\utility\battlefield.py 2 from ballpark.fleets.fleet_types import SUPPORTED_FLEET_TYPES 3 from behaviors.utility.awareness import get_fleet_awareness 4 from behaviors.utility.entity_groups import get_entity_group_member_ids 5 from ccpProfile import TimedFunction 6 import logging 7 logger = logging.getLogger(__name__) 8 9 def get_npc_cost_by_group_id(task, entity_group_id, spawn_table_id): 10 if not entity_group_id: 11 return 0 12 member_ids = get_entity_group_member_ids(task, entity_group_id) 13 return task.context.entityLocation.GetNpcFleetReporter().get_fleet_cost_for_item_ids(spawn_table_id, member_ids) 14 15 16 def get_player_cost_for_item_ids(task, item_ids): 17 return sum(task.context.entityLocation.GetPlayerFleetReporter().get_fleet_cost_by_item_ids(item_ids).values()) 18 19 20 def get_player_fleet_reporter(task): 21 return task.context.entityLocation.GetPlayerFleetReporter() 22 23 24 def get_npc_fleet_reporter(task): 25 return task.context.entityLocation.GetNpcFleetReporter() 26 27 28 def generate_player_fleet_report(task, spawn_pool_id): 29 try: 30 return get_player_fleet_reporter(task).generate(spawn_pool_id) 31 except: 32 logger.exception('failed to generate a player fleet report') 33 raise 34 35 36 def get_total_fleet_points(task, spawn_pool_id, spawn_table_id): 37 try: 38 awareness = get_fleet_awareness(task, spawn_pool_id) 39 total_npc_fleet_cost = get_npc_fleet_reporter(task).get_total_fleet_points(awareness, spawn_table_id, spawn_pool_id) 40 return total_npc_fleet_cost 41 except: 42 logger.exception('failed to get the total npc fleet points') 43 raise 44 45 46 @TimedFunction('behaviors::utility::battlefield::get_match_result') 47 def get_match_result(task, spawn_table_id, fleet_type, player_report, spawn_point_multiplier, support_points, supported_fleet_points, entity_group_id_by_fleet_type): 48 fleet_report = player_report.fleet_by_type[fleet_type] 49 player_fleet_cost = fleet_report.fleet_cost 50 if supported_fleet_points > 0 and fleet_type in SUPPORTED_FLEET_TYPES: 51 support_fleet_contribution = int(player_fleet_cost / float(supported_fleet_points) * support_points) 52 else: 53 support_fleet_contribution = 0 54 player_fleet_cost = int((fleet_report.fleet_cost + support_fleet_contribution) * spawn_point_multiplier) 55 entity_group_id = entity_group_id_by_fleet_type.get(fleet_type) 56 if not entity_group_id: 57 npc_fleet_cost = 0 58 else: 59 npc_fleet_cost = get_npc_cost_by_group_id(task, entity_group_id, spawn_table_id) 60 match_result = {'fleet_type': fleet_type, 61 'player_fleet_points': player_fleet_cost, 62 'npc_fleet_points': npc_fleet_cost, 63 'item_ids': fleet_report.item_ids} 64 return match_result