Welding tweaks (#27959)
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
using Content.Shared.Configurable;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Tools.Components;
|
||||
using Content.Shared.Tools.Systems;
|
||||
using Robust.Server.GameObjects;
|
||||
using Robust.Shared.Containers;
|
||||
using Robust.Shared.Player;
|
||||
@@ -11,6 +12,7 @@ namespace Content.Server.Configurable;
|
||||
public sealed class ConfigurationSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly UserInterfaceSystem _uiSystem = default!;
|
||||
[Dependency] private readonly SharedToolSystem _toolSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -28,7 +30,7 @@ public sealed class ConfigurationSystem : EntitySystem
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
if (!TryComp(args.Used, out ToolComponent? tool) || !tool.Qualities.Contains(component.QualityNeeded))
|
||||
if (!_toolSystem.HasQuality(args.Used, component.QualityNeeded))
|
||||
return;
|
||||
|
||||
args.Handled = _uiSystem.TryOpenUi(uid, ConfigurationUiKey.Key, args.User);
|
||||
@@ -68,7 +70,7 @@ public sealed class ConfigurationSystem : EntitySystem
|
||||
|
||||
private void OnInsert(EntityUid uid, ConfigurationComponent component, ContainerIsInsertingAttemptEvent args)
|
||||
{
|
||||
if (!TryComp(args.EntityUid, out ToolComponent? tool) || !tool.Qualities.Contains(component.QualityNeeded))
|
||||
if (!_toolSystem.HasQuality(args.EntityUid, component.QualityNeeded))
|
||||
return;
|
||||
|
||||
args.Cancel();
|
||||
|
||||
@@ -1,22 +1,19 @@
|
||||
using Content.Shared.Damage;
|
||||
using Content.Shared.Tools;
|
||||
using Robust.Shared.Utility;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server.Damage.Components
|
||||
namespace Content.Server.Damage.Components;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class DamageOnToolInteractComponent : Component
|
||||
{
|
||||
[RegisterComponent]
|
||||
public sealed partial class DamageOnToolInteractComponent : Component
|
||||
{
|
||||
[DataField("tools")]
|
||||
public PrototypeFlags<ToolQualityPrototype> Tools { get; private set; } = new ();
|
||||
[DataField]
|
||||
public ProtoId<ToolQualityPrototype> Tools { get; private set; }
|
||||
|
||||
// TODO: Remove this snowflake stuff, make damage per-tool quality perhaps?
|
||||
[DataField("weldingDamage")]
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField]
|
||||
public DamageSpecifier? WeldingDamage { get; private set; }
|
||||
|
||||
[DataField("defaultDamage")]
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField]
|
||||
public DamageSpecifier? DefaultDamage { get; private set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ using Content.Shared.Damage;
|
||||
using Content.Shared.Database;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Tools.Components;
|
||||
using Content.Shared.Tools.Systems;
|
||||
using ItemToggleComponent = Content.Shared.Item.ItemToggle.Components.ItemToggleComponent;
|
||||
|
||||
namespace Content.Server.Damage.Systems
|
||||
@@ -12,6 +13,7 @@ namespace Content.Server.Damage.Systems
|
||||
{
|
||||
[Dependency] private readonly DamageableSystem _damageableSystem = default!;
|
||||
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
|
||||
[Dependency] private readonly SharedToolSystem _toolSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -42,8 +44,7 @@ namespace Content.Server.Damage.Systems
|
||||
args.Handled = true;
|
||||
}
|
||||
else if (component.DefaultDamage is {} damage
|
||||
&& EntityManager.TryGetComponent(args.Used, out ToolComponent? tool)
|
||||
&& tool.Qualities.ContainsAny(component.Tools))
|
||||
&& _toolSystem.HasQuality(args.Used, component.Tools))
|
||||
{
|
||||
var dmg = _damageableSystem.TryChangeDamage(args.Target, damage, origin: args.User);
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Tag;
|
||||
using Content.Shared.Tools.Components;
|
||||
using Content.Shared.Tools.Systems;
|
||||
using Robust.Server.Containers;
|
||||
using Robust.Shared.Containers;
|
||||
|
||||
@@ -15,6 +16,7 @@ public sealed class MechAssemblySystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly ContainerSystem _container = default!;
|
||||
[Dependency] private readonly TagSystem _tag = default!;
|
||||
[Dependency] private readonly SharedToolSystem _toolSystem = default!;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override void Initialize()
|
||||
@@ -30,7 +32,7 @@ public sealed class MechAssemblySystem : EntitySystem
|
||||
|
||||
private void OnInteractUsing(EntityUid uid, MechAssemblyComponent component, InteractUsingEvent args)
|
||||
{
|
||||
if (TryComp<ToolComponent>(args.Used, out var toolComp) && toolComp.Qualities.Contains(component.QualityNeeded))
|
||||
if (_toolSystem.HasQuality(args.Used, component.QualityNeeded))
|
||||
{
|
||||
foreach (var tag in component.RequiredParts.Keys)
|
||||
{
|
||||
|
||||
@@ -17,6 +17,7 @@ using Content.Shared.Tools.Components;
|
||||
using Content.Shared.Verbs;
|
||||
using Content.Shared.Wires;
|
||||
using Content.Server.Body.Systems;
|
||||
using Content.Shared.Tools.Systems;
|
||||
using Robust.Server.Containers;
|
||||
using Robust.Server.GameObjects;
|
||||
using Robust.Shared.Containers;
|
||||
@@ -35,6 +36,7 @@ public sealed partial class MechSystem : SharedMechSystem
|
||||
[Dependency] private readonly SharedDoAfterSystem _doAfter = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||
[Dependency] private readonly UserInterfaceSystem _ui = default!;
|
||||
[Dependency] private readonly SharedToolSystem _toolSystem = default!;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override void Initialize()
|
||||
@@ -87,7 +89,7 @@ public sealed partial class MechSystem : SharedMechSystem
|
||||
return;
|
||||
}
|
||||
|
||||
if (TryComp<ToolComponent>(args.Used, out var tool) && tool.Qualities.Contains("Prying") && component.BatterySlot.ContainedEntity != null)
|
||||
if (_toolSystem.HasQuality(args.Used, "Prying") && component.BatterySlot.ContainedEntity != null)
|
||||
{
|
||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.User, component.BatteryRemovalDelay,
|
||||
new RemoveBatteryEvent(), uid, target: uid, used: args.Target)
|
||||
|
||||
@@ -7,7 +7,7 @@ using Content.Shared.Containers.ItemSlots;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.PneumaticCannon;
|
||||
using Content.Shared.StatusEffect;
|
||||
using Content.Shared.Tools.Components;
|
||||
using Content.Shared.Tools.Systems;
|
||||
using Content.Shared.Weapons.Ranged.Components;
|
||||
using Content.Shared.Weapons.Ranged.Events;
|
||||
using Content.Shared.Weapons.Ranged.Systems;
|
||||
@@ -22,6 +22,7 @@ public sealed class PneumaticCannonSystem : SharedPneumaticCannonSystem
|
||||
[Dependency] private readonly GunSystem _gun = default!;
|
||||
[Dependency] private readonly StunSystem _stun = default!;
|
||||
[Dependency] private readonly ItemSlotsSystem _slots = default!;
|
||||
[Dependency] private readonly SharedToolSystem _toolSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -38,10 +39,7 @@ public sealed class PneumaticCannonSystem : SharedPneumaticCannonSystem
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
if (!TryComp<ToolComponent>(args.Used, out var tool))
|
||||
return;
|
||||
|
||||
if (!tool.Qualities.Contains(component.ToolModifyPower))
|
||||
if (!_toolSystem.HasQuality(args.Used, component.ToolModifyPower))
|
||||
return;
|
||||
|
||||
var val = (int) component.Power;
|
||||
|
||||
@@ -2,8 +2,7 @@ using Content.Shared.Interaction;
|
||||
using Content.Shared.Light;
|
||||
using Content.Shared.Light.Components;
|
||||
using Content.Shared.Toggleable;
|
||||
using Content.Shared.Tools.Components;
|
||||
using Content.Shared.Item;
|
||||
using Content.Shared.Tools.Systems;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server.Weapons.Melee.EnergySword;
|
||||
@@ -13,6 +12,7 @@ public sealed class EnergySwordSystem : EntitySystem
|
||||
[Dependency] private readonly SharedRgbLightControllerSystem _rgbSystem = default!;
|
||||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly SharedToolSystem _toolSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -38,7 +38,7 @@ public sealed class EnergySwordSystem : EntitySystem
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
if (!TryComp(args.Used, out ToolComponent? tool) || !tool.Qualities.ContainsAny("Pulsing"))
|
||||
if (!_toolSystem.HasQuality(args.Used, "Pulsing"))
|
||||
return;
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
@@ -3,12 +3,14 @@ using Content.Server.Power.Events;
|
||||
using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Tools.Components;
|
||||
using Content.Shared.Tools.Systems;
|
||||
|
||||
namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems;
|
||||
|
||||
public sealed class ArtifactElectricityTriggerSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly ArtifactSystem _artifactSystem = default!;
|
||||
[Dependency] private readonly SharedToolSystem _toolSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -42,7 +44,7 @@ public sealed class ArtifactElectricityTriggerSystem : EntitySystem
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
if (!TryComp(args.Used, out ToolComponent? tool) || !tool.Qualities.ContainsAny("Pulsing"))
|
||||
if (!_toolSystem.HasQuality(args.Used, "Pulsing"))
|
||||
return;
|
||||
|
||||
args.Handled = _artifactSystem.TryActivateArtifact(uid, args.User);
|
||||
|
||||
@@ -79,7 +79,7 @@ public sealed partial class AnchorableSystem : EntitySystem
|
||||
return;
|
||||
|
||||
// If the used entity doesn't have a tool, return early.
|
||||
if (!TryComp(args.Used, out ToolComponent? usedTool) || !usedTool.Qualities.Contains(anchorable.Tool))
|
||||
if (!TryComp(args.Used, out ToolComponent? usedTool) || !_tool.HasQuality(args.Used, anchorable.Tool, usedTool))
|
||||
return;
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
@@ -6,10 +6,8 @@ using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Radio.Components;
|
||||
using Content.Shared.Tools;
|
||||
using Content.Shared.Tools.Components;
|
||||
using Content.Shared.Wires;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Audio.Systems;
|
||||
using Robust.Shared.Containers;
|
||||
using Robust.Shared.Network;
|
||||
@@ -106,7 +104,7 @@ public sealed partial class EncryptionKeySystem : EntitySystem
|
||||
TryInsertKey(uid, component, args);
|
||||
}
|
||||
else if (TryComp<ToolComponent>(args.Used, out var tool)
|
||||
&& tool.Qualities.Contains(component.KeysExtractionMethod)
|
||||
&& _tool.HasQuality(args.Used, component.KeysExtractionMethod, tool)
|
||||
&& component.KeyContainer.ContainedEntities.Count > 0) // dont block deconstruction
|
||||
{
|
||||
args.Handled = true;
|
||||
|
||||
@@ -1,52 +1,43 @@
|
||||
using Content.Shared.Tools.Systems;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Shared.Tools.Components
|
||||
namespace Content.Shared.Tools.Components;
|
||||
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
[Access(typeof(SharedToolSystem))]
|
||||
public sealed partial class ToolComponent : Component
|
||||
{
|
||||
[RegisterComponent, NetworkedComponent] // TODO move tool system to shared, and make it a friend.
|
||||
public sealed partial class ToolComponent : Component
|
||||
{
|
||||
[DataField("qualities")]
|
||||
public PrototypeFlags<ToolQualityPrototype> Qualities { get; set; } = new();
|
||||
[DataField]
|
||||
public PrototypeFlags<ToolQualityPrototype> Qualities = [];
|
||||
|
||||
/// <summary>
|
||||
/// For tool interactions that have a delay before action this will modify the rate, time to wait is divided by this value
|
||||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField("speed")]
|
||||
public float SpeedModifier { get; set; } = 1;
|
||||
[DataField]
|
||||
public float SpeedModifier = 1;
|
||||
|
||||
[DataField("useSound")]
|
||||
public SoundSpecifier? UseSound { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Attempt event called *before* any do afters to see if the tool usage should succeed or not.
|
||||
/// Raised on both the tool and then target.
|
||||
/// </summary>
|
||||
public sealed class ToolUseAttemptEvent : CancellableEntityEventArgs
|
||||
{
|
||||
public EntityUid User { get; }
|
||||
|
||||
public ToolUseAttemptEvent(EntityUid user)
|
||||
{
|
||||
User = user;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Event raised on the user of a tool to see if they can actually use it.
|
||||
/// </summary>
|
||||
[ByRefEvent]
|
||||
public struct ToolUserAttemptUseEvent
|
||||
{
|
||||
public EntityUid? Target;
|
||||
public bool Cancelled = false;
|
||||
|
||||
public ToolUserAttemptUseEvent(EntityUid? target)
|
||||
{
|
||||
Target = target;
|
||||
}
|
||||
}
|
||||
[DataField]
|
||||
public SoundSpecifier? UseSound;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Attempt event called *before* any do afters to see if the tool usage should succeed or not.
|
||||
/// Raised on both the tool and then target.
|
||||
/// </summary>
|
||||
public sealed class ToolUseAttemptEvent(EntityUid user, float fuel) : CancellableEntityEventArgs
|
||||
{
|
||||
public EntityUid User { get; } = user;
|
||||
public float Fuel = fuel;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Event raised on the user of a tool to see if they can actually use it.
|
||||
/// </summary>
|
||||
[ByRefEvent]
|
||||
public struct ToolUserAttemptUseEvent(EntityUid? target)
|
||||
{
|
||||
public EntityUid? Target = target;
|
||||
public bool Cancelled = false;
|
||||
}
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
using Content.Shared.Storage;
|
||||
using Content.Shared.Tools;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Content.Shared.Tools.Systems;
|
||||
|
||||
namespace Content.Server.Construction.Components;
|
||||
namespace Content.Shared.Tools.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Used for something that can be refined by welder.
|
||||
/// For example, glass shard can be refined to glass sheet.
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(RefiningSystem))]
|
||||
public sealed partial class WelderRefinableComponent : Component
|
||||
[RegisterComponent, NetworkedComponent, Access(typeof(ToolRefinablSystem))]
|
||||
public sealed partial class ToolRefinableComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// The items created when the item is refined.
|
||||
@@ -27,7 +28,7 @@ public sealed partial class WelderRefinableComponent : Component
|
||||
/// The amount of fuel it takes to refine a given item.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public float RefineFuel;
|
||||
public float RefineFuel = 3f;
|
||||
|
||||
/// <summary>
|
||||
/// The tool type needed in order to refine this item.
|
||||
@@ -16,8 +16,15 @@ public abstract partial class SharedToolSystem
|
||||
{
|
||||
SubscribeLocalEvent<WelderComponent, ExaminedEvent>(OnWelderExamine);
|
||||
SubscribeLocalEvent<WelderComponent, AfterInteractEvent>(OnWelderAfterInteract);
|
||||
SubscribeLocalEvent<WelderComponent, DoAfterAttemptEvent<ToolDoAfterEvent>>(OnWelderToolUseAttempt);
|
||||
|
||||
SubscribeLocalEvent<WelderComponent, ToolUseAttemptEvent>((uid, comp, ev) => {
|
||||
CanCancelWelderUse((uid, comp), ev.User, ev.Fuel, ev);
|
||||
});
|
||||
SubscribeLocalEvent<WelderComponent, DoAfterAttemptEvent<ToolDoAfterEvent>>((uid, comp, ev) => {
|
||||
CanCancelWelderUse((uid, comp), ev.Event.User, ev.Event.Fuel, ev);
|
||||
});
|
||||
SubscribeLocalEvent<WelderComponent, ToolDoAfterEvent>(OnWelderDoAfter);
|
||||
|
||||
SubscribeLocalEvent<WelderComponent, ItemToggledEvent>(OnToggle);
|
||||
SubscribeLocalEvent<WelderComponent, ItemToggleActivateAttemptEvent>(OnActivateAttempt);
|
||||
}
|
||||
@@ -120,23 +127,20 @@ public abstract partial class SharedToolSystem
|
||||
}
|
||||
}
|
||||
|
||||
private void OnWelderToolUseAttempt(Entity<WelderComponent> entity, ref DoAfterAttemptEvent<ToolDoAfterEvent> args)
|
||||
private void CanCancelWelderUse(Entity<WelderComponent> entity, EntityUid user, float requiredFuel, CancellableEntityEventArgs ev)
|
||||
{
|
||||
var user = args.DoAfter.Args.User;
|
||||
|
||||
if (!ItemToggle.IsActivated(entity.Owner))
|
||||
{
|
||||
_popup.PopupClient(Loc.GetString("welder-component-welder-not-lit-message"), entity, user);
|
||||
args.Cancel();
|
||||
return;
|
||||
ev.Cancel();
|
||||
}
|
||||
|
||||
var (fuel, _) = GetWelderFuelAndCapacity(entity);
|
||||
var (currentFuel, _) = GetWelderFuelAndCapacity(entity);
|
||||
|
||||
if (args.Event.Fuel > fuel)
|
||||
if (requiredFuel > currentFuel)
|
||||
{
|
||||
_popup.PopupClient(Loc.GetString("welder-component-cannot-weld-message"), entity, user);
|
||||
args.Cancel();
|
||||
ev.Cancel();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -217,7 +217,7 @@ public abstract partial class SharedToolSystem : EntitySystem
|
||||
return false;
|
||||
|
||||
// check if the tool allows being used
|
||||
var beforeAttempt = new ToolUseAttemptEvent(user);
|
||||
var beforeAttempt = new ToolUseAttemptEvent(user, fuel);
|
||||
RaiseLocalEvent(tool, beforeAttempt);
|
||||
if (beforeAttempt.Cancelled)
|
||||
return false;
|
||||
@@ -296,4 +296,3 @@ public abstract partial class SharedToolSystem : EntitySystem
|
||||
public sealed partial class CableCuttingFinishedEvent : SimpleDoAfterEvent;
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -1,25 +1,26 @@
|
||||
using Content.Server.Construction.Components;
|
||||
using Content.Shared.Construction;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Storage;
|
||||
using Content.Shared.Tools.Systems;
|
||||
using Content.Shared.Tools.Components;
|
||||
using Robust.Shared.Network;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server.Construction;
|
||||
namespace Content.Shared.Tools.Systems;
|
||||
|
||||
public sealed class RefiningSystem : EntitySystem
|
||||
public sealed class ToolRefinablSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly INetManager _net = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly SharedToolSystem _toolSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
SubscribeLocalEvent<WelderRefinableComponent, InteractUsingEvent>(OnInteractUsing);
|
||||
SubscribeLocalEvent<WelderRefinableComponent, WelderRefineDoAfterEvent>(OnDoAfter);
|
||||
SubscribeLocalEvent<ToolRefinableComponent, InteractUsingEvent>(OnInteractUsing);
|
||||
SubscribeLocalEvent<ToolRefinableComponent, WelderRefineDoAfterEvent>(OnDoAfter);
|
||||
}
|
||||
|
||||
private void OnInteractUsing(EntityUid uid, WelderRefinableComponent component, InteractUsingEvent args)
|
||||
private void OnInteractUsing(EntityUid uid, ToolRefinableComponent component, InteractUsingEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
@@ -34,11 +35,14 @@ public sealed class RefiningSystem : EntitySystem
|
||||
fuel: component.RefineFuel);
|
||||
}
|
||||
|
||||
private void OnDoAfter(EntityUid uid, WelderRefinableComponent component, WelderRefineDoAfterEvent args)
|
||||
private void OnDoAfter(EntityUid uid, ToolRefinableComponent component, WelderRefineDoAfterEvent args)
|
||||
{
|
||||
if (args.Cancelled)
|
||||
return;
|
||||
|
||||
if (_net.IsClient)
|
||||
return;
|
||||
|
||||
var xform = Transform(uid);
|
||||
var spawns = EntitySpawnCollection.GetSpawns(component.RefineResult, _random);
|
||||
foreach (var spawn in spawns)
|
||||
@@ -2255,7 +2255,7 @@
|
||||
- DoorBumpOpener
|
||||
- FootstepSound
|
||||
- type: Tool # Open door from xeno.yml.
|
||||
speed: 1.5
|
||||
speedModifier: 1.5
|
||||
qualities:
|
||||
- Prying
|
||||
useSound:
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
NavSmash: !type:Bool
|
||||
true
|
||||
- type: Tool
|
||||
speed: 1.5
|
||||
speedModifier: 1.5
|
||||
qualities:
|
||||
- Prying
|
||||
- type: Prying
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
- type: Tool
|
||||
qualities:
|
||||
- Rolling
|
||||
speed: 0.75 # not as good as a rolling pin but does the job
|
||||
speedModifier: 0.75 # not as good as a rolling pin but does the job
|
||||
- type: PhysicalComposition
|
||||
materialComposition:
|
||||
Glass: 100
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
- type: Tool
|
||||
qualities:
|
||||
- Rolling
|
||||
speed: 0.25 # its small so takes longer to roll the entire dough flat
|
||||
speedModifier: 0.25 # its small so takes longer to roll the entire dough flat
|
||||
- type: SpaceGarbage
|
||||
- type: TrashOnSolutionEmpty
|
||||
solution: drink
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
components:
|
||||
- type: Sprite
|
||||
color: "#bbeeff"
|
||||
- type: WelderRefinable
|
||||
- type: ToolRefinable
|
||||
refineResult:
|
||||
- id: SheetGlass1
|
||||
- type: DamageUserOnTrigger
|
||||
@@ -120,7 +120,7 @@
|
||||
damage:
|
||||
types:
|
||||
Slash: 4.5
|
||||
- type: WelderRefinable
|
||||
- type: ToolRefinable
|
||||
refineResult:
|
||||
- id: SheetGlass1
|
||||
- id: PartRodMetal1
|
||||
@@ -156,7 +156,7 @@
|
||||
damage:
|
||||
types:
|
||||
Slash: 5.5
|
||||
- type: WelderRefinable
|
||||
- type: ToolRefinable
|
||||
refineResult:
|
||||
- id: SheetGlass1
|
||||
- id: SheetPlasma1
|
||||
@@ -195,7 +195,7 @@
|
||||
types:
|
||||
Slash: 4.5
|
||||
Radiation: 2
|
||||
- type: WelderRefinable
|
||||
- type: ToolRefinable
|
||||
refineResult:
|
||||
- id: SheetGlass1
|
||||
- id: SheetUranium1
|
||||
@@ -230,7 +230,7 @@
|
||||
components:
|
||||
- type: Sprite
|
||||
color: "#e0aa36"
|
||||
- type: WelderRefinable
|
||||
- type: ToolRefinable
|
||||
refineResult:
|
||||
- id: SheetGlass1
|
||||
- id: SheetBrass1
|
||||
|
||||
@@ -26,6 +26,6 @@
|
||||
materialComposition:
|
||||
Glass: 50
|
||||
- type: SpaceGarbage
|
||||
- type: WelderRefinable
|
||||
- type: ToolRefinable
|
||||
refineResult:
|
||||
- id: SheetGlass1
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
- type: Tool
|
||||
qualities:
|
||||
- Rolling
|
||||
speed: 0.5 # its very big, akward to use
|
||||
speedModifier: 0.5 # its very big, akward to use
|
||||
- type: Appearance
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
materialComposition:
|
||||
Glass: 25
|
||||
- type: SpaceGarbage
|
||||
- type: WelderRefinable
|
||||
- type: ToolRefinable
|
||||
refineResult:
|
||||
- id: SheetGlass1
|
||||
|
||||
@@ -273,7 +273,7 @@
|
||||
- type: Construction
|
||||
graph: CyanLight
|
||||
node: icon
|
||||
- type: WelderRefinable
|
||||
- type: ToolRefinable
|
||||
refineResult:
|
||||
- id: SheetGlass1
|
||||
- id: ShardCrystalCyan
|
||||
@@ -293,7 +293,7 @@
|
||||
- type: Construction
|
||||
graph: BlueLight
|
||||
node: icon
|
||||
- type: WelderRefinable
|
||||
- type: ToolRefinable
|
||||
refineResult:
|
||||
- id: SheetGlass1
|
||||
- id: ShardCrystalBlue
|
||||
@@ -313,7 +313,7 @@
|
||||
- type: Construction
|
||||
graph: PinkLight
|
||||
node: icon
|
||||
- type: WelderRefinable
|
||||
- type: ToolRefinable
|
||||
refineResult:
|
||||
- id: SheetGlass1
|
||||
- id: ShardCrystalPink
|
||||
@@ -333,7 +333,7 @@
|
||||
- type: Construction
|
||||
graph: OrangeLight
|
||||
node: icon
|
||||
- type: WelderRefinable
|
||||
- type: ToolRefinable
|
||||
refineResult:
|
||||
- id: SheetGlass1
|
||||
- id: ShardCrystalOrange
|
||||
@@ -353,7 +353,7 @@
|
||||
- type: Construction
|
||||
graph: RedLight
|
||||
node: icon
|
||||
- type: WelderRefinable
|
||||
- type: ToolRefinable
|
||||
refineResult:
|
||||
- id: SheetGlass1
|
||||
- id: ShardCrystalRed
|
||||
@@ -373,7 +373,7 @@
|
||||
- type: Construction
|
||||
graph: GreenLight
|
||||
node: icon
|
||||
- type: WelderRefinable
|
||||
- type: ToolRefinable
|
||||
refineResult:
|
||||
- id: SheetGlass1
|
||||
- id: ShardCrystalGreen
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
- type: Tool
|
||||
qualities:
|
||||
- Sawing
|
||||
speed: 1.0
|
||||
speedModifier: 1.0
|
||||
# No melee for regular saw because have you ever seen someone use a band saw as a weapon? It's dumb.
|
||||
|
||||
- type: entity
|
||||
@@ -200,7 +200,7 @@
|
||||
- type: Tool
|
||||
qualities:
|
||||
- Sawing
|
||||
speed: 0.5
|
||||
speedModifier: 0.5
|
||||
|
||||
- type: entity
|
||||
name: circular saw
|
||||
@@ -222,7 +222,7 @@
|
||||
- type: Tool
|
||||
qualities:
|
||||
- Sawing
|
||||
speed: 1.5
|
||||
speedModifier: 1.5
|
||||
|
||||
- type: entity
|
||||
name: advanced circular saw
|
||||
@@ -245,4 +245,4 @@
|
||||
- type: Tool
|
||||
qualities:
|
||||
- Sawing
|
||||
speed: 2.0
|
||||
speedModifier: 2.0
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
- Cutting
|
||||
useSound:
|
||||
path: /Audio/Items/wirecutter.ogg
|
||||
speed: 0.05
|
||||
speedModifier: 0.05
|
||||
- type: Item
|
||||
sprite: Objects/Tools/Cowtools/haycutters.rsi
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
- Screwing
|
||||
useSound:
|
||||
collection: Screwdriver
|
||||
speed: 0.05
|
||||
speedModifier: 0.05
|
||||
|
||||
- type: entity
|
||||
name: wronch
|
||||
@@ -69,7 +69,7 @@
|
||||
- Anchoring
|
||||
useSound:
|
||||
path: /Audio/Items/ratchet.ogg
|
||||
speed: 0.05
|
||||
speedModifier: 0.05
|
||||
|
||||
- type: entity
|
||||
name: cowbar
|
||||
@@ -93,7 +93,7 @@
|
||||
- Prying
|
||||
useSound:
|
||||
path: /Audio/Items/crowbar.ogg
|
||||
speed: 0.05
|
||||
speedModifier: 0.05
|
||||
- type: ToolTileCompatible
|
||||
- type: Prying
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
size: Small
|
||||
sprite: Objects/Tools/Cowtools/cowelder.rsi
|
||||
- type: Tool
|
||||
speed: 0.05
|
||||
speedModifier: 0.05
|
||||
|
||||
- type: entity
|
||||
name: milkalyzer
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
- type: Tool
|
||||
qualities:
|
||||
- Rolling
|
||||
speed: 0.6 # fairly unwieldly but nice round surface
|
||||
speedModifier: 0.6 # fairly unwieldly but nice round surface
|
||||
|
||||
- type: entity
|
||||
parent: GasTankRoundBase
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
- type: Tool
|
||||
qualities:
|
||||
- Prying
|
||||
speed: 1.5
|
||||
speedModifier: 1.5
|
||||
useSound: /Audio/Items/jaws_pry.ogg
|
||||
- type: Prying
|
||||
pryPowered: true
|
||||
@@ -69,7 +69,7 @@
|
||||
- type: Tool
|
||||
qualities:
|
||||
- Prying
|
||||
speed: 3.0
|
||||
speedModifier: 3.0
|
||||
- type: MultipleTool
|
||||
entries:
|
||||
- behavior: Prying
|
||||
|
||||
@@ -304,7 +304,7 @@
|
||||
- type: Tool
|
||||
qualities:
|
||||
- Screwing
|
||||
speed: 1.5
|
||||
speedModifier: 1.5
|
||||
useSound: /Audio/Items/drill_use.ogg
|
||||
- type: MultipleTool
|
||||
statusShowBehavior: true
|
||||
@@ -479,7 +479,7 @@
|
||||
- type: Tool
|
||||
qualities:
|
||||
- Screwing
|
||||
speed: 1.2 # Kept for future adjustments. Currently 1.2x for balance
|
||||
speedModifier: 1.2 # Kept for future adjustments. Currently 1.2x for balance
|
||||
useSound: /Audio/Items/drill_use.ogg
|
||||
- type: ToolTileCompatible
|
||||
- type: MultipleTool
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
Quantity: 250
|
||||
maxVol: 250
|
||||
- type: Tool
|
||||
speed: 1.3
|
||||
speedModifier: 1.3
|
||||
|
||||
- type: entity
|
||||
name: experimental welding tool
|
||||
@@ -190,7 +190,7 @@
|
||||
Quantity: 50
|
||||
maxVol: 50
|
||||
- type: Tool
|
||||
speed: 0.7
|
||||
speedModifier: 0.7
|
||||
- type: PointLight
|
||||
enabled: false
|
||||
radius: 1.0
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
- type: Tool
|
||||
qualities:
|
||||
- Rolling
|
||||
speed: 0.75 # a bit unwieldly but does the job
|
||||
speedModifier: 0.75 # a bit unwieldly but does the job
|
||||
- type: Clothing
|
||||
quickEquip: false
|
||||
slots:
|
||||
|
||||
@@ -25,8 +25,7 @@
|
||||
- type: ReagentTank
|
||||
tankType: Fuel
|
||||
- type: DamageOnToolInteract
|
||||
tools:
|
||||
- Welding
|
||||
tools: Welding
|
||||
weldingDamage:
|
||||
types:
|
||||
Heat: 10
|
||||
@@ -217,4 +216,3 @@
|
||||
fillBaseName: watertank-2-
|
||||
- type: ExaminableSolution
|
||||
solution: tank
|
||||
|
||||
|
||||
@@ -82,8 +82,7 @@
|
||||
- type: ReagentTank
|
||||
tankType: Fuel
|
||||
- type: DamageOnToolInteract
|
||||
tools:
|
||||
- Welding
|
||||
tools: Welding
|
||||
weldingDamage:
|
||||
types:
|
||||
Heat: 20
|
||||
|
||||
@@ -220,7 +220,7 @@
|
||||
- type: Tool
|
||||
qualities:
|
||||
- Screwing
|
||||
speed: 2 # Very powerful multitool to balance out the desire to sell or scrap for points
|
||||
speedModifier: 2 # Very powerful multitool to balance out the desire to sell or scrap for points
|
||||
useSound: /Audio/Items/drill_use.ogg
|
||||
- type: Tag
|
||||
tags:
|
||||
|
||||
Reference in New Issue
Block a user