nightingale

[1.4.x] Contract Pack: Tourism Plus [v1.5.2] [2016-12-14]

Recommended Posts

Increase the variety of tourism contracts available! Have tourists visit your stations, and build new attractions for them!

Em7jiPn.png(image credit MalevolentNinja)

Description

This is a Contract Pack that gives contracts to take tourists into space. There are contracts for:

  • Taking tourists all around the Kerbin system.
  • Taking tourists to your existing stations and bases.
  • Building space tourism attractions.
  • Taking tourists to your newly built attractions.

Unlike the stock tourism contracts, all tourists for a given contract want to go to the same place. You'll also start receiving tourist contracts for 20-50 Kerbals to visit your attractions at a time.

There are 10 randomly regenerating tourism contracts and 4 one-time contracts that progress your space tourism program. Will you be able to build the space casino and start printing funds?

Download

CKAN: In CKAN, Select and download the mod "Contract Pack: Tourism"

GitHub: For the direct download option, please ensure you have all the dependencies before raising a support request:

  1. Contract Configurator is a required dependency and can be downloaded from the Contract Configurator release thread.
  2. ModuleManager is a required dependency and can be downloaded from the ModuleManager release thread.
  3. The Tourism contract pack can be downloaded from GitHub.
  4. Waypoint Manager is an optional (but highly recommended) dependency and can be downloaded from the Waypoint Manager release thread.

Optional Stuff

  • It is recommended that you install Waypoint Manager, as there is one contract that involves touring the KSC, and it will be more difficult to hit the waypoints without it.
  • The contract pack works for RSS and planet packs - there's a late-game contract to visit gas giants that will pick up any gas giant loaded in the game.

Source

The full source is available on GitHub.

Change Log

Spoiler

ContractPack-Tourism 1.5.2

  • Fixed compatibility with Galileo planet pack.
  • Fixed broken backwards compatibility with hotel/casino contracts.

ContractPack-Tourism 1.5.1

  • Added a minAltitude parameter on the sub-orbital flight to make it more clear (thanks Deimos Rast).
  • Added loading tip.
  • Fixed reward of hotel/casino tourist contract (thanks CaptKordite).

ContractPack-Tourism 1.5.0

  • Rework for Contract Configurator 1.15.x

ContractPack-Tourism 1.4.2

  • Fixed issue introduced by Contract Configurator 1.9.8 (thanks smjjames).

ContractPack-Tourism 1.4.0

  • Strategia integration.
  • New space camp contract which gives you free Kerbals (thanks mcortez for the inspiration).
  • Investor contract (and therefore casino/hotel contracts) are now repeatable.
  • Support edge case for RemoteTech + AntennaRange installations (thanks Algiark).
  • Fixed asteroid contracts to need the tourism starter contract completed.
  • Show messages when entering/leaving waypoints.
  • Silence warning about deprecated Contract Configurator functionality.

ContractPack-Tourism 1.3.0

  • Changed asteroid contract to check for level 3 tracking station instead of level 2 (thanks qm3ster).
  • New moon landing contracts (thanks atiaxi)!

ContractPack-Tourism 1.2.0

  • Tourist contracts no longer ask for as many tourists at once until bigger pods get unlocked.
  • Reduced grindiness - advanced tourism contracts no longer require lots of tourist contracts to be done.
  • Support for New Horizons.

ContractPack-Tourism 1.1.8

  • Fixed badly broken investor tour contract (thanks BT3).

ContractPack-Tourism 1.1.6

  • Convert agent icons to DDS.
  • Added support for AntennaRange in building contracts.
  • Allow one-tourist contracts to be generated for low-orbit contracts.
  • Loosen waypoint tolerance for sub-orbital contracts.
  • Made differentiation between investor contracts more clear.

ContractPack-Tourism 1.1.5

  • Fixed investor contract to work in RSS.

ContractPack-Tourism 1.1.4

  • Spelling/grammer fixes (thanks ObsessedWithKSP).
  • Decrease max tourism contracts from 5 down to 4.
  • Kerbal Space Tourism no longer offers random non-tourism contracts.
  • Increases to contract rewards.

ContractPack-Tourism 1.1.3

  • Fix gas giant moon flyby contract so they are a fly by and not orbit.

ContractPack-Tourism 1.1.2

  • Moon flyby contracts can now be done as an actual fly by and do not require entering orbit.
  • Change description of some contracts to make the time requirement more clear.

ContractPack-Tourism 1.1.1

  • Fix for sub-orbital contracts (thanks Enceos).

