Welding tweaks (#27959)

This commit is contained in:
Verm
2024-06-02 22:28:53 -05:00
committed by GitHub
parent 509e3aedf7
commit 31eb3ed62c
33 changed files with 139 additions and 141 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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();
}
}

View File

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

View File

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

View File

@@ -2255,7 +2255,7 @@
- DoorBumpOpener
- FootstepSound
- type: Tool # Open door from xeno.yml.
speed: 1.5
speedModifier: 1.5
qualities:
- Prying
useSound:

View File

@@ -22,7 +22,7 @@
NavSmash: !type:Bool
true
- type: Tool
speed: 1.5
speedModifier: 1.5
qualities:
- Prying
- type: Prying

View File

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

View File

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

View File

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

View File

@@ -26,6 +26,6 @@
materialComposition:
Glass: 50
- type: SpaceGarbage
- type: WelderRefinable
- type: ToolRefinable
refineResult:
- id: SheetGlass1

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -82,8 +82,7 @@
- type: ReagentTank
tankType: Fuel
- type: DamageOnToolInteract
tools:
- Welding
tools: Welding
weldingDamage:
types:
Heat: 20

View File

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