endless-sky
endless-sky copied to clipboard
Attributes that allow ships to self-repair when disabled
Is your feature request related to a problem? Please describe. Just another idea for a new "advanced" mechanic.
Related Issue Links https://github.com/endless-sky/endless-sky/pull/4524#issuecomment-555256741
Describe the solution you'd like
"disabled repair efficiency"
and "disabled shield efficiency"
(shorter names would be welcomed) would be two attributes that dictate what percentage of your base hull repair or shield generation that still apply when the ship is disabled by its hull being below the threshold (but not by being disabled because of low crew or overheating). The default values of 0 would mean that ships can't repair when disabled, which is the same as the current behavior. Ships would be able to un-disable themselves if they self-repaired beyond the disabled threshold.
Usage examples: The following would allow Kar Ik Vots to repair their hull at 5% the normal rate when disabled.
ship "Kar Ik Vot 349"
...
attributes
...
"disabled repair efficiency" 0.05
...
The following would allow a ship to use an additional 10% of its shield generation when disabled for each installed outfit.
ship "Emergency Shield Generator"
...
"disabled shield efficiency" 0.1
...
Values could potentially be greater than 100%, but remember that a disabled ship doesn't generate energy, so a disabled ship could easily run itself dry on energy before being able to fully repair itself.
Since we're adding tokens to allow passive things to continue functioning while disabled, how about energy generation, ramscoops, and any other purely passive ship functionality.
It occurs to me that a side variation of this might be interesting: Have an attribute that could be given to outfits that specifies that the specific outfit it is a part of functions while disabled. No effect on any other component.
(Useful, among other things, for the escape pod I hope will be in-game someday, as well as things like having, say, an "emergency repair bot" that can't enable any of the other repair systems, but at least it will be able to go do something to get you moving again, eventually.)
This would open up possibilities for variation among tiers, too. High tiers might simply have high overall repair systems that stay active to some degree. Humans might simply have a repair droid that does a pathetically tiny amount of hull repair, but hey, it'll get you going eventually!
This would be interesting and can open up the possibility for missions or battles where you can protect disabled allies from enemies while they repair
This would be interesting and can open up the possibility for missions or battles where you can protect disabled allies from enemies while they repair
If this attribute/behavior becomes supported, derelict mission NPCs would be explicitly forbidden from self repair.
@Zitchas your proposal requires a complete overhaul of the outfit attribute system (attributes are pooled without regard to the source of the attribute, and thus the only condition that can be applied to the is if they are non-zero).
Ah. That's unfortunate.
As an alternative, would it be possible to have a hull repair only when disabled
attribute? That'd accomplish pretty much the same thing. Less versatile but also hopefully doesn't require rebuilding the entire outfit system.
The proposed mechanism looks a bit complex to explain to new users. If we implement this, then I would prefer a simpler completely stand-alone attribute like self-repair chance
that works regardless of power and regardless of the normal hull repair abilities.
The self-repair chance
would give the chance (per each second) that a ship repairs itself. For a chance of 10% (high-tier) you would have a bit more than 50% chance that the ship repairs itself within 7 seconds and about 96% chance that the ship self-repaired after 30 seconds.
Recharging shields while disabled doesn't really make sense to me, especially if the shield recharging would take away energy from the systems that could potentially repair the ship.
Recharging shields (until the power runs out) would make sense to me if it would not be possible to board ships until it's shields are down for a few seconds. If such a mechanism would be in place, then I would expect disabled ships to recharge shields at a normal rate until it runs out of power.
In terms of implementation, I think the hull-repair is the aspect that I would want to see implemented in vanilla. Shield-regen and any other passive systems remaining active while disabled would be mostly included for plug-in possibilities.
That seems simpler (and provides visual feedback that players can track) rather than simply having a random chance any particular second that their ship miraculously jumps up to the "disabled hull value + 1" mark.
On a related note to this, I was thinking that it would be good to have a default, generic "ships self-repair and recover to the disabled threshold+1 after a certain amount of time" thing. Much like we have a generic background ramscoop value so that people aren't stuck in empty systems forever, having a small amount of fee repair so that people aren't stuck disabled forever.
It'd be something tiny. Maybe not even hull repair, but rather a timer that fixes the ship up to the disabled threshold + 1 after a certain amount of time. My first thought for a baseline is 5min from the last time the ship took hull damage. But possibly 10min.
After discussing it on the discord, a number of other ideas came up:
- Having more damage should increase the timer. Being reduced to 1 hull (which is almost 100% below the threshold) should double the time it takes to recover from being disabled. This would be a scaling variable.
- Have one's total number of crew impact the time. If you are short crew, then repairs take longer. If you have extra crew, it should happen faster. This would scale depending on the defficiency/excess in crew numbers, but with limits. +/- 25% of the timer (with extra damage taken into account)
Advantages to this:
- Allows the player the option to recover their ship instead of forcing a reload. (better for immersion.)
- This is better for stories. I feel more like recovering a ship makes for a better story experience than reloading. (Countless sci-fi stories and shows revolve around disabled ships getting disabled and repaired in space)
- This creates a built-in limiter for large ongoing battles like Mesuket. If ships start repairing themselves and either fleeing or re-engaging in battle, then going afk and waiting for dozens or hundreds of ships to get disabled for one to try capturing is no longer a thing. This would solve countless numbers of "Farming the Automata/Hai is OP" comments on here and elsewhere.
- It would allow the Remnant to resume their "Disable" personality (which is what they should have) without creating a risk that their systems build up numbers of Korath ships for the player to capture.
In terms of lore, it'd literally be "your crew searched for a solution for many minutes until someone tracked down a major malfunction to being the XYZ on the reactor. You replaced that, and presto, the ship works again." This happens more than once on Firefly, if I recall correctly. And many, many times in other sci-fi shows. This justifies the jump from "damaged and disabled" to "running and just barely healthy enough to function" without any intervening changes. Not all repairs have to be progressively incrementing the health of the ship point by point.
Caveats:
- As Tehhowch mentioned earlier, with such a self-repair system, the default and normal behavior for NPCs with the "Disabled" personality would be that they do NOT self-repair. They would continue to function as per the way they do now. That being said, it would be nice to have some sort of additional personality type that starts a ship out as disabled but does allow them to self-repair. This could allow things like, say, a mission to destroy a large automata fleet that was disabled in the past and lost in space. It has drifted into range of a star and is regaining energy. Go destroy it before it can fully recover. So the longer the player waits, the more of those ships are going to have returned to life. Alternatively, if they can get to them really quickly, they could probably destroy quite a few of them. As a side bonus, this sort of mission would really reward people for flying smaller faster ships that could zip around to get all the ships in a spread out area. Or use fighters/drones.
Another idea that just came up:
Why don't we split the hull up? Instead of having a "hull health" and then having a mix of disable threshold values hull regen and "only when disabled hull regen" and other stuff, we could instead have two entirey separate things:
- Hull
- Critical Systems
Hull: This is our armor, structural, and other non-critical stuff. It acts just like hull and shields do in terms of getting hit and regenerating stuff.
Critical Systems: This is the health bar that represents the essential stuff that must be working in order for our ship to function. The ship is disabled immediately when the critical systems are damaged.
In terms of mechanics:
- This makes things simpler for calculations and management, since we don't need to calculate anything from the hull value. It just is. It goes down to 0, and once it hits 0, then any future damage goes to the critical systems underneath it.
- Hull regen strictly works on hull, just like you'd expect.
- This means we can have the game give all ships an innate amount of "critical systems regen" in the exact same way all ships have a minute amount of fuel regen; and we don't have to worry about it impacting combat balance since it isn't hull regen, so it isn't going to result in any factions that don't have full regen currently magically being able to fully heal their ships.
Beyond that, in terms of gameplay it has the same sorts of advantages as I was listing earlier. In particular towards immersion, storytelling, and preventing build-up of large masses of ships in certain systems.
So https://github.com/endless-sky/endless-sky/issues/5547 but not just in the UI?
Yeah, I guess so. I think having a more clear division between "armor" and "systems" would facilitate having things like generic recovery from being disabled, or giving humanity some sort of "emergency repair kit" or the like to help recover from being disabled, but without risking giving them actual hull repair.
I really like the idea of people being able to repair their ship enough to limp back into port.But I am also fully committed to ensuring that humanity can't use the same stuff to just go sit off beyond the fence for a few minutes to fully repair their armor. As far as I'm concerned, there is a massive difference between the two types of repairs.
The former has all sorts of benefits as mentioned elsewhere (immersion and story being the main two), but the later has no business being in human space because that is one of the main "differentiators" we have for the higher tiers. And why it is such a big deal that the Hai develop the ability to do so in a minor fashion in that one series of missions.
I'd also like to re-iterate that I don't think recovering from being disabled should be a fast thing. As far as I'm concerned, unless a ship has devoted significant actual outfit space to such equipment, the very minimum time it takes to recover should be at least 5 minutes. And in almost all cases where a ship has taken significantly more than the bare minimum to do damage to critical systems, that figure should quickly scale up to more like 10 minutes.
For a general starting point, I'm thinking for Tier 1 tech a roughly 10 ton outfit to shave about a minute or two off the recovery time, bringing the "minimum time to restart" from 5min down to 3min. For a really heavily damaged ship that has almost obliterated all its essential systems, that's bringing a roughly 10min timer down to 8min.
At the higher levels, the systems cores I'd expect to have a fairly significant reduction in time. They practically sound like they should be able to do this sort of thing already - and they even have built-in backup power and stuff too.
Given that it is really a different thing, I think I'll pull my suggestion out into its own request.
Closing; I believe this feature request is handled in https://github.com/endless-sky/endless-sky/pull/9846. (Using a timer and in line with regular repair by other ships.)