コード例 #1
0
 public void init(Process dsProcess)
 {
     _maxUpgradeLevel.Update(dsProcess);
     if (_maxUpgradeLevel.Current >= _upgradeLevel)
     {
         _enabled = false;
     }
 }
コード例 #2
0
        public override GameSupportResult OnUpdate(GameState state)
        {
            if (_onceFlag)
            {
                return(GameSupportResult.DoNothing);
            }

            if (this.IsFirstMap)
            {
                if (state.PlayerViewEntityIndex.Old == _camIndex && state.PlayerViewEntityIndex.Current == 1)
                {
                    _onceFlag = true;
                    Debug.WriteLine("kill the monk start");
                    return(GameSupportResult.PlayerGainedControl);
                }
            }
            else if (IsLastMap)
            {
                _monkHP.Update(state.GameProcess);

                if (_monkHP.Current <= 0 && _monkHP.Old > 0)
                {
                    Debug.WriteLine("kill the monk end");
                    _onceFlag = true;
                    return(GameSupportResult.PlayerLostControl);
                }
            }

            return(GameSupportResult.DoNothing);
        }
コード例 #3
0
        public override GameSupportResult OnUpdate(GameState state)
        {
            if (_onceFlag)
            {
                return(GameSupportResult.DoNothing);
            }

            if (IsFirstMap)
            {
                _hcStartDoorPos.Update(state.GameProcess);

                if (_hcStartDoorPos.Old.Distance(_hcStartDoorTargPos) > 0.05f &&
                    _hcStartDoorPos.Current.Distance(_hcStartDoorTargPos) <= 0.05f)
                {
                    _onceFlag = true;
                    Debug.WriteLine("bms hc mod start");
                    return(GameSupportResult.PlayerGainedControl);
                }
            }
            else if (IsLastMap)
            {
                _hcEndSpriteFlags.Update(state.GameProcess);

                if (state.TickCount >= 10 && (_hcEndSpriteFlags.Old & 0x20) == 0 &&
                    (_hcEndSpriteFlags.Current & 0x20) != 0)
                {
                    _onceFlag = true;
                    Debug.WriteLine("bms hc mod end");
                    return(GameSupportResult.PlayerLostControl);
                }
            }
            return(GameSupportResult.DoNothing);
        }
コード例 #4
0
        public override GameSupportResult OnUpdate(GameState state)
        {
            if (_onceFlag)
            {
                return(GameSupportResult.DoNothing);
            }

            if (this.IsFirstMap)
            {
                _crashButtonPos.Update(state.GameProcess);

                if (_crashButtonPos.Current.X > _crashButtonPos.Old.X && _crashButtonPos.Old.X != 0)
                {
                    Debug.WriteLine("wpd ice end");
                    _onceFlag = true;
                    return(GameSupportResult.PlayerLostControl);
                }
            }
            else if (this.IsLastMap)
            {
                _colorCorrectEnabled.Update(state.GameProcess);

                if (_colorCorrectEnabled.Current == 0 && _colorCorrectEnabled.Old == 1)
                {
                    Debug.WriteLine("wpd ee end");
                    _onceFlag = true;
                    return(GameSupportResult.PlayerLostControl);
                }
            }
            return(GameSupportResult.DoNothing);
        }
コード例 #5
0
        public override GameSupportResult OnUpdate(GameState state)
        {
            if (_onceFlag)
            {
                return(GameSupportResult.DoNothing);
            }

            if (this.IsFirstMap)
            {
                if (state.PlayerPosition.Old.BitEqualsXY(_startPos) && !state.PlayerPosition.Current.BitEqualsXY(_startPos) && !_resetFlag)
                {
                    _resetFlag = true;
                    return(GameSupportResult.PlayerGainedControl);
                }

                _freemanHP.Update(state.GameProcess);
                if (_freemanHP.Current <= 0 && _freemanHP.Old > 0)
                {
                    Debug.WriteLine("snipersep end");
                    _onceFlag = true;
                    return(GameSupportResult.PlayerLostControl);
                }
            }
            return(GameSupportResult.DoNothing);
        }
