Пример #1
0
    public override void Tick()
    {
        base.Tick();
        SM.SceneRoom room = SM.RandomRoomLevel.Singleton.LookupRoom(RoomId);
        if (null != room)
        {
            bool tmpIsEnable = true;
            foreach (var hpData in mHPEventDataList)
            {
                mCurActor = GetEventActor(hpData.mNpcId, (ENActorType)hpData.mNpcType);
                float tmpCurActorHp = 0;
                float tmpCurMaxHp   = 1000;
                if (mCurActor != null)
                {
                    tmpCurActorHp = mCurActor.HP;
                    tmpCurMaxHp   = mCurActor.MaxHP;
                }
                else
                {
                    SM.ActorRefresh actorRefuresh = room.GetActorRefreshById(hpData.mNpcId);
                    if (actorRefuresh != null)
                    {
                        tmpIsEnable = false;
                        break;
                    }
                    else
                    {
                        continue;
                    }
                }
                switch (hpData.mCompareType)
                {
                case ENCompareType.enValueLower:
                    tmpIsEnable = tmpCurActorHp < hpData.mHPValue;
                    break;

                case ENCompareType.enPercentLower:
                    tmpIsEnable = (tmpCurActorHp / tmpCurMaxHp) * 100 < hpData.mHPValue;
                    break;
//                     case ENCompareType.enValueGreater:
//                         IsEnabled = tmpCurActorHp > hpData.mHPValue;
//                         break;

//                     case ENCompareType.enPercentGreater:
//                         IsEnabled = (tmpCurActorHp / mCurActor.MaxHP) > hpData.mHPValue;
//                         break;
                default:
                    break;
                }
            }
            IsEnabled = tmpIsEnable;
        }
    }
Пример #2
0
    public override bool Execute()
    {
//        if (IsEnabled)
        {
            //刷新怪物
            //SM.ActorRefresh.RefreshCondDict.Add(mConditionID, true);
            SM.SceneRoom room = SM.RandomRoomLevel.Singleton.LookupRoom(RoomGUID);
            foreach (var refreshData in mRefreshMosterDataList)
            {
                SM.ActorRefresh actorRefuresh = room.GetActorRefreshById(refreshData.mMonsterId);
                if (actorRefuresh == null)
                {
                    continue;
                }
                actorRefuresh.SpawnMe();

                Actor sourceActor = null;
                switch (refreshData.mSwapPosType)
                {
                case ENSwapPosType.PlayerPositionOffset:
                    sourceActor = ActorManager.Singleton.MainActor;
                    break;

                case ENSwapPosType.triggerPositionOffset:
                    sourceActor = BattleArena.Singleton.m_blackBoard.GetBlackBoardActor("CurActor");
                    break;

                case ENSwapPosType.TargetActorOfTriggeringActor:
                    sourceActor = BattleArena.Singleton.m_blackBoard.GetBlackBoardActor("TargetActor");
                    break;

                case ENSwapPosType.CustomBlackboardStr:
                    sourceActor = BattleArena.Singleton.m_blackBoard.GetBlackBoardActor(refreshData.mBlackBoardActorStr);
                    break;

                case ENSwapPosType.ObjectPositionOffset:
                    sourceActor = room.GetMonsterByID(refreshData.mSwapActorId);
                    break;

                default:
                    break;
                }
                //Vector3 basePos = sourceActor.RealPos;// GetSwapBasePos(refreshData.mSwapPosType, refreshData.mSwapActorId, refreshData.mBlackBoardActorStr);
                if (sourceActor != null)
                {
                    Vector3 movePos = Vector3.zero;
                    movePos = sourceActor.RealPos + new Vector3(refreshData.mSwapPosX, 0, refreshData.mSwapPosZ);
                    actorRefuresh.m_curMonsterObj.ForceMoveToPosition(movePos);
                }
            }
        }
        return(base.Execute());
    }
Пример #3
0
    public override void Tick()
    {
        base.Tick();
        SM.SceneRoom room = SM.RandomRoomLevel.Singleton.LookupRoom(RoomId);
        if (null != room)
        {
            bool tmpIsEnabled = true;
            foreach (var mosterData in mDeadMonsterList)
            {
//                 if (!room.IsMonsterDead(mosterData.actorId))
//                 {
//                     return;
//                 }
                Actor tmpActor = null;// room.GetMonsterByID(mosterData.actorId);
                switch (mosterData.actorType)
                {
                case ENDeadActorType.enMainPlayer:
                    tmpActor = ActorManager.Singleton.MainActor;
                    break;

                case ENDeadActorType.enSpicalNpc:
                    tmpActor = room.GetMonster(mosterData.actorId);
                    break;

                default:
                    break;
                }

                bool tmpActorIsDead = false;
                if (tmpActor == null)
                {
                    SM.ActorRefresh actorRefuresh = room.GetActorRefreshById(mosterData.actorId);
                    if (actorRefuresh == null)
                    {
                        tmpActorIsDead = true;
                    }
                }
                else if (tmpActor.IsRealDead)
                {
                    tmpActorIsDead = true;
                }
                if (tmpActorIsDead)
                {
                    if (!mDeadOrderList.Contains(mosterData.actorId))
                    {
                        mDeadOrderList.Add(mosterData.actorId);
                    }
                }
                else
                {
                    tmpIsEnabled = false;
                    break;
                }
            }
            if (tmpIsEnabled)
            {
                SM.BlackBoardActorData tmpActorData = new SM.BlackBoardActorData();
                tmpActorData.roomID          = RoomId;
                tmpActorData.actorID         = mDeadOrderList[mDeadOrderList.Count - 1];
                tmpActorData.mBlackActorType = LevelBlackboard.BlackActorType.enNPC;
                mCurActor = tmpActorData;// mDeadOrderList[mDeadOrderList.Count - 1];
                IsEnabled = true;
            }
        }
    }