/*************************************************************************************************************************/ public void contract_routine(Contracts.Contract input_contract) { #if DEBUG //if (Debug_Level_1_Active) Log.PushStackInfo("FMRS_Core.contract_routine", "enter vcontract_routine(Contracts.Contract input_contract) " + input_contract.Title); if (Debug_Active) { Log.Info("contract " + input_contract.Title + " " + input_contract.ContractState.ToString()); } #endif if (HighLogic.CurrentGame.Mode != Game.Modes.CAREER) { #if DEBUG if (Debug_Active) { Log.Info("not in carreer mode, leave contract_routine(Contracts.Contract input_contract)"); } #endif return; } if (!contract_complete.ContainsKey(FlightGlobals.ActiveVessel.id)) { contract_complete.Add(FlightGlobals.ActiveVessel.id, new List <Contract>()); } contract_complete[FlightGlobals.ActiveVessel.id].Add(input_contract); #if DEBUG //if (Debug_Level_1_Active) Log.PopStackInfo("leave vcontract_routine(Contracts.Contract input_contract)"); #endif }
void OnDeclined(Contracts.Contract contract) { if (MissionControl.Instance == null) { return; } declineCost += HighLogic.CurrentGame.Parameters.Career.RepLossDeclined; declineContracts++; Log("A contract has been declined!", "QGUI"); }
//Used for initial orbital and surface survey parameter internal static DMCollectScience fetchSurveyScience(Contract.ContractPrestige c, List<CelestialBody> cR, List<CelestialBody> cUR, DMScienceContainer DMScience) { CelestialBody body; ExperimentSituations targetSituation; ScienceSubject sub; AvailablePart aPart; string name; string biome = ""; name = DMUtils.availableScience["All"].FirstOrDefault(n => n.Value == DMScience).Key; //Determine if the science part is available if applicable if (DMScience.SciPart != "None") { aPart = PartLoader.getPartInfoByName(DMScience.SciPart); if (aPart == null) return null; if (!ResearchAndDevelopment.PartModelPurchased(aPart)) return null; } body = DMUtils.nextTargetBody(c, cR, cUR); if (body == null) return null; //Make sure our experiment is OK if (DMScience.Exp == null) return null; if (!body.atmosphere && DMScience.Exp.requireAtmosphere) return null; if (((ExperimentSituations)DMScience.SitMask & ExperimentSituations.InSpaceHigh) == ExperimentSituations.InSpaceHigh && ((ExperimentSituations)DMScience.SitMask & ExperimentSituations.InSpaceLow) == ExperimentSituations.InSpaceLow) { if (rand.Next(0, 2) == 0) targetSituation = ExperimentSituations.InSpaceHigh; else targetSituation = ExperimentSituations.InSpaceLow; } else if (((ExperimentSituations)DMScience.SitMask & ExperimentSituations.InSpaceHigh) == ExperimentSituations.InSpaceHigh) targetSituation = ExperimentSituations.InSpaceHigh; else targetSituation = ExperimentSituations.InSpaceLow; if (DMUtils.biomeRelevant(targetSituation, DMScience.BioMask) && targetSituation != ExperimentSituations.SrfSplashed) { List<string> bList = DMUtils.fetchBiome(body, DMScience.Exp, targetSituation); if (bList.Count == 0) { return null; } else { biome = bList[rand.Next(0, bList.Count)]; } } //Make sure that our chosen science subject has science remaining to be gathered string subId = string.Format("{0}@{1}{2}{3}", DMScience.Exp.id, body.name, targetSituation, biome.Replace(" ", "")); if (ResearchAndDevelopment.GetSubjects().Any(s => s.id == subId)) { sub = ResearchAndDevelopment.GetSubjectByID(subId); if (sub.scientificValue < 0.5f) return null; } return new DMCollectScience(body, targetSituation, "", name, 0); }