ContractPack-Tourism 1.1.0

  • Disables stock tourism contracts.
  • Added sub-orbital contract.
  • Minor text cleanup.

ContractPack-Tourism 1.0.1

  • Fix problem with null station/base contracts showing up (thanks Firebird).
  • Move investor contract into Tourism group.

ContractPack-Tourism 1.0.0

  • Initial release.

 

License

The Tourism Contract Pack is licensed under CC-BY-NC-SA-4.0

 

btn_donate_SM.gif Like what you see? Consider donating to the coffee fund! It will not go directly to supporting this or other mods under my care, but it may keep my motivation up!

Edited by nightingale

Share this post


Link to post
Share on other sites

Interesting... I'll grab it as soon as it shows up on CKAN. Looks like fun. Thanks!

Share this post


Link to post
Share on other sites

Kerbdamit! There goes my weekend...

(Also, up on CKAN already)

Share this post


Link to post
Share on other sites

Hi, great idea; I'm already playing it.

I'm having an issue with a contract requiring me to bring a tourist to orbit: But the contract requires an orbital period of "Below 00:00:00" (other constraint is Periapsis above 75km). I first thought, this was purely cosmetic, but it isn't. I'm now in orbit, all other conditions are ticked off, but this one isn't (and is a bit hard to fulfill :wink:).

There also seems to be some strange interaction with TAC Life Support. When loading a passenger, I get the following HUD message:

Error - EmptyEvaSuit - Cannot find VesselInfo for 5b8ba987-9200-4c29-8d3b-2cb6dd4745a4

Log reveals it's from TAC Life Support:

Tac.LifeSupportController[FFDD3FF6][1677.44]: OnCrewBoardVessel: from=Command Pod Mk1(Tito Orbiter), to=Command Pod Mk1(Tito Orbiter)
(Filename: /BuildAgent/work/d63dfc6385190b60/artifacts/LinuxStandalonePlayerGenerated/UnityEngineDebug.cpp Line: 49)
Tac.LifeSupportController[FFDD3FF6][1677.44]: EmptyEvaSuit - Cannot find VesselInfo for 5b8ba987-9200-4c29-8d3b-2cb6dd4745a4
(Filename: /BuildAgent/work/d63dfc6385190b60/artifacts/LinuxStandalonePlayerGenerated/UnityEngineDebug.cpp Line: 49)
[00:00:00]: Tito Orbiter boarded Command Pod Mk1 on Tito Orbiter.
(Filename: /BuildAgent/work/d63dfc6385190b60/artifacts/LinuxStandalonePlayerGenerated/UnityEngineDebug.cpp Line: 49)
ScienceAlert, Rebuilding observer list
(Filename: /BuildAgent/work/d63dfc6385190b60/artifacts/LinuxStandalonePlayerGenerated/UnityEngineDebug.cpp Line: 49)
ScienceAlert, ProfileManager.OnVesselChange: Bringing vessel 5b8ba987-9200-4c29-8d3b-2cb6dd4745a4 up to date on stored profile default

My guess it's because the passenger is not loaded immediately, but with a delay (during which the sound effect plays) and TAC Life Support considers the passenger on EVA during this time? It might be purely cosmetic, though, as TAC LS shows 2 crew after the passenger has appeared on board. Or it might be a race and the vessel wasn't completely loaded when I pushed "load passenger"?

EDIT: minPeriod and maxPeriod are both 0 in the OrbitParameter. If I edit the savegame and change maxPeriod to something greater than the current period, the condition is fulfilled.

Edited by SpaceNomad

Share this post


Link to post
Share on other sites
Hi, great idea; I'm already playing it.

I'm having an issue with a contract requiring me to bring a tourist to orbit: But the contract requires an orbital period of "Below 00:00:00" (other constraint is Periapsis above 75km). I first thought, this was purely cosmetic, but it isn't. I'm now in orbit, all other conditions are ticked off, but this one isn't (and is a bit hard to fulfill :wink:).

There also seems to be some strange interaction with TAC Life Support. When loading a passenger, I get the following HUD message:

Error - EmptyEvaSuit - Cannot find VesselInfo for 5b8ba987-9200-4c29-8d3b-2cb6dd4745a4

Log reveals it's from TAC Life Support:

