Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hab timer change suggestions #199

Open
Wyzard256 opened this issue Jan 7, 2017 · 3 comments
Open

Hab timer change suggestions #199

Wyzard256 opened this issue Jan 7, 2017 · 3 comments

Comments

@Wyzard256
Copy link
Contributor

Awhile back in the forum thread, I and a few others discussed some quirks of the habitation timers:

  • The "hab" timer doesn't really limit anything, because it can be reset by a brief EVA.
  • The best-hab-ever-seen rule means that when a kerbal leaves a spacecraft, even briefly, the remaining kerbals' "home" timers are extended permanently (due to having more room for themselves). This can be exploited by having everyone get out and then take turns being the only kerbal in the ship.

I'd like to suggest a possible change to the timer mechanics that should resolve those issues, with little compatibility impact and a very similar overall "feel":

  • First, remove the "hab" timer since it isn't really a limit.
  • Second, rename the "home" timer to "hab", and change it to be based only on BaseKerbalMonths from hab modules (times the vessel's hab multiplier) — not the base 0.25 kerbal-months per seat that all crewed parts have. Also change it to look at the current spacecraft, not the best one the kerbal has ever seen. When a kerbal's time away from Kerbin reaches this limit, he/she becomes homesick but doesn't stop working quite yet.
  • Finally, add a "cabin" timer (for lack of a better term) that's the 0.25 kerbal-months per seat, times hab multiplier. This represents the kerbal's ability to "tough it out" and continue working despite being homesick. Cabin time accrues only while a kerbal is homesick (that is, beyond the current vessel's "hab" time limit), and it gradually recovers, at a configurable rate, when the kerbal is not homesick. When a kerbal's accrued cabin time reaches the vessel's limit, he/she succumbs to cabin fever and stops working.

The idea is that "hab" time supports long-term stays, and "cabin" time is what allows a kerbal to leave habitation for a relatively short time (e.g. for a landing). The two values are based on the existing BaseKerbalMonths attribute and number of crew seats, so part configs shouldn't need to change, and the total time a vessel can support a kerbal (hab plus cabin time) is the same as in the current system, so it should be compatible on an individual-ship basis. I think the only compatibility impact is that kerbals can no longer stay in space for a long time in poor habitation just because they've seen better habitation in the past, and that's by design.

I'd suggest that the default recovery rate for cabin time be one-to-one: that is, each day in hab removes one day from a kerbal's accrued cabin time. People may want to change this to adjust the difficulty. The idea is that a kerbal can leave habitation for awhile and come back just before he succumbs to cabin fever, but then he has to "cool off" for awhile before he's ready to do so again.


Here's an example of how the suggested mechanics would play out:

  • Jeb is in a space station that has two Hitchhikers, a PPD-12 cupola, and a docked spacecraft with a Mk1 command pod. This provides 3339 days of hab time (21 kerbal-months from each of the Hitchhikers, times 2.65 due to the cupola) and 198.75 days of cabin time (0.25 kerbal-months from each of the ten seats, times 2.65). To keep the math simple, let’s say he’s the only kerbal there, so he gets all that time to himself.
  • On Jeb’s 600th day in space, he leaves the station in the craft with just the Mk1 command pod, which has about 7 days (0.25 kerbal-months) of cabin time by itself. Since there’s no hab module, Jeb is immediately homesick (or at least, doesn’t feel “at home” in this ship), but he can tolerate it for about a week.
  • Five days later, Jeb docks at a smaller station that has just a single Hitchhiker as its crew quarters. Now that he’s back in a place with proper hab facilities, he’s no longer homesick. He still remembers that he’s been cooped up in the command pod for the past five days, and that time would still “count” if he were to immediately leave again, but it’ll recover over the next few days in the station.
  • Five days later (assuming the default recovery rate), he’s recovered from the time in the small ship — that is, his accrued “cabin time” has returned to zero.
  • 20 days later, Jeb has been away from Kerbin for 630 days. Since this station only has 630 days of hab time (21 kerbal-months from the Hitchhiker), he’s no longer satisfied by its accomodations, and becomes homesick. The station and docked ship provide 37.5 days of cabin time (0.25 times 5 seats), so he can hold out for that long.
  • One day later, he leaves the station in the ship that he arrived in. By itself, the command pod provides about 7 days of cabin time, but he’s already been homesick for a day, so he can only last about 6 more.
@BobPalmer
Copy link
Collaborator

Your first premise is very flawed. An EVA only resets the hab timer, not the home timer. There is a reason there are two timers. An example case being a lander or rover that departs a much larger mother ship. Yes, EVA resets the hab timer - but it does not reset the home timer, which is pretty huge. i.e. you're confusing hab->home with home->cabin in your example. You will want to re-do that proposal with that in mind please.

@Wyzard256
Copy link
Contributor Author

No, I understand the difference between the two timers. Note that I propose renaming the "home" timer to "hab" — not strictly necessary, but because it'd represent only time from hab modules. That may make it look like I'm mixing the two up, but I've actually been careful not to. When I refer to "hab time" in the example with Jeb, I'm talking about the timer that was formerly called "home" (but has been renamed and modified somewhat).

(I realize that renaming "home" to "hab" makes things a bit confusing when discussing the change — sorry about that. I can edit the proposal to take out that rename if you'd like.)

The specific issues I'm aiming to resolve are:

  • I can give a kerbal a ten-second glimpse of the inside of a luxury space hotel around Kerbin to boost his "home" time, then send him to Eeloo in a lander can, and he's OK with it as long as I click the EVA button every few days to reset his "hab" time. That shouldn't be possible.
  • If I have, say, a lander with two kerbals in a Mk2 lander can, and one gets out to plant a flag, the other kerbal's "home" time limit is permanently doubled. That doesn't make sense, and it can be exploited in a large and crowded ship to extend all the kerbals' "home" timers as if each had the entire ship to himself.

With the current mechanics, I think the purpose of the "best hab ever seen" rule is to allow a kerbal to leave his nice comfy ship for awhile and spend a limited time cooped up in a lander or small transfer vessel, but on its own, the "home" timer doesn't limit how long the kerbal can be away from the comfy ship. The current "hab" timer is meant to provide that limit, but it's not effective since it can be reset by EVA. What I'm proposing is basically a different way to handle the "short excursion away from the mothership" use-case that avoids those issues.

@arbsoup
Copy link

arbsoup commented Jul 5, 2024

Ancient request, I'm aware, but I like this a lot... though it'd need quite the code reorganization! There's one issue I see with this setup:

One day later, he leaves the station in the ship that he arrived in. By itself, the command pod provides about 7 days of cabin time, but he’s already been homesick for a day, so he can only last about 6 more.

What if he leaves after 8 days? He dies (or turns into a tourist or whatever) the instant the ship leaves the shared-vessel range, which is hugely jarring.

The way I might want to do cabin time is that it's a constant maximum of 0.25 months for any Kerbal, but it depletes slower if there are more seats than Kerbals (or if there's a hab multiplier?). In the case of this last station which is 1/5 occupied, you could maybe multiply the displayed cabin timer by 5 while depleting Jeb's internal cabin timer 1/5 as quickly. That way when his hab timer runs out in the station the cabin timer displays 7.5*5=37.5 days. When he leaves after 8 days, he's really lost an effective 1.6 days of cabin time, so once he's back in the ship his timer now shows 7.5 - 1.6 = 5.9 days to go.

I'll poke around and see if I can maybe do this on a fork sometime. This is getting me thinking too much to leave it alone.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants