protected override bool Generate() //System.Type contractType, Contract.ContractPrestige difficulty, int seed, State state) { KourageousTouristsAddOn.printDebug("entered"); targetBody = selectNextCelestialBody(); if (targetBody == null) { return(false); } chosenAnomaly = chooseAnomaly(targetBody); if (chosenAnomaly == null) { return(false); } this.numTourists = UnityEngine.Random.Range(2, 5); KourageousTouristsAddOn.printDebug("num tourists: " + numTourists); for (int i = 0; i < this.numTourists; i++) { ProtoCrewMember tourist = CrewGenerator.RandomCrewMemberPrototype(ProtoCrewMember.KerbalType.Tourist); this.tourists.Add(tourist); KourageousTouristsAddOn.printDebug("generated: " + tourist.name); // TODO: Add support for gender for 1.3 build KerbalTourParameter itinerary = new KerbalTourParameter(tourist.name, tourist.gender); // TODO: Add difficulty multiplier itinerary.FundsCompletion = 25000.0; itinerary.ReputationCompletion = 0.0f; itinerary.ReputationFailure = 0.0f; itinerary.ScienceCompletion = 0.0f; this.AddParameter(itinerary); KerbalDestinationParameter dstParameter = new KerbalDestinationParameter( targetBody, FlightLog.EntryType.Land, tourist.name ); dstParameter.FundsCompletion = 1000.0f; dstParameter.FundsFailure = 0.0f; dstParameter.ReputationCompletion = 0.0f; dstParameter.ReputationFailure = 0.0f; dstParameter.ScienceCompletion = 0.0f; /*dstParameter.NestToParent (itinerary); * dstParameter.CreateID (); * dstParameter.AddParameter (new Contracts.Parameters.LandOnBody (targetBody));*/ itinerary.AddParameter(dstParameter); KourageousAnomalyParameter anomalyParameter = new KourageousAnomalyParameter( targetBody, tourist.name, chosenAnomaly.name, chosenAnomaly.anomalyDescription ); anomalyParameter.FundsCompletion = 1300.0; anomalyParameter.FundsFailure = 0.0; anomalyParameter.ReputationCompletion = 1.0f; anomalyParameter.ReputationFailure = 1.0f; anomalyParameter.ScienceCompletion = 0.0f; itinerary.AddParameter(anomalyParameter); } GenerateHashString(); base.SetExpiry(); base.SetScience(0.0f, targetBody); base.SetDeadlineYears(1, targetBody); base.SetReputation(2, 5, targetBody); base.SetFunds( 3000 * chosenAnomaly.payoutModifier, 9000 * chosenAnomaly.payoutModifier, 21000 * chosenAnomaly.payoutModifier, targetBody); return(true); }
protected override bool Generate() //System.Type contractType, Contract.ContractPrestige difficulty, int seed, State state) { Log.dbg("entered KourageousWalkContract Generate"); targetBody = selectNextCelestialBody(); if (targetBody == null) { return(false); } this.numTourists = UnityEngine.Random.Range(1, 5); Log.dbg("num tourists: {0}", numTourists); for (int i = 0; i < this.numTourists; i++) { ProtoCrewMember tourist = CrewGenerator.RandomCrewMemberPrototype(ProtoCrewMember.KerbalType.Tourist); tourists.Add(tourist); Log.dbg("generated: {0}", tourist.name); // TODO: Add support for gender for 1.3 build KerbalTourParameter itinerary = new KerbalTourParameter(tourist.name, tourist.gender); // TODO: Add difficulty multiplier itinerary.FundsCompletion = 25000.0; itinerary.ReputationCompletion = 0.0f; itinerary.ReputationFailure = 0.0f; itinerary.ScienceCompletion = 0.0f; this.AddParameter(itinerary); KerbalDestinationParameter dstParameter = new KerbalDestinationParameter( targetBody, FlightLog.EntryType.Land, tourist.name ); dstParameter.FundsCompletion = 1000.0f; dstParameter.FundsFailure = 0.0f; dstParameter.ReputationCompletion = 0.0f; dstParameter.ReputationFailure = 0.0f; dstParameter.ScienceCompletion = 0.0f; /*dstParameter.NestToParent (itinerary); * dstParameter.CreateID (); * dstParameter.AddParameter (new Contracts.Parameters.LandOnBody (targetBody));*/ itinerary.AddParameter(dstParameter); KourageousWalkParameter walkParameter = new KourageousWalkParameter(targetBody, tourist.name); walkParameter.FundsCompletion = 3000.0; walkParameter.FundsFailure = 0.0; walkParameter.ReputationCompletion = 0.0f; walkParameter.ReputationFailure = 0.0f; walkParameter.ScienceCompletion = 0.0f; itinerary.AddParameter(walkParameter); } GenerateHashString(); base.SetExpiry(); base.SetScience(0.0f, targetBody); base.SetDeadlineYears(1, targetBody); base.SetReputation(2, 5, targetBody); base.SetFunds(2000, 7000, 18000, targetBody); return(true); }
public void touristUpdate() { if (ContractSystem.Instance == null) { return; } if (ContractSystem.Instance.GetActiveContractCount() <= 0) { return; } Contract[] currentContracts = ContractSystem.Instance.GetCurrentActiveContracts <TourismContract>(); for (int i = 0; i < currentContracts.Length; i++) { Contract c = currentContracts[i]; if (c == null) { continue; } if (c.ContractState != Contract.State.Active) { continue; } var activeParams = c.AllParameters.Where(a => a.GetType() == typeof(KerbalTourParameter) && a.State == ParameterState.Incomplete).ToList(); int l = activeParams.Count; for (int j = 0; j < l; j++) { KerbalTourParameter p = activeParams[j] as KerbalTourParameter; if (p == null) { continue; } if (p.State != ParameterState.Incomplete) { continue; } if (p.kerbalName != protoCrew.name) { continue; } var destinationParams = p.AllParameters.Where(a => a.GetType() == typeof(KerbalDestinationParameter) && a.State == ParameterState.Incomplete).ToList(); int e = destinationParams.Count; for (int k = 0; k < e; k++) { KerbalDestinationParameter d = destinationParams[k] as KerbalDestinationParameter; if (d == null) { continue; } if (d.State != ParameterState.Incomplete) { continue; } if (d.kerbalName != protoCrew.name) { continue; } touristParams.Add(d.Title); } } var geeParams = c.AllParameters.Where(a => a.GetType() == typeof(KerbalGeeAdventureParameter) && a.State == ParameterState.Incomplete).ToList(); l = geeParams.Count; for (int j = 0; j < l; j++) { KerbalGeeAdventureParameter g = geeParams[j] as KerbalGeeAdventureParameter; if (g == null) { continue; } if (g.State != ParameterState.Incomplete) { continue; } if (g.kerbalName != protoCrew.name) { continue; } ReachDestination destination = g.GetParameter <ReachDestination>(); if (destination == null) { continue; } if (destination.Destination == null) { continue; } ReachSituation situation = g.GetParameter <ReachSituation>(); if (situation == null) { continue; } string article = getArticle(situation.Situation); touristParams.Add(string.Format("Pass out from gee forces {0}\n{1} at {2}", article, ReachSituation.GetTitleStringShort(situation.Situation), Localizer.Format("<<1>>", destination.Destination.displayName))); } } }