Compare commits

...

3 commits

3 changed files with 258 additions and 14 deletions

View file

@ -153,7 +153,208 @@ enum OSIDs: Int {
BetaAssault2, BetaAssault2,
}; };
enum ArchIDs: Int { enum ArchIDs: Int { // That tree is a **fucking mess**, so this enum will be too.
// Tier 1 // Left side T1
StandardFrame = 500099, StandardFrame = 500099,
StrengthFrame,
BoostFrame,
SupportFrame,
CombatFrame,
DurableFibre1,
EfficientThrusters1,
MaterialsCollector1,
TempoPreserver,
// Left side T2
StopperFrame,
ReinforcedFrame,
Overtaker,
GeneratorFrame,
HeavyLoadFrame,
SiegeMechFrame,
SentryFrame,
MetalsReplacement,
ReactiveArmour1,
FrameBoostingSystemSType,
EnemyScanner1,
MaterialsCollector2,
CompositeNanorobotics,
PinpointReticle1,
// Left side T3
BlockerUnit,
Hillgard,
Atmosformer,
Revitaliser,
SupplyCarrier,
TheEnforcer,
Precelsior,
ForcefulTinkeringDType,
ReactiveArmour2,
EfficienttThrusters2,
EnemyScanner2,
MaterialsCollector3,
PressurisedGears1,
PinpointReticle2,
// Left side T4
Aurochs,
Pantheris,
Vulture,
Vitalcycler,
Amberjack,
Bloodhounds,
ManOWar,
Steelwall,
DurableFibre2,
Streamliner,
FortressConfigurations1,
Afterburners1,
PerpetualGenerator1,
DataAnalyser1,
VoidDestabiliser1,
Ragelock,
BinaryMonarchEType,
Stingray,
ShieldsformerSystem1,
ShieldsEnhancer1,
AcceleratedWalkers1,
BulletRecollector1,
EnemyScanner3,
ArmsSBattery1,
BinaryMonarchAType,
// Left side T5
Longhorn,
Lionel,
Stormbyrd,
Hydra,
Orca,
Felcaninus,
Anglerwasp,
Ramsgate,
DoomsdayCargo,
Ghostech,
ReactiveArmour3,
FrameBoostingSystemDType,
PerpetualGenerator2,
DataAnalyser2,
PoweredNanorobotics,
Styxgear,
FullMetalJacketAType,
Thornwhip,
ShieldsformerSystem2,
ShieldsRerouter,
AdditionalThrusters1,
BulletRecollector2,
EnemyInspector1,
ArmsSBattery2,
FullMetalJacketIType,
// Elemental T1/2 (there's a lone T1 node, so I won't make a separate group just for it)
EnemyObserverUnit,
BladeBlazeCanister,
BladeCryoCore,
BladeVoltAmplifier,
BlazeBulletsTech,
CryoBulletsTech,
VoltBulletsTech,
BlazePodsTech,
CryoPodsTech,
VoltPodsTech,
// Elemental T3
PowerTransferenceUnit1,
Adaptive,
BlazeArmsEnhancer,
CryoArmsEnhancer,
VoltArmsEnhancer,
// Elemental T4
PowerTransferenceUnit2,
Elemental,
BlazeTransferenceUnit,
CryoTransferenceUnit,
VoltTransferenceUnit,
QuickBurningChemicals,
CryoCoatedMetals,
VoltageOverclock,
// Elemental T5
PowerTransferenceUnit3,
Revenant,
ArmsConductionController,
TrinityCore1,
PodsConductionController,
MeltingChemicals,
LongLastingCryoChems,
VoltSplitters,
WeaponStanceControls, // This node is common to both the DW and shield sub-trees.
// Shield T2
ProtectiveCoating1,
MeteorShielder1,
// Shield T3
Retaliator,
Flagbearer1,
AegisReinforcements1,
// Shield T4
Flashspike,
ProtectiveCoating2,
MeteorShielder2,
IntegrityStrengthening1,
// Shield T5
Faithbinder,
SaintessBulwark,
MeteorShielder3,
BlizzardCore1,
// DW T2
GatheringStorm1,
WildfireStarter1,
// DW T3
MasterOfArms,
Stormwielder,
Suncaller,
// DW T4
Evoker,
GatheringStorm2,
WildfireStarter2,
GravitationDefier1,
// DW T5
Bladedancer,
Type3ArmsSBattery1,
ShieldsBatteryRegulator1,
GravitationDefier2,
// QB T2/3
// Okay, time to rant. The first node of the QB sub-tree is a tier 2 node. By itself, it's not that bad,
// except that... it's the child of Master of Arms, the first T3 node in the DW sub-tree. :DeadInside:
QuantumMechanicsResearch,
QuantumAccelerationResearch,
QuantumControlResearch,
QuantumCoatingResearch,
// QB T4
EnergyCollector1,
ParticleAccelerator1,
AmplificationModule1,
QAugmentedThrusters,
EssenceRedistributor1,
MomentumSpiker1,
// QB T5
EnergyCollector2,
ParticleAccelerator2,
AmplificationModule2,
QAugmentedShields,
EssenceRedistributor2,
MomentumSpiker2,
}; };

