diff --git a/Content.Client/EntryPoint.cs b/Content.Client/EntryPoint.cs index 88385112c6..a81c2b3f34 100644 --- a/Content.Client/EntryPoint.cs +++ b/Content.Client/EntryPoint.cs @@ -78,6 +78,8 @@ namespace Content.Client factory.RegisterIgnore("Stack"); + factory.RegisterIgnore("Dice"); + factory.Register(); factory.RegisterReference(); factory.Register(); diff --git a/Content.Server/EntryPoint.cs b/Content.Server/EntryPoint.cs index f1109b69e2..12c99c3ebd 100644 --- a/Content.Server/EntryPoint.cs +++ b/Content.Server/EntryPoint.cs @@ -56,6 +56,7 @@ using Content.Server.GameObjects.Components.Research; using Content.Shared.GameObjects.Components.Research; using Robust.Shared.Interfaces.Log; using Content.Server.GameObjects.Components.Explosive; +using Content.Server.GameObjects.Components.Items; using Content.Server.GameObjects.Components.Triggers; namespace Content.Server @@ -180,6 +181,8 @@ namespace Content.Server factory.Register(); + factory.Register(); + factory.Register(); factory.Register(); diff --git a/Content.Server/GameObjects/Components/GUI/ServerHandsComponent.cs b/Content.Server/GameObjects/Components/GUI/ServerHandsComponent.cs index d24586a3d0..a2477d2d2a 100644 --- a/Content.Server/GameObjects/Components/GUI/ServerHandsComponent.cs +++ b/Content.Server/GameObjects/Components/GUI/ServerHandsComponent.cs @@ -430,6 +430,18 @@ namespace Content.Server.GameObjects } } + public bool ThrowItem() + { + var item = GetActiveHand?.Owner; + if (item != null) + { + var interactionSystem = _entitySystemManager.GetEntitySystem(); + return interactionSystem.TryThrowInteraction(Owner, item); + } + + return false; + } + public override void HandleMessage(ComponentMessage message, INetChannel netChannel = null, IComponent component = null) { diff --git a/Content.Server/GameObjects/Components/Items/DiceComponent.cs b/Content.Server/GameObjects/Components/Items/DiceComponent.cs new file mode 100644 index 0000000000..78915e44de --- /dev/null +++ b/Content.Server/GameObjects/Components/Items/DiceComponent.cs @@ -0,0 +1,101 @@ +using System; +using Content.Server.GameObjects.Components.Sound; +using Content.Server.GameObjects.EntitySystems; +using Content.Shared.Audio; +using Robust.Server.GameObjects; +using Robust.Shared.Audio; +using Robust.Shared.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Log; +using Robust.Shared.Maths; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Items +{ + public class DiceComponent : Component, IActivate, IUse, ILand, IExamine + { +#pragma warning disable 649 + [Dependency] private readonly IPrototypeManager _prototypeManager; +#pragma warning restore 649 + + public override string Name => "Dice"; + + private Random _random; + private int _step = 1; + private int _sides = 20; + private int _currentSide = 20; + [ViewVariables] + public string _soundCollectionName = "dice"; + [ViewVariables] + public int Step => _step; + [ViewVariables] + public int Sides => _sides; + [ViewVariables] + public int CurrentSide => _currentSide; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _step, "step", 1); + serializer.DataField(ref _sides, "sides", 20); + serializer.DataField(ref _soundCollectionName, "diceSoundCollection", "dice"); + _currentSide = _sides; + } + + public override void OnAdd() + { + base.OnAdd(); + _random = new Random(Owner.Uid.GetHashCode() ^ DateTime.Now.GetHashCode()); + } + + public void Roll() + { + _currentSide = _random.Next(1, (_sides/_step)+1) * _step; + if (!Owner.TryGetComponent(out SpriteComponent sprite)) return; + sprite.LayerSetState(0, $"d{_sides}{_currentSide}"); + PlayDiceEffect(); + } + + public void PlayDiceEffect() + { + if (!string.IsNullOrWhiteSpace(_soundCollectionName)) + { + var soundCollection = _prototypeManager.Index(_soundCollectionName); + var file = _random.Pick(soundCollection.PickFiles); + Owner.GetComponent().Play(file, AudioParams.Default); + } + } + + public void Activate(ActivateEventArgs eventArgs) + { + Roll(); + } + + public bool UseEntity(UseEntityEventArgs eventArgs) + { + Roll(); + return false; + } + + public void Land(LandEventArgs eventArgs) + { + Roll(); + } + + public void Examine(FormattedMessage message) + { + message.AddText("A dice with "); + message.PushColor(new Color(1F, 0.75F, 0.75F)); + message.AddText(_sides.ToString()); + message.Pop(); + message.AddText(" sides.\nIt has landed on a "); + message.PushColor(new Color(1F, 1F, 1F)); + message.AddText(_currentSide.ToString()); + message.Pop(); + message.AddText("."); + } + } +} diff --git a/Content.Server/GameObjects/Components/Mobs/DamageStates.cs b/Content.Server/GameObjects/Components/Mobs/DamageStates.cs index 9c94587403..287a6b6aa2 100644 --- a/Content.Server/GameObjects/Components/Mobs/DamageStates.cs +++ b/Content.Server/GameObjects/Components/Mobs/DamageStates.cs @@ -46,6 +46,11 @@ namespace Content.Server.GameObjects { return true; } + + bool IActionBlocker.CanThrow() + { + return true; + } } /// @@ -77,6 +82,11 @@ namespace Content.Server.GameObjects { return false; } + + bool IActionBlocker.CanThrow() + { + return false; + } } /// @@ -118,5 +128,10 @@ namespace Content.Server.GameObjects { return false; } + + bool IActionBlocker.CanThrow() + { + return false; + } } } diff --git a/Content.Server/GameObjects/Components/Mobs/SpeciesComponent.cs b/Content.Server/GameObjects/Components/Mobs/SpeciesComponent.cs index 63a7740c97..86029362a9 100644 --- a/Content.Server/GameObjects/Components/Mobs/SpeciesComponent.cs +++ b/Content.Server/GameObjects/Components/Mobs/SpeciesComponent.cs @@ -76,6 +76,11 @@ namespace Content.Server.GameObjects return CurrentDamageState.CanUse(); } + bool IActionBlocker.CanThrow() + { + return CurrentDamageState.CanThrow(); + } + List IOnDamageBehavior.GetAllDamageThresholds() { var thresholdlist = DamageTemplate.DamageThresholds; diff --git a/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs b/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs index 525b99e6c0..dd1f1198e6 100644 --- a/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs +++ b/Content.Server/GameObjects/Components/Projectiles/ThrownItemComponent.cs @@ -1,17 +1,29 @@ using System.Collections.Generic; using Content.Server.GameObjects.Components.Projectiles; +using Content.Server.GameObjects.EntitySystems; using Content.Shared.GameObjects; using Content.Shared.Physics; using Robust.Server.GameObjects; +using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.GameObjects.Components; +using Robust.Shared.IoC; namespace Content.Server.GameObjects.Components { class ThrownItemComponent : ProjectileComponent, ICollideBehavior { +#pragma warning disable 649 + [Dependency] private readonly IEntitySystemManager _entitySystemManager; +#pragma warning restore 649 + public override string Name => "ThrownItem"; + /// + /// User who threw the item. + /// + public IEntity User; + void ICollideBehavior.CollideWith(List collidedwith) { foreach (var entity in collidedwith) @@ -31,9 +43,13 @@ namespace Content.Server.GameObjects.Components body.CollisionMask &= (int)~CollisionGroup.Mob; body.IsScrapingFloor = true; - // KYS, your job is finished. + // KYS, your job is finished. Trigger ILand as well. Owner.RemoveComponent(); + _entitySystemManager.GetEntitySystem().LandInteraction(User, Owner, Owner.Transform.GridPosition); } + + + } } } diff --git a/Content.Server/GameObjects/EntitySystems/ActionBlockerSystem.cs b/Content.Server/GameObjects/EntitySystems/ActionBlockerSystem.cs index 50585f3a0d..0833c702c5 100644 --- a/Content.Server/GameObjects/EntitySystems/ActionBlockerSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/ActionBlockerSystem.cs @@ -10,6 +10,8 @@ namespace Content.Server.GameObjects.EntitySystems bool CanInteract(); bool CanUse(); + + bool CanThrow(); } public class ActionBlockerSystem : EntitySystem @@ -43,5 +45,15 @@ namespace Content.Server.GameObjects.EntitySystems } return canuse; } + + public static bool CanThrow(IEntity entity) + { + bool canthrow = true; + foreach (var actionblockercomponents in entity.GetAllComponents()) + { + canthrow &= actionblockercomponents.CanThrow(); + } + return canthrow; + } } } diff --git a/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs b/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs index 762fd5c5bc..f9cb49eb99 100644 --- a/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs @@ -125,6 +125,44 @@ namespace Content.Server.GameObjects.EntitySystems public IEntity User { get; set; } } + /// + /// This interface gives components behavior when thrown. + /// + public interface IThrown + { + void Thrown(ThrownEventArgs eventArgs); + } + + public class ThrownEventArgs : EventArgs + { + public ThrownEventArgs(IEntity user) + { + User = user; + } + + public IEntity User { get; } + } + + /// + /// This interface gives components behavior when landing after being thrown. + /// + public interface ILand + { + void Land(LandEventArgs eventArgs); + } + + public class LandEventArgs : EventArgs + { + public LandEventArgs(IEntity user, GridCoordinates landingLocation) + { + User = user; + LandingLocation = landingLocation; + } + + public IEntity User { get; } + public GridCoordinates LandingLocation { get; } + } + public interface IAttack { void Attack(AttackEventArgs eventArgs); @@ -462,6 +500,63 @@ namespace Content.Server.GameObjects.EntitySystems } } + /// + /// Activates the Use behavior of an object + /// Verifies that the user is capable of doing the use interaction first + /// + public bool TryThrowInteraction(IEntity user, IEntity item) + { + if (user == null || item == null || !ActionBlockerSystem.CanThrow(user)) return false; + + ThrownInteraction(user, item); + return true; + + } + + /// + /// Calls Thrown on all components that implement the IThrown interface + /// on an entity that has been thrown. + /// + public void ThrownInteraction(IEntity user, IEntity thrown) + { + var throwMsg = new ThrownMessage(user, thrown); + RaiseEvent(throwMsg); + if (throwMsg.Handled) + { + return; + } + + var comps = thrown.GetAllComponents().ToList(); + + // Call Thrown on all components that implement the interface + foreach (var comp in comps) + { + comp.Thrown(new ThrownEventArgs(user)); + } + } + + /// + /// Calls Land on all components that implement the ILand interface + /// on an entity that has landed after being thrown. + /// + public void LandInteraction(IEntity user, IEntity landing, GridCoordinates landLocation) + { + var landMsg = new LandMessage(user, landing, landLocation); + RaiseEvent(landMsg); + if (landMsg.Handled) + { + return; + } + + var comps = landing.GetAllComponents().ToList(); + + // Call Land on all components that implement the interface + foreach (var comp in comps) + { + comp.Land(new LandEventArgs(user, landLocation)); + } + } + /// /// Will have two behaviors, either "uses" the weapon at range on the entity if it is capable of accepting that action /// Or it will use the weapon itself on the position clicked, regardless of what was there @@ -715,6 +810,68 @@ namespace Content.Server.GameObjects.EntitySystems } } + /// + /// Raised when throwing the entity in your hands. + /// + [PublicAPI] + public class ThrownMessage : EntitySystemMessage + { + /// + /// If this message has already been "handled" by a previous system. + /// + public bool Handled { get; set; } + + /// + /// Entity that threw the item. + /// + public IEntity User { get; } + + /// + /// Item that was thrown. + /// + public IEntity Thrown { get; } + + public ThrownMessage(IEntity user, IEntity thrown) + { + User = user; + Thrown = thrown; + } + } + + /// + /// Raised when an entity that was thrown lands. + /// + [PublicAPI] + public class LandMessage : EntitySystemMessage + { + /// + /// If this message has already been "handled" by a previous system. + /// + public bool Handled { get; set; } + + /// + /// Entity that threw the item. + /// + public IEntity User { get; } + + /// + /// Item that was thrown. + /// + public IEntity Thrown { get; } + + /// + /// Location where the item landed. + /// + public GridCoordinates LandLocation { get; } + + public LandMessage(IEntity user, IEntity thrown, GridCoordinates landLocation) + { + User = user; + Thrown = thrown; + LandLocation = landLocation; + } + } + /// /// Raised when an entity is activated in the world. /// diff --git a/Content.Server/GameObjects/EntitySystems/HandsSystem.cs b/Content.Server/GameObjects/EntitySystems/HandsSystem.cs index 035d0626ec..966e16f8f5 100644 --- a/Content.Server/GameObjects/EntitySystems/HandsSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/HandsSystem.cs @@ -135,6 +135,9 @@ namespace Content.Server.GameObjects.EntitySystems var throwEnt = handsComp.GetHand(handsComp.ActiveIndex).Owner; + if (!handsComp.ThrowItem()) + return; + // pop off an item, or throw the single item in hand. if (!throwEnt.TryGetComponent(out StackComponent stackComp) || stackComp.Count < 2) { @@ -147,9 +150,7 @@ namespace Content.Server.GameObjects.EntitySystems } if (!throwEnt.TryGetComponent(out CollidableComponent colComp)) - { return; - } colComp.CollisionEnabled = true; // I can now collide with player, so that i can do damage. @@ -161,15 +162,14 @@ namespace Content.Server.GameObjects.EntitySystems colComp.IsScrapingFloor = false; } + projComp.User = plyEnt; projComp.IgnoreEntity(plyEnt); var transform = plyEnt.Transform; var dirVec = (coords.ToWorld(_mapManager).Position - transform.WorldPosition).Normalized; if (!throwEnt.TryGetComponent(out PhysicsComponent physComp)) - { physComp = throwEnt.AddComponent(); - } // TODO: Move this into PhysicsSystem, we need an ApplyForce function. var a = ThrowForce / (float) Math.Max(0.001, physComp.Mass); // a = f / m @@ -185,6 +185,8 @@ namespace Content.Server.GameObjects.EntitySystems lHomoDir.Normalize(); transform.LocalRotation = new Angle(lHomoDir.Xy); + + } } } diff --git a/Resources/Audio/items/dice/dice1.ogg b/Resources/Audio/items/dice/dice1.ogg new file mode 100644 index 0000000000..193df126da Binary files /dev/null and b/Resources/Audio/items/dice/dice1.ogg differ diff --git a/Resources/Audio/items/dice/dice2.ogg b/Resources/Audio/items/dice/dice2.ogg new file mode 100644 index 0000000000..3b22d8a394 Binary files /dev/null and b/Resources/Audio/items/dice/dice2.ogg differ diff --git a/Resources/Audio/items/dice/dice3.ogg b/Resources/Audio/items/dice/dice3.ogg new file mode 100644 index 0000000000..8a2134dca2 Binary files /dev/null and b/Resources/Audio/items/dice/dice3.ogg differ diff --git a/Resources/Audio/items/dice/dice4.ogg b/Resources/Audio/items/dice/dice4.ogg new file mode 100644 index 0000000000..3451e97237 Binary files /dev/null and b/Resources/Audio/items/dice/dice4.ogg differ diff --git a/Resources/Audio/items/dice/dice5.ogg b/Resources/Audio/items/dice/dice5.ogg new file mode 100644 index 0000000000..46148eb03f Binary files /dev/null and b/Resources/Audio/items/dice/dice5.ogg differ diff --git a/Resources/Audio/items/dice/dice6.ogg b/Resources/Audio/items/dice/dice6.ogg new file mode 100644 index 0000000000..daeabede81 Binary files /dev/null and b/Resources/Audio/items/dice/dice6.ogg differ diff --git a/Resources/Audio/items/dice/dice7.ogg b/Resources/Audio/items/dice/dice7.ogg new file mode 100644 index 0000000000..167f1fc584 Binary files /dev/null and b/Resources/Audio/items/dice/dice7.ogg differ diff --git a/Resources/Prototypes/Entities/Dice.yml b/Resources/Prototypes/Entities/Dice.yml new file mode 100644 index 0000000000..2955754c89 --- /dev/null +++ b/Resources/Prototypes/Entities/Dice.yml @@ -0,0 +1,106 @@ +- type: entity + name: "BaseDice" + parent: BaseItem + id: BaseDice + components: + - type: Dice + - type: Sound + +- type: entity + name: "d100" + parent: BaseDice + id: d100 + components: + - type: Dice + sides: 100 + step: 10 + - type: Sprite + sprite: Objects/items/dice.rsi + state: d100100 + - type: Icon + sprite: Objects/items/dice.rsi + state: d100100 + +- type: entity + name: "d20" + parent: BaseDice + id: d20 + components: + - type: Dice + sides: 20 + - type: Sprite + sprite: Objects/items/dice.rsi + state: d2020 + - type: Icon + sprite: Objects/items/dice.rsi + state: d2020 + +- type: entity + name: "d12" + parent: BaseDice + id: d12 + components: + - type: Dice + sides: 12 + - type: Sprite + sprite: Objects/items/dice.rsi + state: d1212 + - type: Icon + sprite: Objects/items/dice.rsi + state: d1212 + +- type: entity + name: "d10" + parent: BaseDice + id: d10 + components: + - type: Dice + sides: 10 + - type: Sprite + sprite: Objects/items/dice.rsi + state: d1010 + - type: Icon + sprite: Objects/items/dice.rsi + state: d1010 + +- type: entity + name: "d8" + parent: BaseDice + id: d8 + components: + - type: Dice + sides: 8 + - type: Sprite + sprite: Objects/items/dice.rsi + state: d88 + - type: Icon + sprite: Objects/items/dice.rsi + state: d88 + +- type: entity + name: "d6" + parent: BaseDice + id: d6 + components: + - type: Dice + sides: 6 + - type: Sprite + sprite: Objects/items/dice.rsi + state: d66 + - type: Icon + sprite: Objects/items/dice.rsi + state: d66 + +- type: entity + name: "d4" + parent: BaseDice + id: d4 + components: + - type: Dice + sides: 4 + - type: Sprite + sprite: Objects/items/dice.rsi + state: d44 + - type: Icon + sprite: Objects/items/dice.rsi + state: d44 \ No newline at end of file diff --git a/Resources/Prototypes/SoundCollections/dice.yml b/Resources/Prototypes/SoundCollections/dice.yml new file mode 100644 index 0000000000..7e2527c08a --- /dev/null +++ b/Resources/Prototypes/SoundCollections/dice.yml @@ -0,0 +1,10 @@ +- type: sound_collection + id: dice + files: + - /Audio/items/dice/dice1.ogg + - /Audio/items/dice/dice2.ogg + - /Audio/items/dice/dice3.ogg + - /Audio/items/dice/dice4.ogg + - /Audio/items/dice/dice5.ogg + - /Audio/items/dice/dice6.ogg + - /Audio/items/dice/dice7.ogg \ No newline at end of file diff --git a/Resources/Textures/Objects/items/dice.rsi/d10010.png b/Resources/Textures/Objects/items/dice.rsi/d10010.png new file mode 100644 index 0000000000..93b4f9a4a7 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d10010.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d100100.png b/Resources/Textures/Objects/items/dice.rsi/d100100.png new file mode 100644 index 0000000000..696a140db3 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d100100.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d10020.png b/Resources/Textures/Objects/items/dice.rsi/d10020.png new file mode 100644 index 0000000000..0a41ead057 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d10020.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d10030.png b/Resources/Textures/Objects/items/dice.rsi/d10030.png new file mode 100644 index 0000000000..d87303e710 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d10030.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d10040.png b/Resources/Textures/Objects/items/dice.rsi/d10040.png new file mode 100644 index 0000000000..72bcba7120 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d10040.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d10050.png b/Resources/Textures/Objects/items/dice.rsi/d10050.png new file mode 100644 index 0000000000..9d4705b7c9 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d10050.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d10060.png b/Resources/Textures/Objects/items/dice.rsi/d10060.png new file mode 100644 index 0000000000..fa781a2893 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d10060.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d10070.png b/Resources/Textures/Objects/items/dice.rsi/d10070.png new file mode 100644 index 0000000000..3d1f3cabc4 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d10070.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d10080.png b/Resources/Textures/Objects/items/dice.rsi/d10080.png new file mode 100644 index 0000000000..a332d93ca2 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d10080.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d10090.png b/Resources/Textures/Objects/items/dice.rsi/d10090.png new file mode 100644 index 0000000000..fe093d1b01 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d10090.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d101.png b/Resources/Textures/Objects/items/dice.rsi/d101.png new file mode 100644 index 0000000000..7b78b7f761 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d101.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d1010.png b/Resources/Textures/Objects/items/dice.rsi/d1010.png new file mode 100644 index 0000000000..d71e46e19e Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d1010.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d102.png b/Resources/Textures/Objects/items/dice.rsi/d102.png new file mode 100644 index 0000000000..c549ec630b Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d102.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d103.png b/Resources/Textures/Objects/items/dice.rsi/d103.png new file mode 100644 index 0000000000..7e6f0b3be2 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d103.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d104.png b/Resources/Textures/Objects/items/dice.rsi/d104.png new file mode 100644 index 0000000000..5af85aefac Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d104.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d105.png b/Resources/Textures/Objects/items/dice.rsi/d105.png new file mode 100644 index 0000000000..a47e7229b8 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d105.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d106.png b/Resources/Textures/Objects/items/dice.rsi/d106.png new file mode 100644 index 0000000000..3c6279a7d8 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d106.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d107.png b/Resources/Textures/Objects/items/dice.rsi/d107.png new file mode 100644 index 0000000000..9aa1407a41 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d107.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d108.png b/Resources/Textures/Objects/items/dice.rsi/d108.png new file mode 100644 index 0000000000..93fb179d34 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d108.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d109.png b/Resources/Textures/Objects/items/dice.rsi/d109.png new file mode 100644 index 0000000000..a5e6574b3d Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d109.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d121.png b/Resources/Textures/Objects/items/dice.rsi/d121.png new file mode 100644 index 0000000000..04cea70a0a Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d121.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d1210.png b/Resources/Textures/Objects/items/dice.rsi/d1210.png new file mode 100644 index 0000000000..e36eb1f1cd Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d1210.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d1211.png b/Resources/Textures/Objects/items/dice.rsi/d1211.png new file mode 100644 index 0000000000..a1feeb4970 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d1211.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d1212.png b/Resources/Textures/Objects/items/dice.rsi/d1212.png new file mode 100644 index 0000000000..8f03e6222e Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d1212.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d122.png b/Resources/Textures/Objects/items/dice.rsi/d122.png new file mode 100644 index 0000000000..36726d35aa Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d122.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d123.png b/Resources/Textures/Objects/items/dice.rsi/d123.png new file mode 100644 index 0000000000..da5c864159 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d123.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d124.png b/Resources/Textures/Objects/items/dice.rsi/d124.png new file mode 100644 index 0000000000..a1fd631a77 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d124.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d125.png b/Resources/Textures/Objects/items/dice.rsi/d125.png new file mode 100644 index 0000000000..f19a29b9a4 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d125.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d126.png b/Resources/Textures/Objects/items/dice.rsi/d126.png new file mode 100644 index 0000000000..e4082baf19 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d126.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d127.png b/Resources/Textures/Objects/items/dice.rsi/d127.png new file mode 100644 index 0000000000..e0f1e21a4f Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d127.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d128.png b/Resources/Textures/Objects/items/dice.rsi/d128.png new file mode 100644 index 0000000000..71bd028357 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d128.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d129.png b/Resources/Textures/Objects/items/dice.rsi/d129.png new file mode 100644 index 0000000000..11ac2ba19e Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d129.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d201.png b/Resources/Textures/Objects/items/dice.rsi/d201.png new file mode 100644 index 0000000000..a6d6beb327 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d201.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d2010.png b/Resources/Textures/Objects/items/dice.rsi/d2010.png new file mode 100644 index 0000000000..d5a80dcdc3 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d2010.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d2011.png b/Resources/Textures/Objects/items/dice.rsi/d2011.png new file mode 100644 index 0000000000..69baa59e3e Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d2011.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d2012.png b/Resources/Textures/Objects/items/dice.rsi/d2012.png new file mode 100644 index 0000000000..4f2c6fb315 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d2012.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d2013.png b/Resources/Textures/Objects/items/dice.rsi/d2013.png new file mode 100644 index 0000000000..879814822b Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d2013.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d2014.png b/Resources/Textures/Objects/items/dice.rsi/d2014.png new file mode 100644 index 0000000000..f4345b6c69 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d2014.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d2015.png b/Resources/Textures/Objects/items/dice.rsi/d2015.png new file mode 100644 index 0000000000..ae6f19ede2 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d2015.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d2016.png b/Resources/Textures/Objects/items/dice.rsi/d2016.png new file mode 100644 index 0000000000..994c6d6a9b Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d2016.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d2017.png b/Resources/Textures/Objects/items/dice.rsi/d2017.png new file mode 100644 index 0000000000..fd30ed3534 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d2017.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d2018.png b/Resources/Textures/Objects/items/dice.rsi/d2018.png new file mode 100644 index 0000000000..6b90e1fa1e Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d2018.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d2019.png b/Resources/Textures/Objects/items/dice.rsi/d2019.png new file mode 100644 index 0000000000..75b1a77581 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d2019.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d202.png b/Resources/Textures/Objects/items/dice.rsi/d202.png new file mode 100644 index 0000000000..f1245d0e69 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d202.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d2020.png b/Resources/Textures/Objects/items/dice.rsi/d2020.png new file mode 100644 index 0000000000..6741fdf5c5 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d2020.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d203.png b/Resources/Textures/Objects/items/dice.rsi/d203.png new file mode 100644 index 0000000000..cff8122a58 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d203.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d204.png b/Resources/Textures/Objects/items/dice.rsi/d204.png new file mode 100644 index 0000000000..009ccaa3ea Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d204.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d205.png b/Resources/Textures/Objects/items/dice.rsi/d205.png new file mode 100644 index 0000000000..5337aaf3ff Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d205.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d206.png b/Resources/Textures/Objects/items/dice.rsi/d206.png new file mode 100644 index 0000000000..c280a8fec9 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d206.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d207.png b/Resources/Textures/Objects/items/dice.rsi/d207.png new file mode 100644 index 0000000000..628f031d97 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d207.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d208.png b/Resources/Textures/Objects/items/dice.rsi/d208.png new file mode 100644 index 0000000000..d8e832f3a8 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d208.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d209.png b/Resources/Textures/Objects/items/dice.rsi/d209.png new file mode 100644 index 0000000000..b1d6664c2d Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d209.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d41.png b/Resources/Textures/Objects/items/dice.rsi/d41.png new file mode 100644 index 0000000000..914c849957 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d41.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d42.png b/Resources/Textures/Objects/items/dice.rsi/d42.png new file mode 100644 index 0000000000..f8b82a15bd Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d42.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d43.png b/Resources/Textures/Objects/items/dice.rsi/d43.png new file mode 100644 index 0000000000..088a665970 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d43.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d44.png b/Resources/Textures/Objects/items/dice.rsi/d44.png new file mode 100644 index 0000000000..e828c0cc18 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d44.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d61.png b/Resources/Textures/Objects/items/dice.rsi/d61.png new file mode 100644 index 0000000000..0217651d08 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d61.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d62.png b/Resources/Textures/Objects/items/dice.rsi/d62.png new file mode 100644 index 0000000000..271bddbae2 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d62.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d63.png b/Resources/Textures/Objects/items/dice.rsi/d63.png new file mode 100644 index 0000000000..5236d3171c Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d63.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d64.png b/Resources/Textures/Objects/items/dice.rsi/d64.png new file mode 100644 index 0000000000..6fc7109bb6 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d64.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d65.png b/Resources/Textures/Objects/items/dice.rsi/d65.png new file mode 100644 index 0000000000..ccb4db2eff Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d65.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d66.png b/Resources/Textures/Objects/items/dice.rsi/d66.png new file mode 100644 index 0000000000..24b92d7799 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d66.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d81.png b/Resources/Textures/Objects/items/dice.rsi/d81.png new file mode 100644 index 0000000000..a41ceb67f4 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d81.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d82.png b/Resources/Textures/Objects/items/dice.rsi/d82.png new file mode 100644 index 0000000000..4889fbd8df Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d82.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d83.png b/Resources/Textures/Objects/items/dice.rsi/d83.png new file mode 100644 index 0000000000..ad55f3fe17 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d83.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d84.png b/Resources/Textures/Objects/items/dice.rsi/d84.png new file mode 100644 index 0000000000..18ce0d5776 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d84.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d85.png b/Resources/Textures/Objects/items/dice.rsi/d85.png new file mode 100644 index 0000000000..3582aca278 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d85.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d86.png b/Resources/Textures/Objects/items/dice.rsi/d86.png new file mode 100644 index 0000000000..4de46092c6 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d86.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d87.png b/Resources/Textures/Objects/items/dice.rsi/d87.png new file mode 100644 index 0000000000..38b41fde9e Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d87.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/d88.png b/Resources/Textures/Objects/items/dice.rsi/d88.png new file mode 100644 index 0000000000..707cc0231f Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/d88.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/dicebag.png b/Resources/Textures/Objects/items/dice.rsi/dicebag.png new file mode 100644 index 0000000000..329ee9a227 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/dicebag.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/magicdicebag.png b/Resources/Textures/Objects/items/dice.rsi/magicdicebag.png new file mode 100644 index 0000000000..0c16451932 Binary files /dev/null and b/Resources/Textures/Objects/items/dice.rsi/magicdicebag.png differ diff --git a/Resources/Textures/Objects/items/dice.rsi/meta.json b/Resources/Textures/Objects/items/dice.rsi/meta.json new file mode 100644 index 0000000000..f94f9afadb --- /dev/null +++ b/Resources/Textures/Objects/items/dice.rsi/meta.json @@ -0,0 +1 @@ +{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "d10010", "directions": 1, "delays": [[1.0]]}, {"name": "d100100", "directions": 1, "delays": [[1.0]]}, {"name": "d10020", "directions": 1, "delays": [[1.0]]}, {"name": "d10030", "directions": 1, "delays": [[1.0]]}, {"name": "d10040", "directions": 1, "delays": [[1.0]]}, {"name": "d10050", "directions": 1, "delays": [[1.0]]}, {"name": "d10060", "directions": 1, "delays": [[1.0]]}, {"name": "d10070", "directions": 1, "delays": [[1.0]]}, {"name": "d10080", "directions": 1, "delays": [[1.0]]}, {"name": "d10090", "directions": 1, "delays": [[1.0]]}, {"name": "d101", "directions": 1, "delays": [[1.0]]}, {"name": "d1010", "directions": 1, "delays": [[1.0]]}, {"name": "d102", "directions": 1, "delays": [[1.0]]}, {"name": "d103", "directions": 1, "delays": [[1.0]]}, {"name": "d104", "directions": 1, "delays": [[1.0]]}, {"name": "d105", "directions": 1, "delays": [[1.0]]}, {"name": "d106", "directions": 1, "delays": [[1.0]]}, {"name": "d107", "directions": 1, "delays": [[1.0]]}, {"name": "d108", "directions": 1, "delays": [[1.0]]}, {"name": "d109", "directions": 1, "delays": [[1.0]]}, {"name": "d121", "directions": 1, "delays": [[1.0]]}, {"name": "d1210", "directions": 1, "delays": [[1.0]]}, {"name": "d1211", "directions": 1, "delays": [[1.0]]}, {"name": "d1212", "directions": 1, "delays": [[1.0]]}, {"name": "d122", "directions": 1, "delays": [[1.0]]}, {"name": "d123", "directions": 1, "delays": [[1.0]]}, {"name": "d124", "directions": 1, "delays": [[1.0]]}, {"name": "d125", "directions": 1, "delays": [[1.0]]}, {"name": "d126", "directions": 1, "delays": [[1.0]]}, {"name": "d127", "directions": 1, "delays": [[1.0]]}, {"name": "d128", "directions": 1, "delays": [[1.0]]}, {"name": "d129", "directions": 1, "delays": [[1.0]]}, {"name": "d201", "directions": 1, "delays": [[1.0]]}, {"name": "d2010", "directions": 1, "delays": [[1.0]]}, {"name": "d2011", "directions": 1, "delays": [[1.0]]}, {"name": "d2012", "directions": 1, "delays": [[1.0]]}, {"name": "d2013", "directions": 1, "delays": [[1.0]]}, {"name": "d2014", "directions": 1, "delays": [[1.0]]}, {"name": "d2015", "directions": 1, "delays": [[1.0]]}, {"name": "d2016", "directions": 1, "delays": [[1.0]]}, {"name": "d2017", "directions": 1, "delays": [[1.0]]}, {"name": "d2018", "directions": 1, "delays": [[1.0]]}, {"name": "d2019", "directions": 1, "delays": [[1.0]]}, {"name": "d202", "directions": 1, "delays": [[1.0]]}, {"name": "d2020", "directions": 1, "delays": [[1.0]]}, {"name": "d203", "directions": 1, "delays": [[1.0]]}, {"name": "d204", "directions": 1, "delays": [[1.0]]}, {"name": "d205", "directions": 1, "delays": [[1.0]]}, {"name": "d206", "directions": 1, "delays": [[1.0]]}, {"name": "d207", "directions": 1, "delays": [[1.0]]}, {"name": "d208", "directions": 1, "delays": [[1.0]]}, {"name": "d209", "directions": 1, "delays": [[1.0]]}, {"name": "d41", "directions": 1, "delays": [[1.0]]}, {"name": "d42", "directions": 1, "delays": [[1.0]]}, {"name": "d43", "directions": 1, "delays": [[1.0]]}, {"name": "d44", "directions": 1, "delays": [[1.0]]}, {"name": "d61", "directions": 1, "delays": [[1.0]]}, {"name": "d62", "directions": 1, "delays": [[1.0]]}, {"name": "d63", "directions": 1, "delays": [[1.0]]}, {"name": "d64", "directions": 1, "delays": [[1.0]]}, {"name": "d65", "directions": 1, "delays": [[1.0]]}, {"name": "d66", "directions": 1, "delays": [[1.0]]}, {"name": "d81", "directions": 1, "delays": [[1.0]]}, {"name": "d82", "directions": 1, "delays": [[1.0]]}, {"name": "d83", "directions": 1, "delays": [[1.0]]}, {"name": "d84", "directions": 1, "delays": [[1.0]]}, {"name": "d85", "directions": 1, "delays": [[1.0]]}, {"name": "d86", "directions": 1, "delays": [[1.0]]}, {"name": "d87", "directions": 1, "delays": [[1.0]]}, {"name": "d88", "directions": 1, "delays": [[1.0]]}, {"name": "dicebag", "directions": 1, "delays": [[1.0]]}, {"name": "magicdicebag", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file