private void nextStage() { if (currentStageAction == Jobs.Stage.PICKUP) { stagePickup(); } else if (StageConditions.isStagePickupWaitReady(currentStageAction, currentCrew)) { stagePickupWait(); } else if (currentStageAction == Jobs.Stage.JOURNEY) { stageHeistArrival(); } else if (currentStageAction == Jobs.Stage.HEIST_START && heistEndTick == 0) { stageHeistStart(); } else if (currentStageAction == Jobs.Stage.HEIST_START && Environment.TickCount > heistEndTick) { stageHeistWait(); } else if (StageConditions.isStageEscapeReady(currentStageAction, currentCrew)) { stageEscape(); } else if (currentStageAction == Jobs.Stage.ESCAPE) { stageEnd(); } }
public Stage(string stagename, Vector2 basespeed, List<HookPoint> hookpoints, StageConditions stageconditions, StageType stagetype, List<Obstacle> obstacles) { _stageName = stagename; _baseSpeed = basespeed; _hookPoints = hookpoints; _stageConditions = stageconditions; _stageType = stagetype; _obstacles = obstacles; }
// Main - On Tick private void onTick(object sender, EventArgs e) { // Always this.handleMessages(); this.handleSubtitles(); _iFruit.Update(); menuPool.ProcessMenus(); currentPlayerPosition = Game.Player.Character.GetOffsetInWorldCoords(new Vector3(0, 0, 0)); if (vehicleToReportStolen != null && Game.Player.Character.CurrentVehicle != null && vehicleToReportStolen == Game.Player.Character.CurrentVehicle && Environment.TickCount > reportStolenTick ) { Game.Player.Character.CurrentVehicle.IsStolen = true; vehicleToReportStolen = null; reportStolenTick = 0; } if (Game.Player.WantedLevel > 0 && this.wantedVehicleName == null) { if ( Game.Player.Character.CurrentVehicle != null && Game.Player.Character.CurrentVehicle.DisplayName != this.wantedVehicleName) { this.wantedVehicleName = Game.Player.Character.CurrentVehicle.DisplayName; this.wantedVehicleColor = Game.Player.Character.CurrentVehicle.PrimaryColor; } } this.prevWantedLevel = Game.Player.WantedLevel > 0 ? Game.Player.WantedLevel : this.prevWantedLevel; // World Management foreach (Vehicle vehicle in World.GetNearbyVehicles(Game.Player.Character, 20f)) { if (!eligibleVehicles.Contains(vehicle) && !vehicle.Driver.Exists()) { vehicle.LockStatus = VehicleLockStatus.CanBeBrokenInto; vehicle.HasAlarm = true; vehicle.NeedsToBeHotwired = true; } } // Vehicle Management if (Game.Player.Character.IsInVehicle() && !Game.Player.Character.CurrentVehicle.AlarmActive && !Game.Player.Character.CurrentVehicle.EngineRunning) { Game.Player.Character.CurrentVehicle.LockStatus = VehicleLockStatus.Unlocked; Game.Player.Character.CurrentVehicle.StartAlarm(); vehicleToReportStolen = Game.Player.Character.CurrentVehicle; reportStolenTick = Environment.TickCount + 120000; } if (Utility.IsPlayerDriving()) { vehicleOnTickUpdates(); } if (Game.Player.Character.IsInVehicle()) { Game.Player.Character.CurrentVehicle.HandbrakeOn = shouldDisableVehicle(); } if (Game.Player.Character.IsJacking) { Game.Player.Character.GetVehicleIsTryingToEnter().IsStolen = true; } // Staging if (StageConditions.isReadyForNewJob(currentStageAction, newJobStartTick)) { createNewJob(); } if (isCloseToCurrentStageLocation()) { closeToStageLocationActions(); } if (isAtCurrentStageLocation()) { nextStage(); } if (shouldSpawnCrew()) { foreach (CrewMember crewMember in Crew.Crew.SpawnCrew(this, currentJob.locationSet)) { currentCrew.Add(crewMember); } } if (StageConditions.isStageCloseSuccessReady(currentStageAction, currentStageLocation, currentPlayerPosition)) { stageCloseSuccess(); } if (StageConditions.isStageCloseFailReady(currentStageAction)) { stageCloseFail(); } if (Utility.IsPlayerDeadOrBusted() && currentStageAction != Jobs.Stage.NONE) { resetAll(); } // Cop Mechanics Game.ShowsPoliceBlipsOnRadar = showPoliceOnMap; currentCops = new List <Cop>(); foreach (Ped cop in World.GetNearbyPeds(currentPlayerPosition, 100f).Where(x => x.RelationshipGroup.GetHashCode() == -1533126372)) { currentCops.Add(new Cop(this, cop)); } // Subclass Onticks foreach (CrewMember crewMember in currentCrew) { crewMember.onTick(); } foreach (Cop cop in currentCops) { if (cop.ped.Exists()) { cop.onTick(); } } }