machine upgrade guidebook (#13511)
* machine upgrade guidebook * oops * guidehelpcomponent * build, damn you
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Content.Server.Construction.Components;
|
using Content.Server.Construction.Components;
|
||||||
|
using Content.Shared.Construction.Components;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ using System;
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Content.Shared.Construction.Components;
|
||||||
|
|
||||||
namespace Content.IntegrationTests.Tests;
|
namespace Content.IntegrationTests.Tests;
|
||||||
|
|
||||||
@@ -148,7 +149,7 @@ public sealed class MaterialArbitrageTest
|
|||||||
spawnedOnDestroy.Add(proto.ID, (spawnedEnts, spawnedMats));
|
spawnedOnDestroy.Add(proto.ID, (spawnedEnts, spawnedMats));
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is the main loop where we actually check for destruction arbitrage
|
// This is the main loop where we actually check for destruction arbitrage
|
||||||
Assert.Multiple(async () =>
|
Assert.Multiple(async () =>
|
||||||
{
|
{
|
||||||
foreach (var (id, (spawnedEnts, spawnedMats)) in spawnedOnDestroy)
|
foreach (var (id, (spawnedEnts, spawnedMats)) in spawnedOnDestroy)
|
||||||
@@ -183,7 +184,7 @@ public sealed class MaterialArbitrageTest
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Finally, lets also check for deconstruction arbitrage.
|
// Finally, lets also check for deconstruction arbitrage.
|
||||||
// Get ingredients returned when deconstructing an entity
|
// Get ingredients returned when deconstructing an entity
|
||||||
Dictionary<string, Dictionary<string, int>> deconstructionMaterials = new();
|
Dictionary<string, Dictionary<string, int>> deconstructionMaterials = new();
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Content.Server.Construction.Components;
|
using Content.Server.Construction.Components;
|
||||||
using Content.Shared.Construction;
|
using Content.Shared.Construction;
|
||||||
|
using Content.Shared.Construction.Components;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using Robust.Server.Containers;
|
using Robust.Server.Containers;
|
||||||
using Robust.Shared.Containers;
|
using Robust.Shared.Containers;
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
namespace Content.Server.Construction.Components
|
using Content.Shared.Construction.Components;
|
||||||
|
|
||||||
|
namespace Content.Server.Construction.Components
|
||||||
{
|
{
|
||||||
[RequiresExplicitImplementation]
|
[RequiresExplicitImplementation]
|
||||||
public interface IRefreshParts
|
public interface IRefreshParts
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Content.Shared.Construction.Prototypes;
|
using Content.Shared.Construction.Components;
|
||||||
|
using Content.Shared.Construction.Prototypes;
|
||||||
using Robust.Shared.Containers;
|
using Robust.Shared.Containers;
|
||||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary;
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Content.Server.Construction.Components;
|
using Content.Server.Construction.Components;
|
||||||
using Content.Server.Examine;
|
using Content.Server.Examine;
|
||||||
|
using Content.Shared.Construction.Components;
|
||||||
using Content.Shared.Construction.Prototypes;
|
using Content.Shared.Construction.Prototypes;
|
||||||
using Content.Shared.Verbs;
|
using Content.Shared.Verbs;
|
||||||
using Robust.Shared.Containers;
|
using Robust.Shared.Containers;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using Content.Server.Construction.Components;
|
using Content.Server.Construction.Components;
|
||||||
using Content.Server.Stack;
|
using Content.Server.Stack;
|
||||||
|
using Content.Shared.Construction.Components;
|
||||||
using Content.Shared.Examine;
|
using Content.Shared.Examine;
|
||||||
using Content.Shared.Interaction;
|
using Content.Shared.Interaction;
|
||||||
using Content.Shared.Stacks;
|
using Content.Shared.Stacks;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using Content.Server.DoAfter;
|
|||||||
using Content.Server.Storage.Components;
|
using Content.Server.Storage.Components;
|
||||||
using Content.Server.Storage.EntitySystems;
|
using Content.Server.Storage.EntitySystems;
|
||||||
using Content.Server.Wires;
|
using Content.Server.Wires;
|
||||||
|
using Content.Shared.Construction.Components;
|
||||||
using Content.Shared.Interaction;
|
using Content.Shared.Interaction;
|
||||||
using Content.Shared.Popups;
|
using Content.Shared.Popups;
|
||||||
using Robust.Shared.Containers;
|
using Robust.Shared.Containers;
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
using Content.Shared.Construction.Prototypes;
|
using Content.Shared.Construction.Prototypes;
|
||||||
using Content.Shared.Stacks;
|
using Content.Shared.Stacks;
|
||||||
|
using Robust.Shared.GameStates;
|
||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary;
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary;
|
||||||
|
|
||||||
namespace Content.Server.Construction.Components
|
namespace Content.Shared.Construction.Components
|
||||||
{
|
{
|
||||||
[RegisterComponent]
|
[RegisterComponent, NetworkedComponent]
|
||||||
public sealed class MachineBoardComponent : Component
|
public sealed class MachineBoardComponent : Component
|
||||||
{
|
{
|
||||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
using Content.Shared.Construction.Prototypes;
|
using Content.Shared.Construction.Prototypes;
|
||||||
|
using Robust.Shared.GameStates;
|
||||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||||
|
|
||||||
namespace Content.Server.Construction.Components
|
namespace Content.Shared.Construction.Components
|
||||||
{
|
{
|
||||||
[RegisterComponent]
|
[RegisterComponent, NetworkedComponent]
|
||||||
public sealed class MachinePartComponent : Component
|
public sealed class MachinePartComponent : Component
|
||||||
{
|
{
|
||||||
[DataField("part", required: true, customTypeSerializer: typeof(PrototypeIdSerializer<MachinePartPrototype>))]
|
[DataField("part", required: true, customTypeSerializer: typeof(PrototypeIdSerializer<MachinePartPrototype>))]
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
using Content.Server.Construction.Components;
|
using Content.Shared.Construction.Components;
|
||||||
using Content.Shared.Examine;
|
using Content.Shared.Examine;
|
||||||
|
|
||||||
namespace Content.Server.Construction
|
namespace Content.Shared.Construction
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Deals with machine parts and machine boards.
|
/// Deals with machine parts and machine boards.
|
||||||
@@ -7,6 +7,7 @@ using Content.Shared.Mobs.Systems;
|
|||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using Robust.Shared.Containers;
|
using Robust.Shared.Containers;
|
||||||
using Robust.Shared.Map;
|
using Robust.Shared.Map;
|
||||||
|
using Robust.Shared.Network;
|
||||||
using Robust.Shared.Physics;
|
using Robust.Shared.Physics;
|
||||||
using Robust.Shared.Utility;
|
using Robust.Shared.Utility;
|
||||||
using static Content.Shared.Interaction.SharedInteractionSystem;
|
using static Content.Shared.Interaction.SharedInteractionSystem;
|
||||||
@@ -46,6 +47,9 @@ namespace Content.Shared.Examine
|
|||||||
|
|
||||||
public bool IsInDetailsRange(EntityUid examiner, EntityUid entity)
|
public bool IsInDetailsRange(EntityUid examiner, EntityUid entity)
|
||||||
{
|
{
|
||||||
|
if (entity.IsClientSide())
|
||||||
|
return true;
|
||||||
|
|
||||||
// check if the mob is in critical or dead
|
// check if the mob is in critical or dead
|
||||||
if (MobStateSystem.IsIncapacitated(examiner))
|
if (MobStateSystem.IsIncapacitated(examiner))
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ guide-entry-fires = Fires & Space
|
|||||||
guide-entry-shuttle-craft = Shuttle-craft
|
guide-entry-shuttle-craft = Shuttle-craft
|
||||||
guide-entry-power = Power
|
guide-entry-power = Power
|
||||||
guide-entry-ame = Antimatter Engine (AME)
|
guide-entry-ame = Antimatter Engine (AME)
|
||||||
|
guide-entry-science = Science
|
||||||
|
guide-entry-machine-upgrading = Machine Upgrading
|
||||||
guide-entry-controls = Controls
|
guide-entry-controls = Controls
|
||||||
guide-entry-jobs = Jobs
|
guide-entry-jobs = Jobs
|
||||||
guide-entry-survival = Survival
|
guide-entry-survival = Survival
|
||||||
|
|||||||
@@ -10,6 +10,9 @@
|
|||||||
sprite: Objects/Misc/stock_parts.rsi
|
sprite: Objects/Misc/stock_parts.rsi
|
||||||
- type: MachinePart
|
- type: MachinePart
|
||||||
rating: 1
|
rating: 1
|
||||||
|
- type: GuideHelp
|
||||||
|
guides:
|
||||||
|
- MachineUpgrading
|
||||||
|
|
||||||
# Rating 1
|
# Rating 1
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,9 @@
|
|||||||
- type: Item
|
- type: Item
|
||||||
sprite: Objects/Specific/Research/rped.rsi
|
sprite: Objects/Specific/Research/rped.rsi
|
||||||
size: 50
|
size: 50
|
||||||
|
- type: GuideHelp
|
||||||
|
guides:
|
||||||
|
- MachineUpgrading
|
||||||
- type: PartExchanger
|
- type: PartExchanger
|
||||||
- type: Storage
|
- type: Storage
|
||||||
capacity: 150
|
capacity: 150
|
||||||
|
|||||||
11
Resources/Prototypes/Guidebook/science.yml
Normal file
11
Resources/Prototypes/Guidebook/science.yml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
- type: guideEntry
|
||||||
|
id: Science
|
||||||
|
name: guide-entry-science
|
||||||
|
text: "/Server Info/Guidebook/Science.xml"
|
||||||
|
children:
|
||||||
|
- MachineUpgrading
|
||||||
|
|
||||||
|
- type: guideEntry
|
||||||
|
id: MachineUpgrading
|
||||||
|
name: guide-entry-machine-upgrading
|
||||||
|
text: "/Server Info/Guidebook/MachineUpgrading.xml"
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
text: "/Server Info/Guidebook/Jobs.xml"
|
text: "/Server Info/Guidebook/Jobs.xml"
|
||||||
children:
|
children:
|
||||||
- Engineering
|
- Engineering
|
||||||
|
- Science
|
||||||
|
|
||||||
- type: guideEntry
|
- type: guideEntry
|
||||||
id: Survival
|
id: Survival
|
||||||
|
|||||||
42
Resources/Server Info/Guidebook/MachineUpgrading.xml
Normal file
42
Resources/Server Info/Guidebook/MachineUpgrading.xml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<Document>
|
||||||
|
# Machine Upgrading
|
||||||
|
|
||||||
|
Machines help the station run smoothly, and as a scientist, you can help them run even better!
|
||||||
|
|
||||||
|
## Parts
|
||||||
|
<Box>Stock Parts:</Box>
|
||||||
|
<Box>
|
||||||
|
<GuideEntityEmbed Entity="CapacitorStockPart"/>
|
||||||
|
<GuideEntityEmbed Entity="MatterBinStockPart"/>
|
||||||
|
<GuideEntityEmbed Entity="MicroLaserStockPart"/>
|
||||||
|
</Box>
|
||||||
|
<Box>
|
||||||
|
<GuideEntityEmbed Entity="MicroManipulatorStockPart"/>
|
||||||
|
<GuideEntityEmbed Entity="ScanningModuleStockPart"/>
|
||||||
|
</Box>
|
||||||
|
You can examine each machine part to see both the type and the rating, which range from 1 to 4.
|
||||||
|
|
||||||
|
Parts of higher levels can be researched as well as found through artifacts or salvage.
|
||||||
|
<Box>
|
||||||
|
<GuideEntityEmbed Entity="AdvancedMatterBinStockPart"/>
|
||||||
|
<GuideEntityEmbed Entity="SuperMatterBinStockPart"/>
|
||||||
|
<GuideEntityEmbed Entity="BluespaceMatterBinStockPart"/>
|
||||||
|
</Box>
|
||||||
|
|
||||||
|
## Upgrading
|
||||||
|
To know if a machine can be upgraded, you can examine it and check for the [color=#a4885c]lightning bolt[/color] icon in the lower right corner. Clicking on it will allow you to see what kinds of upgrades the machine has.
|
||||||
|
|
||||||
|
To check what parts a machine needs, you can examine its board. Try it here:
|
||||||
|
<Box Orientation="Vertical">
|
||||||
|
<GuideEntityEmbed Entity="ProtolatheMachineCircuitboard"/>
|
||||||
|
<GuideEntityEmbed Entity="CloningPodMachineCircuitboard"/>
|
||||||
|
<GuideEntityEmbed Entity="TraversalDistorterMachineCircuitboard"/>
|
||||||
|
<GuideEntityEmbed Entity="ThermomachineFreezerMachineCircuitBoard"/>
|
||||||
|
</Box>
|
||||||
|
You can use any rating part for any part requirement. Using higher rated parts will increase how effective the machine is.
|
||||||
|
|
||||||
|
If you want to upgrade an existing machine, simply deconstruct it with a screwdriver and crowbar, and replace the existing parts with parts of a higher level.
|
||||||
|
|
||||||
|
You can also quickly upgrade machines by using an RPED, loading it with machine parts, and then clicking on a machine. It will quickly be upgraded with whatever parts were inserted.
|
||||||
|
<GuideEntityEmbed Entity="RPED"/>
|
||||||
|
</Document>
|
||||||
26
Resources/Server Info/Guidebook/Science.xml
Normal file
26
Resources/Server Info/Guidebook/Science.xml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<Document>
|
||||||
|
# Science
|
||||||
|
|
||||||
|
Science, often called Research and Development, is a job made up of both generating research points to unlock new technologies as well as using said technologies to produce new items at lathes to help out the station.
|
||||||
|
|
||||||
|
## Technologies
|
||||||
|
<Box>
|
||||||
|
<GuideEntityEmbed Entity="ComputerResearchAndDevelopment"/>
|
||||||
|
<GuideEntityEmbed Entity="ResearchAndDevelopmentServer"/>
|
||||||
|
</Box>
|
||||||
|
The most important thing inside your department is the R&D server, which stores unlocked technologies, and the R&D computer, which allows you to unlock technologies.
|
||||||
|
|
||||||
|
Each technology costs [color=#a4885c]Research Points[/color] and unlocks recipes at lathes. Some technologies will also have prerequesites you have to unlock before you can research them.
|
||||||
|
|
||||||
|
## Lathes
|
||||||
|
<Box>
|
||||||
|
<GuideEntityEmbed Entity="Protolathe"/>
|
||||||
|
<GuideEntityEmbed Entity="CircuitImprinter"/>
|
||||||
|
</Box>
|
||||||
|
<Box>
|
||||||
|
<GuideEntityEmbed Entity="ExosuitFabricator"/>
|
||||||
|
<GuideEntityEmbed Entity="MedicalTechFab"/>
|
||||||
|
</Box>
|
||||||
|
At a lathe, you can sync to a server to allow it print whatever recipes you have unlocked. Recipes require various materials (steel, glass, plastic, gold, plasma) which can be acquired at Cargo or Salvage.
|
||||||
|
|
||||||
|
</Document>
|
||||||
Reference in New Issue
Block a user