]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Watches (#29550)
authorNemanja <98561806+EmoGarbage404@users.noreply.github.com>
Sat, 13 Jul 2024 06:09:19 +0000 (02:09 -0400)
committerGitHub <noreply@github.com>
Sat, 13 Jul 2024 06:09:19 +0000 (16:09 +1000)
* watches

* rename

* add it into loot pools

67 files changed:
Content.Client/Clock/ClockSystem.cs [new file with mode: 0644]
Content.Server/Clock/ClockSystem.cs [new file with mode: 0644]
Content.Shared/Clock/ClockComponent.cs [new file with mode: 0644]
Content.Shared/Clock/GlobalTimeManagerComponent.cs [new file with mode: 0644]
Content.Shared/Clock/SharedClockSystem.cs [new file with mode: 0644]
Resources/Locale/en-US/devices/clock.ftl [new file with mode: 0644]
Resources/Prototypes/Catalog/Fills/Lockers/misc.yml
Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml
Resources/Prototypes/Entities/Objects/Devices/wristwatch.yml [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/equipped-HAND.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/goldwatch.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/hours_0.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/hours_1.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/hours_10.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/hours_11.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/hours_2.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/hours_3.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/hours_4.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/hours_5.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/hours_6.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/hours_7.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/hours_8.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/hours_9.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/inhand-left.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/inhand-right.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/meta.json [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_0.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_1.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_10.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_11.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_2.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_3.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_4.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_5.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_6.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_7.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_8.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_9.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/equipped-HAND.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/hours_0.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/hours_1.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/hours_10.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/hours_11.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/hours_2.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/hours_3.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/hours_4.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/hours_5.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/hours_6.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/hours_7.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/hours_8.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/hours_9.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/inhand-left.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/inhand-right.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/meta.json [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_0.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_1.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_10.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_11.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_2.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_3.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_4.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_5.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_6.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_7.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_8.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_9.png [new file with mode: 0644]
Resources/Textures/Objects/Devices/wristwatch.rsi/wristwatch.png [new file with mode: 0644]

diff --git a/Content.Client/Clock/ClockSystem.cs b/Content.Client/Clock/ClockSystem.cs
new file mode 100644 (file)
index 0000000..7097ada
--- /dev/null
@@ -0,0 +1,26 @@
+using Content.Shared.Clock;
+using Robust.Client.GameObjects;
+
+namespace Content.Client.Clock;
+
+public sealed class ClockSystem : SharedClockSystem
+{
+    public override void Update(float frameTime)
+    {
+        base.Update(frameTime);
+
+        var query = EntityQueryEnumerator<ClockComponent, SpriteComponent>();
+        while (query.MoveNext(out var uid, out var comp, out var sprite))
+        {
+            if (!sprite.LayerMapTryGet(ClockVisualLayers.HourHand, out var hourLayer) ||
+                !sprite.LayerMapTryGet(ClockVisualLayers.MinuteHand, out var minuteLayer))
+                continue;
+
+            var time = GetClockTime((uid, comp));
+            var hourState = $"{comp.HoursBase}{time.Hours % 12}";
+            var minuteState = $"{comp.MinutesBase}{time.Minutes / 5}";
+            sprite.LayerSetState(hourLayer, hourState);
+            sprite.LayerSetState(minuteLayer, minuteState);
+        }
+    }
+}
diff --git a/Content.Server/Clock/ClockSystem.cs b/Content.Server/Clock/ClockSystem.cs
new file mode 100644 (file)
index 0000000..29400a5
--- /dev/null
@@ -0,0 +1,42 @@
+using Content.Server.GameTicking.Events;
+using Content.Shared.Clock;
+using Content.Shared.Destructible;
+using Robust.Server.GameStates;
+using Robust.Shared.Random;
+
+namespace Content.Server.Clock;
+
+public sealed class ClockSystem : SharedClockSystem
+{
+    [Dependency] private readonly PvsOverrideSystem _pvsOverride = default!;
+    [Dependency] private readonly IRobustRandom _robustRandom = default!;
+
+    /// <inheritdoc/>
+    public override void Initialize()
+    {
+        base.Initialize();
+
+        SubscribeLocalEvent<RoundStartingEvent>(OnRoundStart);
+        SubscribeLocalEvent<GlobalTimeManagerComponent, MapInitEvent>(OnMapInit);
+        SubscribeLocalEvent<ClockComponent, BreakageEventArgs>(OnBreak);
+    }
+
+    private void OnRoundStart(RoundStartingEvent ev)
+    {
+        var manager = Spawn();
+        AddComp<GlobalTimeManagerComponent>(manager);
+    }
+
+    private void OnMapInit(Entity<GlobalTimeManagerComponent> ent, ref MapInitEvent args)
+    {
+        ent.Comp.TimeOffset = TimeSpan.FromHours(_robustRandom.NextFloat(0, 24));
+        _pvsOverride.AddGlobalOverride(ent);
+        Dirty(ent);
+    }
+
+    private void OnBreak(Entity<ClockComponent> ent, ref BreakageEventArgs args)
+    {
+        ent.Comp.StuckTime = GetClockTime(ent);
+        Dirty(ent, ent.Comp);
+    }
+}
diff --git a/Content.Shared/Clock/ClockComponent.cs b/Content.Shared/Clock/ClockComponent.cs
new file mode 100644 (file)
index 0000000..3a1027d
--- /dev/null
@@ -0,0 +1,42 @@
+using Robust.Shared.GameStates;
+using Robust.Shared.Serialization;
+
+namespace Content.Shared.Clock;
+
+[RegisterComponent, NetworkedComponent]
+[Access(typeof(SharedClockSystem))]
+[AutoGenerateComponentState]
+public sealed partial class ClockComponent : Component
+{
+    /// <summary>
+    /// If not null, this time will be permanently shown.
+    /// </summary>
+    [DataField, AutoNetworkedField]
+    public TimeSpan? StuckTime;
+
+    /// <summary>
+    /// The format in which time is displayed.
+    /// </summary>
+    [DataField, AutoNetworkedField]
+    public ClockType ClockType = ClockType.TwelveHour;
+
+    [DataField]
+    public string HoursBase = "hours_";
+
+    [DataField]
+    public string MinutesBase = "minutes_";
+}
+
+[Serializable, NetSerializable]
+public enum ClockType : byte
+{
+    TwelveHour,
+    TwentyFourHour
+}
+
+[Serializable, NetSerializable]
+public enum ClockVisualLayers : byte
+{
+    HourHand,
+    MinuteHand
+}
diff --git a/Content.Shared/Clock/GlobalTimeManagerComponent.cs b/Content.Shared/Clock/GlobalTimeManagerComponent.cs
new file mode 100644 (file)
index 0000000..764b578
--- /dev/null
@@ -0,0 +1,16 @@
+using Robust.Shared.GameStates;
+
+namespace Content.Shared.Clock;
+
+/// <summary>
+/// This is used for globally managing the time on-station
+/// </summary>
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, AutoGenerateComponentPause, Access(typeof(SharedClockSystem))]
+public sealed partial class GlobalTimeManagerComponent : Component
+{
+    /// <summary>
+    /// A fixed random offset, used to fuzz the time between shifts.
+    /// </summary>
+    [DataField, AutoPausedField, AutoNetworkedField]
+    public TimeSpan TimeOffset;
+}
diff --git a/Content.Shared/Clock/SharedClockSystem.cs b/Content.Shared/Clock/SharedClockSystem.cs
new file mode 100644 (file)
index 0000000..0a7c1b0
--- /dev/null
@@ -0,0 +1,66 @@
+using System.Linq;
+using Content.Shared.Examine;
+using Content.Shared.GameTicking;
+
+namespace Content.Shared.Clock;
+
+public abstract class SharedClockSystem : EntitySystem
+{
+    [Dependency] private readonly SharedGameTicker _ticker = default!;
+
+    /// <inheritdoc/>
+    public override void Initialize()
+    {
+        SubscribeLocalEvent<ClockComponent, ExaminedEvent>(OnExamined);
+    }
+
+    private void OnExamined(Entity<ClockComponent> ent, ref ExaminedEvent args)
+    {
+        if (!args.IsInDetailsRange)
+            return;
+
+        args.PushMarkup(Loc.GetString("clock-examine", ("time", GetClockTimeText(ent))));
+    }
+
+    public string GetClockTimeText(Entity<ClockComponent> ent)
+    {
+        var time = GetClockTime(ent);
+        switch (ent.Comp.ClockType)
+        {
+            case ClockType.TwelveHour:
+                return time.ToString(@"h\:mm");
+            case ClockType.TwentyFourHour:
+                return time.ToString(@"hh\:mm");
+            default:
+                throw new ArgumentOutOfRangeException();
+        }
+    }
+
+    private TimeSpan GetGlobalTime()
+    {
+        return (EntityQuery<GlobalTimeManagerComponent>().FirstOrDefault()?.TimeOffset ?? TimeSpan.Zero) + _ticker.RoundDuration();
+    }
+
+    public TimeSpan GetClockTime(Entity<ClockComponent> ent)
+    {
+        var comp = ent.Comp;
+
+        if (comp.StuckTime != null)
+            return comp.StuckTime.Value;
+
+        var time = GetGlobalTime();
+
+        switch (comp.ClockType)
+        {
+            case ClockType.TwelveHour:
+                var adjustedHours = time.Hours % 12;
+                if (adjustedHours == 0)
+                    adjustedHours = 12;
+                return new TimeSpan(adjustedHours, time.Minutes, time.Seconds);
+            case ClockType.TwentyFourHour:
+                return time;
+            default:
+                throw new ArgumentOutOfRangeException();
+        }
+    }
+}
diff --git a/Resources/Locale/en-US/devices/clock.ftl b/Resources/Locale/en-US/devices/clock.ftl
new file mode 100644 (file)
index 0000000..6d0aef1
--- /dev/null
@@ -0,0 +1 @@
+clock-examine = The time reads: [color=white]{$time}[/color]
index fac36ba710c57ded568e14ab17402cd4c262079f..b49fa383bcec66ac55f1ca81a8c9efcebee21cf1 100644 (file)
           prob: 0.20
         - id: BarberScissors
           prob: 0.05
+        - id: Wristwatch
+          prob: 0.05
         - id: BookRandomStory
           prob: 0.1
         # Syndicate loot
index 7d7d9697d2c4fb45767200cba277d657d5bc12f5..00798b36e0f559eedd2cad6bb2c7e4930cdd4095 100644 (file)
@@ -67,6 +67,7 @@
         - ClothingHeadHatCowboyBountyHunter
         - ClothingNeckAutismPin
         - ClothingNeckGoldAutismPin
+        - WristwatchGold
       rareChance: 0.01
       prototypes:
         - Lighter
         - ClothingShoesTourist
         - ClothingUniformJumpsuitLoungewear
         - ClothingHeadHatCowboyRed
+        - Wristwatch
       chance: 0.6
       offset: 0.0
 
diff --git a/Resources/Prototypes/Entities/Objects/Devices/wristwatch.yml b/Resources/Prototypes/Entities/Objects/Devices/wristwatch.yml
new file mode 100644 (file)
index 0000000..7fbb4ae
--- /dev/null
@@ -0,0 +1,59 @@
+- type: entity
+  id: Wristwatch
+  parent: BaseItem
+  name: wristwatch
+  description: A cheap watch for telling time. How much did you waste playing Space Station 14?
+  components:
+  - type: Sprite
+    sprite: Objects/Devices/wristwatch.rsi
+    layers:
+    - state: wristwatch
+    - map: [ "enum.ClockVisualLayers.MinuteHand"]
+    - map: [ "enum.ClockVisualLayers.HourHand"]
+  - type: Clock
+  - type: Item
+    sprite: Objects/Devices/wristwatch.rsi
+    size: Small
+  - type: Clothing
+    sprite: Objects/Devices/wristwatch.rsi
+    slots:
+    - gloves
+  - type: Appearance
+  - type: Damageable
+    damageContainer: Inorganic
+  - type: StaticPrice
+    price: 50
+  - type: Destructible
+    thresholds:
+    - trigger:
+        !type:DamageTrigger
+        damage: 100
+      behaviors:
+      - !type:DoActsBehavior
+        acts: [ "Destruction" ]
+    - trigger:
+        !type:DamageGroupTrigger
+        damageGroup: Brute
+        damage: 25
+      behaviors:
+      - !type:DoActsBehavior
+        acts: [ "Breakage" ]
+
+- type: entity
+  id: WristwatchGold
+  parent: Wristwatch
+  name: gold watch
+  description: A fancy watch worth more than your kidney. It was owned by the notorious Syndicate mobster Vunibaldo "200 Pound Horse Meat Grinder" Frediani.
+  components:
+  - type: Sprite
+    sprite: Objects/Devices/goldwatch.rsi
+    layers:
+    - state: goldwatch
+    - map: [ "enum.ClockVisualLayers.MinuteHand"]
+    - map: [ "enum.ClockVisualLayers.HourHand"]
+  - type: Item
+    sprite: Objects/Devices/goldwatch.rsi
+  - type: Clothing
+    sprite: Objects/Devices/goldwatch.rsi
+  - type: StaticPrice
+    price: 500 #if you ever increase the price of kidneys, increase this too.
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/equipped-HAND.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/equipped-HAND.png
new file mode 100644 (file)
index 0000000..59522f6
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/equipped-HAND.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/goldwatch.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/goldwatch.png
new file mode 100644 (file)
index 0000000..60e16eb
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/goldwatch.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_0.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_0.png
new file mode 100644 (file)
index 0000000..f1064c1
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_0.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_1.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_1.png
new file mode 100644 (file)
index 0000000..c553b1c
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_1.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_10.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_10.png
new file mode 100644 (file)
index 0000000..0bbe9d8
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_10.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_11.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_11.png
new file mode 100644 (file)
index 0000000..e364438
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_11.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_2.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_2.png
new file mode 100644 (file)
index 0000000..87c6422
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_2.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_3.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_3.png
new file mode 100644 (file)
index 0000000..107b210
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_3.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_4.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_4.png
new file mode 100644 (file)
index 0000000..c03f799
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_4.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_5.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_5.png
new file mode 100644 (file)
index 0000000..2835fad
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_5.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_6.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_6.png
new file mode 100644 (file)
index 0000000..55df41a
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_6.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_7.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_7.png
new file mode 100644 (file)
index 0000000..8906504
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_7.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_8.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_8.png
new file mode 100644 (file)
index 0000000..a9a27f9
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_8.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_9.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_9.png
new file mode 100644 (file)
index 0000000..262901d
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/hours_9.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/inhand-left.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/inhand-left.png
new file mode 100644 (file)
index 0000000..ec40991
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/inhand-left.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/inhand-right.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/inhand-right.png
new file mode 100644 (file)
index 0000000..aac6941
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/inhand-right.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/meta.json b/Resources/Textures/Objects/Devices/goldwatch.rsi/meta.json
new file mode 100644 (file)
index 0000000..6466438
--- /dev/null
@@ -0,0 +1,98 @@
+{
+  "version": 1,
+  "license": "CC-BY-SA-3.0",
+  "copyright": "Taken from vgstation13 at https://github.com/vgstation-coders/vgstation13/blob/223bf37a7386249ecf1fe425ca8cef25821ca9d7/icons/obj/watches/goldwatch.dmi, https://github.com/vgstation-coders/vgstation13/blob/223bf37a7386249ecf1fe425ca8cef25821ca9d7/icons/mob/in-hand/right/clothing_accessories.dmi, https://github.com/vgstation-coders/vgstation13/blob/223bf37a7386249ecf1fe425ca8cef25821ca9d7/icons/mob/in-hand/left/clothing_accessories.dmi, https://github.com/vgstation-coders/vgstation13/blob/30f9caeb59b0dd9da1dbcd4c69307ae182033a74/icons/mob/clothing_accessories.dmi",
+  "size": {
+    "x": 32,
+    "y": 32
+  },
+  "states": [
+    {
+      "name": "goldwatch"
+    },
+    {
+      "name": "hours_1"
+    },
+    {
+      "name": "hours_2"
+    },
+    {
+      "name": "hours_3"
+    },
+    {
+      "name": "hours_4"
+    },
+    {
+      "name": "hours_5"
+    },
+    {
+      "name": "hours_6"
+    },
+    {
+      "name": "hours_7"
+    },
+    {
+      "name": "hours_8"
+    },
+    {
+      "name": "hours_9"
+    },
+    {
+      "name": "hours_10"
+    },
+    {
+      "name": "hours_11"
+    },
+    {
+      "name": "hours_0"
+    },
+    {
+      "name": "minutes_1"
+    },
+    {
+      "name": "minutes_2"
+    },
+    {
+      "name": "minutes_3"
+    },
+    {
+      "name": "minutes_4"
+    },
+    {
+      "name": "minutes_5"
+    },
+    {
+      "name": "minutes_6"
+    },
+    {
+      "name": "minutes_7"
+    },
+    {
+      "name": "minutes_8"
+    },
+    {
+      "name": "minutes_9"
+    },
+    {
+      "name": "minutes_10"
+    },
+    {
+      "name": "minutes_11"
+    },
+    {
+      "name": "minutes_0"
+    },
+    {
+      "name": "inhand-right",
+      "directions": 4
+    },
+    {
+      "name": "inhand-left",
+      "directions": 4
+    },
+    {
+      "name": "equipped-HAND",
+      "directions": 4
+    }
+  ]
+}
\ No newline at end of file
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_0.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_0.png
new file mode 100644 (file)
index 0000000..be68756
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_0.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_1.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_1.png
new file mode 100644 (file)
index 0000000..0ef2c83
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_1.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_10.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_10.png
new file mode 100644 (file)
index 0000000..3019a20
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_10.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_11.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_11.png
new file mode 100644 (file)
index 0000000..fcbf039
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_11.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_2.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_2.png
new file mode 100644 (file)
index 0000000..1304f56
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_2.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_3.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_3.png
new file mode 100644 (file)
index 0000000..8f58881
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_3.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_4.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_4.png
new file mode 100644 (file)
index 0000000..a0c007b
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_4.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_5.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_5.png
new file mode 100644 (file)
index 0000000..1d71f45
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_5.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_6.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_6.png
new file mode 100644 (file)
index 0000000..5e1070e
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_6.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_7.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_7.png
new file mode 100644 (file)
index 0000000..4af1070
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_7.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_8.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_8.png
new file mode 100644 (file)
index 0000000..39b2526
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_8.png differ
diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_9.png b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_9.png
new file mode 100644 (file)
index 0000000..b9614ed
Binary files /dev/null and b/Resources/Textures/Objects/Devices/goldwatch.rsi/minutes_9.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/equipped-HAND.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/equipped-HAND.png
new file mode 100644 (file)
index 0000000..b12afe6
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/equipped-HAND.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_0.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_0.png
new file mode 100644 (file)
index 0000000..3af9ca4
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_0.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_1.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_1.png
new file mode 100644 (file)
index 0000000..4791cee
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_1.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_10.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_10.png
new file mode 100644 (file)
index 0000000..aeac862
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_10.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_11.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_11.png
new file mode 100644 (file)
index 0000000..5f2daf5
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_11.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_2.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_2.png
new file mode 100644 (file)
index 0000000..386166c
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_2.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_3.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_3.png
new file mode 100644 (file)
index 0000000..2f53009
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_3.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_4.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_4.png
new file mode 100644 (file)
index 0000000..c994c05
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_4.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_5.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_5.png
new file mode 100644 (file)
index 0000000..c344b03
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_5.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_6.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_6.png
new file mode 100644 (file)
index 0000000..892194a
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_6.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_7.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_7.png
new file mode 100644 (file)
index 0000000..fa7af8e
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_7.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_8.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_8.png
new file mode 100644 (file)
index 0000000..83caf8c
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_8.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_9.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_9.png
new file mode 100644 (file)
index 0000000..6334bb7
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/hours_9.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/inhand-left.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/inhand-left.png
new file mode 100644 (file)
index 0000000..76ca3c4
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/inhand-left.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/inhand-right.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/inhand-right.png
new file mode 100644 (file)
index 0000000..f9ab9c6
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/inhand-right.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/meta.json b/Resources/Textures/Objects/Devices/wristwatch.rsi/meta.json
new file mode 100644 (file)
index 0000000..fbf18c1
--- /dev/null
@@ -0,0 +1,98 @@
+{
+  "version": 1,
+  "license": "CC-BY-SA-3.0",
+  "copyright": "Taken from vgstation13 at https://github.com/vgstation-coders/vgstation13/blob/223bf37a7386249ecf1fe425ca8cef25821ca9d7/icons/obj/watches/wristwatch.dmi, https://github.com/vgstation-coders/vgstation13/blob/30f9caeb59b0dd9da1dbcd4c69307ae182033a74/icons/obj/clothing/accessory_overlays.dmi, https://github.com/vgstation-coders/vgstation13/blob/223bf37a7386249ecf1fe425ca8cef25821ca9d7/icons/mob/in-hand/right/clothing_accessories.dmi, https://github.com/vgstation-coders/vgstation13/blob/223bf37a7386249ecf1fe425ca8cef25821ca9d7/icons/mob/in-hand/right/clothing_accessories.dmi, https://github.com/vgstation-coders/vgstation13/blob/223bf37a7386249ecf1fe425ca8cef25821ca9d7/icons/mob/in-hand/left/clothing_accessories.dmi, https://github.com/vgstation-coders/vgstation13/blob/30f9caeb59b0dd9da1dbcd4c69307ae182033a74/icons/mob/clothing_accessories.dmi",
+  "size": {
+    "x": 32,
+    "y": 32
+  },
+  "states": [
+    {
+      "name": "wristwatch"
+    },
+    {
+      "name": "hours_1"
+    },
+    {
+      "name": "hours_2"
+    },
+    {
+      "name": "hours_3"
+    },
+    {
+      "name": "hours_4"
+    },
+    {
+      "name": "hours_5"
+    },
+    {
+      "name": "hours_6"
+    },
+    {
+      "name": "hours_7"
+    },
+    {
+      "name": "hours_8"
+    },
+    {
+      "name": "hours_9"
+    },
+    {
+      "name": "hours_10"
+    },
+    {
+      "name": "hours_11"
+    },
+    {
+      "name": "hours_0"
+    },
+    {
+      "name": "minutes_1"
+    },
+    {
+      "name": "minutes_2"
+    },
+    {
+      "name": "minutes_3"
+    },
+    {
+      "name": "minutes_4"
+    },
+    {
+      "name": "minutes_5"
+    },
+    {
+      "name": "minutes_6"
+    },
+    {
+      "name": "minutes_7"
+    },
+    {
+      "name": "minutes_8"
+    },
+    {
+      "name": "minutes_9"
+    },
+    {
+      "name": "minutes_10"
+    },
+    {
+      "name": "minutes_11"
+    },
+    {
+      "name": "minutes_0"
+    },
+    {
+      "name": "inhand-right",
+      "directions": 4
+    },
+    {
+      "name": "inhand-left",
+      "directions": 4
+    },
+    {
+      "name": "equipped-HAND",
+      "directions": 4
+    }
+  ]
+}
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_0.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_0.png
new file mode 100644 (file)
index 0000000..5285c6b
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_0.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_1.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_1.png
new file mode 100644 (file)
index 0000000..336bb51
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_1.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_10.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_10.png
new file mode 100644 (file)
index 0000000..9dad0d8
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_10.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_11.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_11.png
new file mode 100644 (file)
index 0000000..0c78911
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_11.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_2.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_2.png
new file mode 100644 (file)
index 0000000..a4c3bbe
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_2.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_3.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_3.png
new file mode 100644 (file)
index 0000000..6bfdc40
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_3.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_4.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_4.png
new file mode 100644 (file)
index 0000000..89c08f3
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_4.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_5.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_5.png
new file mode 100644 (file)
index 0000000..4cbaa00
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_5.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_6.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_6.png
new file mode 100644 (file)
index 0000000..e834c52
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_6.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_7.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_7.png
new file mode 100644 (file)
index 0000000..8c8927f
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_7.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_8.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_8.png
new file mode 100644 (file)
index 0000000..e0bba2e
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_8.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_9.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_9.png
new file mode 100644 (file)
index 0000000..db0f5a1
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/minutes_9.png differ
diff --git a/Resources/Textures/Objects/Devices/wristwatch.rsi/wristwatch.png b/Resources/Textures/Objects/Devices/wristwatch.rsi/wristwatch.png
new file mode 100644 (file)
index 0000000..aea09a7
Binary files /dev/null and b/Resources/Textures/Objects/Devices/wristwatch.rsi/wristwatch.png differ