View file

@ -127,6 +127,7 @@ void ResearchTree::generateEngineTree() {
return; return;
} }
// T1
_engineNodes.emplace(VerseEngine, Node{Node::Type::Engine, "Verse Engine", 1, 3, _engineNodes.emplace(VerseEngine, Node{Node::Type::Engine, "Verse Engine", 1, 3,
"A basic low-speed engine with great durability.", "A basic low-speed engine with great durability.",
"Durability +346, Power +60, Armour +22, Acceleration +75, Magazine load +35, Energy capacity +35", "Durability +346, Power +60, Armour +22, Acceleration +75, Magazine load +35, Energy capacity +35",
@ -140,61 +141,83 @@ void ResearchTree::generateEngineTree() {
_engineNodes.emplace(MetalPlatings1, Node{Node::Type::Gear, "Metal Platings 1", 1, 0, _engineNodes.emplace(MetalPlatings1, Node{Node::Type::Gear, "Metal Platings 1", 1, 0,
"Level 1 metal plating that adds durability and armour to your engine.", "Level 1 metal plating that adds durability and armour to your engine.",
"Durability +60, Armour +5, Acceleration -15", ""}); "Durability +60, Armour +5, Acceleration -15", ""});
_engineNodes.emplace(HeatTurbines1, Node{Node::Type::Gear, "Heat Turbines 1", 1, 0, _engineNodes.emplace(HeatTurbines1, Node{Node::Type::Gear, "Heat Turbines 1", 1, 0,
"Modified heat turbines to increase speed for a M.A.S.S.", "Modified heat turbines to increase speed for a M.A.S.S.",
"Acceleration +75, Fuel capacity +5", ""}); "Acceleration +75, Fuel capacity +5", ""});
_engineNodes.emplace(Microcontroller1, Node{Node::Type::Gear, "Microcontroller 1", 1, 0, _engineNodes.emplace(Microcontroller1, Node{Node::Type::Gear, "Microcontroller 1", 1, 0,
"A microchip that enhances various aspects of a M.A.S.S.", "A microchip that enhances various aspects of a M.A.S.S.",
"Durability +36, Power +1, Armour +11, Magazine load +5, Energy capacity +5, Fuel capacity +3", ""}); "Durability +36, Power +1, Armour +11, Magazine load +5, Energy capacity +5, Fuel capacity +3", ""});
_engineNodes.emplace(CombustionController1, Node{Node::Type::Gear, "Combustion Controller 1", 1, 0, _engineNodes.emplace(CombustionController1, Node{Node::Type::Gear, "Combustion Controller 1", 1, 0,
"Controlled combustion allows increased power generation through specific ignition.", "Controlled combustion allows increased power generation through specific ignition.",
"Power +2, Magazine load +10, Energy capacity +10, Acceleration -25", ""}); "Power +2, Magazine load +10, Energy capacity +10, Acceleration -25", ""});
// T2
_engineNodes.emplace(ModAlloyEngine, Node{Node::Type::Engine, "Mod. Alloy Engine", 2, 3, _engineNodes.emplace(ModAlloyEngine, Node{Node::Type::Engine, "Mod. Alloy Engine", 2, 3,
"Built with a modified alloy and able to sustain greater attacks from any enemy.", "Built with a modified alloy and able to sustain greater attacks from any enemy.",
"Durability +1152, Power +75, Armour +194, Acceleration +75, Magazine load +40, Energy capacity +40", "Durability +1152, Power +75, Armour +194, Acceleration +75, Magazine load +40, Energy capacity +40",
"Durability +3%"}); "Durability +3%"});
_engineNodes.emplace(ChargedEngine, Node{Node::Type::Engine, "Charged Engine", 2, 3, _engineNodes.emplace(ChargedEngine, Node{Node::Type::Engine, "Charged Engine", 2, 3,
"Remove most armours to attain more speed and power, and fuel.", "Remove most armours to attain more speed and power, and fuel.",
"Durability +960, Power +75, Acceleration +300, Magazine load +40, Energy capacity +40, Fuel capacity +52", "Durability +960, Power +75, Acceleration +300, Magazine load +40, Energy capacity +40, Fuel capacity +52",
"Acceleration +5"}); "Acceleration +5"});
_engineNodes.emplace(ReinforcedLoadedEngine, Node{Node::Type::Engine, "Reinforced Loaded Engine", 2, 3, _engineNodes.emplace(ReinforcedLoadedEngine, Node{Node::Type::Engine, "Reinforced Loaded Engine", 2, 3,
"An upgraded build of the basic model, with reinforced Verse Steel for more strength.", "An upgraded build of the basic model, with reinforced Verse Steel for more strength.",
"Durability +960, Power +105, Armour +130, Acceleration +75, Magazine load +40, Energy capacity +40", "Durability +960, Power +105, Armour +130, Acceleration +75, Magazine load +40, Energy capacity +40",
"Power +3%"}); "Power +3%"});
_engineNodes.emplace(HeavyImpactsEnabler, Node{Node::Type::Engine, "Heavy Impacts Enabler", 2, 0, _engineNodes.emplace(HeavyImpactsEnabler, Node{Node::Type::Engine, "Heavy Impacts Enabler", 2, 0,
"Enable the usage of Heavy Combos in close combat attacks.", "", ""}); "Enable the usage of Heavy Combos in close combat attacks.", "", ""});
_engineNodes.emplace(MetalPlatings2, Node{Node::Type::Gear, "Metal Platings 2", 2, 0, _engineNodes.emplace(MetalPlatings2, Node{Node::Type::Gear, "Metal Platings 2", 2, 0,
"Level 2 Metal plating that adds durability and armour to your engine.", "Level 2 Metal plating that adds durability and armour to your engine.",
"Durability +180, Armour +41, Acceleration -15", ""}); "Durability +180, Armour +41, Acceleration -15", ""});
_engineNodes.emplace(HeatTurbines2, Node{Node::Type::Gear, "Heat Turbines 2", 2, 0, _engineNodes.emplace(HeatTurbines2, Node{Node::Type::Gear, "Heat Turbines 2", 2, 0,
"Level 2 Modified heat turbines to increase speed for a M.A.S.S.", "Level 2 Modified heat turbines to increase speed for a M.A.S.S.",
"Acceleration +75, Fuel capacity +16", ""}); "Acceleration +75, Fuel capacity +16", ""});
_engineNodes.emplace(Microcontroller2, Node{Node::Type::Gear, "Microcontroller 2", 2, 0, _engineNodes.emplace(Microcontroller2, Node{Node::Type::Gear, "Microcontroller 2", 2, 0,
"Level 2 Microchip that enhances various aspects of a M.A.S.S.", "Level 2 Microchip that enhances various aspects of a M.A.S.S.",
"Durability +108, Power +3, Armour +17, Magazine load +6, Energy capacity +6, Fuel capacity +8", ""}); "Durability +108, Power +3, Armour +17, Magazine load +6, Energy capacity +6, Fuel capacity +8", ""});
_engineNodes.emplace(WeaponsCargo1, Node{Node::Type::Gear, "Weapons Cargo 1", 2, 0, _engineNodes.emplace(WeaponsCargo1, Node{Node::Type::Gear, "Weapons Cargo 1", 2, 0,
"Added another cargo hold for ammo and energy recharger", "Added another cargo hold for ammo and energy recharger.",
"Magazine load +24, Energy capacity +24, Acceleration -40", ""}); "Magazine load +24, Energy capacity +24, Acceleration -40", ""});
_engineNodes.emplace(CombustionController2, Node{Node::Type::Gear, "Combustion Controller 2", 2, 0, _engineNodes.emplace(CombustionController2, Node{Node::Type::Gear, "Combustion Controller 2", 2, 0,
"Level 2 Controlled combustion allows increased power generation through specific ignition.", "Level 2 Controlled combustion allows increased power generation through specific ignition.",
"Power +5, Magazine load +12, Energy capacity +12, Acceleration -25", ""}); "Power +5, Magazine load +12, Energy capacity +12, Acceleration -25", ""});
_engineNodes.emplace(PoweredRewiring1, Node{Node::Type::Gear, "Powered Rewiring 1", 2, 0, _engineNodes.emplace(PoweredRewiring1, Node{Node::Type::Gear, "Powered Rewiring 1", 2, 0,
"Rewiring that efficiently improves power and engine durability.", "Rewiring that efficiently improves power and engine durability.",
"Durability +180, Power +5", ""}); "Durability +180, Power +5", ""});
// T3
_engineNodes.emplace(ModSteelEngine, Node{Node::Type::Engine, "Mod. Steel Engine", 3, 3,
"Low-speed engine that uses heavy materials for high durability.",
"Durability +2352, Power +90, Armour +311, Acceleration +75, Magazine load +47, Energy capacity +47",
"Durability +3%"});
_engineNodes.emplace(SuperchargedEngine, Node{Node::Type::Engine, "Supercharged Engine", 3, 3,
"An engine with more thermal efficiency that does not sacrifice much performance for speed.",
"Durability +1960, Power +90, Acceleration +300, Magazine load +47, Energy capacity +47, Fuel capacity +104",
"Acceleration +5"});
_engineNodes.emplace(NecriumAlloyEngine, Node{Node::Type::Engine, "Necrium Alloy Engine", 3, 3,
"Engine constructed of Necrium Alloy. Costly but with better performance.",
"Durability +1960, Power +126, Armour +207, Acceleration +75, Magazine load +47, Energy capacity +47",
"Power +3%"});
_engineNodes.emplace(MetalPlatings3, Node{Node::Type::Gear, "Metal Platings 3", 3, 0,
"Level 2 Metal plating that adds durability and armour to your engine.",
"Durability +360, Armour +57, Acceleration -15", ""});
_engineNodes.emplace(HeatTurbines3, Node{Node::Type::Gear, "Heat Turbines 3", 3, 0,
"Level 3 Modified heat turbines to increase speed for a M.A.S.S.",
"Acceleration +75, Fuel capacity +32", ""});
_engineNodes.emplace(Microcontroller3, Node{Node::Type::Gear, "Microcontroller 3", 3, 0,
"Level 3 Microchip that enhances various aspects of a M.A.S.S.",
"Durability +216, Power +5, Armour +24, Magazine load +7, Energy capacity +7, Fuel capacity +16", ""});
_engineNodes.emplace(WeaponsCargo2, Node{Node::Type::Gear, "Weapons Cargo 2", 3, 0,
"Level 2 Added another cargo hold for ammo and energy recharger.",
"Magazine load +28, Energy capacity +28, Acceleration -40", ""});
_engineNodes.emplace(CombustionController3, Node{Node::Type::Gear, "Combustion Controller 3", 3, 0,
"Level 3 Controlled combustion allows increased power generation through specific ignition.",
"Power +11, Magazine load +14, Energy capacity +14, Acceleration -25", ""});
_engineNodes.emplace(PoweredRewiring2, Node{Node::Type::Gear, "Powered Rewiring 2", 3, 0,
"Level 2 Rewiring that efficiently improves power and engine durability.",
"Durability +360, Power +11", ""});
_engineNodes.at(VerseEngine).addChild(_engineNodes.at(MetalPlatings1)); _engineNodes.at(VerseEngine).addChild(_engineNodes.at(MetalPlatings1));
_engineNodes.at(VerseEngine).addChild(_engineNodes.at(HeatTurbines1)); _engineNodes.at(VerseEngine).addChild(_engineNodes.at(HeatTurbines1));
_engineNodes.at(VerseEngine).addChild(_engineNodes.at(LoadedEngine)); _engineNodes.at(VerseEngine).addChild(_engineNodes.at(LoadedEngine));
@ -212,6 +235,20 @@ void ResearchTree::generateEngineTree() {
_engineNodes.at(ReinforcedLoadedEngine).addChild(_engineNodes.at(CombustionController2)); _engineNodes.at(ReinforcedLoadedEngine).addChild(_engineNodes.at(CombustionController2));
_engineNodes.at(ReinforcedLoadedEngine).addChild(_engineNodes.at(PoweredRewiring1)); _engineNodes.at(ReinforcedLoadedEngine).addChild(_engineNodes.at(PoweredRewiring1));
_engineNodes.at(ReinforcedLoadedEngine).addChild(_engineNodes.at(HeavyImpactsEnabler)); _engineNodes.at(ReinforcedLoadedEngine).addChild(_engineNodes.at(HeavyImpactsEnabler));
_engineNodes.at(MetalPlatings2).addChild(_engineNodes.at(ModSteelEngine));
_engineNodes.at(HeatTurbines2).addChild(_engineNodes.at(SuperchargedEngine));
_engineNodes.at(Microcontroller2).addChild(_engineNodes.at(SuperchargedEngine));
_engineNodes.at(WeaponsCargo1).addChild(_engineNodes.at(SuperchargedEngine));
_engineNodes.at(CombustionController2).addChild(_engineNodes.at(NecriumAlloyEngine));
_engineNodes.at(PoweredRewiring1).addChild(_engineNodes.at(NecriumAlloyEngine));
_engineNodes.at(ModSteelEngine).addChild(_engineNodes.at(MetalPlatings3));
_engineNodes.at(ModSteelEngine).addChild(_engineNodes.at(HeatTurbines3));
_engineNodes.at(SuperchargedEngine).addChild(_engineNodes.at(HeatTurbines3));
_engineNodes.at(SuperchargedEngine).addChild(_engineNodes.at(Microcontroller3));
_engineNodes.at(SuperchargedEngine).addChild(_engineNodes.at(WeaponsCargo2));
_engineNodes.at(NecriumAlloyEngine).addChild(_engineNodes.at(WeaponsCargo2));
_engineNodes.at(NecriumAlloyEngine).addChild(_engineNodes.at(CombustionController3));
_engineNodes.at(NecriumAlloyEngine).addChild(_engineNodes.at(PoweredRewiring2));
_engineNodes.at(VerseEngine).setState(Node::State::Unlocked); _engineNodes.at(VerseEngine).setState(Node::State::Unlocked);
} }

View file

@ -495,6 +495,9 @@ void SaveTool::drawNode(Node& node) {
ImGui::TableNextColumn(); ImGui::TableNextColumn();
bool has_children = (node.children().size() > 0); bool has_children = (node.children().size() > 0);
if(node.state() == Node::State::Unavailable) {
ImGui::PushStyleColor(ImGuiCol_Text, ImGui::GetStyleColorVec4(ImGuiCol_TextDisabled));
}
if(has_children) { if(has_children) {
bool open = ImGui::TreeNodeEx(node.name(), ImGuiTreeNodeFlags_SpanAvailWidth|(node.state() == Node::State::Unlocked ? ImGuiTreeNodeFlags_Selected : 0)); bool open = ImGui::TreeNodeEx(node.name(), ImGuiTreeNodeFlags_SpanAvailWidth|(node.state() == Node::State::Unlocked ? ImGuiTreeNodeFlags_Selected : 0));
nodeTooltip(); nodeTooltip();
@ -510,6 +513,9 @@ void SaveTool::drawNode(Node& node) {
ImGuiTreeNodeFlags_Bullet|(node.state() == Node::State::Unlocked ? ImGuiTreeNodeFlags_Selected : 0)); ImGuiTreeNodeFlags_Bullet|(node.state() == Node::State::Unlocked ? ImGuiTreeNodeFlags_Selected : 0));
nodeTooltip(); nodeTooltip();
} }
if(node.state() == Node::State::Unavailable) {
ImGui::PopStyleColor();
}
} }
void SaveTool::drawMassManager() { void SaveTool::drawMassManager() {