machine upgrade guidebook (#13511)

* machine upgrade guidebook

* oops

* guidehelpcomponent

* build, damn you
This commit is contained in:
Nemanja
2023-01-16 11:53:23 -05:00
committed by GitHub
parent 52e50bd34f
commit fd9e1f3738
19 changed files with 113 additions and 10 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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!;

View File

@@ -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>))]

View File

@@ -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.

View File

@@ -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;

View File

@@ -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

View File

@@ -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

View File

@@ -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

View 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"

View File

@@ -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

View 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>

View 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>