Tac.LifeSupportController[FFDD3FF6][1677.44]: OnCrewBoardVessel: from=Command Pod Mk1(Tito Orbiter), to=Command Pod Mk1(Tito Orbiter)
(Filename: /BuildAgent/work/d63dfc6385190b60/artifacts/LinuxStandalonePlayerGenerated/UnityEngineDebug.cpp Line: 49)
Tac.LifeSupportController[FFDD3FF6][1677.44]: EmptyEvaSuit - Cannot find VesselInfo for 5b8ba987-9200-4c29-8d3b-2cb6dd4745a4
(Filename: /BuildAgent/work/d63dfc6385190b60/artifacts/LinuxStandalonePlayerGenerated/UnityEngineDebug.cpp Line: 49)
[00:00:00]: Tito Orbiter boarded Command Pod Mk1 on Tito Orbiter.
(Filename: /BuildAgent/work/d63dfc6385190b60/artifacts/LinuxStandalonePlayerGenerated/UnityEngineDebug.cpp Line: 49)
ScienceAlert, Rebuilding observer list
(Filename: /BuildAgent/work/d63dfc6385190b60/artifacts/LinuxStandalonePlayerGenerated/UnityEngineDebug.cpp Line: 49)
ScienceAlert, ProfileManager.OnVesselChange: Bringing vessel 5b8ba987-9200-4c29-8d3b-2cb6dd4745a4 up to date on stored profile default

My guess it's because the passenger is not loaded immediately, but with a delay (during which the sound effect plays) and TAC Life Support considers the passenger on EVA during this time? It might be purely cosmetic, though, as TAC LS shows 2 crew after the passenger has appeared on board. Or it might be a race and the vessel wasn't completely loaded when I pushed "load passenger"?

EDIT: minPeriod and maxPeriod are both 0 in the OrbitParameter. If I edit the savegame and change maxPeriod to something greater than the current period, the condition is fulfilled.

Drat, broke something in Contract Configurator 0.7.1. 0.7.2 is up to fix it, but I won't have a change to update the main thread until later. Let me know if that works for you. Note you'll have to cancel current/offered contracts to see the fix.

Share this post


Link to post
Share on other sites

