Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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)));
                }
            }
        }