コード例 #6
0
        public override GameSupportResult OnUpdate(GameState state)
        {
            if (_onceFlag)
            {
                return(GameSupportResult.DoNothing);
            }

            if (this.IsFirstMap)
            {
                _titleCardActive.Update(state.GameProcess);
                if (_titleCardActive.Old == 1 && _titleCardActive.Current == 0)
                {
                    Debug.WriteLine("estranged2 start");
                    _onceFlag = true;
                    return(GameSupportResult.PlayerGainedControl);
                }
            }
            else if (this.IsLastMap && this._trig2Index != -1)
            {
                var newTrig2 = state.GetEntInfoByIndex(_trig2Index);

                if (newTrig2.EntityPtr == IntPtr.Zero)
                {
                    _trig2Index = -1;
                    Debug.WriteLine("estranged1 end");
                    _onceFlag           = true;
                    this.EndOffsetTicks = (int)Math.Ceiling(0.1f / state.IntervalPerTick);
                    return(GameSupportResult.PlayerLostControl);
                }
            }

            return(GameSupportResult.DoNothing);
        }
コード例 #7
0
ファイル: TE120.cs プロジェクト: thisis2838/SourceSplit
        public override GameSupportResult OnUpdate(GameState state)
        {
            if (_onceFlag)
            {
                return(GameSupportResult.DoNothing);
            }

            if (this.IsFirstMap)
            {
                if (state.PlayerViewEntityIndex.Old == this._camIndex &&
                    state.PlayerViewEntityIndex.Current == GameState.ENT_INDEX_PLAYER)
                {
                    Debug.WriteLine("te120 start");
                    _onceFlag = true;
                    return(GameSupportResult.PlayerGainedControl);
                }
            }
            else if (this.IsLastMap)
            {
                _playerLaggedMoveValue.Update(state.GameProcess);

                if (_playerLaggedMoveValue.Old == 1 && _playerLaggedMoveValue.Current == 0.3f)
                {
                    _onceFlag = true;
                    Debug.WriteLine("te120 end");
                    return(GameSupportResult.PlayerLostControl);
                }
            }
            return(GameSupportResult.DoNothing);
        }
コード例 #8
0
        public override GameSupportResult OnUpdate(GameState state)
        {
            if (_onceFlag)
            {
                return(GameSupportResult.DoNothing);
            }

            if (this.IsFirstMap)
            {
                float splitTime = state.FindOutputFireTime("teleport_trigger", 5);
                _splitTime = (splitTime == 0f) ? _splitTime : splitTime;
                if (state.CompareToInternalTimer(_splitTime, 0f, true))
                {
                    Debug.WriteLine("ggefc13 start");
                    _onceFlag = true;
                    return(GameSupportResult.PlayerGainedControl);
                }
            }
            else if (this.IsLastMap)
            {
                _heliHP.Update(state.GameProcess);

                if (_heliHP.Current <= 0 && _heliHP.Old > 0)
                {
                    Debug.WriteLine("ggefc13 end");
                    _onceFlag = true;
                    return(GameSupportResult.PlayerLostControl);
                }
            }
            return(GameSupportResult.DoNothing);
        }
コード例 #9
0
        public override GameSupportResult OnUpdate(GameState state)
        {
            if (_onceFlag)
            {
                return(GameSupportResult.DoNothing);
            }

            if (this.IsFirstMap && _trigIndex != -1)
            {
                var newTrig = state.GetEntInfoByIndex(_trigIndex);

                if (newTrig.EntityPtr == IntPtr.Zero)
                {
                    _trigIndex = -1;
                    _onceFlag  = true;
                    Debug.WriteLine("freakman1 start");
                    this.StartOffsetTicks = -7;
                    return(GameSupportResult.PlayerGainedControl);
                }
            }
            else if (this.IsLastMap)
            {
                _kleinerHP.Update(state.GameProcess);
                if (_kleinerHP.Current <= 0 && _kleinerHP.Old > 0)
                {
                    _onceFlag = true;
                    Debug.WriteLine("freakman1 end");
                    return(GameSupportResult.PlayerLostControl);
                }
            }

            return(GameSupportResult.DoNothing);
        }
コード例 #10
0
        public object Var(string id)
        {
            MemoryWatcher v = vars.FirstOrDefault((x) => x.Name == id);

            v?.Update(proc);
            return(v?.Current);
        }