Wow, that was fast! On first sight, it seems to work (new contracts appear without the "Below 00:00:00" and don't have a maxPeriod field in the save game). So, let's call it fixed.

Thank you, for your great work! All those contract packs really add a lot of atmosphere. And now one can afford to reject the grindy contracts in a career game.

Share this post


Link to post
Share on other sites

I've raised [#151] against Contract Configurator to look into the TAC-LS messages. Let me know if it causes anything more severe (passengers not consuming resources, etc.).

Thank you, for your great work! All those contract packs really add a lot of atmosphere. And now one can afford to reject the grindy contracts in a career game.

Until these become grindy! :D

In terms of the design of this contract pack, the contracts are meant to be real money-makers (although you wont' get any science or much prestige from them). If you build the space casino you'll get contracts to take 20-30 Kerbals up for about 4-6 million funds a pop. By that time it should be fairly late game, and the last thing you'll want to be doing is taking 100 part test contracts to get your funds up. Note that the later contracts get unlocked by having taken more tourists up (regardless of which contract you use to get the tourists up).

Share this post


Link to post
Share on other sites

Oh, and I forgot to add this to the first post: This contract pack works on RSS (both rescaled Kerbin and Earth-based) and the various planet packs. For the planet packs, one of the late-game contracts is to visit the moon's of Jool - but it will show up for any gas giant that is loaded. Enjoy!

Share this post


Link to post
Share on other sites

Really nice.

Too bad about the station/base contracts though... they require empty space on those to spawn, and before this mod I have been filling them up completely just for the heck of it... >.<

Bases I can make some kerbals EVA I suppose. I am reluctant to leave kerbals from stations floating in space though...

Share this post


Link to post
Share on other sites
Really nice.

Too bad about the station/base contracts though... they require empty space on those to spawn, and before this mod I have been filling them up completely just for the heck of it... >.<

Bases I can make some kerbals EVA I suppose. I am reluctant to leave kerbals from stations floating in space though...

Heh, I wasn't sure if I should just require that there's the space for them or the free space. It works well with OKS/MKS where you usually end up with empty hab modules because your Kerbals are all in workshops.

Maybe I need to come up with support in the expressions for "distance to another vessel" so that I can make real rescue contracts. Ie. "rescue the Kerbal that you left floating out in space (or in orbit of the sun)".

Share this post


Link to post
Share on other sites
Heh, I wasn't sure if I should just require that there's the space for them or the free space. It works well with OKS/MKS where you usually end up with empty hab modules because your Kerbals are all in workshops.

Maybe I need to come up with support in the expressions for "distance to another vessel" so that I can make real rescue contracts. Ie. "rescue the Kerbal that you left floating out in space (or in orbit of the sun)".

Ah well maybe I'll just launch new ones. It's an opportunity to make my designs more "user-friendly" at least.

Also looks like only the Kerbin system is eligible. I'm not exactly looking forward to "send four tourists to Eve Base Alpha... and return" anyway :P

Edited by Spheniscine

Share this post


Link to post
Share on other sites

Does this mod indefinitely spawning new Kerbal tourists and spamming the crew roster? All tourists I ever sent to space are still present in my peristent.sfs.

Maybe you should consider reusing existing tourists or just renaming them.

Share this post


Link to post
Share on other sites
Does this mod indefinitely spawning new Kerbal tourists and spamming the crew roster? All tourists I ever sent to space are still present in my peristent.sfs.

Maybe you should consider reusing existing tourists or just renaming them.

Sure does! I initially would remove them from the list, but if the tourists do something "meaningful" (first in space, first splashdown, etc. etc.), they end up in the progress tracking list in KSP, and then when it saves the persistence file it blows up with exceptions. Unless it causes a specific issue for someone/some mod, I'm not likely going to change it before 1.0.

Which brings me to the elephant in the room (surprised it hasn't come up yet). Squad is introducing tourism contracts in 1.0 - so what will I do with this one when that time comes? To be honest, I'm not sure - but this is a contract pack that I wanted to build for a while, and I'm confident enough that it has enough content beyond what Squad will do to still be valuable once they release their stuff. Anyway, I will probably do one or more of these things:

  1. Integration the tourist trait (assuming that's how they implement it) into this mod.
  2. Fix issues with keeping tourists in the persistence list (because they will have the same problem and fix it properly... right?)
  3. Disable the stock tourist contracts (this really depends on what the overlap is).
  4. Decide if I want to implement any functionality that the stock tourism contracts do differently/better (or that I don't do at all).

So anyway, let me know if the current model is causing a problem, and I can look at changes.

Share this post


Link to post
Share on other sites
Sure does! I initially would remove them from the list, but if the tourists do something "meaningful" (first in space, first splashdown, etc. etc.), they end up in the progress tracking list in KSP, and then when it saves the persistence file it blows up with exceptions. Unless it causes a specific issue for someone/some mod, I'm not likely going to change it before 1.0.

What you could do is make Claws Bugfixes a dependency OR include a warning that if tourists do those things, peoples saves WILL break. Is there some way you can stop tourism contracts that would trigger this bug from appearing? I don't know if it's possible, but maybe checking against ProgressTracking and if something isn't present (first flyby of Moho, for example), then don't create a contract for it (yet)? Or maybe have a prerequisite that's something like 'you must've done X by yourself already if you want to do X as a tourism contract', I dunno..

My concern is that you're going to end up bloating savefiles, even those that have Claws fix installed. Maybe have a reflection check (is that what it's called?) - if it's installed, don't create new kerbals, if it is, reuse them.

Share this post


Link to post
Share on other sites
What you could do is make Claws Bugfixes a dependency OR include a warning that if tourists do those things, peoples saves WILL break. Is there some way you can stop tourism contracts that would trigger this bug from appearing? I don't know if it's possible, but maybe checking against ProgressTracking and if something isn't present (first flyby of Moho, for example), then don't create a contract for it (yet)? Or maybe have a prerequisite that's something like 'you must've done X by yourself already if you want to do X as a tourism contract', I dunno..

My concern is that you're going to end up bloating savefiles, even those that have Claws fix installed. Maybe have a reflection check (is that what it's called?) - if it's installed, don't create new kerbals, if it is, reuse them.

Good ideas, but won't work. I was very hopeful when you mentioned Claw's hotfix, but his solution is the same as mine - put the Kerbals into the "Unowned" state, so they don't show in the astronaut complex (but still exist in the save file). I can't stop it from happening as there's too many ways it can happen. One of the main places I see it is getting the "first splashdown" (maybe every landing before it was on land). Or vice-versa (first landing). Same thing with giving a warning - it's way too easy to accidentally mess it up - then the player ends up with a corrupted save.

I'm not too concerned about the save bloat unless someone can point me to a specific problem it causes. From a file size perspective the extra Kerbals don't add a lot - let's say 100 bytes. 1000 Kerbals would be a ton of contracts, and that's still only 100KB (not negligible, but not huge either). My bigger area of concern is that they get stored in a list. Scanning a list of 1000 is quite fast, but I've seen too many places where KSP likes to do checks on every clock tick. Scanning a list of 1000 items 60 times per second still isn't terrible... but starts to get more worrisome.

Anyway, the main reason that I'm not putting a fix in is that it would be a fairly painful fix for me (the cure is worse than the disease, for me at least), and I fully expect that this will not be an issue in 1.0 any more. Now if 1.0 rolls around and we still have this problem... then maybe I'll need to revisit this position and do the hard workaround for Squad's bugs that I really don't want to do.

Share this post


Link to post
Share on other sites

Why reusing them isn't a solution? Just scan for existing unassigned & unowned Kerbals before creating new ones. Renaming them probably won't break anything either.

Do you know what ProtoCrewMember.KerbalType.Tourist is? Does it behave differently than ProtoCrewMember.KerbalType.Unowned?

Share this post


Link to post
Share on other sites
Why reusing them isn't a solution? Just scan for existing unassigned & unowned Kerbals before creating new ones. Renaming them probably won't break anything either.

Renaming is the same as deleting for the bug since they are referenced by name. Main reason I didn't want to reuse was so that the player didn't keep seeing the same names over and over again. How about this, I'll implement it so that if the list of unowned (or tourists if I make the change below) hits say... 250, I'll start reusing. That way there's a wide enough pool of names that a typical player won't notice the reuse, and the save-bloat is kept to a minimum. Raised [#160] on GitHub to track.

Do you know what ProtoCrewMember.KerbalType.Tourist is? Does it behave differently than ProtoCrewMember.KerbalType.Unowned?

I'll have to play with it again, but I seemed to remember it didn't work for some reason when I tried it. It may be what Squad ends up using for 1.0 instead of a trait - so might be worthwhile changing it now if that's the case. At the very least it behaved the same as Unowned.

Share this post


Link to post
Share on other sites

So, I'm not 100% sure how I got to this point... I accepted the Tour the Facility contract where you have to choose which attraction to build. The first time I did this, it spawned something near my KSC (the little dialog saying it had 1200 parts, the kerbal's name, and fly/recover buttons), and locked up my computer - I couldn't click on any buildings. I unfortunately don't have any screenshots for that. I tried to rescue my save with some quickloading, and wound up back at the KSC with a "contract failed" thing in my inbox. Okay, fine, at least it's not broken. I got the Tour contract to come up again, and it didn't crash or do anything weird when I accepted it, but it seems like the contract NPCs spawned across the world:

hMv6QlKh.png?2

They spawned there on multiple loads, as well as canceling/retrying the contract.

Share this post


Link to post
Share on other sites
So, I'm not 100% sure how I got to this point... I accepted the Tour the Facility contract where you have to choose which attraction to build. The first time I did this, it spawned something near my KSC (the little dialog saying it had 1200 parts, the kerbal's name, and fly/recover buttons), and locked up my computer - I couldn't click on any buildings. I unfortunately don't have any screenshots for that. I tried to rescue my save with some quickloading, and wound up back at the KSC with a "contract failed" thing in my inbox. Okay, fine, at least it's not broken. I got the Tour contract to come up again, and it didn't crash or do anything weird when I accepted it, but it seems like the contract NPCs spawned across the world:

http://i.imgur.com/hMv6QlKh.png?2

They spawned there on multiple loads, as well as canceling/retrying the contract.

Well, they're spawning at 0/0 lat/lon, so it's not completely random, and it looks like the waypoints are right (and should be using the same coordinate set). Let me do some digging and get back to you on whether I need more info.

Oh and the 1200 part ghost ship? I have no clue. :) Unless you can reproduce I may have to just chalk that one up to KSP going Kerbal.

EDIT: Got it, I see the problem. If the contract comes up and you then do something that causes the game to get saved and reloaded (like changing scenes), it doesn't save the location information properly. This only affects when the contract is offered. If you can accept it right away (ie. cancel it in mission control and keep cancelling other stuff until it comes up), it should work. I'll get a fix out in Contract Configurator 0.7.4 as soon as possible.

Edited by nightingale

Share this post


Link to post
Share on other sites

Yay, that fixed it! I'm a little irritated at myself for not trying that to begin with, I thought for sure I'd done that... Oh well! Thanks for tracking that down!

Share this post


Link to post
Share on other sites

How do I load the civilians onto the craft?

Share this post


Link to post
Share on other sites
How do I load the civilians onto the craft?

When you load a new ship on the launchpad, if it has enough free space for the passengers, a dialog box will pop up asking if you want to load passengers. Only if you have enough free space though!

ew7ANwD.png

Share this post


Link to post
Share on other sites

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.