NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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