コード例 #11
0
ファイル: HDTF.cs プロジェクト: thisis2838/SourceSplit
        public override GameSupportResult OnUpdate(GameState state)
        {
            _watcher.UpdateAll(state.GameProcess);

            if (_onceFlag)
            {
                return(GameSupportResult.DoNothing);
            }

            if (state.CurrentMap.ToLower() == "a0c0p1" && state.PlayerPosition.Current.DistanceXY(_startPos) <= 3f)
            {
                bool ifIntroNotDeleted = File.Exists(state.GameProcess.ReadString(state.GameOffsets.GameDirPtr, 255) + "/media/a0b0c0s0.bik");
                if (_tutResetFlag &&
                    (ifIntroNotDeleted && _isInCutscene.Current - _isInCutscene.Old == -1) ^
                    (!ifIntroNotDeleted && !_resetFlag && state.TickCount <= 1 && state.RawTickCount.Current <= 150))
                {
                    Debug.WriteLine("hdtf start");
                    _onceFlag  = true;
                    _resetFlag = true;
                    return(GameSupportResult.PlayerGainedControl);
                }
            }
            else if (IsFirstMap)
            {
                _playerLaggedMovementValue.Update(state.GameProcess);

                if (_playerLaggedMovementValue.Current == 1.0f && _playerLaggedMovementValue.Old == 0f)
                {
                    Debug.WriteLine("hdtf tutorial start");
                    return(GameSupportResult.PlayerGainedControl);
                }

                IntPtr blockerNew = state.GetEntInfoByIndex(_blockerIndex).EntityPtr;
                if (blockerNew == IntPtr.Zero && _blockerIndex != -1)
                {
                    _onceFlag     = true;
                    _blockerIndex = -1;
                    Debug.WriteLine("hdtf tutorial end");
                    _tutResetFlag = false;
                    return(GameSupportResult.PlayerLostControl);
                }
            }
            else if (this.IsLastMap)
            {
                if (_playerHP.Old > 0 && _playerHP.Current <= 0)
                {
                    _onceFlag = true;
                    Debug.WriteLine("hdtf end");
                    return(GameSupportResult.PlayerLostControl);
                }
            }

            return(GameSupportResult.DoNothing);
        }
コード例 #12
0
        public override TimerAction[] OnUpdate(Process game, MemoryWatcherList watchers)
        {
            _isSkippingCut.Update(game);
            if (_isSkippingCut.Changed && _isSkippingCut.Current)
            {
                return new TimerAction[] { TimerAction.Start }
            }
            ;

            return(null);
        }
コード例 #13
0
        public override TimerAction[] OnUpdate(Process game, MemoryWatcherList watchers)
        {
            _isSkippingCut.Update(game);
            var map = (StringWatcher)watchers["map"];

            if (_isSkippingCut.Changed && _isSkippingCut.Current &&
                (string.IsNullOrEmpty(map.Old) || map.Current.Equals("privetdr.unr", StringComparison.OrdinalIgnoreCase)))
            {
                return(new TimerAction[] { TimerAction.Start });
            }

            return(null);
        }
コード例 #14
0
        public override void OnGenericUpdate(GameState state)
        {
            if (this.IsLastMap)
            {
                _videoPlaying.Update(state.GameProcess);

                if (_videoPlaying.Old == 0 && _videoPlaying.Current == 1)
                {
                    Debug.WriteLine("ptsd end");
                    _onceFlag = true;
                    state.QueueOnNextSessionEnd = GameSupportResult.PlayerLostControl;
                }
            }
        }
コード例 #15
0
        public void Update()
        {
            if (_process == null || _process.HasExited)
            {
                _process = null;
                if (!this.TryGetGameProcess())
                {
                    return;
                }
            }

            if (_isLoading.Update(_process))
            {
                this.OnLoadingChanged?.Invoke(this, new LoadingChangedEventArgs(_isLoading.Current));
            }
        }
