Jump to content

[1.10.0] Final Frontier - kerbal individual merits 1.10.0-3485


Nereid

KSP 1.1.0  

853 members have voted

  1. 1. Is FinalFrontier working in KSP 1.1.0?

    • Yes
      275
    • No
      66
    • It doesn't matter; this poll was just created to remove the outdated old one...
      541


Recommended Posts

16 hours ago, AndreZero said:

Odd, with the new version i'm getting the Hall of Fame open even if I'm not in EVA.

I've turned off the hotkey since the menu works well enough. Thanks for looking into it.

? Strange. I will add a bit more logging in the next release. 

Link to comment
Share on other sites

So @SmarterThanMe or @Nereid, I is there a ribbon pack currently for RSS? I helped develop Stock Size Real Solar System and would love to include a pack to use with it. If it hasn't already been made I'm perfectly ok making one. I'm just tied up with school and my other mods + the army and don't have ALL the time in the world :) Just wanted to verify before under taking such a tedious task.. Thanks in advance!

Link to comment
Share on other sites

4 hours ago, Berlin said:

So @SmarterThanMe or @Nereid, I is there a ribbon pack currently for RSS? I helped develop Stock Size Real Solar System and would love to include a pack to use with it. If it hasn't already been made I'm perfectly ok making one. I'm just tied up with school and my other mods + the army and don't have ALL the time in the world :) Just wanted to verify before under taking such a tedious task.. Thanks in advance!

Sorry, mate, I don't know if there is one.

Link to comment
Share on other sites

Not sure where to report bugs but FF works just fine in my game minus one thing. I have no revocation button.
I can't remove any ribbons. I know it should be there seen other screen shots with it being there. I found the config and tried to change removalOfRibbonsEnabled = false; to true but that did not help.

Any help or a patch would be amazing! :D (Can send screenshots and or my config to help if need be).

Link to comment
Share on other sites

12 hours ago, WolfHunter98 said:

Not sure where to report bugs but FF works just fine in my game minus one thing. I have no revocation button.
I can't remove any ribbons. I know it should be there seen other screen shots with it being there. I found the config and tried to change removalOfRibbonsEnabled = false; to true but that did not help.

Any help or a patch would be amazing! :D (Can send screenshots and or my config to help if need be).

You can only revoke ribbons if you have enabled this feature in the config window of FF ("Revocation of ribbons enabled"). It is disabled by default.

Link to comment
Share on other sites

Great mod! I'd love to run it, however, there might be a problem associated with this:

I run RSS/RO/RP0, and when I added Final Frontier and switched to a specific vessel KSP consumes increadible amounts of CPU time and slows down to 2 fps (instead of 25 or so usual for that vessel.) Once I remove FF it works again.

Sorry, this is not really a great bug report, but currently traveling, just wanted to drop a line to see whether someone else has encountered the same problem.

Gustav

Link to comment
Share on other sites

On 11.5.2016 at 8:26 PM, inigma said:

Can I beg for FF integration with Contract Configurator in a newer release? :) 

Well, we have to ask nightingale about that. He just has to use The FinalFrontierAdapater in his mod to give any contract developer the oportunity to add ribbons for completed contracts (or a bunch of contracts). 

17 hours ago, Lilienthal said:

I run RSS/RO/RP0, and when I added Final Frontier and switched to a specific vessel KSP consumes increadible amounts of CPU time and slows down to 2 fps (instead of 25 or so usual for that vessel.) Once I remove FF it works again.

I will take a look into this as soon I have all information I need.

Link to comment
Share on other sites

On 8.5.2016 at 1:34 PM, blu3wolf said:

Also, I note that its possible to gain the new 'landed with less than 1%/5% liquid fuel remaining' ribbons just by landing a rocket with 0% liquid fuel remaining via parachute. Such as one tends to do quite often in the early days of Career mode.

I have checked again what I can do about this. The vessel is scanned anyway to get the remaining amount of fuel, so an additional scanning for parachutes should not cost to much cpu. I have tried to prevent the award of those ribbons in 1.0.8. But there is a slight drawback: You will not get those ribbons if you have ANY deployed or cut parachute on the vessel when the vessel lands. Even if they were not used for landing. And you WILL get the ribbon if you get rid of the parachute (by using a decoupler) just a few seconds before you land. This will fix 99.9% of your complaints and I think it's good enough. Landing with used parachutes is just a "formal violation" of the ribbon requirements. And decoupling a parachute just to land with the remaining amount of fuel is a... "brave task" - the kerbals really should get the ribbon. :wink:

The scan of the vessel is done every time a vessel situation changes from NOT LANDED/SPLASHED to LANDED/SPLASHED. If you launch a very large vessel touching/leaving ground every small fraction of a second, it may cost you some frame and may even break physics on lower end computers. But such situations are rare. As long as the log level is INFO or more, the scans and their execution times are logged.

