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

group.py (2957B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\behaviors\conditions\group.py
      2 from ballpark.entities.entitygroup import INVALID_ID
      3 from behaviors.blackboards.scopes import EntityGroupScope
      4 from behaviors.groups.mixin import GroupTaskMixin
      5 from behaviors.tasks import Task
      6 from behaviors.utility.entity_groups import is_entity_group_initial_spawning_complete
      7 from ccpProfile import TimedFunction
      8 
      9 class IsMemberInEntityGroup(Task, GroupTaskMixin):
     10 
     11     @TimedFunction('behaviors::conditions::group::IsMemberTypeIdPartOfGroup::OnEnter')
     12     def OnEnter(self):
     13         memberId = self.GetLastBlackboardValue(self.attributes.memberIdAddress)
     14         isMemberInGroup = memberId is not None and self.IsMember(memberId)
     15         self.SetStatusToSuccessIfTrueElseToFailed(isMemberInGroup)
     16 
     17 
     18 class IsMemberTypeIdPartOfGroup(Task, GroupTaskMixin):
     19 
     20     @TimedFunction('behaviors::conditions::group::IsMemberTypeIdPartOfGroup::OnEnter')
     21     def OnEnter(self):
     22         self.SetStatusToFailed()
     23         if self._IsAnyMemberOfGroupOfGivenType():
     24             self.SetStatusToSuccess()
     25 
     26     def _IsAnyMemberOfGroupOfGivenType(self):
     27         typeId = self.attributes.typeId
     28         if typeId is None:
     29             return False
     30         memberIds = self.GetMemberIdList()
     31         for itemId in memberIds:
     32             memberTypeId = self.context.ballpark.inventory2.GetItem(itemId).typeID
     33             if memberTypeId == typeId:
     34                 return True
     35 
     36         return False
     37 
     38 
     39 class IsOtherEntityGroupBlackboardValueTrue(Task):
     40 
     41     @TimedFunction('behaviors::conditions::group::IsOtherEntityGroupBlackboardValueTrue::OnEnter')
     42     def OnEnter(self):
     43         self.SetStatusToFailed()
     44         memberId = self.GetLastBlackboardValue(self.attributes.memberIdAddress)
     45         groupId = self.context.groupManager.FindGroupIDForItemID(memberId)
     46         if groupId == INVALID_ID:
     47             return
     48         blackboard = self.context.blackboardManager.GetBlackboard(EntityGroupScope(groupId))
     49         value = blackboard.GetLastMessageValue(self.attributes.messageName)
     50         self.SetStatusToSuccessIfTrueElseToFailed(value)
     51 
     52 
     53 class IsAnyGroupMemberAggressed(Task, GroupTaskMixin):
     54 
     55     @TimedFunction('behaviors::conditions::group::IsAnyGroupMemberAggressed::OnEnter')
     56     def OnEnter(self):
     57         for memberId in self.GetMemberIdList():
     58             memberObjectState = self.context.ballpark.dogmaLM.aggressionLM.GetObjectState(memberId)
     59             if memberObjectState.IsAggressed():
     60                 self.SetStatusToSuccess()
     61                 return
     62 
     63         self.SetStatusToFailed()
     64 
     65 
     66 class IsGroupInitialSpawningComplete(Task, GroupTaskMixin):
     67 
     68     @TimedFunction('behaviors::conditions::group::IsGroupInitialSpawningComplete::OnEnter')
     69     def OnEnter(self):
     70         if is_entity_group_initial_spawning_complete(self, self.context.myEntityGroupId):
     71             self.SetStatusToSuccess()
     72             return
     73         self.SetStatusToFailed()