From 7ea0533956e3fd240555f5f471677a162660e76c Mon Sep 17 00:00:00 2001 From: Tom Forwood Date: Sat, 10 Mar 2018 10:46:49 +0000 Subject: [PATCH] Kerbal 1.4 and localization --- .gitignore | 3 + .../StationScience/Parts/StnSciCyclo.cfg | 70 ++-- .../Parts/StnSciExperiment1.cfg | 62 +-- .../Parts/StnSciExperiment2.cfg | 62 +-- .../Parts/StnSciExperiment3.cfg | 62 +-- .../Parts/StnSciExperiment4.cfg | 62 +-- .../Parts/StnSciExperiment5.cfg | 60 +-- .../Parts/StnSciExperiment6.cfg | 60 +-- .../StationScience/Parts/StnSciKib.cfg | 68 ++-- .../StationScience/Parts/StnSciKibJr.cfg | 82 ++-- .../StationScience/Parts/StnSciLab.cfg | 102 ++--- .../StationScience/Parts/StnSciSpectro.cfg | 58 +-- .../StationScience/Parts/StnSciZoo.cfg | 114 +++--- .../StationScience/Plugins/StationScience.dll | Bin 48128 -> 44032 bytes .../StationScience/Resources/Bioproducts.cfg | 1 + .../StationScience/Resources/Eurekas.cfg | 1 + .../StationScience/Resources/Experiments.cfg | 370 +++++++++--------- .../StationScience/Resources/Kibbal.cfg | 1 + .../StationScience/Resources/Kuarqs.cfg | 3 +- .../StationScience/StationScience.version | 14 +- .../GameData/StationScience/english.cfg | 222 +++++++++++ SampleAnalyzer.cs | 49 +-- StationExperiment.cs | 121 +++--- StationScience.csproj | 8 +- StationScienceModule.cs | 40 +- StnSciContract.cs | 8 +- StnSciParameters.cs | 17 +- 27 files changed, 982 insertions(+), 738 deletions(-) create mode 100644 Kerbal Space Program/GameData/StationScience/english.cfg diff --git a/.gitignore b/.gitignore index befe306..55e774b 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,6 @@ /obj/Debug /Kerbal Space Program/StationScience.zip /Properties/AssemblyInfo.cs +/bin/Release +/.vs/StationScience/v15/Server/sqlite3 +/obj/Release diff --git a/Kerbal Space Program/GameData/StationScience/Parts/StnSciCyclo.cfg b/Kerbal Space Program/GameData/StationScience/Parts/StnSciCyclo.cfg index 7baaf39..2ae9027 100644 --- a/Kerbal Space Program/GameData/StationScience/Parts/StnSciCyclo.cfg +++ b/Kerbal Space Program/GameData/StationScience/Parts/StnSciCyclo.cfg @@ -1,34 +1,34 @@ PART { - name = StnSciCyclo - module = Part - author = ethernet - rescaleFactor = 1 - PhysicsSignificance = -1 - node_stack_top4294827692 = 0,4.3,0,0,1,0,2 - node_stack_bottom4294827264 = 0,-4.3,0,0,-1,0,2 - node_attach = 0,0,0,0,0,0,0 - CrewCapacity = 0 - TechRequired = largeElectrics - entryCost = 20000 - cost = 9000 - category = Science - subcategory = 0 - title = D-ZZY Cyclotron - manufacturer = Station Science Directorate - description = This module provides a state-of-the-art compact particle accelerator useful for generating Kuarqs, as well as heating up snacks. Kuarqs are useful for completing many experiments, but make sure you can generate enough to keep up with decay rates. - attachRules = 1,0,1,1,0,0,0 - mass = 30 - dragModelType = default - maximum_drag = 0.2 - minimum_drag = 0.3 - angularDrag = 2 - crashTolerance = 6 - breakingForce = 200 - breakingTorque = 200 - maxTemp = 2000 + name = StnSciCyclo + module = Part + author = ethernet + rescaleFactor = 1 + PhysicsSignificance = -1 + node_stack_top4294827692 = 0,4.3,0,0,1,0,2 + node_stack_bottom4294827264 = 0,-4.3,0,0,-1,0,2 + node_attach = 0,0,0,0,0,0,0 + CrewCapacity = 0 + TechRequired = largeElectrics + entryCost = 20000 + cost = 9000 + category = Science + subcategory = 0 + title = #autoLOC_cyclo_title + manufacturer = #autoLOC_statsci_manufacturer + description = #autoLOC_cyclo_description + attachRules = 1,0,1,1,0,0,0 + mass = 30 + dragModelType = default + maximum_drag = 0.2 + minimum_drag = 0.3 + angularDrag = 2 + crashTolerance = 6 + breakingForce = 200 + breakingTorque = 200 + maxTemp = 2000 emissiveConstant = 0.8 - fuelCrossFeed = True + fuelCrossFeed = True MODEL { model = StationScience/Parts/StnSciCyclo @@ -44,16 +44,16 @@ PART { name = StationScienceModule moduleName = Station Science Facility - ConverterName = Cyclotron - StartActionName = Start Cyclotron - StopActionName = Stop Cyclotron + ConverterName = #autoLOC_cyclo_converter + StartActionName = #autoLOC_cyclo_start + StopActionName = #autoLOC_cyclo_stop AutoShutdown = false GeneratesHeat = false UseSpecialistBonus = true - SpecialistEfficiencyFactor = 0.075 - SpecialistBonusBase = 0.85 - ExperienceEffect = ConverterSkill - EfficiencyBonus = 1 + SpecialistEfficiencyFactor = 0.075 + SpecialistBonusBase = 0.85 + ExperienceEffect = ConverterSkill + EfficiencyBonus = 1 INPUT_RESOURCE { diff --git a/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment1.cfg b/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment1.cfg index 38fa5f4..5220869 100644 --- a/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment1.cfg +++ b/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment1.cfg @@ -1,34 +1,34 @@ PART { - name = StnSciExperiment1 - module = Part - author = ethernet - rescaleFactor = 1 - PhysicsSignificance = -1 - node_stack_top4294726176 = 0,0.62010,0,0,1,0,1 - node_stack_bottom4294726176 = 0,-0.62010,0,0,-1,0,1 - node_attach = -0.625,0,0,-1,0,0,1 - CrewCapacity = 0 - TechRequired = advExploration - entryCost = 3000 - cost = 1000 - category = Science - subcategory = 0 - title = Experiment: Plant Growth - manufacturer = Station Science Directorate - description = This experiment pod contains a variety of seeds and growth mediums. How will they grow in space? The results are sure to be fascinating. Note: don't attach directly to your station, unless you intend to return it to the surface. - attachRules = 1,1,1,1,0,0,0 - mass = 0.1 - dragModelType = default - maximum_drag = 0.2 - minimum_drag = 0.3 - angularDrag = 2 - crashTolerance = 10 - breakingForce = 200 - breakingTorque = 200 - maxTemp = 2000 + name = StnSciExperiment1 + module = Part + author = ethernet + rescaleFactor = 1 + PhysicsSignificance = -1 + node_stack_top4294726176 = 0,0.62010,0,0,1,0,1 + node_stack_bottom4294726176 = 0,-0.62010,0,0,-1,0,1 + node_attach = -0.625,0,0,-1,0,0,1 + CrewCapacity = 0 + TechRequired = advExploration + entryCost = 3000 + cost = 1000 + category = Science + subcategory = 0 + title = #autoLOC_expplant_title + manufacturer = #autoLOC_statsci_manufacturer + description = #autoLOC_expplant_description + attachRules = 1,1,1,1,0,0,0 + mass = 0.1 + dragModelType = default + maximum_drag = 0.2 + minimum_drag = 0.3 + angularDrag = 2 + crashTolerance = 10 + breakingForce = 200 + breakingTorque = 200 + maxTemp = 2000 emissiveConstant = 0.8 - fuelCrossFeed = True + fuelCrossFeed = True MODEL { model = StationScience/Parts/StnSciExperiment1 @@ -41,8 +41,8 @@ PART name = StationExperiment experimentID = plantGrowth - experimentActionName = Finalize Results - resetActionName = Throw Away Results + experimentActionName = #autoLOC_statsci_finalize + resetActionName = #autoLOC_statsci_reset useStaging = False useActionGroups = True @@ -52,7 +52,7 @@ PART dataIsCollectable = True - collectActionName = Collect Results + collectActionName = #autoLOC_statsci_collect interactionRange = 1.2 xmitDataScalar = 0.2 diff --git a/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment2.cfg b/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment2.cfg index 1edea88..beed1a7 100644 --- a/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment2.cfg +++ b/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment2.cfg @@ -1,34 +1,34 @@ PART { - name = StnSciExperiment2 - module = Part - author = ethernet - rescaleFactor = 1 - PhysicsSignificance = -1 - node_stack_top4294726176 = 0,0.62010,0,0,1,0,1 - node_stack_bottom4294726176 = 0,-0.62010,0,0,-1,0,1 - node_attach = -0.625,0,0,-1,0,0,1 - CrewCapacity = 0 - TechRequired = largeElectrics - entryCost = 3200 - cost = 1100 - category = Science - subcategory = 0 - title = Experiment: Prograde Kuarqs - manufacturer = Station Science Directorate - description = Prograde kuarqs are stable, so you shouldn't have any problem collecting 50 of them with your D-ZZY Cyclotron. Note: don't attach directly to your station, unless you intend to return it to the surface. - attachRules = 1,1,1,1,0,0,0 - mass = 0.1 - dragModelType = default - maximum_drag = 0.2 - minimum_drag = 0.3 - angularDrag = 2 - crashTolerance = 10 - breakingForce = 200 - breakingTorque = 200 - maxTemp = 2000 + name = StnSciExperiment2 + module = Part + author = ethernet + rescaleFactor = 1 + PhysicsSignificance = -1 + node_stack_top4294726176 = 0,0.62010,0,0,1,0,1 + node_stack_bottom4294726176 = 0,-0.62010,0,0,-1,0,1 + node_attach = -0.625,0,0,-1,0,0,1 + CrewCapacity = 0 + TechRequired = largeElectrics + entryCost = 3200 + cost = 1100 + category = Science + subcategory = 0 + title = #autoLOC_expPrograde_title + manufacturer = #autoLOC_statsci_manufacturer + description = #autoLOC_expPrograde_description + attachRules = 1,1,1,1,0,0,0 + mass = 0.1 + dragModelType = default + maximum_drag = 0.2 + minimum_drag = 0.3 + angularDrag = 2 + crashTolerance = 10 + breakingForce = 200 + breakingTorque = 200 + maxTemp = 2000 emissiveConstant = 0.8 - fuelCrossFeed = True + fuelCrossFeed = True MODEL { model = StationScience/Parts/StnSciExperiment2 @@ -41,8 +41,8 @@ PART name = StationExperiment experimentID = progradeKuarqs - experimentActionName = Finalize Results - resetActionName = Throw Away Results + experimentActionName = #autoLOC_statsci_finalize + resetActionName = #autoLOC_statsci_reset useStaging = False useActionGroups = True @@ -51,7 +51,7 @@ PART resettableOnEVA = True dataIsCollectable = True - collectActionName = Collect Results + collectActionName = #autoLOC_statsci_collect interactionRange = 1.2 xmitDataScalar = 0.2 diff --git a/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment3.cfg b/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment3.cfg index 7b2cf48..3d14426 100644 --- a/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment3.cfg +++ b/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment3.cfg @@ -1,34 +1,34 @@ PART { - name = StnSciExperiment3 - module = Part - author = ethernet - rescaleFactor = 1 - PhysicsSignificance = -1 - node_stack_top4294726176 = 0,0.62010,0,0,1,0,1 - node_stack_bottom4294726176 = 0,-0.62010,0,0,-1,0,1 - node_attach = -0.625,0,0,-1,0,0,1 - CrewCapacity = 0 - TechRequired = largeElectrics - entryCost = 3400 - cost = 1200 - category = Science - subcategory = 0 - title = Experiment: Retrograde Kuarqs - manufacturer = Station Science Directorate - description = Retrograde kuarqs are somewhat unstable, so your D-ZZY Cyclotron will have to be operating at near full capacity to reach the 50 you need. Once you have all 50, they'll form into a stable configuration, and your researchers in your lab can get to work. Note: don't attach directly to your station, unless you intend to return it to the surface. - attachRules = 1,1,1,1,0,0,0 - mass = 0.1 - dragModelType = default - maximum_drag = 0.2 - minimum_drag = 0.3 - angularDrag = 2 - crashTolerance = 10 - breakingForce = 200 - breakingTorque = 200 - maxTemp = 2000 + name = StnSciExperiment3 + module = Part + author = ethernet + rescaleFactor = 1 + PhysicsSignificance = -1 + node_stack_top4294726176 = 0,0.62010,0,0,1,0,1 + node_stack_bottom4294726176 = 0,-0.62010,0,0,-1,0,1 + node_attach = -0.625,0,0,-1,0,0,1 + CrewCapacity = 0 + TechRequired = largeElectrics + entryCost = 3400 + cost = 1200 + category = Science + subcategory = 0 + title = #autoLOC_expRetrograde_title + manufacturer = #autoLOC_statsci_manufacturer + description = #autoLOC_expRetrograde_description + attachRules = 1,1,1,1,0,0,0 + mass = 0.1 + dragModelType = default + maximum_drag = 0.2 + minimum_drag = 0.3 + angularDrag = 2 + crashTolerance = 10 + breakingForce = 200 + breakingTorque = 200 + maxTemp = 2000 emissiveConstant = 0.8 - fuelCrossFeed = True + fuelCrossFeed = True MODEL { model = StationScience/Parts/StnSciExperiment3 @@ -41,8 +41,8 @@ PART name = StationExperiment experimentID = retrogradeKuarqs - experimentActionName = Finalize Results - resetActionName = Throw Away Results + experimentActionName = #autoLOC_statsci_finalize + resetActionName = #autoLOC_statsci_reset useStaging = False useActionGroups = True @@ -51,7 +51,7 @@ PART resettableOnEVA = True dataIsCollectable = True - collectActionName = Collect Results + collectActionName = #autoLOC_statsci_collect interactionRange = 1.2 xmitDataScalar = 0.2 diff --git a/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment4.cfg b/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment4.cfg index cc2429d..74c4ff5 100644 --- a/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment4.cfg +++ b/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment4.cfg @@ -1,34 +1,34 @@ PART { - name = StnSciExperiment4 - module = Part - author = ethernet - rescaleFactor = 1 - PhysicsSignificance = -1 - node_stack_top4294726176 = 0,0.62010,0,0,1,0,1 - node_stack_bottom4294726176 = 0,-0.62010,0,0,-1,0,1 - node_attach = -0.625,0,0,-1,0,0,1 - CrewCapacity = 0 - TechRequired = specializedElectrics - entryCost = 4000 - cost = 1300 - category = Science - subcategory = 0 - title = Experiment: Eccentric Kuarqs - manufacturer = Station Science Directorate - description = Eccentric Kuarqs are quite unstable, so you'll need 2 D-ZZY Cyclotrons operating to reach the 50 you need. Once you have all 50, they'll form into a stable configuration, and your researchers in your lab can get to work. Note: don't attach directly to your station, unless you intend to return it to the surface. - attachRules = 1,1,1,1,0,0,0 - mass = 0.1 - dragModelType = default - maximum_drag = 0.2 - minimum_drag = 0.3 - angularDrag = 2 - crashTolerance = 10 - breakingForce = 200 - breakingTorque = 200 - maxTemp = 2000 + name = StnSciExperiment4 + module = Part + author = ethernet + rescaleFactor = 1 + PhysicsSignificance = -1 + node_stack_top4294726176 = 0,0.62010,0,0,1,0,1 + node_stack_bottom4294726176 = 0,-0.62010,0,0,-1,0,1 + node_attach = -0.625,0,0,-1,0,0,1 + CrewCapacity = 0 + TechRequired = specializedElectrics + entryCost = 4000 + cost = 1300 + category = Science + subcategory = 0 + title = Experiment: Eccentric Kuarqs + manufacturer = #autoLOC_statsci_manufacturer + description = #autoLOC_expEccentric_description + attachRules = 1,1,1,1,0,0,0 + mass = 0.1 + dragModelType = default + maximum_drag = 0.2 + minimum_drag = 0.3 + angularDrag = 2 + crashTolerance = 10 + breakingForce = 200 + breakingTorque = 200 + maxTemp = 2000 emissiveConstant = 0.8 - fuelCrossFeed = True + fuelCrossFeed = True MODEL { model = StationScience/Parts/StnSciExperiment4 @@ -40,8 +40,8 @@ PART name = StationExperiment experimentID = eccentricKuarqs - experimentActionName = Finalize Results - resetActionName = Throw Away Results + experimentActionName = #autoLOC_statsci_finalize + resetActionName = #autoLOC_statsci_reset useStaging = False useActionGroups = True @@ -50,7 +50,7 @@ PART resettableOnEVA = True dataIsCollectable = True - collectActionName = Collect Results + collectActionName = #autoLOC_statsci_collect interactionRange = 1.2 xmitDataScalar = 0.2 diff --git a/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment5.cfg b/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment5.cfg index f8e2f02..cb033a8 100644 --- a/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment5.cfg +++ b/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment5.cfg @@ -1,34 +1,34 @@ PART { - name = StnSciExperiment5 - module = Part - author = ethernet - rescaleFactor = 1 - PhysicsSignificance = -1 - node_stack_top4294726176 = 0,0.62010,0,0,1,0,1 - node_stack_bottom4294726176 = 0,-0.62010,0,0,-1,0,1 - node_attach = -0.625,0,0,-1,0,0,1 - CrewCapacity = 0 - TechRequired = scienceTech - entryCost = 3600 - cost = 1200 - category = Science - subcategory = 0 - title = Experiment: Creature Comforts - manufacturer = Station Science Directorate - description = How much are the animals in the Zoology Bay enjoying being in space? What sorts of fantastic tricks can they be taught? This experiment pod contains the toys and treats you'll need to answer these questions. Kibbal not included. Note: don't attach directly to your station, unless you intend to return it to the surface. - attachRules = 1,1,1,1,0,0,0 - mass = 0.2 - dragModelType = default - maximum_drag = 0.2 - minimum_drag = 0.3 - angularDrag = 2 - crashTolerance = 10 - breakingForce = 200 - breakingTorque = 200 - maxTemp = 2000 + name = StnSciExperiment5 + module = Part + author = ethernet + rescaleFactor = 1 + PhysicsSignificance = -1 + node_stack_top4294726176 = 0,0.62010,0,0,1,0,1 + node_stack_bottom4294726176 = 0,-0.62010,0,0,-1,0,1 + node_attach = -0.625,0,0,-1,0,0,1 + CrewCapacity = 0 + TechRequired = scienceTech + entryCost = 3600 + cost = 1200 + category = Science + subcategory = 0 + title = #autoLOC_expCreature_title + manufacturer = #autoLOC_statsci_manufacturer + description = #autoLOC_expCreature_description + attachRules = 1,1,1,1,0,0,0 + mass = 0.2 + dragModelType = default + maximum_drag = 0.2 + minimum_drag = 0.3 + angularDrag = 2 + crashTolerance = 10 + breakingForce = 200 + breakingTorque = 200 + maxTemp = 2000 emissiveConstant = 0.8 - fuelCrossFeed = True + fuelCrossFeed = True MODEL { model = StationScience/Parts/StnSciExperiment5 @@ -40,8 +40,8 @@ PART name = StationExperiment experimentID = bioproducts - experimentActionName = Finalize Results - resetActionName = Throw Away Results + experimentActionName = #autoLOC_statsci_finalize + resetActionName = #autoLOC_statsci_reset useStaging = False useActionGroups = True diff --git a/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment6.cfg b/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment6.cfg index 3431385..a7e2422 100644 --- a/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment6.cfg +++ b/Kerbal Space Program/GameData/StationScience/Parts/StnSciExperiment6.cfg @@ -1,34 +1,34 @@ PART { - name = StnSciExperiment6 - module = Part - author = ethernet - rescaleFactor = 1 - PhysicsSignificance = -1 - node_stack_top4294726176 = 0,0.62010,0,0,1,0,1 - node_stack_bottom4294726176 = 0,-0.62010,0,0,-1,0,1 - node_attach = -0.625,0,0,-1,0,0,1 - CrewCapacity = 0 - TechRequired = advScienceTech - entryCost = 50000 - cost = 1500 - category = Science - subcategory = 0 - title = Experiment: Kuarq bio-activity - manufacturer = Station Science Directorate - description = Will exposure to kuarqs make the animals' fur frizzy? Glossy and smooth? Will it help them learn new tricks? This experiment pod will help you find out. Kibbal not included. Note: don't attach directly to your station, unless you intend to return it to the surface. - attachRules = 1,1,1,1,0,0,0 - mass = 0.2 - dragModelType = default - maximum_drag = 0.2 - minimum_drag = 0.3 - angularDrag = 2 - crashTolerance = 10 - breakingForce = 200 - breakingTorque = 200 - maxTemp = 2000 + name = StnSciExperiment6 + module = Part + author = ethernet + rescaleFactor = 1 + PhysicsSignificance = -1 + node_stack_top4294726176 = 0,0.62010,0,0,1,0,1 + node_stack_bottom4294726176 = 0,-0.62010,0,0,-1,0,1 + node_attach = -0.625,0,0,-1,0,0,1 + CrewCapacity = 0 + TechRequired = advScienceTech + entryCost = 50000 + cost = 1500 + category = Science + subcategory = 0 + title = #autoLOC_expBioact_title + manufacturer = #autoLOC_statsci_manufacturer + description = #autoLOC_expBioact_description + attachRules = 1,1,1,1,0,0,0 + mass = 0.2 + dragModelType = default + maximum_drag = 0.2 + minimum_drag = 0.3 + angularDrag = 2 + crashTolerance = 10 + breakingForce = 200 + breakingTorque = 200 + maxTemp = 2000 emissiveConstant = 0.8 - fuelCrossFeed = True + fuelCrossFeed = True MODEL { model = StationScience/Parts/StnSciExperiment6 @@ -40,8 +40,8 @@ PART name = StationExperiment experimentID = kuarqsBioproducts - experimentActionName = Finalize Results - resetActionName = Throw Away Results + experimentActionName = #autoLOC_statsci_finalize + resetActionName = #autoLOC_statsci_reset useStaging = False useActionGroups = True diff --git a/Kerbal Space Program/GameData/StationScience/Parts/StnSciKib.cfg b/Kerbal Space Program/GameData/StationScience/Parts/StnSciKib.cfg index 7a34150..56cd2bc 100644 --- a/Kerbal Space Program/GameData/StationScience/Parts/StnSciKib.cfg +++ b/Kerbal Space Program/GameData/StationScience/Parts/StnSciKib.cfg @@ -1,42 +1,42 @@ PART { - name = StnSciKib - module = Part - author = ethernet - rescaleFactor = 1 - PhysicsSignificance = -1 - node_stack_top4294551374 = 0,-0.4278,0,0,-1,0,2 - node_stack_top4294551222 = 0,0.4278,0,0,1,0,2 - node_attach = 1.21806,0,0,1,0,0,1 - CrewCapacity = 0 - TechRequired = scienceTech - entryCost = 4000 - cost = 600 - category = Science - subcategory = 0 - title = S-NRF Kibbal Storage - manufacturer = Station Science Directorate - description = For all your Kibbal storage and transportation needs. Guaranteed to maintain freshness or your money back! - attachRules = 1,1,1,1,0,0,0 - mass = .3 - dragModelType = default - maximum_drag = 0.2 - minimum_drag = 0.2 - angularDrag = 1 - crashTolerance = 10 - breakingForce = 100 - breakingTorque = 100 - maxTemp = 2000 + name = StnSciKib + module = Part + author = ethernet + rescaleFactor = 1 + PhysicsSignificance = -1 + node_stack_top4294551374 = 0,-0.4278,0,0,-1,0,2 + node_stack_top4294551222 = 0,0.4278,0,0,1,0,2 + node_attach = 1.21806,0,0,1,0,0,1 + CrewCapacity = 0 + TechRequired = scienceTech + entryCost = 4000 + cost = 600 + category = Science + subcategory = 0 + title = #autoLOC_stnSciKib_title + manufacturer = #autoLOC_statsci_manufacturer + description = #autoLOC_stnSciKib_description + attachRules = 1,1,1,1,0,0,0 + mass = .3 + dragModelType = default + maximum_drag = 0.2 + minimum_drag = 0.2 + angularDrag = 1 + crashTolerance = 10 + breakingForce = 100 + breakingTorque = 100 + maxTemp = 2000 emissiveConstant = 0.8 - fuelCrossFeed = True + fuelCrossFeed = True MODEL { model = StationScience/Parts/StnSciKib } - RESOURCE - { - name = Kibbal - amount = 100 - maxAmount = 100 - } + RESOURCE + { + name = Kibbal + amount = 100 + maxAmount = 100 + } } diff --git a/Kerbal Space Program/GameData/StationScience/Parts/StnSciKibJr.cfg b/Kerbal Space Program/GameData/StationScience/Parts/StnSciKibJr.cfg index 4483cb2..1a9be60 100644 --- a/Kerbal Space Program/GameData/StationScience/Parts/StnSciKibJr.cfg +++ b/Kerbal Space Program/GameData/StationScience/Parts/StnSciKibJr.cfg @@ -1,44 +1,44 @@ PART { - name = StnSciKibJr - module = Part - author = ethernet - rescaleFactor = 1 - PhysicsSignificance = -1 - node_stack_top42947835204294766188 = 0,0.4278,0,0,1,0,1 - node_stack_top42947835204294753732 = 0,-0.4278,0,0,-1,0,1 - node_attach = .60903,0,0,1,0,0,1 - CrewCapacity = 0 - TechRequired = scienceTech - entryCost = 3000 - cost = 220 - category = Science - subcategory = 0 - title = N-BBL Kibbal Storage Jr - manufacturer = Station Science Directorate - description = All the features of our classic Kibbal Storage, now in Fun Size! - attachRules = 1,1,1,1,0,0,0 - mass = 0.1 - dragModelType = default - maximum_drag = 0.2 - minimum_drag = 0.2 - angularDrag = 1 - crashTolerance = 10 - breakingForce = 100 - breakingTorque = 100 - maxTemp = 2000 - fuelCrossFeed = True - MODEL - { - model = StationScience/Parts/StnSciKibJr - position = 0,0,0 - scale = 1, 1, 1 - rotation = 0,0,0 - } - RESOURCE - { - name = Kibbal - amount = 30 - maxAmount = 30 - } + name = StnSciKibJr + module = Part + author = ethernet + rescaleFactor = 1 + PhysicsSignificance = -1 + node_stack_top42947835204294766188 = 0,0.4278,0,0,1,0,1 + node_stack_top42947835204294753732 = 0,-0.4278,0,0,-1,0,1 + node_attach = .60903,0,0,1,0,0,1 + CrewCapacity = 0 + TechRequired = scienceTech + entryCost = 3000 + cost = 220 + category = Science + subcategory = 0 + title = #autoLOC_stnSciKibJr_title + manufacturer = #autoLOC_statsci_manufacturer + description = #autoLOC_stnSciKibJr_description + attachRules = 1,1,1,1,0,0,0 + mass = 0.1 + dragModelType = default + maximum_drag = 0.2 + minimum_drag = 0.2 + angularDrag = 1 + crashTolerance = 10 + breakingForce = 100 + breakingTorque = 100 + maxTemp = 2000 + fuelCrossFeed = True + MODEL + { + model = StationScience/Parts/StnSciKibJr + position = 0,0,0 + scale = 1, 1, 1 + rotation = 0,0,0 + } + RESOURCE + { + name = Kibbal + amount = 30 + maxAmount = 30 + } } diff --git a/Kerbal Space Program/GameData/StationScience/Parts/StnSciLab.cfg b/Kerbal Space Program/GameData/StationScience/Parts/StnSciLab.cfg index 8de834f..f701ddd 100644 --- a/Kerbal Space Program/GameData/StationScience/Parts/StnSciLab.cfg +++ b/Kerbal Space Program/GameData/StationScience/Parts/StnSciLab.cfg @@ -1,58 +1,58 @@ PART { - name = StnSciLab - module = Part - author = ethernet - rescaleFactor = 1 - PhysicsSignificance = -1 - node_stack_top4294829798 = 0,2.70274,0,0,1,0,2 - node_stack_bottom4294829694 = 0,-2.70274,0,0,-1,0,2 - CrewCapacity = 4 - TechRequired = advExploration - entryCost = 10000 - cost = 6000 - category = Science - subcategory = 0 - title = TH-NKR Research Lab - manufacturer = Station Science Directorate - description = This module provides all the instruments, computers, and snacks Kerbal researchers need to find out just how fascinating space really is. You'll need to have experiment modules present at your station to give them something to do. - attachRules = 1,0,1,1,0,0,0 - mass = 12 - dragModelType = default - maximum_drag = 0.2 - minimum_drag = 0.3 - angularDrag = 2 - crashTolerance = 6 - breakingForce = 200 - breakingTorque = 200 - maxTemp = 2900 - fuelCrossFeed = True + name = StnSciLab + module = Part + author = ethernet + rescaleFactor = 1 + PhysicsSignificance = -1 + node_stack_top4294829798 = 0,2.70274,0,0,1,0,2 + node_stack_bottom4294829694 = 0,-2.70274,0,0,-1,0,2 + CrewCapacity = 4 + TechRequired = advExploration + entryCost = 10000 + cost = 6000 + category = Science + subcategory = 0 + title = #autoLOC_scilab_title + manufacturer = #autoLOC_statsci_manufacturer + description = #autoLOC_scilab_description + attachRules = 1,0,1,1,0,0,0 + mass = 12 + dragModelType = default + maximum_drag = 0.2 + minimum_drag = 0.3 + angularDrag = 2 + crashTolerance = 6 + breakingForce = 200 + breakingTorque = 200 + maxTemp = 2900 + fuelCrossFeed = True vesselType = Station MODEL { model = StationScience/Parts/StnSciLab } - MODULE - { - name = ModuleScienceExperiment - experimentID = crewReport - experimentActionName = Crew Report - resetActionName = Discard Crew Report - reviewActionName = Review Report - useStaging = False - useActionGroups = True - hideUIwhenUnavailable = True - rerunnable = True - xmitDataScalar = 1.0 - } - MODULE - { - name = ModuleScienceContainer - reviewActionName = Review Stored Data - storeActionName = Store Experiments - evaOnlyStorage = True - storageRange = 2.0 - } + MODULE + { + name = ModuleScienceExperiment + experimentID = crewReport + experimentActionName = #autoLOC_502009 //#autoLOC_502009 = Crew Report + resetActionName = #autoLOC_502010 //#autoLOC_502010 = Discard Crew Report + reviewActionName = #autoLOC_502200 //#autoLOC_502200 = Review Report + useStaging = False + useActionGroups = True + hideUIwhenUnavailable = True + rerunnable = True + xmitDataScalar = 1.0 + } + MODULE + { + name = ModuleScienceContainer + reviewActionName = #autoLOC_502201 //#autoLOC_502201 = Review Stored Data + storeActionName = #autoLOC_502202 //#autoLOC_502202 = Store Experiments + evaOnlyStorage = True + storageRange = 2.0 + } MODULE { name = ModuleCommand @@ -70,9 +70,9 @@ PART name = StationScienceModule moduleName = Station Science Facility requiredSkills = ScienceSkill - ConverterName = Research Lab - StartActionName = Start Research - StopActionName = Stop Research + ConverterName = #autoLOC_scilab_converter + StartActionName = #autoLOC_statsci_startResearch + StopActionName = autoLOC_statsci_stopResearch AutoShutdown = false GeneratesHeat = false UseSpecialistBonus = false diff --git a/Kerbal Space Program/GameData/StationScience/Parts/StnSciSpectro.cfg b/Kerbal Space Program/GameData/StationScience/Parts/StnSciSpectro.cfg index a332cdb..8d07737 100644 --- a/Kerbal Space Program/GameData/StationScience/Parts/StnSciSpectro.cfg +++ b/Kerbal Space Program/GameData/StationScience/Parts/StnSciSpectro.cfg @@ -1,34 +1,34 @@ PART { - name = StnSciSpectro - module = Part - author = ethernet - rescaleFactor = 1 - PhysicsSignificance = -1 - node_stack_bottom4294744528 = 0,-1.92927,0,0,-1,0,2 - node_stack_top4294744664 = 0,1.92927,0,0,1,0,2 - node_attach = 0,0,0,0,0,0,0 - CrewCapacity = 0 - TechRequired = largeElectrics - entryCost = 13000 - cost = 7000 - category = Science - subcategory = 0 - title = WT-SIT Spectrometron - manufacturer = Station Science Directorate - description = This device bombards your scientific results with kuarqs, producing a highly detailed analysis suitable for transmission. After analysis, you can transmit the data back home for 90% value, relative to returning it and recovering it. - attachRules = 1,0,1,1,0,0,0 - mass = 15 - dragModelType = default - maximum_drag = 0.2 - minimum_drag = 0.2 - angularDrag = 1 - crashTolerance = 10 - breakingForce = 200 - breakingTorque = 200 - maxTemp = 2000 + name = StnSciSpectro + module = Part + author = ethernet + rescaleFactor = 1 + PhysicsSignificance = -1 + node_stack_bottom4294744528 = 0,-1.92927,0,0,-1,0,2 + node_stack_top4294744664 = 0,1.92927,0,0,1,0,2 + node_attach = 0,0,0,0,0,0,0 + CrewCapacity = 0 + TechRequired = largeElectrics + entryCost = 13000 + cost = 7000 + category = Science + subcategory = 0 + title = #autoLOC_spectro_title + manufacturer = #autoLOC_statsci_manufacturer + description = #autoLOC_spectro_description + attachRules = 1,0,1,1,0,0,0 + mass = 15 + dragModelType = default + maximum_drag = 0.2 + minimum_drag = 0.2 + angularDrag = 1 + crashTolerance = 10 + breakingForce = 200 + breakingTorque = 200 + maxTemp = 2000 emissiveConstant = 0.8 - fuelCrossFeed = True + fuelCrossFeed = True MODEL { @@ -47,7 +47,7 @@ PART { name = SampleAnalyzer - reviewActionName = Review Analysis Results + reviewActionName = #autoLOC_spectro_review capacity = 1 evaOnlyStorage = False storageRange = 0 diff --git a/Kerbal Space Program/GameData/StationScience/Parts/StnSciZoo.cfg b/Kerbal Space Program/GameData/StationScience/Parts/StnSciZoo.cfg index f9d86a1..681064e 100644 --- a/Kerbal Space Program/GameData/StationScience/Parts/StnSciZoo.cfg +++ b/Kerbal Space Program/GameData/StationScience/Parts/StnSciZoo.cfg @@ -1,33 +1,33 @@ PART { - name = StnSciZoo - module = Part - author = ethernet - rescaleFactor = 1 - PhysicsSignificance = -1 - node_stack_top4294733550 = 0,3.43424,0,0,1,0,2 - node_stack_bottom4294733650 = 0,-3.43424,0,0,-1,0,2 - CrewCapacity = 4 - TechRequired = scienceTech - entryCost = 12000 - cost = 6950 - category = Science - subcategory = 0 - title = F-RRY Zoology Bay - manufacturer = Station Science Directorate - description = It can get lonesome in space, and the furry creatures in this module are sure to brighten any Kerbal's day. Also, observing them can provide new scientific insights. The creatures eat "kibbal", and the "bioproducts" they produce can be used to complete various experiments. - attachRules = 1,0,1,1,0,0,0 - mass = 15 - dragModelType = default - maximum_drag = 0.2 - minimum_drag = 0.2 - angularDrag = 1 - crashTolerance = 10 - breakingForce = 100 - breakingTorque = 100 - maxTemp = 2000 + name = StnSciZoo + module = Part + author = ethernet + rescaleFactor = 1 + PhysicsSignificance = -1 + node_stack_top4294733550 = 0,3.43424,0,0,1,0,2 + node_stack_bottom4294733650 = 0,-3.43424,0,0,-1,0,2 + CrewCapacity = 4 + TechRequired = scienceTech + entryCost = 12000 + cost = 6950 + category = Science + subcategory = 0 + title = #autoLOC_zoobay_title + manufacturer = #autoLOC_statsci_manufacturer + description = #autoLOC_zoobay_description + attachRules = 1,0,1,1,0,0,0 + mass = 15 + dragModelType = default + maximum_drag = 0.2 + minimum_drag = 0.2 + angularDrag = 1 + crashTolerance = 10 + breakingForce = 100 + breakingTorque = 100 + maxTemp = 2000 emissiveConstant = 0.8 - fuelCrossFeed = True + fuelCrossFeed = True vesselType = Station @@ -35,33 +35,33 @@ PART { model = StationScience/Parts/StnSciZoo } - RESOURCE - { - name = Kibbal - amount = 50 - maxAmount = 50 - } - MODULE - { - name = ModuleScienceExperiment - experimentID = crewReport - experimentActionName = Crew Report - resetActionName = Discard Crew Report - reviewActionName = Review Report - useStaging = False - useActionGroups = True - hideUIwhenUnavailable = True - rerunnable = True - xmitDataScalar = 1.0 - } - MODULE - { - name = ModuleScienceContainer - reviewActionName = Review Stored Data - storeActionName = Store Experiments - evaOnlyStorage = True - storageRange = 2.0 - } + RESOURCE + { + name = Kibbal + amount = 50 + maxAmount = 50 + } + MODULE + { + name = ModuleScienceExperiment + experimentID = crewReport + experimentActionName = #autoLOC_502009 //#autoLOC_502009 = Crew Report + resetActionName = #autoLOC_502010 //#autoLOC_502010 = Discard Crew Report + reviewActionName = #autoLOC_502200 //#autoLOC_502200 = Review Report + useStaging = False + useActionGroups = True + hideUIwhenUnavailable = True + rerunnable = True + xmitDataScalar = 1.0 + } + MODULE + { + name = ModuleScienceContainer + reviewActionName = #autoLOC_502201 //#autoLOC_502201 = Review Stored Data + storeActionName = #autoLOC_502202 //#autoLOC_502202 = Store Experiments + evaOnlyStorage = True + storageRange = 2.0 + } MODULE { name = ModuleCommand @@ -79,9 +79,9 @@ PART name = StationScienceModule moduleName = Station Science Facility requiredSkills = ScienceSkill - ConverterName = Zoology Lab - StartActionName = Start Research - StopActionName = Stop Research + ConverterName = #autoLOC_zoobay_converter + StartActionName = #autoLOC_statsci_startResearch + StopActionName = #autoLOC_statsci_stopResearch AutoShutdown = false GeneratesHeat = false UseSpecialistBonus = false diff --git a/Kerbal Space Program/GameData/StationScience/Plugins/StationScience.dll b/Kerbal Space Program/GameData/StationScience/Plugins/StationScience.dll index 3aa2895d3dbb5e3fdd5aaa8c3d2e9a8b5c9cf465..1d9e7ce384f2fd0235ad8cb8d3288581150a4eef 100755 GIT binary patch literal 44032 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 literal 48128 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 TcozD_uM8Od04I8> in orbit around <<2>> + #autoLOC_StatSciContract_Blurb = We need you to complete <<1>> in orbit around <<2>>, and return it to Kerbin for recovery + #autoLOC_StatSciContract_Completed = You have successfully performed <<1>> in orbit around <<2>> + + #autoLOC_StatSciParam_Title = Complete <<1>> in orbit around <<2>> + #autoLOC_StatSciParam_Notes = Launch a new experiment part (<<1>>), bring it into orbit around <<2>>, complete the experiment, return it (with results inside) to Kerbin and recover it + + #autoLOC_StatSciNewPod_TitleA = Launch new experiment pod + #autoLOC_StatSciNewPod_TitleB = Launch new + #autoLOC_StatSciNewPod_Notes = Launch a new experiment part (<<1>>), bring it into orbit around <<2>>, complete the experiment, return it (with results inside) to Kerbin and recover it + + #autoLOC_StatSciDoExp_TitleA = Complete in orbit + #autoLOC_StatSciDoExp_TitleB = Complete in orbit around <<1>> + #autoLOC_StatSciDoExp_Hash = do experiment + + #autoLOC_StatSciRetParam_Title = Recover at Kerbin + + #autoLOC_StatSci_Decay = Decay rate + #autoLOC_StatSci_Decayrate = kuarqs/s + #autoLOC_StatSci_startExp = Start Experiment + + #autoLOC_StatSci_screen_boring = Too boring here. Go to space! + #autoLOC_StatSci_screen_finalized = Experiment already finalized. + #autoLOC_StatSci_screen_started = Started experiment! + #autoLOC_StatSci_screen_notfinished = Experiment not finished yet! + #autoLOC_StatSci_screen_locchange = Location changed mid-experiment! <<1>> ruined + #autoLOC_StatSci_screen_detatch = "Warning: <<1>> has detached from the station without being finalized." + #autoLOC_StatSci_screen_transmitted = Sample under analysis was transmitted away before completion. + #autoLOC_StatSci_screen_anaComp = Analysis complete, and ready to transmit. + + #autoLOC_StatSci_screen_analyseFull = Analyzer already full. Transmit the data! + #autoLOC_StatSci_screen_analyseAct = Analysis still in progress. + + #autoLOC_StatSci_EuReq = Eurekas required: <<1>> + #autoLOC_StatSci_LabReq = \nRequires a TH-NKR Research Lab + #autoLOC_StatSci_KuarkReq = Kuarqs required: <<1>> + #autoLOC_StatSci_KuarkHalf = Kuarq decay halflife: <<1>> seconds\n + #autoLOC_StatSci_KuarkProd = Production required: <<1>> kuarq/s + #autoLOC_StatSci_CycReqM = \nRequires <<1>> D-ZZY Cyclotrons + #autoLOC_StatSci_CycReq = \nRequires a D-ZZY Cyclotron + #autoLOC_StatSci_BioReq = Bioproducts required: <<1>> + #autoLOC_StatSci_BioMass = \nMass when complete: <<1>> t + #autoLOC_StatSci_ZooReq = \nRequires a F-RRY Zoology Bay + #autoLOC_StatSci_LightsOn = Lights: On + #autoLOC_StatSci_LightsOff = Lights: Off + #autoLOC_StatSci_LightsAuto = Lights: Auto + #autoLOC_StatSci_analyseReady = Ready to analyze. + #autoLOC_StatSci_analyseNothing = Nothing to analyze. + #autoLOC_StatSci_analysing = Analyzing... + #autoLOC_StatSci_readyTrans = Ready to transmit. + #autoLOC_StatSci_analyseImp = Improved Transmit Quality: <<1>>% + #autoLOC_StatSci_skillReq = \nRequires at least one <<1>>. + } +} \ No newline at end of file diff --git a/SampleAnalyzer.cs b/SampleAnalyzer.cs index 6e9a3a3..39c05bc 100755 --- a/SampleAnalyzer.cs +++ b/SampleAnalyzer.cs @@ -15,6 +15,7 @@ You should have received a copy of the GNU General Public License along with Station Science. If not, see . */ +using KSP.Localization; using System; using System.Collections.Generic; using System.Linq; @@ -33,7 +34,7 @@ class SampleAnalyzer : ModuleScienceContainer [KSPField(isPersistant = false)] public float kuarqHalflife = 0; - [KSPField(isPersistant = false, guiName = "Decay rate", guiUnits = " kuarqs/s", guiActive = false, guiFormat = "F2")] + [KSPField(isPersistant = false, guiName = "#autoLOC_StatSci_Decay", guiUnits = "#autoLOC_StatSci_Decayrate", guiActive = false, guiFormat = "F2")] public float kuarqDecay = 0; [KSPField(isPersistant = false)] @@ -43,24 +44,28 @@ class SampleAnalyzer : ModuleScienceContainer public int lightsMode = 1; // 0: force off; 1: auto; 2: force on + string lightsOn = Localizer.Format("#autoLOC_StatSci_LightsOn"); + string lightsOff = Localizer.Format("#autoLOC_StatSci_LightsOff"); + string lightsAuto = Localizer.Format("#autoLOC_StatSci_LightsAuto"); + public void updateLightsMode() { switch (lightsMode) { case 0: - Events["LightsMode"].guiName = "Lights: Off"; + Events["LightsMode"].guiName = lightsOff; break; case 1: - Events["LightsMode"].guiName = "Lights: Auto"; + Events["LightsMode"].guiName = lightsAuto; break; case 2: - Events["LightsMode"].guiName = "Lights: On"; + Events["LightsMode"].guiName = lightsOn; break; } updateLights(); } - [KSPEvent(guiActive = true, guiName = "Lights: Auto", active = true)] + [KSPEvent(guiActive = true, guiName = "#autoLOC_StatSci_LightsAuto", active = true)] public void LightsMode() { lightsMode += 1; @@ -89,7 +94,7 @@ public void analyze(IScienceDataContainer cont, ScienceData sd) //print(sd.title); if (GetScienceCount() > 0) { - ScreenMessages.PostScreenMessage("Analyzer already full. Transmit the data!", 6, ScreenMessageStyle.UPPER_CENTER); + ScreenMessages.PostScreenMessage(Localizer.Format("#autoLOC_StatSci_screen_analyseFull"), 6, ScreenMessageStyle.UPPER_CENTER); return; } cont.DumpData(sd); @@ -112,7 +117,7 @@ public void analyze(IScienceDataContainer cont, ScienceData sd) var kuarqs = getResourceAmount("Kuarqs"); if (kuarqs > 0 && kuarqs < kuarqsRequired) { - ScreenMessages.PostScreenMessage("Analysis still in progress.", 6, ScreenMessageStyle.UPPER_CENTER); + ScreenMessages.PostScreenMessage(Localizer.Format("#autoLOC_StatSci_screen_analyseFull"), 6, ScreenMessageStyle.UPPER_CENTER); return; } base.ReviewDataEvent(); @@ -123,7 +128,7 @@ public void analyze(IScienceDataContainer cont, ScienceData sd) var kuarqs = getResourceAmount("Kuarqs"); if (kuarqs > 0 && kuarqs < kuarqsRequired) { - ScreenMessages.PostScreenMessage("Analysis still in progress.", 6, ScreenMessageStyle.UPPER_CENTER); + ScreenMessages.PostScreenMessage(Localizer.Format("#autoLOC_StatSci_screen_analyseAct"), 6, ScreenMessageStyle.UPPER_CENTER); return; } base.ReviewData(); @@ -206,15 +211,15 @@ public void updateList() if (kuarqs != null && kuarqs.maxAmount > 0 && kuarqs.amount < kuarqsRequired) { if (kuarqs.amount == 0) - status = "Ready to analyze."; + status = Localizer.Format("#autoLOC_StatSci_analyseReady"); else - status = "Analyzing..."; + status = Localizer.Format("#autoLOC_StatSci_analysing"); } else - status = "Ready to transmit."; + status = Localizer.Format("#autoLOC_StatSci_readyTrans"); } else - status = "Ready to transmit."; + status = Localizer.Format("#autoLOC_StatSci_readyTrans"); } else { @@ -228,9 +233,9 @@ public void updateList() } } if (sampleEvents.Count == 0) - status = "Nothing to analyze."; + status = "#autoLOC_StatSci_analyseNothing"; else - status = "Ready to analyze."; + status = Localizer.Format("#autoLOC_StatSci_analyseReady"); } updateLights(); } @@ -254,7 +259,7 @@ public override void OnFixedUpdate() if (GetScienceCount() == 0) { - ScreenMessages.PostScreenMessage("Sample under analysis was transmitted away before completion.", 6, ScreenMessageStyle.UPPER_CENTER); + ScreenMessages.PostScreenMessage(Localizer.Format("#autoLOC_StatSci_screen_transmitted"), 6, ScreenMessageStyle.UPPER_CENTER); setResourceMaxAmount("Kuarqs", 0); } if (numKuarqs >= kuarqsRequired && GetScienceCount() > 0) @@ -264,7 +269,7 @@ public override void OnFixedUpdate() { var sd = sdata[0]; sd.baseTransmitValue = txValue; - ScreenMessages.PostScreenMessage("Analysis complete, and ready to transmit.", 6, ScreenMessageStyle.UPPER_CENTER); + ScreenMessages.PostScreenMessage(Localizer.Format("#autoLOC_StatSci_screen_anaComp"), 6, ScreenMessageStyle.UPPER_CENTER); setResourceMaxAmount("Kuarqs", 0); Events["ReviewDataEvent"].guiActive = true; } @@ -323,21 +328,21 @@ public override string GetInfo() { string ret = ""; string reqCyclo = ""; - ret += "Improved Transmit Quality: " + Math.Round(txValue * 100) + "%"; + ret += Localizer.Format("#autoLOC_StatSci_analyseImp" + Math.Round(txValue * 100)); if (kuarqsRequired > 0) { - ret += "\n\nKuarqs required: " + kuarqsRequired; + ret += "\n\n"+ Localizer.Format("autoLOC_StatSci_KuarkReq") + kuarqsRequired; double productionRequired = 0.01; if (kuarqHalflife > 0) { - ret += "\nKuarq decay halflife: " + kuarqHalflife + " seconds" + "\n"; + ret += Localizer.Format("#autoLOC_StatSci_KuarkHalf", kuarqHalflife); productionRequired = kuarqsRequired * (1 - Math.Pow(.5, 1.0 / kuarqHalflife)); - ret += String.Format("Production required: {0:F2} kuarq/s", productionRequired); + ret += Localizer.Format("#autoLOC_StatSci_KuarkProd", productionRequired); } if (productionRequired > 1) - reqCyclo = "\nRequires " + (Math.Ceiling(productionRequired)) + " D-ZZY Cyclotrons"; + reqCyclo = Localizer.Format("#autoLOC_StatSci_CycReqM", (Math.Ceiling(productionRequired))); else - reqCyclo = "\nRequires a D-ZZY Cyclotron"; + reqCyclo = Localizer.Format("#autoLOC_StatSci_CycReq"); } return ret + reqCyclo; } diff --git a/StationExperiment.cs b/StationExperiment.cs index af15c50..00f2af4 100755 --- a/StationExperiment.cs +++ b/StationExperiment.cs @@ -15,6 +15,7 @@ You should have received a copy of the GNU General Public License along with Station Science. If not, see . */ +using KSP.Localization; using System; using System.Collections.Generic; using System.Linq; @@ -32,7 +33,7 @@ public class StationExperiment : ModuleScienceExperiment [KSPField(isPersistant = false)] public float kuarqHalflife; - [KSPField(isPersistant = false, guiName = "Decay rate", guiUnits = " kuarqs/s", guiActive = false, guiFormat = "F2")] + [KSPField(isPersistant = false, guiName = "#autoLOC_StatSci_Decay", guiUnits = "#autoLOC_StatSci_Decayrate", guiActive = false, guiFormat = "F2")] public float kuarqDecay; [KSPField(isPersistant = false)] @@ -47,43 +48,44 @@ public class StationExperiment : ModuleScienceExperiment [KSPField(isPersistant = true)] public string last_subjectId = ""; - public static bool checkBoring(Vessel vessel, bool msg = false) + public static bool CheckBoring(Vessel vessel, bool msg = false) { //print(vessel.Landed + ", " + vessel.landedAt + ", " + vessel.launchTime + ", " + vessel.situation + ", " + vessel.orbit.referenceBody.name); if ((vessel.orbit.referenceBody.name == "Kerbin") && (vessel.situation == Vessel.Situations.LANDED || vessel.situation == Vessel.Situations.PRELAUNCH || vessel.situation == Vessel.Situations.SPLASHED || vessel.altitude <= vessel.orbit.referenceBody.atmosphereDepth)) { + StnSciScenario.Log("in boring place"); if (msg) - ScreenMessages.PostScreenMessage("Too boring here. Go to space!", 6, ScreenMessageStyle.UPPER_CENTER); + ScreenMessages.PostScreenMessage(Localizer.Format("#autoLOC_StatSci_screen_boring"), 6, ScreenMessageStyle.UPPER_CENTER); return true; } return false; } - public PartResource getResource(string name) + public PartResource GetResource(string name) { return ResourceHelper.getResource(part, name); } - public double getResourceAmount(string name) + public double GetResourceAmount(string name) { return ResourceHelper.getResourceAmount(part, name); } - public double getResourceMaxAmount(string name) + public double GetResourceMaxAmount(string name) { return ResourceHelper.getResourceMaxAmount(part, name); } - public PartResource setResourceMaxAmount(string name, double max) + public PartResource SetResourceMaxAmount(string name, double max) { return ResourceHelper.setResourceMaxAmount(part, name, max); } - public bool finished() + public bool Finished() { - double numEurekas = getResourceAmount("Eurekas"); - double numKuarqs = getResourceAmount("Kuarqs"); - double numBioproducts = getResourceAmount("Bioproducts"); + double numEurekas = GetResourceAmount("Eurekas"); + double numKuarqs = GetResourceAmount("Kuarqs"); + double numBioproducts = GetResourceAmount("Bioproducts"); //print(part.partInfo.title + " Eurekas: " + numEurekas + "/" + eurekasRequired); //print(part.partInfo.title + " Kuarqs: " + numKuarqs + "/" + kuarqsRequired); //print(part.partInfo.title + " Bioproducts: " + numBioproducts + "/" + bioproductsRequired); @@ -95,40 +97,41 @@ public override void OnStart(StartState state) base.OnStart(state); if (state == StartState.Editor) { return; } Fields["kuarqDecay"].guiActive = (kuarqsRequired > 0 && kuarqHalflife > 0); - Events["DeployExperiment"].active = finished(); + Events["DeployExperiment"].active = Finished(); this.part.force_activate(); - StartCoroutine(updateStatus()); + StartCoroutine(UpdateStatus()); //Actions["DeployAction"].active = false; } - [KSPEvent(guiActive = true, guiName = "Start Experiment", active = true)] + [KSPEvent(guiActive = true, guiName = "#autoLOC_StatSci_startExp", active = true)] public void StartExperiment() { if (GetScienceCount() > 0) { - ScreenMessages.PostScreenMessage("Experiment already finalized.", 6, ScreenMessageStyle.UPPER_CENTER); + ScreenMessages.PostScreenMessage(Localizer.Format("#autoLOC_StatSci_screen_finalized"), 6, ScreenMessageStyle.UPPER_CENTER); return; } - if (checkBoring(vessel, true)) return; - PartResource eurekas = setResourceMaxAmount("Eurekas", eurekasRequired); - PartResource kuarqs = setResourceMaxAmount("Kuarqs", kuarqsRequired); - PartResource bioproducts = setResourceMaxAmount("Bioproducts", bioproductsRequired); + if (CheckBoring(vessel, true)) return; + PartResource eurekas = SetResourceMaxAmount("Eurekas", eurekasRequired); + PartResource kuarqs = SetResourceMaxAmount("Kuarqs", kuarqsRequired); + PartResource bioproducts = SetResourceMaxAmount("Bioproducts", bioproductsRequired); if (eurekas.amount == 0 && bioproducts != null) bioproducts.amount = 0; Events["StartExperiment"].active = false; - ScreenMessages.PostScreenMessage("Started experiment!", 6, ScreenMessageStyle.UPPER_CENTER); + ScreenMessages.PostScreenMessage(Localizer.Format("#autoLOC_StatSci_screen_started"), 6, ScreenMessageStyle.UPPER_CENTER); } - [KSPAction("Start Experiment")] + [KSPAction("#autoLOC_StatSci_startExp")] public void StartExpAction(KSPActionParam p) { + StnSciScenario.Log("in startExperiment(arg)"); StartExperiment(); } - public bool deployChecks() + public bool DeployChecks() { - if (checkBoring(vessel, true)) return false; - if (finished()) + if (CheckBoring(vessel, true)) return false; + if (Finished()) { Events["DeployExperiment"].active = false; Events["StartExperiment"].active = false; @@ -136,41 +139,41 @@ public bool deployChecks() } else { - ScreenMessages.PostScreenMessage("Experiment not finished yet!", 6, ScreenMessageStyle.UPPER_CENTER); + ScreenMessages.PostScreenMessage("#autoLOC_StatSci_screen_notfinished", 6, ScreenMessageStyle.UPPER_CENTER); } return false; } new public void DeployExperiment() { - if (deployChecks()) + if (DeployChecks()) base.DeployExperiment(); } new public void DeployAction(KSPActionParam p) { - if (deployChecks()) + if (DeployChecks()) base.DeployAction(p); } new public void ResetExperiment() { base.ResetExperiment(); - stopResearch("Bioproducts"); + StopResearch("Bioproducts"); Events["StartExperiment"].active = true; } new public void ResetExperimentExternal() { base.ResetExperimentExternal(); - stopResearch("Bioproducts"); + StopResearch("Bioproducts"); Events["StartExperiment"].active = true; } new public void ResetAction(KSPActionParam p) { base.ResetAction(p); - stopResearch("Bioproducts"); + StopResearch("Bioproducts"); Events["StartExperiment"].active = true; } @@ -179,7 +182,7 @@ public override void OnFixedUpdate() base.OnFixedUpdate(); if (kuarqHalflife > 0 && kuarqsRequired > 0) { - var kuarqs = getResource("Kuarqs"); + var kuarqs = GetResource("Kuarqs"); if (kuarqs != null && kuarqs.amount < (.99 * kuarqsRequired)) { double decay = Math.Pow(.5, TimeWarp.fixedDeltaTime / kuarqHalflife); @@ -191,30 +194,30 @@ public override void OnFixedUpdate() } } - public void stopResearch(string resName) + public void StopResearch(string resName) { - setResourceMaxAmount(resName, 0); + SetResourceMaxAmount(resName, 0); } - public void stopResearch() + public void StopResearch() { - stopResearch("Eurekas"); - stopResearch("Kuarqs"); + StopResearch("Eurekas"); + StopResearch("Kuarqs"); } - public System.Collections.IEnumerator updateStatus() + public System.Collections.IEnumerator UpdateStatus() { while (true) { //print(part.partInfo.title + "updateStatus"); - double numEurekas = getResourceAmount("Eurekas"); - double numEurekasMax = getResourceMaxAmount("Eurekas"); - double numKuarqs = getResourceAmount("Kuarqs"); - double numKuarqsMax = getResourceMaxAmount("Kuarqs"); - double numBioproducts = getResourceAmount("Bioproducts"); + double numEurekas = GetResourceAmount("Eurekas"); + double numEurekasMax = GetResourceMaxAmount("Eurekas"); + double numKuarqs = GetResourceAmount("Kuarqs"); + double numKuarqsMax = GetResourceMaxAmount("Kuarqs"); + double numBioproducts = GetResourceAmount("Bioproducts"); int sciCount = GetScienceCount(); //print(part.partInfo.title + " finished: " + finished()); - if (!finished()) + if (!Finished()) { Events["DeployExperiment"].active = false; Events["StartExperiment"].active = (!Inoperable && sciCount == 0 && numEurekasMax == 0 && numKuarqsMax == 0); @@ -228,14 +231,14 @@ public System.Collections.IEnumerator updateStatus() string subjectId = ((subject == null) ? "" : subject.id); if(subjectId != "" && last_subjectId != "" && last_subjectId != subjectId && (numEurekas > 0 || numKuarqs > 0 || (numBioproducts > 0 && sciCount == 0))) { - ScreenMessages.PostScreenMessage("Location changed mid-experiment! " + part.partInfo.title + " ruined.", 6, ScreenMessageStyle.UPPER_CENTER); - stopResearch(); - stopResearch("Bioproducts"); + ScreenMessages.PostScreenMessage(Localizer.Format("#autoLOC_StatSci_screen_locchange", part.partInfo.title), 6, ScreenMessageStyle.UPPER_CENTER); + StopResearch(); + StopResearch("Bioproducts"); } last_subjectId = subjectId; if (sciCount > 0) { - stopResearch(); + StopResearch(); if (completed == 0) completed = (float) Planetarium.GetUniversalTime(); } @@ -244,7 +247,7 @@ public System.Collections.IEnumerator updateStatus() var eurekasModules = vessel.FindPartModulesImplementing(); if (eurekasModules == null || eurekasModules.Count() < 1) { - ScreenMessages.PostScreenMessage("Warning: " + part.partInfo.title + " has detached from the station without being finalized.", 2, ScreenMessageStyle.UPPER_CENTER); + ScreenMessages.PostScreenMessage(Localizer.Format("#autoLOC_StatSci_screen_detatch", part.partInfo.title), 2, ScreenMessageStyle.UPPER_CENTER); } } /* @@ -259,7 +262,7 @@ public System.Collections.IEnumerator updateStatus() */ if (numBioproducts > 0 && Inoperable) { - stopResearch("Bioproducts"); + StopResearch("Bioproducts"); } if (bioproductsRequired > 0 && GetScienceCount() > 0 && numBioproducts < bioproductsRequired) { @@ -275,34 +278,34 @@ public override string GetInfo() string reqLab = "", reqCyclo = "", reqZoo = ""; if (eurekasRequired > 0) { - ret += "Eurekas required: " + eurekasRequired; - reqLab = "\nRequires a TH-NKR Research Lab"; + ret += Localizer.Format("#autoLOC_StatSci_EuReq", eurekasRequired); + reqLab = Localizer.Format("#autoLOC_StatSci_LabReq"); } if (kuarqsRequired > 0) { if (ret != "") ret += "\n"; - ret += "Kuarqs required: " + kuarqsRequired; + ret += Localizer.Format("#autoLOC_StatSci_KuarkReq", kuarqsRequired); double productionRequired = 0.01; if (kuarqHalflife > 0) { if (ret != "") ret += "\n"; - ret += "Kuarq decay halflife: " + kuarqHalflife + " seconds" + "\n"; + ret += Localizer.Format("#autoLOC_StatSci_KuarkHalf", kuarqHalflife); productionRequired = kuarqsRequired * (1 - Math.Pow(.5, 1.0 / kuarqHalflife)); - ret += String.Format("Production required: {0:F2} kuarq/s", productionRequired); + ret += Localizer.Format("#autoLOC_StatSci_KuarkProd", productionRequired); } if (productionRequired > 1) - reqCyclo = "\nRequires " + (Math.Ceiling(productionRequired)) + " D-ZZY Cyclotrons"; + reqCyclo = Localizer.Format("#autoLOC_StatSci_CycReqM", Math.Ceiling(productionRequired)); else - reqCyclo = "\nRequires a D-ZZY Cyclotron"; + reqCyclo = Localizer.Format("#autoLOC_StatSci_CycReq"); } if (bioproductsRequired > 0) { if (ret != "") ret += "\n"; - ret += "Bioproducts required: " + bioproductsRequired; + ret += Localizer.Format("#autoLOC_StatSci_BioReq", bioproductsRequired); double bioproductDensity = ResourceHelper.getResourceDensity("Bioproducts"); if (bioproductDensity > 0) - ret += String.Format("\nMass when complete: {0:G} t", Math.Round(bioproductsRequired * bioproductDensity + part.mass,2)); - reqZoo = "\nRequires a F-RRY Zoology Bay"; + ret += Localizer.Format("#autoLOC_StatSci_BioMass", Math.Round(bioproductsRequired * bioproductDensity + part.mass,2)); + reqZoo = Localizer.Format("#autoLOC_StatSci_ZooReq"); } return ret + reqLab + reqCyclo + reqZoo + "\n\n" + base.GetInfo(); } diff --git a/StationScience.csproj b/StationScience.csproj index 117205c..a9cfe65 100755 --- a/StationScience.csproj +++ b/StationScience.csproj @@ -32,13 +32,13 @@ StationScience - + False - H:\KSP-1.3\KSP_win64\KSP_x64_Data\Managed\Assembly-CSharp.dll + H:\KSP-1.4\KSP_win64\KSP_x64_Data\Managed\Assembly-CSharp.dll False - H:\KSP-1.3\KSP_win64\KSP_x64_Data\Managed\KSPAssets.dll + H:\KSP-1.4\KSP_win64\KSP_x64_Data\Managed\KSPAssets.dll @@ -48,7 +48,7 @@ False - H:\KSP-1.3\KSP_win64\KSP_x64_Data\Managed\UnityEngine.dll + H:\KSP-1.4\KSP_win64\KSP_x64_Data\Managed\UnityEngine.dll diff --git a/StationScienceModule.cs b/StationScienceModule.cs index 0761f74..a5b4015 100755 --- a/StationScienceModule.cs +++ b/StationScienceModule.cs @@ -15,6 +15,7 @@ You should have received a copy of the GNU General Public License along with Station Science. If not, see . */ +using KSP.Localization; using System; using System.Collections.Generic; using System.Linq; @@ -36,7 +37,7 @@ public class StationScienceModule : ModuleResourceConverter [KSPField] public double experienceBonus = 0.5; - public bool checkSkill() + public bool CheckSkill() { if (requiredSkills == "" || requiredSkills == "NA") return true; @@ -73,12 +74,12 @@ protected override void PreProcessing() if (IsActivated && (curTime = UnityEngine.Time.realtimeSinceStartup) - lastCheck > 0.1) { lastCheck = curTime; - if (!checkSkill()) + if (!CheckSkill()) { StopResourceConverter(); this.status = "Inactive; no " + requiredSkills; } - else if (StationExperiment.checkBoring(vessel, false)) + else if (StationExperiment.CheckBoring(vessel, false)) { StopResourceConverter(); this.status = "Inactive; on Kerbin"; @@ -115,7 +116,7 @@ private System.Collections.IEnumerator doUpdateStatus() } #endif - private V getOrDefault(Dictionary dict, K key) + private V GetOrDefault(Dictionary dict, K key) { try { @@ -127,9 +128,9 @@ private V getOrDefault(Dictionary dict, K key) } } - private void updateStatus() + private void UpdateStatus() { - updateLights(); + UpdateLights(); #if false bool animActive = false; if (!doResearch) @@ -260,7 +261,7 @@ protected override void PostProcess(ConverterResults result, double deltaTime) base.PostProcess(result, deltaTime); actuallyProducing = (result.TimeFactor > 0); if(lightsMode == 1) - updateLights(); + UpdateLights(); if (lastRecipe == null) return; /* @@ -275,7 +276,7 @@ protected override void PostProcess(ConverterResults result, double deltaTime) */ } - void updateLights() + void UpdateLights() { if (animator != null) { @@ -326,34 +327,38 @@ public override void OnStart(PartModule.StartState state) if (state == StartState.Editor) { return; } this.part.force_activate(); - updateLightsMode(); + UpdateLightsMode(); //StartCoroutine(doUpdateStatus()); } - public void updateLightsMode() + string lightsOn = Localizer.Format("#autoLOC_StatSci_LightsOn"); + string lightsOff = Localizer.Format("#autoLOC_StatSci_LightsOff"); + string lightsAuto = Localizer.Format("#autoLOC_StatSci_LightsAuto"); + + public void UpdateLightsMode() { switch (lightsMode) { case 0: - Events["LightsMode"].guiName = "Lights: Off"; + Events["LightsMode"].guiName = lightsOff; break; case 1: - Events["LightsMode"].guiName = "Lights: Auto"; + Events["LightsMode"].guiName = lightsAuto; break; case 2: - Events["LightsMode"].guiName = "Lights: On"; + Events["LightsMode"].guiName = lightsOn; break; } - updateLights(); + UpdateLights(); } - [KSPEvent(guiActive = true, guiName = "Lights: Auto", active = true)] + [KSPEvent(guiActive = true, guiName = "#autoLOC_StatSci_LightsAuto", active = true)] public void LightsMode() { lightsMode += 1; if (lightsMode > 2) lightsMode = 0; - updateLightsMode(); + UpdateLightsMode(); } public override string GetInfo() @@ -361,8 +366,7 @@ public override string GetInfo() string ret = base.GetInfo(); if (requiredSkills != "" && requiredSkills != "NA") { - ret += "\n"; - ret += "Requires at least one " + requiredSkills + "."; + ret += Localizer.Format("autoLOC_StatSci_skillReq", requiredSkills); } return ret; #if false diff --git a/StnSciContract.cs b/StnSciContract.cs index 7d65199..7ea892b 100755 --- a/StnSciContract.cs +++ b/StnSciContract.cs @@ -144,7 +144,7 @@ private class ContractCandidate protected override bool Generate() { - //StnSciScenario.Log("Considering a StatSci contract"); + StnSciScenario.Log("Considering a StatSci contract"); if (ActiveCount() >= StnSciScenario.Instance.settings.maxContracts) { /*StnSciScenario.Log("StationScience contracts cap hit (" + @@ -353,7 +353,7 @@ protected override string GetHashString() } protected override string GetTitle() { - return Localizer.Format("Perform <<1>> in orbit around <<2>>", experimentType.title, targetBody.name); + return Localizer.Format("#autoLOC_StatSciContract_Title", experimentType.title, targetBody.name); } protected override string GetDescription() { @@ -362,11 +362,11 @@ protected override string GetDescription() } protected override string GetSynopsys() { - return Localizer.Format("We need you to complete <<1>> in orbit around <<2>>, and return it to Kerbin for recovery", experimentType.title, targetBody.name); + return Localizer.Format("#autoLOC_StatSciContract_Blurb", experimentType.title, targetBody.name); } protected override string MessageCompleted() { - return Localizer.Format("You have successfully performed <<1>> in orbit around <<2>>" + experimentType.title + "" + targetBody.name); + return Localizer.Format("#autoLOC_StatSciContract_Completed", experimentType.title, targetBody.name); } protected override void OnCompleted() diff --git a/StnSciParameters.cs b/StnSciParameters.cs index a33199f..1f7b66a 100755 --- a/StnSciParameters.cs +++ b/StnSciParameters.cs @@ -78,13 +78,12 @@ protected override string GetHashString() protected override string GetTitle() { - return Localizer.Format("Complete <<1>> in orbit around <<2>>", experimentType.title, targetBody.GetDisplayName()); + return Localizer.Format("#autoLOC_StatSciParam_Title", experimentType.title, targetBody.GetDisplayName()); } protected override string GetNotes() { - return Localizer.Format("Launch a new experiment part (<<1>>), bring it into orbit around <<2>>, "+ - "complete the experiment, return it (with results inside) to Kerbin and recover it", experimentType.title, targetBody.GetDisplayName()); + return Localizer.Format("#autoLOC_StatSciParam_Notes", experimentType.title, targetBody.GetDisplayName()); } private bool SetExperiment(string exp) @@ -169,8 +168,8 @@ protected override string GetTitle() { AvailablePart experimentType = StnSciParameter.getExperimentType(this); if (experimentType == null) - return "Launch new experiment pod"; - return "Launch new " + experimentType.title; + return Localizer.Format("#autoLOC_StatSciNewPod_TitleA"); + return Localizer.Format("#autoLOC_StatSciNewPod_TitleB", experimentType.title); } protected override void OnRegister() @@ -298,15 +297,15 @@ public DoExperimentParameter() protected override string GetHashString() { - return "do experiment " + this.GetHashCode(); + return Localizer.Format("#autoLOC_StatSciDoExp_Hash", this.GetHashCode()); } protected override string GetTitle() { CelestialBody targetBody = StnSciParameter.getTargetBody(this); if (targetBody == null) - return "Complete in orbit"; + return Localizer.Format("#autoLOC_StatSciDoExp_TitleA"); else - return Localizer.Format("Complete in orbit around <<1>>", targetBody.GetDisplayName()); + return Localizer.Format("#autoLOC_StatSciDoExp_TitleB", targetBody.GetDisplayName()); } private float lastUpdate = 0; @@ -381,7 +380,7 @@ protected override string GetHashString() } protected override string GetTitle() { - return "Recover at Kerbin"; + return Localizer.Format("#autoLOC_StatSciRetParam_Title"); } protected override void OnRegister()