So, 1.0.8 is out. It also includes a few logs for the hotkey issue. They are also logged at level INFO. If you do not want them, reduce the log level. 

Edited by Nereid
Link to comment
Share on other sites

10 hours ago, Nereid said:

Well, we have to ask nightingale about that. He just has to use The FinalFrontierAdapater in his mod to give any contract developer the oportunity to add ribbons for completed contracts (or a bunch of contracts). 

I will take a look into this as soon I have all information I need.

@nightingale thoughts?

Link to comment
Share on other sites

16 hours ago, Nereid said:

Well, we have to ask nightingale about that. He just has to use The FinalFrontierAdapater in his mod to give any contract developer the oportunity to add ribbons for completed contracts (or a bunch of contracts). 

I will take a look into this as soon I have all information I need.

Well, the hold up is still the same concern that it's been for a while:

On 3/27/2016 at 7:03 PM, inigma said:

@Nereid I talked with nightingale and I really want to offer ribbons for GAP contract completion, but the hold up is in the 4 digit IDs that FF is currently coded to use.

Could I beg you for the love of making a contract maker's dream come true, :) to seriously consider making IDs string based rather than the currently incompatible 4 digit id?

How simple would switching FF to use string based IDs rather than the current 4 digit ID system, be for you?  

If you made FF use string based IDs, CC could readily be coded for FF compatibility almost overnight. The current numeric ID scheme is impossible to code CC to use it without a ton of coding commitment and resulting support commitment. 

Basically I don't want to have to take on attempting to manage the 4 digit IDs within Contract Configurator, and passing that on to the contract authors is just asking for conflicts (which can become my issue to deal with through Contract Configurator support requests).

The other issue is time - there's just never enough of it. :) 

Link to comment
Share on other sites

Currently in FF, deleting the graphic of an unwanted ribbon allows the event without conflicts (example, removing the 'splashdown' ribbon causes no bugs when a splashdown lading occurs).  If CC ever incorporates FF, I make the request that contract makers  let the deletion of the graphic allow the contract to complete without the award of the ribbon.  I like the GAP contracts but I do not want ribbons for them.  I play a very limited ribbon game.
  Thank you all for your fine work on these mods.

Link to comment
Share on other sites

8 hours ago, Nereid said:

I have checked again what I can do about this. The vessel is scanned anyway to get the remaining amount of fuel, so an additional scanning for parachutes should not cost to much cpu.

