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()