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