diff --git a/.gitignore b/.gitignore index d3fa77d5..b89b3faf 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ Source/obj Source/bin **/*.wrk +.DS_Store diff --git a/ArtSources/fun_snacks.part/KIS_snacks.obj b/ArtSources/fun_snacks.part/KIS_snacks.obj new file mode 100644 index 00000000..23173752 --- /dev/null +++ b/ArtSources/fun_snacks.part/KIS_snacks.obj @@ -0,0 +1,166 @@ +# Blender v2.79 (sub 0) OBJ File: 'KIS_snacks.blend' +# www.blender.org +mtllib KIS_snacks.mtl +o Chocolate_Cube +v -0.032118 0.001519 -0.074304 +v -0.032118 -0.001519 -0.074304 +v 0.032118 -0.001519 -0.074304 +v 0.032118 0.001519 -0.074304 +v -0.034173 0.000571 -0.083766 +v -0.034173 -0.000571 -0.083766 +v 0.034173 -0.000571 -0.083766 +v 0.034173 0.000571 -0.083766 +v -0.030630 -0.005174 -0.070545 +v -0.031954 -0.003850 -0.070545 +v -0.031954 0.003850 -0.070545 +v -0.030630 0.005174 -0.070545 +v 0.031954 -0.003850 -0.070545 +v 0.030630 -0.005174 -0.070545 +v 0.030630 0.005174 -0.070545 +v 0.031954 0.003850 -0.070545 +v -0.029261 -0.005174 0.069221 +v -0.029809 -0.003850 0.070545 +v -0.030630 -0.005174 0.067852 +v -0.031954 -0.003850 0.068400 +v -0.030630 0.005174 0.067852 +v -0.031954 0.003850 0.068400 +v -0.029261 0.005174 0.069221 +v -0.029809 0.003850 0.070545 +v 0.030630 -0.005174 0.067852 +v 0.031954 -0.003850 0.068400 +v 0.029261 -0.005174 0.069221 +v 0.029809 -0.003850 0.070545 +v 0.029261 0.005174 0.069221 +v 0.029809 0.003850 0.070545 +v 0.030630 0.005174 0.067852 +v 0.031954 0.003850 0.068400 +vt 0.709109 0.018475 +vt 0.709109 0.052912 +vt 0.695543 0.052912 +vt 0.695543 0.018475 +vt 0.695543 0.018474 +vt 0.695543 0.052912 +vt 0.074080 0.052912 +vt 0.074080 0.018474 +vt 0.177844 0.492600 +vt 0.176021 0.126130 +vt 0.922918 0.122596 +vt 0.931514 0.131289 +vt 0.927749 0.488354 +vt 0.918871 0.496609 +vt 0.709109 0.018474 +vt 0.709109 0.052912 +vt 0.057252 0.028901 +vt 0.057252 0.042485 +vt 0.013946 0.038246 +vt 0.013946 0.033140 +vt 0.142352 0.109298 +vt 0.142353 0.509601 +vt 0.083094 0.522411 +vt 0.083093 0.096489 +vt 0.057252 0.028901 +vt 0.074081 0.018474 +vt 0.074081 0.052912 +vt 0.057252 0.042485 +vt 0.178600 0.945906 +vt 0.176636 0.579732 +vt 0.922932 0.575914 +vt 0.931525 0.584597 +vt 0.927898 0.941373 +vt 0.919031 0.949625 +vt 0.083938 0.975729 +vt 0.076510 0.975729 +vt 0.076343 0.550151 +vt 0.083771 0.550151 +vt 0.013946 0.038246 +vt 0.013946 0.033141 +vt 0.142987 0.562927 +vt 0.143144 0.962907 +vt 0.988541 0.052633 +vt 0.724660 0.052633 +vt 0.724660 0.018553 +vt 0.988541 0.018553 +vt 0.176292 0.958893 +vt 0.173878 0.113418 +vt 0.174490 0.567031 +vt 0.175529 0.505597 +vt 0.939862 0.946653 +vt 0.924657 0.962201 +vt 0.928120 0.110082 +vt 0.943413 0.125601 +vt 0.939721 0.493642 +vt 0.924497 0.509197 +vt 0.928126 0.563407 +vt 0.943413 0.578908 +vn 0.7071 0.0000 0.7071 +vn -1.0000 0.0000 0.0000 +vn -0.9999 0.0000 0.0171 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.0000 0.7071 +vn -0.9936 0.0000 0.1130 +vn -0.9772 0.0000 0.2123 +vn 0.0000 0.9950 -0.0997 +vn 0.9936 0.0000 0.1130 +vn 0.9999 0.0000 0.0171 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.9772 0.0000 0.2123 +vn 0.0000 -0.9950 -0.0997 +vn 0.0000 0.7169 -0.6972 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.7169 -0.6972 +vn -0.7007 -0.7007 -0.1338 +vn -0.6906 -0.6906 -0.2145 +vn -0.6548 -0.6548 -0.3776 +vn -0.6906 0.6906 -0.2145 +vn -0.7007 0.7007 -0.1338 +vn -0.6548 0.6548 -0.3776 +vn 0.6906 -0.6906 -0.2145 +vn 0.7007 -0.7007 -0.1338 +vn 0.6548 -0.6548 -0.3776 +vn 0.7007 0.7007 -0.1338 +vn 0.6906 0.6906 -0.2145 +vn 0.6548 0.6548 -0.3776 +vn -0.5000 -0.7071 0.5000 +vn -0.5000 0.7071 0.5000 +vn 0.5000 0.7071 0.5000 +vn 0.5000 -0.7071 0.5000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 -0.7071 0.7071 +vn -0.7071 0.7071 0.0000 +vn 0.0000 0.7071 0.7071 +vn 0.7071 0.7071 0.0000 +usemtl None +s 1 +f 30/1/1 28/2/1 26/3/1 32/4/1 +f 20/5/2 22/6/2 11/7/3 10/8/3 +f 15/9/4 12/10/4 21/11/4 23/12/4 29/13/4 31/14/4 +f 18/15/5 24/16/5 22/6/5 20/5/5 +f 2/17/6 1/18/6 5/19/7 6/20/7 +f 1/21/8 4/22/8 8/23/8 5/24/8 +f 4/25/9 16/26/10 13/27/10 3/28/9 +f 9/29/11 14/30/11 25/31/11 27/32/11 17/33/11 19/34/11 +f 13/27/10 16/26/10 32/4/12 26/3/12 +f 6/35/13 5/36/13 8/37/13 7/38/13 +f 4/25/9 3/28/9 7/39/14 8/40/14 +f 3/41/15 2/42/15 6/35/15 7/38/15 +f 1/21/16 12/10/16 15/9/16 4/22/16 +f 18/43/17 28/44/17 30/45/17 24/46/17 +f 3/41/18 14/30/18 9/29/18 2/42/18 +f 9/29/19 10/47/20 2/42/21 +f 11/48/22 12/10/23 1/21/24 +f 13/49/25 14/30/26 3/41/27 +f 15/9/28 16/50/29 4/22/30 +f 19/34/31 17/33/31 18/51/31 20/52/31 +f 23/12/32 21/11/32 22/53/32 24/54/32 +f 31/14/33 29/13/33 30/55/33 32/56/33 +f 27/32/34 25/31/34 26/57/34 28/58/34 +f 20/52/35 10/47/20 9/29/19 19/34/35 +f 13/49/25 26/57/36 25/31/36 14/30/26 +f 28/58/37 18/51/37 17/33/37 27/32/37 +f 21/11/38 12/10/23 11/48/22 22/53/38 +f 29/13/39 23/12/39 24/54/39 30/55/39 +f 32/56/40 16/50/29 15/9/28 31/14/40 +f 2/17/6 10/8/3 11/7/3 1/18/6 diff --git a/ArtSources/fun_snacks.part/KIS_snacks.unitypackage b/ArtSources/fun_snacks.part/KIS_snacks.unitypackage new file mode 100644 index 00000000..d880134b Binary files /dev/null and b/ArtSources/fun_snacks.part/KIS_snacks.unitypackage differ diff --git a/ArtSources/fun_snacks.part/LICENSE.md b/ArtSources/fun_snacks.part/LICENSE.md new file mode 100644 index 00000000..a74c7448 --- /dev/null +++ b/ArtSources/fun_snacks.part/LICENSE.md @@ -0,0 +1,9 @@ +# Sound sample + +The sound for this fun part (`snacks.ogg`) was obtained from [this source](https://lasonotheque.org/detail-0352-bruits-de-bouche-1.html). +It's distributed under `CC0 1.0 Universal, Public Domain Dedication` license. + +# Model, textures, and part CFG + +The original author of these resources is [@Well](https://forum.kerbalspaceprogram.com/index.php?/profile/145290-well/), +who is releasing the resources under `Public Domain` license. diff --git a/ArtSources/fun_snacks.part/Readme.txt b/ArtSources/fun_snacks.part/Readme.txt new file mode 100644 index 00000000..daf45e64 --- /dev/null +++ b/ArtSources/fun_snacks.part/Readme.txt @@ -0,0 +1,7 @@ + + ʕ•ᴥ•ʔ SNACKS! °(ᵔᴥᵔ)° + + This little fun part is made by Stéphane Colombain @Well + Inspired by the 1.10 promo picture + + Gift for KIS Modder @IgorZ and KSP community \ No newline at end of file diff --git a/ArtSources/fun_snacks.part/snacks.psd b/ArtSources/fun_snacks.part/snacks.psd new file mode 100644 index 00000000..327445f0 Binary files /dev/null and b/ArtSources/fun_snacks.part/snacks.psd differ diff --git a/Binaries/KSPDev_Utils.2.2.dll b/Binaries/KSPDev_Utils.2.4.dll similarity index 58% rename from Binaries/KSPDev_Utils.2.2.dll rename to Binaries/KSPDev_Utils.2.4.dll index ddd5e6d9..ddaceb38 100644 Binary files a/Binaries/KSPDev_Utils.2.2.dll and b/Binaries/KSPDev_Utils.2.4.dll differ diff --git a/Binaries/KSPDev_Utils.2.2.xml b/Binaries/KSPDev_Utils.2.4.xml similarity index 99% rename from Binaries/KSPDev_Utils.2.2.xml rename to Binaries/KSPDev_Utils.2.4.xml index 25b9d33b..eaefca14 100644 --- a/Binaries/KSPDev_Utils.2.2.xml +++ b/Binaries/KSPDev_Utils.2.4.xml @@ -1,7 +1,7 @@ - KSPDev_Utils.2.2 + KSPDev_Utils.2.4 @@ -906,7 +906,7 @@ Copies the custom part fields from the prefab into the instance. The consumer code must call this method from the OnAwake method to ensure the custom - fields are properly intialized. + fields are properly initialized. The module to copy the fields into. @@ -2808,8 +2808,8 @@ Localizes the items. - The localizable items must be declared as non-static public members. The following items are - supported: + The localizable items must be declared as non-static public or protected members. The + following items are supported: . This type may have multiple localization items: for guiName @@ -4606,7 +4606,7 @@ The EventSystem logic is not in sync with MonoBehaviour.Update, so the event system handlers should provide the pressed button explicitly. The callers from the Update method don't need to do so since the right action button can be extracted from - . + Input. Tells if only the modifiers in the event need to be checked. This is how a "precondition" can diff --git a/Binaries/MiniAVC-V2.dll b/Binaries/MiniAVC-V2.dll new file mode 100644 index 00000000..f390ef81 Binary files /dev/null and b/Binaries/MiniAVC-V2.dll differ diff --git a/Binaries/KSP-AVC.version b/Binaries/MiniAVC-V2.version similarity index 53% rename from Binaries/KSP-AVC.version rename to Binaries/MiniAVC-V2.version index fb4d2902..98803f4f 100644 --- a/Binaries/KSP-AVC.version +++ b/Binaries/MiniAVC-V2.version @@ -1,25 +1,20 @@ { - "NAME": "KSP-AVC Plugin", - "URL": "http://ksp.spacetux.net/avc/KSP-AVC", + "NAME": "MiniAVC-V2 Plugin", + "URL": "http://ksp.spacetux.net/avc/MiniAVC-V2", "DOWNLOAD": "https://github.com/linuxgurugamer/KSPAddonVersionChecker/releases", "GITHUB": { "USERNAME": "linuxgurugamer", "REPOSITORY": "KSPAddonVersionChecker" }, "VERSION": { - "MAJOR": 1, - "MINOR": 2, + "MAJOR": 2, + "MINOR": 0, "PATCH": 0, - "BUILD": 7 - }, - "KSP_VERSION": { - "MAJOR": 1, - "MINOR": 5, - "PATCH": 1 + "BUILD": 0 }, "KSP_VERSION_MIN": { "MAJOR": 1, - "MINOR": 5, - "PATCH": 1 + "MINOR": 8, + "PATCH": 0 } } diff --git a/Binaries/MiniAVC.dll b/Binaries/MiniAVC.dll deleted file mode 100644 index 3cb74500..00000000 Binary files a/Binaries/MiniAVC.dll and /dev/null differ diff --git a/CHANGELOG.md b/CHANGELOG.md index a9764179..553f43e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +# 1.26 (July 18th, 2020): +* [Change] Switch to `MiniAVC-V2`. +* [Enhancement] Add a new fun part: Snacks! +* [Enhancement] Add a new fun part: Fallen Kerbonaut. FYI, there is a real life prototype for this part. +* [Enhancement] Add storage lockers parts. They used to be a part of the defunc SEP mod. +* [Enhancement #360] Use fuel type from the config for the EVA fuel canister. +* [Fix #362] Tab Key in Map View crashes the game. +* [Fix #364] KSP 1.10: Carriable items cannot be equipped. + # 1.25 (April 25th, 2020): * [Change] Stop complaining about KSP minor version change. * [Change] Update ES-ES localization. diff --git a/Deps/CommunityCategoryKit/CCK.dll b/Deps/CommunityCategoryKit/CCK.dll index 1f56e9c6..eb7bdd04 100644 Binary files a/Deps/CommunityCategoryKit/CCK.dll and b/Deps/CommunityCategoryKit/CCK.dll differ diff --git a/Deps/CommunityCategoryKit/CCK.version b/Deps/CommunityCategoryKit/CCK.version index 6109ab69..61b1c606 100644 --- a/Deps/CommunityCategoryKit/CCK.version +++ b/Deps/CommunityCategoryKit/CCK.version @@ -5,27 +5,27 @@ "REPOSITORY": "CommunityCategoryKit", "USERNAME": "BobPalmer" }, - "KSP_VERSION":{ - "MAJOR":1, - "MINOR":8, - "PATCH":0 - }, - "KSP_VERSION_MIN":{ - "MAJOR":1, - "MINOR":8, - "PATCH":0 - }, - "KSP_VERSION_MAX":{ - "MAJOR":1, - "MINOR":8, - "PATCH":9 - }, + "KSP_VERSION": { + "MAJOR": 1, + "MINOR": 9, + "PATCH": 1 + }, + "KSP_VERSION_MAX": { + "MAJOR": 1, + "MINOR": 99, + "PATCH": 99 + }, + "KSP_VERSION_MIN": { + "MAJOR": 1, + "MINOR": 8, + "PATCH": 0 + }, "NAME": "Community Category Kit", "URL": "https://raw.githubusercontent.com/BobPalmer/CommunityCategoryKit/master/FOR_RELEASE/GameData/CommunityCategoryKit/CCK.version", "VERSION": { + "BUILD": 0, "MAJOR": 5, - "MINOR": 0, - "PATCH": 0, - "BUILD": 0 - } + "MINOR": 1, + "PATCH": 0 + } } \ No newline at end of file diff --git a/Deps/ModuleManager.4.1.3.dll b/Deps/ModuleManager.4.1.3.dll deleted file mode 100644 index 8af1d216..00000000 Binary files a/Deps/ModuleManager.4.1.3.dll and /dev/null differ diff --git a/Deps/ModuleManager.4.1.4.dll b/Deps/ModuleManager.4.1.4.dll new file mode 100644 index 00000000..b47a6da1 Binary files /dev/null and b/Deps/ModuleManager.4.1.4.dll differ diff --git a/KIS.version b/KIS.version index b9bb418d..bb1d94d1 100644 --- a/KIS.version +++ b/KIS.version @@ -19,9 +19,9 @@ "NAME": "Kerbal Inventory System", "URL": "https://raw.githubusercontent.com/ihsoft/KIS/master/KIS.version", "VERSION": { - "BUILD": 31998, + "BUILD": 42051, "MAJOR": 1, - "MINOR": 25, - "PATCH": 7420 + "MINOR": 26, + "PATCH": 7504 } } \ No newline at end of file diff --git a/Lang/en-us.cfg b/Lang/en-us.cfg index 63f9ea68..24949b2e 100644 --- a/Lang/en-us.cfg +++ b/Lang/en-us.cfg @@ -1,10 +1,10 @@ -// Version: 7 +// Version: 8 // Do NOT change the version unless a new string is added or an existing one was deleted. // A simple string update is not a new version! The version number is used to keep all // the localizations in sync. The EN-US localization file is the primary file, and all the // other languages should catch-up as the version is increasing. // Authors: KospY, IgorZ, Supercheese, rfelipe200 -// Last updated: 15/05/2019 +// Last updated: 18/07/2020 Localization { en-us @@ -147,6 +147,13 @@ Localization #KIS_guitar_Part_description = Sometimes, the only missing thing in outer space is... a guitar. This model is a North-Rope Strummin', the third most popular brand of guitars on Kerbin after Nos-Big and Red-Nef. Guitar picks sold separately. #KIS_guitar_Part_tags = cck-eva-items + // ********** Part: KIS.snacks + + #KIS_snacks_Part_title = Snacks! + #KIS_snacks_Part_manufacturer = Kerbal Inventory Systems + #KIS_snacks_Part_description = To be used in moderation. Snacks™ hypercalorie nutriotional suppliments will keep crew members happy on even the most mundane missions. + #KIS_snacks_Part_tags = cck-eva-items + // ********** Part: KIS.taco #KIS_taco_Part_title = T.B. Kerman's Taco @@ -162,6 +169,34 @@ Localization #KIS_wrench_Part_description = Returning from another regular expedition, Jeb complained that during almost every flight, some parts would come loose and start flying around the cabin. Our engineers took this report very seriously. After performing extensive research, numerous experiments, and consuming several gallons of koffee, the problem was diagnosed, and a simple, yet elegant solution was found: a wrench! Now Jeb can fix all those loose parts, or even attach additional struts mid-flight. #KIS_wrench_Part_tags = KIS EVA tool building portable cck-eva-items + // ********** Part: SEP.Box + + #SEP_Box_Part_title = Cardboard Box + #SEP_Box_Part_manufacturer = Albert Kermin Industries + #SEP_Box_Part_description = Collapsible cardboard box for transporting components from a lander to a site, for building Surface Experiment Packages or something else. + #SEP_Box_Part_tags = cck-containers cck-eva-items sep kis kas surface experiment inventory attachment eva storage container box cardboard + + // ********** Part: SEP.FallenKerbonaut + + #SEP_FallenKerbonaut_Part_title = Fallen Kerbonaut + #SEP_FallenKerbonaut_Part_manufacturer = Hoeydonck Van Kerman + #SEP_FallenKerbonaut_Part_description = This small aluminum sculpture is a memorial to all kerbonauts and ground personnel who have been lost in the pursuit of space exploration. The artist has respectfully asked that you take it and leave it on the surface of the Mun. + #SEP_FallenKerbonaut_Part_tags = fallen kerbonaut sculpture art cck-eva-items + + // ********** Part: SEP.StorageLong + + #SEP_StorageLong_Part_title = AKI-L Storage Locker + #SEP_StorageLong_Part_manufacturer = Albert Kermin Industries + #SEP_StorageLong_Part_description = A larger locker, for storing more stuff in a larger craft. It has nothing to do with any of the engineer's hall lockers going missing. + #SEP_StorageLong_Part_tags = cck-containers sep kis kas surface experiment inventory attachment eva storage container locker + + // ********** Part: SEP.StorageShort + + #SEP_StorageShort_Part_title = AKI-S Storage Locker + #SEP_StorageShort_Part_manufacturer = Albert Kermin Industries + #SEP_StorageShort_Part_description = Noticing that there was a problem with storing Surface Experiment Package parts on small landers, we ordered the engineers to find a solution. They came back with this steel box, which works quite nicely. No, it has nothing to do with the recent theft of Valentina's locker. + #SEP_StorageShort_Part_tags = cck-containers sep kis kas surface experiment inventory attachment eva storage container locker + // ********** Type: KIS.GUIUtils.VolumeLType, KSPDev Messages // Liter unit for a volume value. @@ -694,15 +729,29 @@ Localization // The message to present when the EVA kerbals has attempted to refill the jetpack, // but the tank is empty. #kisLOC_08001 = The canister is empty! Cannot refuel the jetpack - // The message to present when a non-full tank has successfully refilled from the - // pod's resource. + // The message to present when a non-full tank has successfully refilled to the top. #kisLOC_08002 = Fuel canister refilled // The message to present when the EVA kerbals has attempted to refill the jetpack, - // but the tank didn't have enough fuel to fill the jetpack to full. - #kisLOC_08003 = Not enough fuel in the canister. The jetpack is partially refueled - // The message to present when the EVA kerbals has attempted to refill the jetpack, // and the jetpack has successfully refilled to full. #kisLOC_08004 = Jetpack fully refueled + // The message to present when the EVA kerbals has attempted to refill the jetpack, + // but there was not enough fuel in the canister to fill the jetpack up to the top. + // Argument <<1>> is the amount of the resource added to the jetpack. Format: + // SmallNumberType. + #kisLOC_08005 = Added <<1>> units of fuel to the jetpack + // The message to present when the canister is attempted to be refilled, but its' + // already full. + #kisLOC_08006 = The canister is full. No need to refill + // The message to present when the canister have been refilled from the vessel's + // reserve with a consumable fuel type. + // Argument <<1>> is the name of the resource. Format: ResourceType. + // Argument <<2>> is the amount of the resource taken from the vessel. Format: + // SmallNumberType. + #kisLOC_08007 = Consumed <<2>> units of <<1>> from the vessel + // The message to present when the canister have been attempted to refill from the + // vessel's reserve with a consumable fuel type, and there were no resource. + // Argument <<1>> is the name of the resource. Format: ResourceType. + #kisLOC_08008 = Vessel doesn't have a spare reserve of <<1>> // ********** Type: KIS.ModuleKISItemSoundPlayer, KSPDev Messages diff --git a/Lang/es-es.cfg b/Lang/es-es.cfg index e777083c..93c2b1d5 100644 --- a/Lang/es-es.cfg +++ b/Lang/es-es.cfg @@ -1,8 +1,5 @@ // Version: 7 -// Do NOT change the version unless a new string is added or an existing one was deleted. -// A simple string update is not a new version! The version number is used to keep all -// the localizations in sync. The EN-US localization file is the primary file, and all the -// other languages should catch-up as the version is increasing. +// Before changing the version, read the instructions in the en-us.cfg file! // Authors: Fitiales // Last updated: 23/04/2020 Localization diff --git a/Lang/fr-fr.cfg b/Lang/fr-fr.cfg index 6013c91f..e69859ce 100644 --- a/Lang/fr-fr.cfg +++ b/Lang/fr-fr.cfg @@ -1,8 +1,5 @@ // Version: 5 -// Do NOT change the version unless a new string is added or an existing one was deleted. -// A simple string update is not a new version! The version number is used to keep all -// the localizations in sync. The EN-US localization file is the primary file, and all the -// other languages should catch-up as the version is increasing. +// Before changing the version, read the instructions in the en-us.cfg file! // Last updated: 02/01/2019 // Authors: Vincent Privat (https://github.com/don-vip) Localization diff --git a/Lang/ru.cfg b/Lang/ru.cfg index 5dfd3041..8415901c 100644 --- a/Lang/ru.cfg +++ b/Lang/ru.cfg @@ -1,7 +1,7 @@ -// Version: 7 +// Version: 8 // Before changing the version, read the instructions in the en-us.cfg file! // Author: Igor Zavoychinskiy (IgorZ) -// Last updated: 15/05/2019 +// Last updated: 18/07/2020 Localization { ru @@ -144,6 +144,13 @@ Localization #KIS_guitar_Part_description = Вот бывает так: всё хорошо, но гитары не хватает. #KIS_guitar_Part_tags = cck-eva-items + // ********** Part: KIS.snacks + + #KIS_snacks_Part_title = Сушеный кальмар + #KIS_snacks_Part_manufacturer = ЗАО «Керман и сын» (КИС) + #KIS_snacks_Part_description = Легкий перекус, способный поднять настроение даже в самой скучной миcсии! Особенно хорошо сочетается с Кербалтикой 9.

Комментарий производителя: в замкнутом пространстве не рекомендуется открывать более одного пакета одновременно. + #KIS_snacks_Part_tags = cck-eva-items + // ********** Part: KIS.taco #KIS_taco_Part_title = Тако без ГМО @@ -159,6 +166,34 @@ Localization #KIS_wrench_Part_description = Вернувшись из очередной экспедиции, Джебб пожаловался, что практически в каждом полёте какие-то приборы обязательно откручиваются и летают по всему кораблю. Наши инженеры очень серьёзно восприняли эту информацию. После длительных исследований и множества экспериментов проблема была подтверждена, и было найдено элегантное решение: гаечный ключ! Теперь Джебб сможет сам прикрутить приборы обратно прямо в полёте. Или даже закрепить рамку с фотографией своей собаки на стену каюты. #KIS_wrench_Part_tags = cck-eva-items KIS EVA инструмент строительство портативный + // ********** Part: SEP.Box + + #SEP_Box_Part_title = Картонная коробка + #SEP_Box_Part_manufacturer = Альберт Керман Индастриз + #SEP_Box_Part_description = Наш отдел продаж сломал себе голову, придумывая звучное описание этому продукту. Но картонная коробка - это, как ни крути, просто картонная коробка. В нее удобно складывать инструменты, например. + #SEP_Box_Part_tags = cck-containers cck-eva-items sep kis kas surface experiment inventory attachment eva storage container box cardboard + + // ********** Part: SEP.FallenKerbonaut + + #SEP_FallenKerbonaut_Part_title = Павший кербонавт + #SEP_FallenKerbonaut_Part_manufacturer = Хейдонк ван Керман + #SEP_FallenKerbonaut_Part_description = Эта маленькая алюминиевая статуэтка - это мемориал кербонавтам которые не вернулись из миссий по исследованию космоса. Автор попросил доставить ее на Муну и оставить там как символ тяги кербалов к познанию Вселенной. + #SEP_FallenKerbonaut_Part_tags = fallen kerbonaut sculpture art cck-eva-items + + // ********** Part: SEP.StorageLong + + #SEP_StorageLong_Part_title = AKI-L Персональный Шкаф + #SEP_StorageLong_Part_manufacturer = Альберт Керман Индастриз + #SEP_StorageLong_Part_description = У некоторых кербонавтов персональных вещей сильно больше чему у других. В этих случаях мы предлагаем увеличенную версию Персонального Шкафчика. И да, этот шкаф тоже монтируется на внешней стороне стенки модуля. А еще он выглядит стильно! + #SEP_StorageLong_Part_tags = cck-containers sep kis kas surface experiment inventory attachment eva storage container locker + + // ********** Part: SEP.StorageShort + + #SEP_StorageShort_Part_title = AKI-S Персональный Шкафчик + #SEP_StorageShort_Part_manufacturer = Альберт Керман Индастриз + #SEP_StorageShort_Part_description = Некоторые кербонавты (нет, не Валентина) жаловались, что им некуда складывать свои персональные вещи. И ведь их и правда некуда складывать в стандартном жилом модуле! Для решения этой проблемы мы разработали небольшой персональный шкафчик, встраиваемый в стенку модуля. Снаружи модуля. Отзывы на это решение были противоречивые, но в целом - положительные. + #SEP_StorageShort_Part_tags = cck-containers sep kis kas surface experiment inventory attachment eva storage container locker + // ********** Type: KIS.GUIUtils.VolumeLType, KSPDev Messages // Liter unit for a volume value. @@ -691,15 +726,27 @@ Localization // The message to present when the EVA kerbals has attempted to refill the jetpack, // but the tank is empty. #kisLOC_08001 = Баллон пуст! Невозможно зарядить ранец - // The message to present when a non-full tank has successfully refilled from the - // pod's resource. + // The message to present when a non-full tank has successfully refilled to the top. #kisLOC_08002 = Баллон перезаряжен // The message to present when the EVA kerbals has attempted to refill the jetpack, - // but the tank didn't have enough fuel to fill the jetpack to full. - #kisLOC_08003 = Недостаточно топлива в баллоне. Ранец заряжен лишь частично - // The message to present when the EVA kerbals has attempted to refill the jetpack, // and the jetpack has successfully refilled to full. #kisLOC_08004 = Ракетный ранец полностью перезаряжен + // The message to present when the EVA kerbals has attempted to refill the jetpack, + // but there was not enough fuel in the canister to fill the jetpack up to the top. + #kisLOC_08005 = Добавлено <<1>> единиц топлива в ракетный ранец + // The message to present when the canister is attempted to be refilled, but its' + // already full. + #kisLOC_08006 = Баллон уже полон. Нет необходимости его заправлять + // The message to present when the canister have been refilled from the vessel's + // reserve with a consumable fuel type. + // Argument <<1>> is the name of the resource. Format: ResourceType. + // Argument <<2>> is the amount of the resource taken from the vessel. Format: + // SmallNumberType. + #kisLOC_08007 = Взято <<2>> единиц <<1>> из системы КА + // The message to present when the canister have been attempted to refill from the + // vessel's reserve with a consumable fuel type, and there were no resource. + // Argument <<1>> is the name of the resource. Format: ResourceType. + #kisLOC_08008 = В системе КА нет доступных резервов <<1>> // ********** Type: KIS.ModuleKISItemSoundPlayer, KSPDev Messages diff --git a/Lang/zh-cn.cfg b/Lang/zh-cn.cfg index 063cacca..2ab6bb2f 100644 --- a/Lang/zh-cn.cfg +++ b/Lang/zh-cn.cfg @@ -1,7 +1,10 @@ -// Version: 2 +// Version: 7 // Before changing the version, read the instructions in the en-us.cfg file! // Author: RonnyWu // Last updated: 31/12/2018 + + + Localization { zh-cn @@ -9,17 +12,17 @@ Localization // ********** Part: KIS.basketball - #KIS_basketball_Part_description = 这是一个用来做引力实验的好工具. + #KIS_basketball_Part_title = 篮球 #KIS_basketball_Part_manufacturer = KIS + #KIS_basketball_Part_description = 这是一个用来做引力实验的好工具.即使在微重力下,牛顿第三定律仍然可行.Jeb声称,他是在被神秘地传送到一个叫做白痴山(Moron Mountain)的星球时发现这个球的。任务控制中心坚称他们不知道这样的任务,但Jeb坚持说,当他的通讯被干扰时,他就从太空被传送到那了.当被问到更多细节时,他总是拒绝,说"他答应了迈克尔他会保守这个秘密”。没人知道他在说什么。 #KIS_basketball_Part_tags = cck-eva-items - #KIS_basketball_Part_title = 篮球 // ********** Part: KIS.beer + #KIS_beer_Part_title = 布勃的啤酒 #KIS_beer_Part_description = 美味又实惠的啤酒.每个太空机构的管理员都应该为那些让人感动的航天员准备一些,而且这能让他们保持足够的积极性和充足的动力。 #KIS_beer_Part_manufacturer = KIS #KIS_beer_Part_tags = cck-eva-items - #KIS_beer_Part_title = 布勃的啤酒 #KIS_beer_Part_useName = 饮料 // ********** Part: KIS.bomb1 @@ -57,6 +60,41 @@ Localization #KIS_Container3_Part_description = ISC-6K 是采用内部访问设计的小型仓库,可以从飞船内部进行访问,可以不需要进行EAV来访问该部件.但是因为飞船内部添加了气压(氧气)来支持航天员进行内部访问,所以跟其他仓库相比,拥有额外的质量,而且虽然有氧但是并没有安装乘员座椅. #KIS_Container3_Part_tags = KIS container inventory cck-containers + // ********** Part: KIS.Container4 + + #KIS_Container4_Part_title = ImC-1500集装箱 + #KIS_Container4_Part_manufacturer = KIS + #KIS_Container4_Part_description = 三个工程师在一个聚会上拿了几罐啤酒。经过几轮推杯换盏后,他们决定设计一个他们最新的,最完美的,占用空间小的货物模块。因此,Imc-1500集装箱诞生了,适用于长距离运送部件和零食(冷冻箱单独出售).负责任地使用。 + #KIS_Container4_Part_tags = cck-containers KIS container inventory + + // ********** Part: KIS.Container5 + + #KIS_Container5_Part_title = IGC-25K集装箱 + #KIS_Container5_Part_manufacturer = KIS + #KIS_Container5_Part_description = 一种特别为长期补给任务或洲际航运而设计的巨大集装箱(绝对不是从坎邦快递KEDEX的货运飞机上打捞出来的)。如果翻新并用作付费电话亭,保修无效。 + #KIS_Container5_Part_tags = cck-containers KIS container inventory + + // ********** Part: KIS.Container6 + + #KIS_Container6_Part_title = IMiC-800集装箱 + #KIS_Container6_Part_manufacturer = KIS + #KIS_Container6_Part_description = IMiC-800是整个家族中最小的成员,适用于当你想拿一些零食或物品时,但又不想穿上太空服去拿的情况。 + #KIS_Container6_Part_tags = cck-containers KIS container inventory + + // ********** Part: KIS.Container7 + + #KIS_Container7_Part_title = IMC-15K集装箱 + #KIS_Container7_Part_manufacturer = KIS + #KIS_Container7_Part_description = 一个较小的集装箱,是在工程团队意外地将IGC-25K切成两半时开发出来的。如果与另一个IMC-15K装置堆放在一起,则保修无效。 + #KIS_Container7_Part_tags = cck-containers KIS container inventory + + // ********** Part: KIS.Container8 + + #KIS_Container8_Part_title = IWC-3K "飞龙" + #KIS_Container8_Part_manufacturer = KIS + #KIS_Container8_Part_description = IWC-3K“飞龙”集装箱是专门为你不能决定食物是否足够去Duna旅行或就是为了防止食物不足的情况而设计的。如果与KIS容器(单独出售)以外的任何容器一起使用,则保修无效。 + #KIS_Container8_Part_tags = cck-containers KIS container inventory + // ********** Part: KIS.ContainerMount1 #KIS_ContainerMount1_Part_title = SM-62便携式仓库卡扣 @@ -81,17 +119,17 @@ Localization // ********** Part: KIS.ghettoblaster + #KIS_ghettoblaster_Part_title = 磁带录音机 #KIS_ghettoblaster_Part_description = 进行太空旅行时或者等待救援时,如何消磨时间不是一件容易的事情,磁带录音机可以让航天员们保持有事可做. #KIS_ghettoblaster_Part_manufacturer = KIS #KIS_ghettoblaster_Part_tags = cck-eva-items - #KIS_ghettoblaster_Part_title = 磁带录音机 // ********** Part: KIS.golfclub + #KIS_golfclub_Part_title = 高尔夫球棒 #KIS_golfclub_Part_description = 这是另一个未经批准的重力实验项目,玩高尔夫球. #KIS_golfclub_Part_manufacturer = KIS #KIS_golfclub_Part_tags = cck-eva-items - #KIS_golfclub_Part_title = 高尔夫球棒 #KIS_golfclub_Part_useName = 挥杆 // ********** Part: KIS.guide @@ -104,17 +142,17 @@ Localization // ********** Part: KIS.guitar - #KIS_guitar_Part_description = 静寂的太空,航天员需要一把吉他来解闷. + #KIS_guitar_Part_title = 吉他 #KIS_guitar_Part_manufacturer = KIS + #KIS_guitar_Part_description = 静寂的太空,航天员需要一把吉他来解闷. #KIS_guitar_Part_tags = cck-eva-items - #KIS_guitar_Part_title = 吉他 // ********** Part: KIS.taco - #KIS_taco_Part_description = 添加了牛肉,蔬菜和辣椒酱的玉米薄饼卷,我们的每一位航天员都需要一份太空餐. + #KIS_taco_Part_title = T.B. Kerman的墨西哥玉米薄饼卷 + #KIS_taco_Part_description = 添加了牛肉,蔬菜和辣椒酱的玉米薄饼卷,我们的每一位航天员都需要一份太空餐.似乎没人知道"T.B."代表什么。 #KIS_taco_Part_manufacturer = KIS #KIS_taco_Part_tags = cck-eva-items - #KIS_taco_Part_title = 墨西哥玉米薄饼卷 #KIS_taco_Part_useName = 进餐 // ********** Part: KIS.wrench @@ -156,10 +194,10 @@ Localization // The action status to show in the tooltip when the player presses the re-dock // action key and the action is allowed. - #kisLOC_01000 = Re-dock + #kisLOC_01000 = 重接 // The action status to show in the tooltip when the player presses the re-dock // action key and the action is not allowed. - #kisLOC_01001 = Can't re-dock + #kisLOC_01001 = 无法重接 // The action status to show in the tooltip when the player presses the grab action // key while pointing on a root part, and the action is allowed. #kisLOC_01002 = 拾取 @@ -223,12 +261,12 @@ Localization // cursor is not pointing any part. #kisLOC_01020 = 选择一艘航天器 // The tooltip help string to display when the player attempts to grab a kerbal - #kisLOC_01021 = 航天员问你"我能不能自己用喷气背包移动" + #kisLOC_01021 = 该航天员问你"我能不能自己用喷气背包移动" // The tooltip help string to display when the player attempts to grab a too heavy // object. // Argument <<1>> is the total mass of the target object. Format: MassType. // Argument <<2>> is the maximum allowed mass. Format: MassType. - #kisLOC_01022 = 你应该叫来更多的小绿人(航天员) + #kisLOC_01022 = 你应该叫来更多的小绿人(<<1>> > <<2>>) // The tooltip help string to display when the player attempts to grab an object // which is too far away. #kisLOC_01023 = 太远了,请靠近一点 @@ -285,6 +323,9 @@ Localization #kisLOC_01038 = [<<1>>] 安装 // The tooltip help string for the key binding to cancel the operation. #kisLOC_01039 = [Escape] 取消 + // The action status to show in the tooltip when the player tries to pick up a + // ground experment from the scene. These parts must be handled via their menus. + #kisLOC_01040 = KIS无法处理展开的地面实验部件\n请按右键访问该部件的菜单来拾起! // ********** Type: KIS.KISAddonPointer, KSPDev Messages @@ -337,14 +378,14 @@ Localization // multiple parts. // Argument <<1>> is the number of the children parts atatched to the part being // dragged. - #kisLOC_00002 = 不能将一个组建放入仓库,该组建有<<1>>个安装部件 + #kisLOC_00002 = 不能将一个组件放入仓库,该组件有<<1>>个安装部件 // The message to present when an item being dragged into an inventory whichdoesn't // have enough free space. // Argument <<1>> is a value of type VolumeLType which specifies the volume which is // attempted to be moved. // Argument <<2>> is a value of type VolumeLType which specifies the exceeding // volume over the max inventory capacity. - #kisLOC_00003 = 当前仓库最大容积为: <<1>> , 超出 <<2>> + #kisLOC_00003 = 该物件体积为: <<1>> , 超出仓库 <<2>> // The message to present when a storage, which is being carried on a back of an EVA // kerbal, is attempted to be accessed. #kisLOC_00004 = 无法在携带仓库时进行访问! @@ -527,6 +568,9 @@ Localization // The info string in the editor to present if kerbals cannot access the items in // the inventory when going EVA. #kisLOC_00060 = 不支持外部(EVA)访问 + // The message to present when a stock game ground experiment part is attempted to + // be stored into inventory in the editor. Such parts cannot be handled by KIS. + #kisLOC_00061 = KIS不支持此部件的放入. 可能是DLC的地面实验部件,请安装游戏的规则使用该部件。 // ********** Type: KIS.ModuleKISItem, KSPDev Messages @@ -676,5 +720,10 @@ Localization // The name of the context menu item to release the mounted part. #kisLOC_10000 = 拆卸 + + // ********** Global strings + + // Caption for the editor category. + #kisLOC_99001 = EVA 物品 } } diff --git a/Parts.fun/FallenKerbonaut/FallenAstronaut.dds b/Parts.fun/FallenKerbonaut/FallenAstronaut.dds new file mode 100755 index 00000000..ca51bdba Binary files /dev/null and b/Parts.fun/FallenKerbonaut/FallenAstronaut.dds differ diff --git a/Parts.fun/FallenKerbonaut/FallenAstronaut_NRM.dds b/Parts.fun/FallenKerbonaut/FallenAstronaut_NRM.dds new file mode 100755 index 00000000..771a9eda Binary files /dev/null and b/Parts.fun/FallenKerbonaut/FallenAstronaut_NRM.dds differ diff --git a/Parts.fun/FallenKerbonaut/FallenKerbonaut.mu b/Parts.fun/FallenKerbonaut/FallenKerbonaut.mu new file mode 100755 index 00000000..d2457d7e Binary files /dev/null and b/Parts.fun/FallenKerbonaut/FallenKerbonaut.mu differ diff --git a/Parts.fun/FallenKerbonaut/LICENSE.md b/Parts.fun/FallenKerbonaut/LICENSE.md new file mode 100644 index 00000000..2ad239dc --- /dev/null +++ b/Parts.fun/FallenKerbonaut/LICENSE.md @@ -0,0 +1,8 @@ +# License + +This work is presented under a Simplified BSD license. + +# Overview + +The parts in this subfolder are borrowed from the [SEP](https://forum.kerbalspaceprogram.com/index.php?/topic/155382-16x-surface-experiment-pack-deployable-science-for-kiskas-v27-13jan19/) +mod. All credits go to the respected authors. diff --git a/Parts.fun/FallenKerbonaut/SEP_FallenKerbonaut.cfg b/Parts.fun/FallenKerbonaut/SEP_FallenKerbonaut.cfg new file mode 100755 index 00000000..c2b90c6f --- /dev/null +++ b/Parts.fun/FallenKerbonaut/SEP_FallenKerbonaut.cfg @@ -0,0 +1,48 @@ +PART +{ + name = SEP_FallenKerbonaut + module = Part + author = CobaltWolf + rescaleFactor = 1 + node_attach = 0.0, 0.0, -0.07, 0.0, 0.0, 1.0, 0 + TechRequired = spaceExploration + entryCost = 1 + cost = 1 + category = Structural + subcategory = 0 + title = #SEP_FallenKerbonaut_Part_title // #SEP_FallenKerbonaut_Part_title = Fallen Kerbonaut + manufacturer = #SEP_FallenKerbonaut_Part_manufacturer // #SEP_FallenKerbonaut_Part_manufacturer = Hoeydonck Van Kerman + description = #SEP_FallenKerbonaut_Part_description // #SEP_FallenKerbonaut_Part_description = This small aluminum sculpture is a memorial to all kerbonauts and ground personnel who have been lost in the pursuit of space exploration. The artist has respectfully asked that you take it and leave it on the surface of the Mun. + attachRules = 1,1,1,1,0 + mass = 0.0025 + dragModelType = default + maximum_drag = 0.2 + minimum_drag = 0.2 + angularDrag = 1 + crashTolerance = 1000 + breakingForce = 1000 + breakingTorque = 200 + maxTemp = 2000 // = 5000 + bulkheadProfiles = size0, srf + tags = #SEP_FallenKerbonaut_Part_tags // #SEP_FallenKerbonaut_Part_tags = fallen kerbonaut sculpture art cck-eva-items + + MODEL + { + model = KIS/Parts.fun/FallenKerbonaut/FallenKerbonaut + } + MODULE + { + name = ModuleKISItem + shortcutKeyAction = equip + equipable = true + equipSlot = leftHand + useName = Place + equipBoneName = aliasLeftPalm + equipPos = (0.04,-0.02,0) + equipDir = (0,90,0) + volumeOverride = 0.001 + stackable = false + allowStaticAttach = 1 + staticAttachBreakForce = 2000 + } +} diff --git a/Parts.fun/fun_snacks/LICENSE.md b/Parts.fun/fun_snacks/LICENSE.md new file mode 100644 index 00000000..a74c7448 --- /dev/null +++ b/Parts.fun/fun_snacks/LICENSE.md @@ -0,0 +1,9 @@ +# Sound sample + +The sound for this fun part (`snacks.ogg`) was obtained from [this source](https://lasonotheque.org/detail-0352-bruits-de-bouche-1.html). +It's distributed under `CC0 1.0 Universal, Public Domain Dedication` license. + +# Model, textures, and part CFG + +The original author of these resources is [@Well](https://forum.kerbalspaceprogram.com/index.php?/profile/145290-well/), +who is releasing the resources under `Public Domain` license. diff --git a/Parts.fun/fun_snacks/Readme.txt b/Parts.fun/fun_snacks/Readme.txt new file mode 100644 index 00000000..daf45e64 --- /dev/null +++ b/Parts.fun/fun_snacks/Readme.txt @@ -0,0 +1,7 @@ + + ʕ•ᴥ•ʔ SNACKS! °(ᵔᴥᵔ)° + + This little fun part is made by Stéphane Colombain @Well + Inspired by the 1.10 promo picture + + Gift for KIS Modder @IgorZ and KSP community \ No newline at end of file diff --git a/Parts.fun/fun_snacks/snacks.cfg b/Parts.fun/fun_snacks/snacks.cfg new file mode 100644 index 00000000..e9e12a47 --- /dev/null +++ b/Parts.fun/fun_snacks/snacks.cfg @@ -0,0 +1,60 @@ +PART +{ + // --- general parameters --- + name = KIS_snacks + module = Part + author = Well + + // --- asset parameters --- + mesh = snacks.mu + scale = 1 + + // --- node definitions --- + node_attach = 0, -0.012923, 0.0, 0.0, -1.0, 0.0, 1 + + // --- editor parameters --- + TechRequired = advExploration + entryCost = 15 + cost = 6 + category = none + subcategory = 0 + title = #KIS_snacks_Part_title // #KIS_snacks_Part_title = Snacks! + manufacturer = #KIS_snacks_Part_manufacturer // #KIS_snacks_Part_manufacturer = Kerbal Inventory Systems + description = #KIS_snacks_Part_description // #KIS_snacks_Part_description = To be used in moderation. Snacks™ hypercalorie nutriotional suppliments will keep crew members happy on even the most mundane missions. + + // attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision + attachRules = 0,0,0,0,0 + + // --- standard part parameters --- + mass = 0.001 + dragModelType = default + maximum_drag = 0.2 + minimum_drag = 0.3 + angularDrag = 2 + crashTolerance = 6 + maxTemp = 2200 + breakingForce = 1 + breakingTorque = 1 + bulkheadProfiles = srf + + tags = #KIS_taco_Part_tags // #KIS_taco_Part_tags = cck-eva-items + + MODULE + { + name = ModuleKISItemFood + shortcutKeyAction = equip + usableFromEva = true + usableFromContainer = false + usableFromPod = false + usableFromEditor = false + equipSlot = rightHand + equipBoneName = aliasRightPalm + useName = #KIS_taco_Part_useName // #KIS_taco_Part_useName = Eat + stackable = true + equipable = true + equipPos = (0.05,0.038,-0.021) + equipDir = (0,180,170) + eatSndPath = KIS/Parts.fun/fun_snacks/snacks + allowPartAttach = Disabled + } +} diff --git a/Parts.fun/fun_snacks/snacks.dds b/Parts.fun/fun_snacks/snacks.dds new file mode 100644 index 00000000..246eae70 Binary files /dev/null and b/Parts.fun/fun_snacks/snacks.dds differ diff --git a/Parts.fun/fun_snacks/snacks.mu b/Parts.fun/fun_snacks/snacks.mu new file mode 100644 index 00000000..121510f8 Binary files /dev/null and b/Parts.fun/fun_snacks/snacks.mu differ diff --git a/Parts.fun/fun_snacks/snacks.ogg b/Parts.fun/fun_snacks/snacks.ogg new file mode 100644 index 00000000..9450294f Binary files /dev/null and b/Parts.fun/fun_snacks/snacks.ogg differ diff --git a/Parts/SEP_Storage/LICENSE.md b/Parts/SEP_Storage/LICENSE.md new file mode 100644 index 00000000..2ad239dc --- /dev/null +++ b/Parts/SEP_Storage/LICENSE.md @@ -0,0 +1,8 @@ +# License + +This work is presented under a Simplified BSD license. + +# Overview + +The parts in this subfolder are borrowed from the [SEP](https://forum.kerbalspaceprogram.com/index.php?/topic/155382-16x-surface-experiment-pack-deployable-science-for-kiskas-v27-13jan19/) +mod. All credits go to the respected authors. diff --git a/Parts/SEP_Storage/SEP_Box.cfg b/Parts/SEP_Storage/SEP_Box.cfg new file mode 100755 index 00000000..6d59b0fc --- /dev/null +++ b/Parts/SEP_Storage/SEP_Box.cfg @@ -0,0 +1,61 @@ +PART +{ + name = SEP_Box + module = Part + author = CobaltWolf + rescaleFactor = 1.0 + node_attach = 0, -0.29, 0.0, 0, -1.0, 0.0, 0 + TechRequired = generalConstruction + entryCost = 100 + cost = 5 + category = Payload + subcategory = 0 + title = #SEP_Box_Part_title // #SEP_Box_Part_title = Cardboard Box + manufacturer = #SEP_Box_Part_manufacturer // #SEP_Box_Part_manufacturer = Albert Kermin Industries + description = #SEP_Box_Part_description // #SEP_Box_Part_description = Collapsible cardboard box for transporting components from a lander to a site, for building Surface Experiment Packages or something else. + attachRules = 0,1,0,0,1 + mass = 0.01 + dragModelType = default + maximum_drag = 0.2 + minimum_drag = 0.3 + angularDrag = 2 + crashTolerance = 12 + maxTemp = 2000 + breakingForce = 500 + breakingTorque = 500 + bulkheadProfiles = srf + tags = #SEP_Box_Part_tags // #SEP_Box_Part_tags = cck-containers cck-eva-items sep kis kas surface experiment inventory attachment eva storage container box cardboard + + MODEL + { + model = KIS/Parts/SEP_Storage/SEP_Box + } + MODULE + { + name = ModuleKISInventory + maxVolume = 750 + externalAccess = true + internalAccess = false + slotsX = 4 + slotsY = 3 + slotSize = 50 + itemIconResolution = 128 + selfIconResolution = 128 + openSndPath = KIS/Sounds/containerOpen + closeSndPath = KIS/Sounds/containerClose + defaultMoveSndPath = KIS/Sounds/itemMove + } + MODULE + { + name = ModuleKISItemEvaTweaker + volumeOverride = 3 + editorItemsCategory = false + carriable = true + equipMode = part + equipSlot = jetpack + equipBoneName = aliasJetpack + equipPos = (0,0.21,-0.3) + equipDir = (280,0,0) + runSpeed = 0.8 + } +} diff --git a/Parts/SEP_Storage/SEP_Box.mu b/Parts/SEP_Storage/SEP_Box.mu new file mode 100755 index 00000000..0ed95cd9 Binary files /dev/null and b/Parts/SEP_Storage/SEP_Box.mu differ diff --git a/Parts/SEP_Storage/SEP_StorageLong.cfg b/Parts/SEP_Storage/SEP_StorageLong.cfg new file mode 100755 index 00000000..2957d7c1 --- /dev/null +++ b/Parts/SEP_Storage/SEP_StorageLong.cfg @@ -0,0 +1,54 @@ +PART +{ + name = SEP_StorageLong + module = Part + author = CobaltWolf + rescaleFactor = 1.0 + node_attach = -0.1512248, 0.0, 0.0, 1.0, 0.0, 0.0, 0 + TechRequired = generalConstruction + entryCost = 200 + cost = 160 + category = Payload + subcategory = 0 + title = #SEP_StorageLong_Part_title // #SEP_StorageLong_Part_title = AKI-L Storage Locker + manufacturer = #SEP_StorageLong_Part_manufacturer // #SEP_StorageLong_Part_manufacturer = Albert Kermin Industries + description = #SEP_StorageLong_Part_description // #SEP_StorageLong_Part_description = A larger locker, for storing more stuff in a larger craft. It has nothing to do with any of the engineer's hall lockers going missing. + attachRules = 0,1,0,1,1 + mass = 0.04 + dragModelType = default + maximum_drag = 0.2 + minimum_drag = 0.3 + angularDrag = 2 + crashTolerance = 6 + maxTemp = 2000 + breakingForce = 50 + breakingTorque = 50 + bulkheadProfiles = srf + tags = #SEP_StorageLong_Part_tags // #SEP_StorageLong_Part_tags = cck-containers sep kis kas surface experiment inventory attachment eva storage container locker + + MODEL + { + model = KIS/Parts/SEP_Storage/SEP_StorageLong + } + MODULE + { + name = ModuleKISInventory + maxVolume = 400 + externalAccess = true + internalAccess = false + slotsX = 5 + slotsY = 5 + slotSize = 50 + itemIconResolution = 128 + selfIconResolution = 128 + openSndPath = KIS/Sounds/containerOpen + closeSndPath = KIS/Sounds/containerClose + defaultMoveSndPath = KIS/Sounds/itemMove + } + MODULE + { + name = ModuleKISItem + volumeOverride = 410 + stackable = false + } +} diff --git a/Parts/SEP_Storage/SEP_StorageLong.mu b/Parts/SEP_Storage/SEP_StorageLong.mu new file mode 100755 index 00000000..237e2127 Binary files /dev/null and b/Parts/SEP_Storage/SEP_StorageLong.mu differ diff --git a/Parts/SEP_Storage/SEP_StorageShort.cfg b/Parts/SEP_Storage/SEP_StorageShort.cfg new file mode 100755 index 00000000..020b2ee2 --- /dev/null +++ b/Parts/SEP_Storage/SEP_StorageShort.cfg @@ -0,0 +1,54 @@ +PART +{ + name = SEP_StorageShort + module = Part + author = CobaltWolf + rescaleFactor = 1.0 + node_attach = -0.1512248, 0.0, 0.0, 1.0, 0.0, 0.0, 0 + TechRequired = generalConstruction + entryCost = 100 + cost = 80 + category = Payload + subcategory = 0 + title = #SEP_StorageShort_Part_title // #SEP_StorageShort_Part_title = AKI-S Storage Locker + manufacturer = #SEP_StorageShort_Part_manufacturer // #SEP_StorageShort_Part_manufacturer = Albert Kermin Industries + description = #SEP_StorageShort_Part_description // #SEP_StorageShort_Part_description = Noticing that there was a problem with storing Surface Experiment Package parts on small landers, we ordered the engineers to find a solution. They came back with this steel box, which works quite nicely. No, it has nothing to do with the recent theft of Valentina's locker. + attachRules = 0,1,0,1,1 + mass = 0.02 + dragModelType = default + maximum_drag = 0.2 + minimum_drag = 0.3 + angularDrag = 2 + crashTolerance = 6 + maxTemp = 2000 + breakingForce = 50 + breakingTorque = 50 + bulkheadProfiles = srf + tags = #SEP_StorageShort_Part_tags // #SEP_StorageShort_Part_tags = cck-containers sep kis kas surface experiment inventory attachment eva storage container locker + + MODEL + { + model = KIS/Parts/SEP_Storage/SEP_StorageShort + } + MODULE + { + name = ModuleKISInventory + maxVolume = 200 + externalAccess = true + internalAccess = false + slotsX = 4 + slotsY = 3 + slotSize = 50 + itemIconResolution = 128 + selfIconResolution = 128 + openSndPath = KIS/Sounds/containerOpen + closeSndPath = KIS/Sounds/containerClose + defaultMoveSndPath = KIS/Sounds/itemMove + } + MODULE + { + name = ModuleKISItem + volumeOverride = 210 + stackable = false + } +} diff --git a/Parts/SEP_Storage/SEP_StorageShort.mu b/Parts/SEP_Storage/SEP_StorageShort.mu new file mode 100755 index 00000000..2033d7b8 Binary files /dev/null and b/Parts/SEP_Storage/SEP_StorageShort.mu differ diff --git a/Parts/SEP_Storage/SEP_storage.dds b/Parts/SEP_Storage/SEP_storage.dds new file mode 100755 index 00000000..e716ed78 Binary files /dev/null and b/Parts/SEP_Storage/SEP_storage.dds differ diff --git a/Source/KIS.csproj b/Source/KIS.csproj index cdcc82ff..c7117f8d 100644 --- a/Source/KIS.csproj +++ b/Source/KIS.csproj @@ -52,8 +52,8 @@ Q:\KSP_x64_Data\Managed\Assembly-CSharp-firstpass.dll - - ..\Binaries\KSPDev_Utils.2.2.dll + + ..\Binaries\KSPDev_Utils.2.4.dll Q:\KSP_x64_Data\Managed\System.dll diff --git a/Source/KIS_Shared.cs b/Source/KIS_Shared.cs index 9c8bf5cb..177da911 100644 --- a/Source/KIS_Shared.cs +++ b/Source/KIS_Shared.cs @@ -211,7 +211,17 @@ public static Part CreatePart( snapshot.attached = true; snapshot.flagURL = fromPart.flagURL; + // In KSP 1.10 proto part load does weird stuff if the reference vessel is EVA. + // So, workaround it in a crazy way: by changing the type of the vessel for the load time. + // This may have bad consequences to the mods that react on the proto part load event. + var savedRefVesselType = refVessel.vesselType; + if (refVessel.isEVA) { + DebugEx.Warning("WORKAROUND! Temporarily disabling the EVA type of vessel {0}", refVessel); + refVessel.vesselType = VesselType.Probe; + } var newPart = snapshot.Load(refVessel, false); + refVessel.vesselType = savedRefVesselType; + refVessel.Parts.Add(newPart); newPart.transform.position = position; newPart.transform.rotation = rotation; diff --git a/Source/ModuleKISInventory.cs b/Source/ModuleKISInventory.cs index 736c4aa3..050eeb30 100644 --- a/Source/ModuleKISInventory.cs +++ b/Source/ModuleKISInventory.cs @@ -1896,7 +1896,8 @@ void UpdateKey() { if (invType != InventoryType.Eva || !HighLogic.LoadedSceneIsFlight || FlightGlobals.ActiveVessel != part.vessel - || !FlightGlobals.ActiveVessel.isEVA) { + || !FlightGlobals.ActiveVessel.isEVA + || PlanetariumCamera.fetch.enabled) { return; } diff --git a/Source/ModuleKISItemEvaPropellant.cs b/Source/ModuleKISItemEvaPropellant.cs index 5f452d75..aedde02b 100644 --- a/Source/ModuleKISItemEvaPropellant.cs +++ b/Source/ModuleKISItemEvaPropellant.cs @@ -5,16 +5,18 @@ using KISAPIv1; using KSPDev.GUIUtils; +using KSPDev.GUIUtils.TypeFormatters; using KSPDev.ResourceUtils; using System; -using System.Linq; +using KSPDev.LogUtils; namespace KIS { -// Next localization ID: kisLOC_08005. -public class ModuleKISItemEvaPropellant : ModuleKISItem { +// Next localization ID: kisLOC_08009. +// ReSharper disable once InconsistentNaming +public sealed class ModuleKISItemEvaPropellant : ModuleKISItem { #region Localizable GUI strings - static readonly Message NoNeedToRefillMsg = new Message( + static readonly Message NoNeedToRefillJetpackMsg = new Message( "#kisLOC_08000", defaultTemplate: "The jetpack is full. No need to refill", description: "The message to present when the jetpack is attempted to be refilled, but its'" @@ -26,23 +28,50 @@ public class ModuleKISItemEvaPropellant : ModuleKISItem { description: "The message to present when the EVA kerbals has attempted to refill the" + " jetpack, but the tank is empty."); - static readonly Message CanisterRefilledMsg = new Message( + static readonly Message CanisterFullyRefilledMsg = new Message( "#kisLOC_08002", defaultTemplate: "Fuel canister refilled", - description: "The message to present when a non-full tank has successfully refilled from the" - + " pod's resource."); + description: "The message to present when a non-full tank has successfully refilled to the" + + " top."); - static readonly Message NotEnoughPropellantMsg = new Message( - "#kisLOC_08003", - defaultTemplate: "Not enough fuel in the canister. The jetpack is partially refueled", - description: "The message to present when the EVA kerbals has attempted to refill the" - + " jetpack, but the tank didn't have enough fuel to fill the jetpack to full."); - - static readonly Message JetpackRefueledMsg = new Message( + static readonly Message JetpackFullyRefueledMsg = new Message( "#kisLOC_08004", defaultTemplate: "Jetpack fully refueled", description: "The message to present when the EVA kerbals has attempted to refill the" + " jetpack, and the jetpack has successfully refilled to full."); + + static readonly Message JetpackPartiallyRefueledMsg = + new Message( + "#kisLOC_08005", + defaultTemplate: "Added <<1>> units of fuel to the jetpack", + description: "The message to present when the EVA kerbals has attempted to refill the" + + " jetpack, but there was not enough fuel in the canister to fill the jetpack up to the" + + " top." + + "\nArgument <<1>> is the amount of the resource added to the jetpack." + + " Format: SmallNumberType."); + + static readonly Message NoNeedToRefillCanisterMsg = new Message( + "#kisLOC_08006", + defaultTemplate: "The canister is full. No need to refill", + description: "The message to present when the canister is attempted to be refilled, but its'" + + " already full."); + + static readonly Message CanisterPartialRefilledMsg = + new Message( + "#kisLOC_08007", + defaultTemplate: "Consumed <<2>> units of <<1>> from the vessel", + description: "The message to present when the canister have been refilled from the" + + " vessel's reserve with a consumable fuel type." + + "\nArgument <<1>> is the name of the resource. Format: ResourceType." + + "\nArgument <<2>> is the amount of the resource taken from the vessel." + + " Format: SmallNumberType."); + + static readonly Message NoResourceInVesselMsg = new Message( + "#kisLOC_08008", + defaultTemplate: "Vessel doesn't have a spare reserve of <<1>>", + description: "The message to present when the canister have been attempted to refill from" + + " the vessel's reserve with a consumable fuel type, and there were no resource." + + "\nArgument <<1>> is the name of the resource. Format: ResourceType."); #endregion #region Part's config fields @@ -51,14 +80,38 @@ public class ModuleKISItemEvaPropellant : ModuleKISItem { public string refuelSndPath = "KIS/Sounds/refuelEva"; #endregion + #region Local fields and properties + /// Name of the resource that the canister holds. + /// + /// Regardless to this name, in the jetpack the canister always refills the "EVA propellant" fuel. + /// + string _mainResourceName; + #endregion + #region ModuleKISItem overrides + /// + public override void OnLoad(ConfigNode node) { + base.OnLoad(node); + if (part.Resources.Count == 0) { + HostedDebugLog.Error(this, "No resources on the canister! This won't work."); + return; + } + if (part.Resources.Count > 1) { + HostedDebugLog.Error(this, "Too many resources on the canister! The first one will be used."); + } + _mainResourceName = part.Resources[0].resourceName; + if (_mainResourceName != StockResourceNames.EvaPropellant) { + HostedDebugLog.Info(this, "Using a customized resource type: {0}", _mainResourceName); + } + } + /// public override void OnItemUse(KIS_Item item, KIS_Item.UseFrom useFrom) { if (useFrom != KIS_Item.UseFrom.KeyUp) { if (item.inventory.invType == ModuleKISInventory.InventoryType.Pod) { RefillCanister(item); // Refuel canister item. } else if (item.inventory.invType == ModuleKISInventory.InventoryType.Eva) { - RefillEVAPack(item); // Refuel EVA pack from canister. + RefillEvaPack(item); // Refuel EVA pack from canister. } } } @@ -67,9 +120,30 @@ public override void OnItemUse(KIS_Item item, KIS_Item.UseFrom useFrom) { #region Inheritable & customization methods /// Fills up canister to the maximum capacity. /// Item to refill. - protected virtual void RefillCanister(KIS_Item item) { - item.UpdateResource(StockResourceNames.EvaPropellant, GetCanisterFuelResource(item).maxAmount); - ScreenMessaging.ShowPriorityScreenMessage(CanisterRefilledMsg); + void RefillCanister(KIS_Item item) { + var canisterResource = GetCanisterFuelResource(item); + var needResource = canisterResource.maxAmount - canisterResource.amount; + if (needResource <= double.Epsilon) { + ScreenMessaging.ShowPriorityScreenMessage(NoNeedToRefillCanisterMsg); + return; + } + double newAmount; + if (_mainResourceName != StockResourceNames.EvaPropellant) { + var hasAmount = item.inventory.part.RequestResource(_mainResourceName, needResource); + if (hasAmount <= double.Epsilon) { + ScreenMessaging.ShowPriorityScreenMessage( + NoResourceInVesselMsg.Format(canisterResource.resourceName)); + UISounds.PlayBipWrong(); + return; + } + newAmount = canisterResource.amount + hasAmount; + ScreenMessaging.ShowPriorityScreenMessage( + CanisterPartialRefilledMsg.Format(canisterResource.resourceName, hasAmount)); + } else { + newAmount = canisterResource.maxAmount; + ScreenMessaging.ShowPriorityScreenMessage(CanisterFullyRefilledMsg); + } + item.UpdateResource(_mainResourceName, newAmount); UISoundPlayer.instance.Play(refuelSndPath); } @@ -77,36 +151,52 @@ protected virtual void RefillCanister(KIS_Item item) { /// Refuels kerbal's EVA pack up to the maximum, and decreases canister reserve. /// /// Item to get fuel from. - protected virtual void RefillEVAPack(KIS_Item item) { - var canisterFuelResource = GetCanisterFuelResource(item); + void RefillEvaPack(KIS_Item item) { var evaFuelResource = item.inventory.part.Resources.Get(StockResourceNames.EvaPropellant); var needsFuel = evaFuelResource.maxAmount - evaFuelResource.amount; if (needsFuel < double.Epsilon) { - ScreenMessaging.ShowPriorityScreenMessage(NoNeedToRefillMsg); + ScreenMessaging.ShowPriorityScreenMessage(NoNeedToRefillJetpackMsg); + return; + } + var canisterFuelResource = GetCanisterFuelResource(item); + if (canisterFuelResource.amount < double.Epsilon) { + ScreenMessaging.ShowPriorityScreenMessage(CanisterIsEmptyMsg); + UISounds.PlayBipWrong(); + return; + } + var canRefuel = Math.Min(needsFuel, canisterFuelResource.amount); + item.UpdateResource(_mainResourceName, -canRefuel, isAmountRelative: true); + evaFuelResource.amount += canRefuel; + if (canRefuel < needsFuel) { + ScreenMessaging.ShowPriorityScreenMessage(JetpackPartiallyRefueledMsg.Format(canRefuel)); } else { - if (canisterFuelResource.amount < double.Epsilon) { - ScreenMessaging.ShowPriorityScreenMessage(CanisterIsEmptyMsg); - UISounds.PlayBipWrong(); - } else { - var canRefuel = Math.Min(needsFuel, canisterFuelResource.amount); - item.UpdateResource(StockResourceNames.EvaPropellant, -canRefuel, isAmountRelative: true); - evaFuelResource.amount += canRefuel; - if (canRefuel < needsFuel) { - ScreenMessaging.ShowPriorityScreenMessage(NotEnoughPropellantMsg); - } else { - ScreenMessaging.ShowPriorityScreenMessage(JetpackRefueledMsg); - } - UISoundPlayer.instance.Play(refuelSndPath); - } + ScreenMessaging.ShowPriorityScreenMessage(JetpackFullyRefueledMsg); } + UISoundPlayer.instance.Play(refuelSndPath); } /// Returns KIS resource description for the propellant in the part. /// Item to get resource for. /// Resource description. - protected static ProtoPartResourceSnapshot GetCanisterFuelResource(KIS_Item item) { - return KISAPI.PartNodeUtils.GetResources(item.partNode) - .FirstOrDefault(x => x.resourceName == StockResourceNames.EvaPropellant); + ProtoPartResourceSnapshot GetCanisterFuelResource(KIS_Item item) { + var resources = KISAPI.PartNodeUtils.GetResources(item.partNode); + if (resources.Length == 0) { + throw new Exception("Bad save state: no resource on the part"); + } + var itemResource = resources[0]; // Always use the first one. + if (itemResource.resourceName == _mainResourceName) { + return itemResource; + } + // A mod that changes the default resource has been installed or removed. Update the part state. + DebugEx.Warning( + "Fixing saved state of the resource: oldName={0}, newName={1}", + itemResource.resourceName, _mainResourceName); + KISAPI.PartNodeUtils.DeleteResource(item.partNode, itemResource.resourceName); + itemResource = new ProtoPartResourceSnapshot(part.Resources[0]) { + amount = itemResource.amount + }; + KISAPI.PartNodeUtils.AddResource(item.partNode, itemResource); + return itemResource; } #endregion } diff --git a/Source/Properties/AssemblyInfo.cs b/Source/Properties/AssemblyInfo.cs index 5cdd8e0a..02ba4f07 100644 --- a/Source/Properties/AssemblyInfo.cs +++ b/Source/Properties/AssemblyInfo.cs @@ -27,6 +27,6 @@ // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion ("1.25.*")] +[assembly: AssemblyVersion ("1.26.*")] [assembly: AssemblyInformationalVersion ("1.25 for KSP v1")] -[assembly: KSPAssembly ("KIS", 1, 25)] +[assembly: KSPAssembly ("KIS", 1, 26)] diff --git a/Source/api/Utils/PartNodeUtilsImpl.cs b/Source/api/Utils/PartNodeUtilsImpl.cs index 5e2294f2..7dc7f9ed 100644 --- a/Source/api/Utils/PartNodeUtilsImpl.cs +++ b/Source/api/Utils/PartNodeUtilsImpl.cs @@ -154,6 +154,45 @@ public ProtoPartResourceSnapshot[] GetResources(ConfigNode partNode) { return setAmount; } + /// Deletes the resource from the config node. + /// + /// The part's config or a persistent state. It can be a top-level node or the PART node. + /// + /// The name of the resource. + /// true if the resource was found and removed. + public bool DeleteResource(ConfigNode partNode, string name) { + if (partNode.HasNode("PART")) { + partNode = partNode.GetNode("PART"); + } + var nodes = partNode.GetNodes("RESOURCE"); + for (var i = 0; i < partNode.nodes.Count; i++) { + var testNode = partNode.nodes[i]; + if (testNode.name == "RESOURCE" && testNode.GetValue("name") == name) { + partNode.nodes.Remove(testNode); + return true; + } + } + return false; + } + + /// Adds a new resource into the config node. + /// + /// The part's config or a persistent state. It can be a top-level node or the PART node. + /// + /// + /// The resource definition. If there is a resource with the same name in the node, it will be + /// replaced. + /// + public void AddResource(ConfigNode partNode, ProtoPartResourceSnapshot resource) { + if (partNode.HasNode("PART")) { + partNode = partNode.GetNode("PART"); + } + DeleteResource(partNode, resource.resourceName); + var resourceNode = new ConfigNode("RESOURCE"); + resource.Save(resourceNode); + partNode.AddNode(resourceNode); + } + /// Returns all the science from the part's saved state. /// /// The persistent part's state. It can be a top-level node or the PART node. diff --git a/Tools/publish_curseforge_args.txt b/Tools/publish_curseforge_args.txt index 2de06094..5093efdb 100644 --- a/Tools/publish_curseforge_args.txt +++ b/Tools/publish_curseforge_args.txt @@ -4,4 +4,4 @@ --github=ihsoft/KIS --versions=latest_all_builds --title=KIS {tag} ---archive=../KIS_v1.25.zip +--archive=../KIS_v1.26.zip diff --git a/Tools/publish_github_args.txt b/Tools/publish_github_args.txt index 0903ce43..9c20831c 100644 --- a/Tools/publish_github_args.txt +++ b/Tools/publish_github_args.txt @@ -4,4 +4,4 @@ --changelog=../CHANGELOG.md --as_draft --title=KIS v{tag} ---archive=../KIS_v1.25.zip +--archive=../KIS_v1.26.zip diff --git a/Tools/publish_spacedock_args.txt b/Tools/publish_spacedock_args.txt index bc99872c..5528acf6 100644 --- a/Tools/publish_spacedock_args.txt +++ b/Tools/publish_spacedock_args.txt @@ -3,4 +3,4 @@ --changelog=../CHANGELOG.md --github=ihsoft/KIS --ksp_version=latest ---archive=../KIS_v1.25.zip +--archive=../KIS_v1.26.zip diff --git a/Tools/release_setup.json b/Tools/release_setup.json index a5598547..bcdf545d 100644 --- a/Tools/release_setup.json +++ b/Tools/release_setup.json @@ -25,9 +25,9 @@ "Plugins" : [ "{COMPILED_BINARY}", "?{MINIAVC_VERSION_FILE}", - "/Binaries/MiniAVC.dll", + "/Binaries/MiniAVC-V2.dll", "/Binaries/KSPDev_Utils*", - "-KSP-AVC.version" + "-KSP-AVC-V2.version" ] } } diff --git a/remove_fun_part_patch.txt b/remove_fun_part_patch.txt index d833f1f0..d0430fa5 100644 --- a/remove_fun_part_patch.txt +++ b/remove_fun_part_patch.txt @@ -24,3 +24,11 @@ !PART[KIS_taco] { } + +!PART[SEP_FallenKerbonaut] +{ +} + +!PART[KIS_snacks] +{ +}