void OnEntityPickup(SkEntity entity)
    {
        CommonCmpt common = entity.GetComponent <CommonCmpt>();

        if (common != null)
        {
            if (common.entityProto.proto == EEntityProto.RandomNpc || common.entityProto.proto == EEntityProto.Npc)
            {
                if (!ServantLeaderCmpt.Instance.ContainsServant(common.GetComponent <NpcCmpt>()))
                {
                    DestroyEntity(entity);
                }
            }
            else             //if (common.entityProto.proto == EEntityProto.Monster)
            {
                DestroyEntity(entity);

                PeEntity Pentity = entity.GetComponent <PeEntity>();
                if (Pentity != null)
                {
                    LootItemDropPeEntity.RemovePeEntity(Pentity);
                }
            }
        }
    }
        BehaveResult Tick(Tree sender)
        {
            if (bReached && Time.time - m_Data.startLootTime > m_Data.lootTime)
            {
                mLootEntity = null;
                bReached    = false;
                EndAction(PEActionType.Leisure);
            }

            if (!bReached && mLootEntity == null)
            {
                if (!Enemy.IsNullOrInvalid(attackEnemy))
                {
                    return(BehaveResult.Failure);
                }

                List <PeEntity> entities = LootItemDropPeEntity.GetEntities(position, m_Data.LootRadius);
                if (entities.Count > 0)
                {
                    mLootEntity = LootItemDropPeEntity.GetLootEntity(position, m_Data.LootRadius);
                    mItemDrop   = mLootEntity.GetComponent <ItemDropPeEntity>();
                    if (mItemDrop == null || !mItemDrop.NpcCanFetchAll(entity.NpcCmpt.NpcPackage))
                    {
                        return(BehaveResult.Failure);
                    }

                    LootItemDropPeEntity.RemovePeEntity(mLootEntity);
                }
                else
                {
                    return(BehaveResult.Failure);
                }
            }

            if (!bReached)
            {
                if (IsReached(position, mLootEntity.peTrans.position, false, 1.0f) || Stucking())
                {
                    StopMove();
                    FaceDirection(mLootEntity.peTrans.position - position);

                    PEActionParamS param = PEActionParamS.param;
                    param.str = "Gather";
                    DoAction(PEActionType.Leisure, param);
                    mItemDrop.NpcFetchAll(entity.NpcCmpt.NpcPackage);
                    m_Data.startLootTime = Time.time;
                    bReached             = true;
                }
                else
                {
                    MoveToPosition(mLootEntity.peTrans.position, SpeedState.Run);
                }
            }

            return(BehaveResult.Running);
        }
    void OnEntityDestroy(SkEntity entity)
    {
        PeEntity peEntity = entity.GetComponent <PeEntity>();

        if (peEntity != null)
        {
            LootItemDropPeEntity.RemovePeEntity(peEntity);
            PeCreature.Instance.Destory(peEntity.Id);
        }
    }