コード例 #16
0
        public override GameSupportResult OnUpdate(GameState state)
        {
            if (_onceFlag)
            {
                return(GameSupportResult.DoNothing);
            }

            if (this.IsFirstMap)
            {
                float splitTime = state.FindOutputFireTime("commander", "Command", "give item_suit", 4);
                _splitTime = (splitTime == 0f) ? _splitTime : splitTime;
                IntPtr trigPtr = state.GetEntInfoByIndex(_trigIndex).EntityPtr;
                if (trigPtr != IntPtr.Zero && state.CompareToInternalTimer(_splitTime, 0f, true))
                {
                    _onceFlag  = true;
                    _splitTime = 0f;
                    Debug.WriteLine("the citizen 2 start");
                    return(GameSupportResult.PlayerGainedControl);
                }
            }
            else if (this.IsLastMap)
            {
                float splitTime = state.FindFadeEndTime(-2560f);
                if (state.CompareToInternalTimer(splitTime))
                {
                    _onceFlag           = true;
                    this.EndOffsetTicks = -1;
                    Debug.WriteLine("the citizen 2 end");
                    return(GameSupportResult.PlayerLostControl);
                }
            }
            else if (state.CurrentMap.ToLower() == "sp_waterplant2")
            {
                _fadeListSize.Update(state.GameProcess);

                float splitTime = state.FindFadeEndTime(-127.5f);

                if (splitTime != 0f && _fadeListSize.Old == 0 && _fadeListSize.Current == 1)
                {
                    _onceFlag = true;
                    Debug.WriteLine("the citizen returns end");
                    return(GameSupportResult.PlayerLostControl);
                }
            }

            return(GameSupportResult.DoNothing);
        }
コード例 #17
0
        public override void OnSessionStart(GameState state)
        {
            base.OnSessionStart(state);

            _onceFlag = false;

            if (IsFirstMap)
            {
                _hcStartDoorPos = new MemoryWatcher <Vector3f>(state.GetEntityByName("tram_door_door_out") + state.GameOffsets.BaseEntityAbsOriginOffset);
                _hcStartDoorPos.Update(state.GameProcess);
            }
            else if (IsLastMap)
            {
                _hcEndSpriteFlags = new MemoryWatcher <uint>(state.GetEntityByName("spr_camera_flash") + _baseEffectsFlagsOffset);
                _hcEndSpriteFlags.Update(state.GameProcess);
            }
        }
コード例 #18
0
        public override GameSupportResult OnUpdate(GameState state)
        {
            if (_onceFlag)
            {
                return(GameSupportResult.DoNothing);
            }

            if (this.IsLastMap)
            {
                _playerMoveSpeed.Update(state.GameProcess);
                if (_playerMoveSpeed.Old != 0 && _playerMoveSpeed.Current == 0)
                {
                    _onceFlag = true;
                    Debug.WriteLine("tbg end");
                    return(GameSupportResult.PlayerLostControl);
                }
            }
            return(GameSupportResult.DoNothing);
        }
コード例 #19
0
        private void CheckForFinishedDungeon()
        {
            Pendants.Update(Emulator);
            Crystals.Update(Emulator);

            // LW dungeons
            CheckPendant("Eastern Palace", Pendant.GREEN);
            CheckPendant("Desert Palace", Pendant.BLUE);
            CheckPendant("Tower of Hera", Pendant.RED);

            // DW dungeons
            CheckCrystal("Palace of Darkness", Crystal.PalaceOfDarkness);
            CheckCrystal("Swamp Palace", Crystal.SwampPalace);
            CheckCrystal("Skull Woods", Crystal.SkullWoods);
            CheckCrystal("Thieves' Town", Crystal.ThievesTown);
            CheckCrystal("Ice Palace", Crystal.IcePalace);
            CheckCrystal("Misery Mire", Crystal.MiseryMire);
            CheckCrystal("Turtle Rock", Crystal.TurtleRock);
        }
コード例 #20
0
        public override GameSupportResult OnUpdate(GameState state)
        {
            if (_onceFlag)
            {
                return(GameSupportResult.DoNothing);
            }

            if (this.IsFirstMap)
            {
                _tinjeGuardHP.Update(state.GameProcess);
                if (_tinjeGuardHP.Current <= 0 && _tinjeGuardHP.Old > 0)
                {
                    _onceFlag = true;
                    Debug.WriteLine("tinje end");
                    return(GameSupportResult.PlayerLostControl);
                }
            }
            return(GameSupportResult.DoNothing);
        }
コード例 #21
0
ファイル: HDTF.cs プロジェクト: thisis2838/SourceSplit
        public override void OnSessionStart(GameState state)
        {
            base.OnSessionStart(state);

            if (IsLastMap)
            {
                _playerHP = new MemoryWatcher <int>(state.PlayerEntInfo.EntityPtr + _baseEntityHealthOffset);
                _watcher.Add(_playerHP);
            }
            else if (IsFirstMap)
            {
                _playerLaggedMovementValue = new MemoryWatcher <float>(state.PlayerEntInfo.EntityPtr + _basePlayerLaggedMovementOffset);
                _playerLaggedMovementValue.Update(state.GameProcess);

                _blockerIndex = state.GetEntIndexByName("blocker");
                Debug.WriteLine("blocker entity index is " + _blockerIndex);
            }

            _onceFlag = false;
        }