How about, instead, setting a minimum for the amount of empty fuel space on the craft (which you're already getting to get the 1% of whatever)? 1% of, say, 32 after burning out a couple of sepratrons isn't particularly noteworthy, but 1% of 400 for an FL-T400 is much more significant.

Link to comment
Share on other sites

3 hours ago, nightingale said:

Basically I don't want to have to take on attempting to manage the 4 digit IDs within Contract Configurator, and passing that on to the contract authors is just asking for conflicts (which can become my issue to deal with through Contract Configurator support requests).

The other issue is time - there's just never enough of it. :) 

I will see what I can do about it this week. And time is quite an issue of course. :wink:

Another issue is the amount of coding/debugging I have to do at work. There is some kind of limit per day I can withstand. :wink:

3 hours ago, jpkerman said:

Currently in FF, deleting the graphic of an unwanted ribbon allows the event without conflicts (example, removing the 'splashdown' ribbon causes no bugs when a splashdown lading occurs).  If CC ever incorporates FF, I make the request that contract makers  let the deletion of the graphic allow the contract to complete without the award of the ribbon.  

I think FF will handle this automatically. If CC registers a ribbon without a graphic, then FF will log a warning and disables the ribbon.

Link to comment
Share on other sites

2 hours ago, SmarterThanMe said:

How about, instead, setting a minimum for the amount of empty fuel space on the craft (which you're already getting to get the 1% of whatever)? 1% of, say, 32 after burning out a couple of sepratrons isn't particularly noteworthy, but 1% of 400 for an FL-T400 is much more significant.

Well, you were right about the FL-T400. But the ribbon is designed for small vessels such as landers or aircraft and I this a percentage is quite useful. And I think its the other way around: if you are using a FL-T400 1% is less significant than 1% of a much smaller tank. You could burn 99% of the FL-T400 without any risk and still have plenty of fuel to land even with 1%. But if we are using a minimal amout of fuel, lets say 50 kg and we are using a smaller vessel in low gravity, we can land the vessel with a 100 kg fueltank and still have 50% left. 

This 1%/5% fuel ribbons are more or less some kind of fun kerbal-way-of-living ribbons. Quite often a kerbal can get them without risking much. You can launch a vessel with 6% fuel and land it immediately - the kerbal will get the ribbon. It doesn't matter if the kerbal has achieved it because of doing a brave task of landing a vessel on the last fuel, or because his job of calculating the amount of needed fuel was nearly perfect, or because his fuel usage in the mission was completely inefficent, or because he has disposed 95% of his fuel just by accident, or because his commanding officers wants him to test a new vessel with a minimal amount of fuel.

Link to comment
Share on other sites

15 hours ago, nightingale said:

Basically I don't want to have to take on attempting to manage the 4 digit IDs within Contract Configurator, and passing that on to the contract authors is just asking for conflicts (which can become my issue to deal with through Contract Configurator support requests).

It is already implemented in 1.0.8. Just take a look in the Example.cs of the FinalFrontierAdapter

      // place your ribbon png files (size 120x32 pixel) here...
      private const String RIBBON_BASE = "MyPluginInGameData/Ribbons/";
      // UNIQUE (!) ribbon code
      private const String RIBBON_CODE = "KSP";            

      // register the ribbon with a unique code, a path to the png file and a name for a ribbon and an optional description
      // prestige and boolean attribute for a ribbon that has to be a first awarded ribbon are optional
      // IMPORTANT: do not register ribbons twice and not before all textures are loaded (not until GameScene LOADING is done)!
      KspRibbon = this.adapter.RegisterRibbon(
         RIBBON_CODE,                                                        // unique ribbon code
         RIBBON_BASE + "SpaceProgram",                                       // path to ribbon png file
         "Space Program Ribbon",                                             // name of ribbon
         "Awarded to every applicant that joines the kerbal space program"   // description (optional)
        );
      
      // now we want to award the KSP ribbon
      this.adapter.AwardRibbonToKerbal(RIBBON_CODE, kerbal);

Just use it this way and make sure, your ribbon codes won't collide with those of FF. I would suggest using a code scheme like this

CC:CONTRACT-PACK-NAME:CONTRACT-NAME
CC:CONTRACT-PACK-NAME:CONTRACT-ID
CC:CONTRACT-PACK-NAME:SOME-OTHER-IDENTIFIER
CC:CONTRACT-PACK-NAME:RIBBON-NAME

Unfortunately the Example.cs wasn't working in KSP 1.1.2. Maybe because of changes in 1.1.x, maybe it was broken before. The example tries to award a ribbon to every applicant that joins the crew roster, but FF 1.0.8 won't award ribbons to applicants. This has changed in 1.0.9.

The full example code:

Spoiler

using System;
using UnityEngine;

namespace MyPlugin
{
   // KSPAddon.Startup.MainMenu makes sure we already have loaded all ingame textures
   // make sure once is set to true
   [KSPAddon(KSPAddon.Startup.MainMenu, true)]
   class Example : MonoBehaviour
   {
      // place your ribbon png files (size 120x32 pixel) here...
      private const String RIBBON_BASE = "MyPluginInGameData/Ribbons/";

      // UNIQUE (!) ribbon code
      private const String RIBBON_CODE = "KSP";
      // UNIQUE (!) custom ribbon id (used for custom ribbons only)
      private const int RIBBON_ID = 1001;

      private FinalFrontierAdapter adapter;

      // optional (if you want to award ribbons by their corresponding objects instead of ribbon code)
      private object KspRibbon;

      public void Start()
      {
         // just a log that this plugin has started
         Debug.Log("starting example");

         // create the adapter
         this.adapter = new FinalFrontierAdapter();
         // plugin to Final Frontier
         this.adapter.Plugin();

         // optional: log the version of Final Frontier
         Debug.Log("Final Frontier version: "+adapter.GetVersion());

         if (this.adapter.IsInstalled()) // optional test
         {
            // register the ribbon with a unique code, a path to the png file and a name for a ribbon and an optional description
            // prestige and boolean attribute for a ribbon that has to be a first awarded ribbon are optional
            // IMPORTANT: do not register ribbons twice and not before all textures are loaded (not until GameScene LOADING is done)!
            KspRibbon = this.adapter.RegisterRibbon(
               RIBBON_CODE,                                                        // unique ribbon code
               RIBBON_BASE + "SpaceProgram",                                       // path to ribbon png file
               "Space Program Ribbon",                                             // name of ribbon
               "Awarded to every applicant that joines the kerbal space program"   // description (optional)
              );
            //
            // this is an example for a custom ribbon (i.e. the player can award manually)
            this.adapter.RegisterCustomRibbon(
                           RIBBON_ID,                                              // unique ribbon id
                           RIBBON_BASE + "Custom1001",                             // path to ribbon png file
                           "Custom Ribbon 1001",                                   // name of ribbon
                           "Awarded manually by the player"                        // description (optional)
                          );
         }

         // example usage:
         // ok, we want to award this ribbon to every applicant that enters the space program for real duties;
         // see callback below
         GameEvents.OnCrewmemberHired.Add(this.OnCrewmemberHired);
         
         // example usage:
         // everytime a vessel is recovered, we want to log some statistical data of the crew;
         // see callback below
         GameEvents.onVesselRecovered.Add(this.OnVesselRecovered);
      }

      // callback for new crew member hired
      private void OnCrewmemberHired(ProtoCrewMember kerbal, int value)
      {
         // its better to be safe than sorry
         if (kerbal == null) return;
         //
         Debug.Log("applicant " + kerbal.name+ " will receive the KSP ribbon");
         //
         // now we want to award the KSP ribbon
         this.adapter.AwardRibbonToKerbal(RIBBON_CODE, kerbal);
         // an alternative to award the ribbon:
         //this.adapter.AwardRibbonToKerbal(KspRibbon, kerbal);
      }

      // callback for vessel recovered
      private void OnVesselRecovered(ProtoVessel vessel, bool flag)
      {
         // its better to be safe than sorry
         if (vessel == null) return;
         //
         // log crew statistics (not really useful)
         foreach (ProtoCrewMember kerbal in vessel.GetVesselCrew())
         {
            Debug.Log("crew member " + kerbal.name + " total missions: " + adapter.GetMissionsFlownForKerbal(kerbal)); // without the current one
            Debug.Log("crew member " + kerbal.name + " research points: " + adapter.GetResearchForKerbal(kerbal));
            Debug.Log("crew member " + kerbal.name + " dockings: " + adapter.GetDockingsForKerbal(kerbal));
            Debug.Log("crew member " + kerbal.name + " contracts complteted: " + adapter.GetContractsCompletedForKerbal(kerbal));
         }
      }
   }
}

 

 

Edited by Nereid
Link to comment
Share on other sites

@Nereid do you know if your mod will read badge images in DDS format? I noticed that even though there's only around an MB of badges for my mod, because it's such a high number of images (320) it takes a relatively long time to load them. I'm thinking that is because it has to convert PNG to DDS.

Link to comment
Share on other sites

54 minutes ago, CaptRobau said:

@Nereid do you know if your mod will read badge images in DDS format? I noticed that even though there's only around an MB of badges for my mod, because it's such a high number of images (320) it takes a relatively long time to load them. I'm thinking that is because it has to convert PNG to DDS.

Its not FF that is loading the ribbons, its KSP. And it takes 12 seconds on my system to load the png files. I do not really think its worth the effort to reduce the loading time of KSP by 5 to 10 seconds (or maybe less).

But to be honest: i do not know if DDS is possible. Maybe. Internaly there is no suffix for the files used. Just try to convert them yourself and replace them. The drawback: its not that easy to edit them anymore. 

This is the code that accesses a ribbon graphics:

         public static Texture2D GetTexture(String pathInGameData)
         {
            Log.Detail("get texture " + pathInGameData);
            Texture2D texture = GameDatabase.Instance.GetTexture(pathInGameData, false);
            if (texture != null)
            {
               return texture;
            }
            else
            {
               Log.Error("texture " + pathInGameData + " not found");
               return null;
            }
         }

FF didn't load the png files itself. KSP scans all folders for textures (in png files) and it will load them anyway.

Edited by Nereid
Link to comment
Share on other sites

Thanks for the quick reply. Because my mod is so big (it does add close to 20 new planets) it a lot of textures, so it already takes a relatively long time to load. If I could save my fans and myself (have to test after all) 10 seconds every time they load the game with OPM it'll be well worth the effort. I'll try converting to see if it works and if so what the speed increase is.

Edited by CaptRobau
Link to comment
Share on other sites

On 11.5.2016 at 0:50 AM, Galenmacil said:

Nereid, The "hotkey" still is not 100% reliable... Works fine when you load a new game but after some going back and forth in flight and other screens, it stops working...

I have seen it myself yesterday. But its rare and occurs randomly as it seems.

Link to comment
Share on other sites

Does FF recognize RealChute parachutes for the 1% fuel landing ribbon? I'm asking because one of my Kerbals just got the ribbon for landing a craft with deployed RealChute parachutes.

(RealChute removes the ModuleParachute from all the stock parts and replaces it with a RealChuteModule. Oh, and FAR uses a "lite" version of RealChute that modifies the ModuleParachute on stock parts to be a RealChuteFAR module.)

Link to comment
Share on other sites

27 minutes ago, Gryphon said:

Does FF recognize RealChute parachutes for the 1% fuel landing ribbon? I'm asking because one of my Kerbals just got the ribbon for landing a craft with deployed RealChute 

Maybe not. And maybe there is not much I can do about that.

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...