public void OnPlayerUseWorldItemSecondary(object dialogResult) { WIListResult result = (WIListResult)dialogResult; switch (result.SecondaryResult) { case "Up": if (HasUpperFloor && PowerSource.HasPower && MissionCondition.CheckCondition(State.UpperFloorCondition)) { TargetElevator.SendToStopIndex(State.StopIndex + 1); } break; case "Down": if (HasLowerFloor && PowerSource.HasPower && MissionCondition.CheckCondition(State.LowerFloorCondition)) { TargetElevator.SendToStopIndex(State.StopIndex - 1); } break; case "Call": if (HasLowerFloor && PowerSource.HasPower && MissionCondition.CheckCondition(State.LowerFloorCondition)) { TargetElevator.SendToStopIndex(State.StopIndex); } break; default: break; } }
protected IEnumerator CheckConditionOverTime() { //wait for a second because missions may need to update in response to leaving this location double waitUntil = Frontiers.WorldClock.AdjustedRealTime + 2.5f; while (Frontiers.WorldClock.AdjustedRealTime < waitUntil) { yield return(null); } //see if our mission conditions are met if (MissionCondition.CheckCondition(State.Condition)) { //create a spawner that follows the player around //this will ensure that even if the location is unloaded //the character will still be spawned Player.Local.CharacterSpawner.AddSpawnRequest(State.Request); if (State.FinishOnSpawn) { Finish(); } } mCheckingConditionOverTime = false; yield break; }
public override void PopulateOptionsList(List <WIListOption> options, List <string> message) { if (!FindElevator()) { return; } if (gElevatorUpOption == null) { gElevatorUpOption = new WIListOption("Elevator Up", "Up"); //gElevatorUpOption.ObexFont = true; gElevatorDownOption = new WIListOption("Elevator Down", "Up"); //gElevatorDownOption.ObexFont = true; gElevatorCallOption = new WIListOption("Call Elevator", "Call"); //gElevatorCallOption.ObexFont = true; } if (HasUpperFloor) { gElevatorUpOption.Disabled = !(PowerSource.HasPower && TargetElevator.PlayerIsOnElevator && MissionCondition.CheckCondition(State.UpperFloorCondition)); options.Add(gElevatorUpOption); if (gElevatorUpOption.Disabled) { Debug.Log("upper disabled. has power? " + PowerSource.HasPower.ToString() + " player on elevator? " + TargetElevator.PlayerIsOnElevator.ToString() + " condition? " + MissionCondition.CheckCondition(State.UpperFloorCondition).ToString() + " " + State.StopIndex.ToString()); } } if (HasLowerFloor) { gElevatorDownOption.Disabled = !(PowerSource.HasPower && !TargetElevator.PlayerIsOnElevator && !MissionCondition.CheckCondition(State.LowerFloorCondition)); options.Add(gElevatorDownOption); if (gElevatorDownOption.Disabled) { Debug.Log("lower disabled. has power? " + PowerSource.HasPower.ToString() + " player on elevator? " + TargetElevator.PlayerIsOnElevator.ToString() + " condition? " + MissionCondition.CheckCondition(State.LowerFloorCondition).ToString() + " " + State.StopIndex.ToString()); } } gElevatorCallOption.Disabled = !(PowerSource.HasPower && TargetElevator.CurrentStopIndex != State.StopIndex && MissionCondition.CheckCondition(State.CallElevatorCondition) && !TargetElevator.PlayerIsOnElevator); if (gElevatorCallOption.Disabled) { Debug.Log("call disabled. has power? " + PowerSource.HasPower.ToString() + " already on floor? " + (TargetElevator.CurrentStopIndex == State.StopIndex).ToString() + " condition? " + MissionCondition.CheckCondition(State.CallElevatorCondition).ToString() + " " + State.StopIndex.ToString()); } options.Add(gElevatorCallOption); gElevatorUpOption.Disabled = false; gElevatorDownOption.Disabled = false; gElevatorCallOption.Disabled = false; }