public void init(Process dsProcess) { _maxUpgradeLevel.Update(dsProcess); if (_maxUpgradeLevel.Current >= _upgradeLevel) { _enabled = false; } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
public object Var(string id) { MemoryWatcher v = vars.FirstOrDefault((x) => x.Name == id); v?.Update(proc); return(v?.Current); }
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); }
public override TimerAction[] OnUpdate(Process game, MemoryWatcherList watchers) { _isSkippingCut.Update(game); if (_isSkippingCut.Changed && _isSkippingCut.Current) { return new TimerAction[] { TimerAction.Start } } ; return(null); }
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); }
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; } } }
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)); } }
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); }
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); } }
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); }
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); }
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); }
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; }
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); }
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)); } }
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); }
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); }
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); }
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); }
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; } }
public void init(Process dsProcess) { _memWatcher.Update(dsProcess); _enabled = !(((Convert.ToByte(_memWatcher.Current) >> _bitOffset) & 1) == 1); }
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); }