コード例 #22
0
        public override GameSupportResult OnUpdate(GameState state)
        {
            if (_onceFlag)
            {
                return(GameSupportResult.DoNothing);
            }

            if (this.IsFirstMap)
            {
                _counterSkin.Update(state.GameProcess);
                if (_counterSkin.Current == 10 && state.PlayerViewEntityIndex.Current == _camIndex && state.PlayerViewEntityIndex.Old == 1)
                {
                    _onceFlag = true;
                    Debug.WriteLine("toomanycrates end");
                    return(GameSupportResult.PlayerLostControl);
                }
            }

            return(GameSupportResult.DoNothing);
        }
コード例 #23
0
        private void CheckForItems()
        {
            SwappableInventory.Update(Emulator);
            if (SwappableInventory.Changed)
            {
                // were we just given the fake flute?
                // NOTE: this doesn't check for the real flute, i.e. when you are able to access the duck, because -finding- the flute is the more important issue.
                if ((SwappableInventory.Current & Randomizer.InventorySwap.FakeFlute) == Randomizer.InventorySwap.FakeFlute)
                {
                    Split?.Invoke(this, new SplitEventArgs(currentState, "Flute", true));
                }
            }

            SwappableInventory2.Update(Emulator);
            if (SwappableInventory2.Changed)
            {
                // were we just given the bow?
                if ((SwappableInventory2.Current & Randomizer.InventorySwap2.Bow) == Randomizer.InventorySwap2.Bow)
                {
                    Split?.Invoke(this, new SplitEventArgs(currentState, "Bow", true));
                }
            }

            Gloves.Update(Emulator);
            if (Gloves.Changed && Gloves.Current == 2)
            {
                Split?.Invoke(this, new SplitEventArgs(currentState, "Titan's Mitt", true));
            }

            Boots.Update(Emulator);
            if (Boots.Changed && Boots.Current > 0)
            {
                Split?.Invoke(this, new SplitEventArgs(currentState, "Pegasus Boots", true));
            }

            Hammer.Update(Emulator);
            if (Hammer.Changed && Hammer.Current > 0)
            {
                Split?.Invoke(this, new SplitEventArgs(currentState, "Hammer", true));
            }
        }
コード例 #24
0
        public override GameSupportResult OnUpdate(GameState state)
        {
            if (_onceFlag)
            {
                return(GameSupportResult.DoNothing);
            }

            if (this.IsLastMap)
            {
                _nihiDead.Update(state.GameProcess);

                if (!_nihiDead.Old && _nihiDead.Current)
                {
                    _onceFlag = true;
                    Debug.WriteLine("hls end");
                    return(GameSupportResult.PlayerLostControl);
                }
            }

            return(GameSupportResult.DoNothing);
        }
コード例 #25
0
        public override GameSupportResult OnUpdate(GameState state)
        {
            if (_onceFlag)
            {
                return(GameSupportResult.DoNothing);
            }

            if (this.IsLastMap)
            {
                _crosshairSuppressed.Update(state.GameProcess);

                if (!_crosshairSuppressed.Old && _crosshairSuppressed.Current)
                {
                    _onceFlag = true;
                    Debug.WriteLine("porto crosshair detected");
                    return(GameSupportResult.PlayerLostControl);
                }
            }

            return(GameSupportResult.DoNothing);
        }
コード例 #26
0
        public override GameSupportResult OnUpdate(GameState state)
        {
            if (_onceFlag)
            {
                return(GameSupportResult.DoNothing);
            }

            if (this.IsLastMap)
            {
                _fadeListSize.Update(state.GameProcess);

                float splitTime = state.FindFadeEndTime(-2560f, 0, 0, 0);

                if (splitTime != 0f && _fadeListSize.Old == 0 && _fadeListSize.Current == 1)
                {
                    Debug.WriteLine("terminal 7 end");
                    _onceFlag = true;
                    return(GameSupportResult.PlayerLostControl);
                }
            }
            return(GameSupportResult.DoNothing);
        }
