endless-sky/Endless-Sky-Delta

[RFC]: Ability to make permanent changes to player's flagship or specific ship in fleet

Open

#184 opened on Dec 22, 2024

View on GitHub
 (2 comments) (0 reactions) (0 assignees)C++ (2 forks)github user discovery
enhancementhelp wanted

Repository metrics

Stars
 (18 stars)
PR merge metrics
 (PR metrics pending)

Description

Problem Description

Within the realm of science fiction that involves spaceships, it is commonplace for things to happen to the ship. Not just minor scuffs or depletion that vanish within a few days or after the next port visit, but longer term things. Expenditures of major limited resources, permanent degradation of equipment, improvements to the ship's hardware, etc. These are valuable and useful tools for creating a more engaging story in which the ship is a participant, not just a tool; but these capabilities are completely lacking in Endless Sky Delta.

Related Issue Links

n/a

Desired Solution

A means to allow content creators to specify permanent changes to a ship's attributes within conversations; as well as a means to have outfits do so as well.

Alternative Approaches

Unknown.

Additional Context

Idea 1:

  • An additional attribute or code that can be placed on outfits that, when detected on an installed outfit, copies the outfit's attributes onto the ship it is installed on, alongside an attribute identifying the source outfit, and then deletes the outfit. The outfit could then be setup so that it could not be reinstalled when the attribute is present, thus creating a situation where something can be purchased, and have a permanent effect on the ship, and be neither sellable nor uninstallable.

Idea 2:

  • Conversation code be developed along the lines of the "give" command that applies a variant template to either the Player's flagship or, if specified, to a ship with a specific UID within the player's fleet. Variants can alter every aspect of a ship, from its name to its sprite to hardpoints to all the attributes and outfitting; and thus it is a very versatile holder of the information to be applied. Existing variant coding is already designed to be overlaid ontop of exisiting ships. The difference is that we would need to figure out how to apply it to the player's ship from within a conversation.

I have considerable more ideas on the exact framework for this, but these are the ideas I have currently.

Contributor guide