Как правильно спроектировать «космический корабль»?
Используй систему статов. Например у тебя есть классenum StatType {
   speed;
   power;
   mobility;
}

class StatManager {
    // Выставляет начальное значение стата
    void setStateBase(StatType type, float value);
   // Добавляет новый модификатор для стата
    void addStatModf(StatType type, StatModf modf);
    // Удаляет модификатор стата
    void removeStatModf(StatType type, StatModf modf);
    
    // Возвращает значение стата со всеми повешенными на него StatModf 
    Float getStateValue(StatType type);
}

enum StatModfType {
   set;
   add;
   mult;
}

class StatModf {
   var StatModfType type; // как именно модификатор влияет
   var Float value;  // значение с которым он влияет
}
При выполнении getStateValue перебирай все модификаторы для этого стата на базовое значение.
Рекомендую применять модификаторы в порядке их типа (StatModfType) вначале set потом mult, потом add а не в порядке добавления. Тут самый простой вариант предложен, подумай и переработай под свои нужны.
Вам нужно ознакомиться с компонентным подходом к архитектуре:
habrahabr.ru/company/wargaming/blog/245321
https://www.youtube.com/watch?v=1zLqgQ_-F84