コード例 #27
0
        public override GameSupportResult OnUpdate(GameState state)
        {
            if (_onceFlag)
            {
                return(GameSupportResult.DoNothing);
            }

            float splitTime = 0f;

            if (this.IsLastMap)
            {
                _elevatorPos.Update(state.GameProcess);
                if (_elevatorPos.Current.Z >= 3760)
                {
                    splitTime = state.FindOutputFireTime("client_command", 10);
                }
            }
            else
            {
                splitTime = state.FindOutputFireTime("*command*", "Command", "*map *", 10);
            }

            if (splitTime != 0f)
            {
                _splitTime = splitTime;
            }

            if (state.CompareToInternalTimer(_splitTime, 0f, false, true))
            {
                _splitTime = 0f;
                Debug.WriteLine("portal still alive " + (!this.IsLastMap ? "split" : "end"));
                _onceFlag = true;
                state.QueueOnNextSessionEnd = this.IsLastMap ? GameSupportResult.PlayerLostControl : GameSupportResult.ManualSplit;
            }

            return(GameSupportResult.DoNothing);
        }
コード例 #28
0
ファイル: Hooks.cs プロジェクト: LRFLEW/LiveSplit.Empathy
        public void Update()
        {
            try
            {
                if (_empathy != null && _empathy.HasExited)
                {
                    _memory.Clear();
                    _parent.On_Loading(false);
                    _empathy = null;
                }

                if (_empathy == null)
                {
                    Process[] processes = Process.GetProcessesByName("Empathy-Win64-Shipping");
                    _empathy = processes.Length == 0 ? null : processes[0];
                    AddHooks(_empathy);
                }

                if (_empathy != null)
                {
                    _memory.UpdateAll(_empathy);
                    _cutscene = _empathy.ReadValue <UInt32>(_hook + 0x10);
                    if (_cutscene != 0)
                    {
                        _wmvStatus.Update(_empathy);
                    }
                }
            }
            catch
            {
                // Sometimes reads or writes fail due to race conditions.
                // Treat these exceptions as an exit event.
                _memory.Clear();
                _parent.On_Loading(false);
                _empathy = null;
            }
        }
コード例 #29
0
 public void init(Process dsProcess)
 {
     _memWatcher.Update(dsProcess);
     _enabled = !(((Convert.ToByte(_memWatcher.Current) >> _bitOffset) & 1) == 1);
 }
コード例 #30
0
        public override GameSupportResult OnUpdate(GameState state)
        {
            StartOffsetTicks = EndOffsetTicks = 0;

            if (_onceFlag)
            {
                return(GameSupportResult.DoNothing);
            }

            if (this.IsLastMap)
            {
                _nihiHP.Update(state.GameProcess);

                if (_nihiHP.Current <= 0 && _nihiHP.Old > 0)
                {
                    return(DefaultEnd("black mesa end"));
                }

                if (_nihiSplitCommand.BValue)
                {
                    _nihiPhaseCounter.Update(state.GameProcess);

                    if (_nihiPhaseCounter.Current - _nihiPhaseCounter.Old == 1 && _nihiPhaseCounter.Old != 0)
                    {
                        Debug.WriteLine("black mesa nihilanth phase " + _nihiPhaseCounter.Old + " end");
                        return(GameSupportResult.PlayerLostControl);
                    }
                }
            }
            else if (_ebEndCommand.BValue && state.CurrentMap.ToLower() == _ebEndMap)
            {
                if (state.PlayerViewEntityIndex.Current == _ebCamIndex && state.PlayerViewEntityIndex.Old == 1)
                {
                    return(DefaultEnd("bms eb end"));
                }
            }
            else if ((_xenStartCommand.BValue || _xenSplitCommand.BValue) && state.CurrentMap.ToLower() == _xenStartMap)
            {
                if (state.PlayerViewEntityIndex.Current == 1 && state.PlayerViewEntityIndex.Old == _xenCamIndex)
                {
                    _onceFlag = true;
                    Debug.WriteLine("bms xen start");

                    GameSupportResult result = GameSupportResult.DoNothing;

                    if (_xenStartCommand.BValue && _getGlobalNameFuncPtr != IntPtr.Zero)
                    {
                        if (_roHandler.CallFunctionString("LC2XEN", _getGlobalNameFuncPtr) == uint.MaxValue)
                        {
                            if (_xenStartCommand.IValue == 1)
                            {
                                StartOffsetTicks = -_xenStartTick;
                            }
                            result = GameSupportResult.PlayerGainedControl;
                        }
                    }

                    return(_xenSplitCommand.BValue ? GameSupportResult.ManualSplit : result);
                }
            }

            return(GameSupportResult.DoNothing);
        }