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