Add ammo boxes (#325)

Same as magazines except they can't be loaded into a weapon.
You can transfer ammo to and from magazines / boxes freely where the caliber matches so you don't need to necessarily match the magazine type.
Used popups to reflect transfer amount.
Also fixed the mag sprite showing as 0 capacity on spawn and the 10mm smg flash magazine prototype
This commit is contained in:
metalgearsloth
2019-09-04 06:35:19 +10:00
committed by Pieter-Jan Briers
parent 9353a060f2
commit b62fb4a318
176 changed files with 1360 additions and 15 deletions

View File

@@ -43,6 +43,7 @@ namespace Content.Client
var registerIgnore = new[] var registerIgnore = new[]
{ {
"AmmoBox",
"Breakable", "Breakable",
"Pickaxe", "Pickaxe",
"Interactable", "Interactable",

View File

@@ -0,0 +1,238 @@
using System;
using Content.Server.GameObjects.EntitySystems;
using Robust.Shared.GameObjects;
using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.ViewVariables;
using System.Collections.Generic;
using Content.Shared.GameObjects.Components.Weapons.Ranged;
using Content.Shared.Interfaces;
using Robust.Server.GameObjects;
using Robust.Server.GameObjects.Components.Container;
using Robust.Server.Interfaces.GameObjects;
using Robust.Shared.Serialization;
namespace Content.Server.GameObjects.Components.Weapon.Ranged.Projectile
{
[RegisterComponent]
public class AmmoBoxComponent : Component, IAttackBy, IMapInit
// TODO: Potential improvements:
// Add verbs for stack splitting
// Behaviour is largely the same as BallisticMagazine except you can't insert it into a gun.
{
public override string Name => "AmmoBox";
private BallisticCaliber _caliber;
private int _capacity;
[ViewVariables] private int _availableSpawnCount;
[ViewVariables] private readonly Stack<IEntity> _loadedBullets = new Stack<IEntity>();
[ViewVariables]
public string FillType => _fillType;
private string _fillType;
[ViewVariables] private Container _bulletContainer;
[ViewVariables] private AppearanceComponent _appearance;
[ViewVariables] public int Capacity => _capacity;
[ViewVariables] public BallisticCaliber Caliber => _caliber;
[ViewVariables] public int CountLeft => _loadedBullets.Count + _availableSpawnCount;
public override void ExposeData(ObjectSerializer serializer)
{
base.ExposeData(serializer);
serializer.DataField(ref _caliber, "caliber", BallisticCaliber.Unspecified);
serializer.DataField(ref _fillType, "fill", null);
serializer.DataField(ref _capacity, "capacity", 30);
serializer.DataField(ref _availableSpawnCount, "availableSpawnCount", Capacity);
}
private void _updateAppearance()
{
_appearance.SetData(BallisticMagazineVisuals.AmmoLeft, CountLeft);
}
public void MapInit()
{
_availableSpawnCount = Capacity;
}
public override void Initialize()
{
base.Initialize();
_appearance = Owner.GetComponent<AppearanceComponent>();
}
public override void Startup()
{
base.Startup();
_bulletContainer =
ContainerManagerComponent.Ensure<Container>("box_bullet_container", Owner, out var existed);
if (existed)
{
foreach (var entity in _bulletContainer.ContainedEntities)
{
_loadedBullets.Push(entity);
}
}
_updateAppearance();
_appearance.SetData(BallisticMagazineVisuals.AmmoCapacity, Capacity);
}
AmmoBoxTransferPopupMessage CanTransferFrom(IEntity source)
{
// Currently the below duplicates mags but at some stage these will likely differ
if (source.TryGetComponent(out BallisticMagazineComponent magazineComponent))
{
if (magazineComponent.Caliber != Caliber)
{
return new AmmoBoxTransferPopupMessage(result: false, message: "Wrong caliber");
}
if (CountLeft == Capacity)
{
return new AmmoBoxTransferPopupMessage(result: false, message: "Already full");
}
if (magazineComponent.CountLoaded == 0)
{
return new AmmoBoxTransferPopupMessage(result: false, message: "No ammo to transfer");
}
return new AmmoBoxTransferPopupMessage(result: true, message: "");
}
if (source.TryGetComponent(out AmmoBoxComponent boxComponent))
{
if (boxComponent.Caliber != Caliber)
{
return new AmmoBoxTransferPopupMessage(result: false, message: "Wrong caliber");
}
if (CountLeft == Capacity)
{
return new AmmoBoxTransferPopupMessage(result: false, message: "Already full");
}
if (boxComponent.CountLeft == 0)
{
return new AmmoBoxTransferPopupMessage(result: false, message: "No ammo to transfer");
}
return new AmmoBoxTransferPopupMessage(result: true, message: "");
}
return new AmmoBoxTransferPopupMessage(result: false, message: "");
}
// TODO: Potentially abstract out to reduce duplicate structs
private struct AmmoBoxTransferPopupMessage
{
public readonly bool Result;
public readonly string Message;
public AmmoBoxTransferPopupMessage(bool result, string message)
{
Result = result;
Message = message;
}
}
bool IAttackBy.AttackBy(AttackByEventArgs eventArgs)
{
var ammoBoxTransfer = CanTransferFrom(eventArgs.AttackWith);
if (ammoBoxTransfer.Result) {
IEntity bullet;
if (eventArgs.AttackWith.TryGetComponent(out BallisticMagazineComponent magazineComponent))
{
int fillCount = Math.Min(magazineComponent.CountLoaded, Capacity - CountLeft);
for (int i = 0; i < fillCount; i++)
{
bullet = magazineComponent.TakeBullet();
AddBullet(bullet);
}
eventArgs.User.PopupMessage(eventArgs.User, $"Transferred {fillCount} rounds");
return true;
}
if (eventArgs.AttackWith.TryGetComponent(out AmmoBoxComponent boxComponent))
{
int fillCount = Math.Min(boxComponent.CountLeft, Capacity - CountLeft);
for (int i = 0; i < fillCount; i++)
{
bullet = boxComponent.TakeBullet();
AddBullet(bullet);
}
eventArgs.User.PopupMessage(eventArgs.User, $"Transferred {fillCount} rounds");
return true;
}
}
else
{
eventArgs.User.PopupMessage(eventArgs.User, ammoBoxTransfer.Message);
}
return false;
}
public void AddBullet(IEntity bullet)
{
if (Owner.TryGetComponent(out BallisticMagazineComponent magazineComponent))
{
magazineComponent.AddBullet(bullet);
return;
}
if (!bullet.TryGetComponent(out BallisticBulletComponent component))
{
throw new ArgumentException("entity isn't a bullet.", nameof(bullet));
}
if (component.Caliber != Caliber)
{
throw new ArgumentException("entity is of the wrong caliber.", nameof(bullet));
}
if (CountLeft >= Capacity)
{
throw new InvalidOperationException("Box is full.");
}
_bulletContainer.Insert(bullet);
_loadedBullets.Push(bullet);
_updateAppearance();
}
public IEntity TakeBullet()
{
IEntity bullet;
if (Owner.TryGetComponent(out BallisticMagazineComponent magazineComponent))
{
bullet = magazineComponent.TakeBullet();
return bullet;
}
if (_loadedBullets.Count == 0)
{
if (_availableSpawnCount == 0)
{
return null;
}
_availableSpawnCount -= 1;
bullet = Owner.EntityManager.SpawnEntity(FillType);
}
else
{
bullet = _loadedBullets.Pop();
_bulletContainer.Remove(bullet);
}
_updateAppearance();
return bullet;
}
}
}

View File

@@ -1,6 +1,8 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Content.Server.GameObjects.EntitySystems;
using Content.Shared.GameObjects.Components.Weapons.Ranged; using Content.Shared.GameObjects.Components.Weapons.Ranged;
using Content.Shared.Interfaces;
using Robust.Server.GameObjects; using Robust.Server.GameObjects;
using Robust.Server.GameObjects.Components.Container; using Robust.Server.GameObjects.Components.Container;
using Robust.Server.Interfaces.GameObjects; using Robust.Server.Interfaces.GameObjects;
@@ -12,13 +14,13 @@ using Robust.Shared.ViewVariables;
namespace Content.Server.GameObjects.Components.Weapon.Ranged.Projectile namespace Content.Server.GameObjects.Components.Weapon.Ranged.Projectile
{ {
[RegisterComponent] [RegisterComponent]
public class BallisticMagazineComponent : Component, IMapInit public class BallisticMagazineComponent : Component, IMapInit, IAttackBy
{ {
public override string Name => "BallisticMagazine"; public override string Name => "BallisticMagazine";
// Stack of loaded bullets. // Stack of loaded bullets.
[ViewVariables] private readonly Stack<IEntity> _loadedBullets = new Stack<IEntity>(); [ViewVariables] private readonly Stack<IEntity> _loadedBullets = new Stack<IEntity>();
[ViewVariables] private string _fillType; private string _fillType;
[ViewVariables] private Container _bulletContainer; [ViewVariables] private Container _bulletContainer;
[ViewVariables] private AppearanceComponent _appearance; [ViewVariables] private AppearanceComponent _appearance;
@@ -27,6 +29,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Projectile
private BallisticCaliber _caliber; private BallisticCaliber _caliber;
private int _capacity; private int _capacity;
[ViewVariables] public string FillType => _fillType;
[ViewVariables] public BallisticMagazineType MagazineType => _magazineType; [ViewVariables] public BallisticMagazineType MagazineType => _magazineType;
[ViewVariables] public BallisticCaliber Caliber => _caliber; [ViewVariables] public BallisticCaliber Caliber => _caliber;
[ViewVariables] public int Capacity => _capacity; [ViewVariables] public int Capacity => _capacity;
@@ -45,7 +48,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Projectile
serializer.DataField(ref _caliber, "caliber", BallisticCaliber.Unspecified); serializer.DataField(ref _caliber, "caliber", BallisticCaliber.Unspecified);
serializer.DataField(ref _fillType, "fill", null); serializer.DataField(ref _fillType, "fill", null);
serializer.DataField(ref _capacity, "capacity", 20); serializer.DataField(ref _capacity, "capacity", 20);
serializer.DataField(ref _availableSpawnCount, "availableSpawnCount", 0); serializer.DataField(ref _availableSpawnCount, "availableSpawnCount", Capacity);
} }
public override void Initialize() public override void Initialize()
@@ -110,7 +113,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Projectile
} }
_availableSpawnCount -= 1; _availableSpawnCount -= 1;
bullet = Owner.EntityManager.SpawnEntity(_fillType); bullet = Owner.EntityManager.SpawnEntity(FillType);
} }
else else
{ {
@@ -123,6 +126,103 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Projectile
return bullet; return bullet;
} }
// TODO: Allow putting individual casings into mag (also box)
AmmoMagTransferPopupMessage CanTransferFrom(IEntity source)
{
// Currently the below duplicates box but at some stage these will likely differ
if (source.TryGetComponent(out BallisticMagazineComponent magazineComponent))
{
if (magazineComponent.Caliber != Caliber)
{
return new AmmoMagTransferPopupMessage(result: false, message: "Wrong caliber");
}
if (CountLoaded == Capacity)
{
return new AmmoMagTransferPopupMessage(result: false, message: "Already full");
}
if (magazineComponent.CountLoaded == 0)
{
return new AmmoMagTransferPopupMessage(result: false, message: "No ammo to transfer");
}
return new AmmoMagTransferPopupMessage(result: true, message: "");
}
// If box
if (source.TryGetComponent(out AmmoBoxComponent boxComponent))
{
if (boxComponent.Caliber != Caliber)
{
return new AmmoMagTransferPopupMessage(result: false, message: "Wrong caliber");
}
if (CountLoaded == Capacity)
{
return new AmmoMagTransferPopupMessage(result: false, message: "Already full");
}
if (boxComponent.CountLeft == 0)
{
return new AmmoMagTransferPopupMessage(result: false, message: "No ammo to transfer");
}
return new AmmoMagTransferPopupMessage(result: true, message: "");
}
return new AmmoMagTransferPopupMessage(result: false, message: "");
}
// TODO: Potentially abstract out to reduce duplicate structs
private struct AmmoMagTransferPopupMessage
{
public readonly bool Result;
public readonly string Message;
public AmmoMagTransferPopupMessage(bool result, string message)
{
Result = result;
Message = message;
}
}
bool IAttackBy.AttackBy(AttackByEventArgs eventArgs)
{
var ammoMagTransfer = CanTransferFrom(eventArgs.AttackWith);
if (ammoMagTransfer.Result) {
IEntity bullet;
if (eventArgs.AttackWith.TryGetComponent(out BallisticMagazineComponent magazineComponent))
{
int fillCount = Math.Min(magazineComponent.CountLoaded, Capacity - CountLoaded);
for (int i = 0; i < fillCount; i++)
{
bullet = magazineComponent.TakeBullet();
AddBullet(bullet);
}
eventArgs.User.PopupMessage(eventArgs.User, $"Transferred {fillCount} rounds");
return true;
}
if (eventArgs.AttackWith.TryGetComponent(out AmmoBoxComponent boxComponent))
{
int fillCount = Math.Min(boxComponent.CountLeft, Capacity - CountLoaded);
for (int i = 0; i < fillCount; i++)
{
bullet = boxComponent.TakeBullet();
AddBullet(bullet);
}
eventArgs.User.PopupMessage(eventArgs.User, $"Transferred {fillCount} rounds");
return true;
}
}
else
{
eventArgs.User.PopupMessage(eventArgs.User, ammoMagTransfer.Message);
}
return false;
}
private void _updateAppearance() private void _updateAppearance()
{ {
_appearance.SetData(BallisticMagazineVisuals.AmmoLeft, CountLoaded); _appearance.SetData(BallisticMagazineVisuals.AmmoLeft, CountLoaded);

View File

@@ -0,0 +1,118 @@
# Empty boxes
- type: entity
id: box_32_empty
name: ".32 box - empty"
parent: BaseItem
abstract: true
components:
- type: AmmoBox
caliber: A32
capacity: 40
- type: Sprite
netsync: false
# Ammo boxes
- type: entity
id: box_32
name: ".32 box"
parent: box_32_empty
components:
- type: AmmoBox
fill: ammo_casing_32
caliber: A32
capacity: 40
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.32/box32.rsi
state: box32-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.32/box32.rsi
state: box32-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box32
steps: 2
- type: entity
id: box_32f
name: ".32 box (Flash)"
parent: box_32_empty
components:
- type: AmmoBox
fill: ammo_casing_32_flash
caliber: A32
capacity: 40
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.32/box32-flash.rsi
state: box32-flash-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.32/box32-flash.rsi
state: box32-flash-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box32-flash
steps: 2
- type: entity
id: box_32hv
name: ".32 box (High-velocity)"
parent: box_32_empty
components:
- type: AmmoBox
fill: ammo_casing_32_hv
caliber: A32
capacity: 40
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.32/box32-hv.rsi
state: box32-hv-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.32/box32-hv.rsi
state: box32-hv-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box32-hv
steps: 2
- type: entity
id: box_32p
name: ".32 box (Practice)"
parent: box_32_empty
components:
- type: AmmoBox
fill: ammo_casing_32_p
caliber: A32
capacity: 40
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.32/box32-practice.rsi
state: box32-practice-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.32/box32-practice.rsi
state: box32-practice-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box32-practice
steps: 2
- type: entity
id: box_32r
name: ".32 box (Rubber)"
parent: box_32_empty
components:
- type: AmmoBox
fill: ammo_casing_32_r
caliber: A32
capacity: 40
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.32/box32-rubber.rsi
state: box32-rubber-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.32/box32-rubber.rsi
state: box32-rubber-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box32-rubber
steps: 2

View File

@@ -0,0 +1,118 @@
# Empty boxes
- type: entity
id: box_357_empty
name: ".357 box - empty"
parent: BaseItem
abstract: true
components:
- type: AmmoBox
caliber: A357
capacity: 40
- type: Sprite
netsync: false
# Ammo boxes
- type: entity
id: box_357
name: ".357 box"
parent: box_357_empty
components:
- type: AmmoBox
fill: ammo_casing_357
caliber: A357
capacity: 40
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.357/box357.rsi
state: box357-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.357/box357.rsi
state: box357-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box357
steps: 2
- type: entity
id: box_357f
name: ".357 box (Flash)"
parent: box_357_empty
components:
- type: AmmoBox
fill: ammo_casing_357_flash
caliber: A357
capacity: 40
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.357/box357-flash.rsi
state: box357-flash-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.357/box357-flash.rsi
state: box357-flash-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box357-flash
steps: 2
- type: entity
id: box_357hv
name: ".357 box (High-velocity)"
parent: box_357_empty
components:
- type: AmmoBox
fill: ammo_casing_357_hv
caliber: A357
capacity: 40
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.357/box357-hv.rsi
state: box357-hv-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.357/box357-hv.rsi
state: box357-hv-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box357-hv
steps: 2
- type: entity
id: box_357p
name: ".357 box (Practice)"
parent: box_357_empty
components:
- type: AmmoBox
fill: ammo_casing_357_p
caliber: A357
capacity: 40
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.357/box357-practice.rsi
state: box357-practice-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.357/box357-practice.rsi
state: box357-practice-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box357-practice
steps: 2
- type: entity
id: box_357r
name: ".357 box (Rubber)"
parent: box_357_empty
components:
- type: AmmoBox
fill: ammo_casing_357_r
caliber: A357
capacity: 40
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.357/box357-rubber.rsi
state: box357-rubber-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.357/box357-rubber.rsi
state: box357-rubber-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box357-rubber
steps: 2

View File

@@ -0,0 +1,118 @@
# Empty boxes
- type: entity
id: box_44_empty
name: ".44 box - empty"
parent: BaseItem
abstract: true
components:
- type: AmmoBox
caliber: A44
capacity: 20
- type: Sprite
netsync: false
# Ammo boxes
- type: entity
id: box_44
name: ".44 box"
parent: box_44_empty
components:
- type: AmmoBox
fill: ammo_casing_44
caliber: A44
capacity: 20
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.44/box44.rsi
state: box44-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.44/box44.rsi
state: box44-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box44
steps: 2
- type: entity
id: box_44f
name: ".44 box (Flash)"
parent: box_44_empty
components:
- type: AmmoBox
fill: ammo_casing_44_flash
caliber: A44
capacity: 20
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.44/box44-flash.rsi
state: box44-flash-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.44/box44-flash.rsi
state: box44-flash-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box44-flash
steps: 2
- type: entity
id: box_44hv
name: ".44 box (High-velocity)"
parent: box_44_empty
components:
- type: AmmoBox
fill: ammo_casing_44_hv
caliber: A44
capacity: 20
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.44/box44-hv.rsi
state: box44-hv-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.44/box44-hv.rsi
state: box44-hv-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box44-hv
steps: 2
- type: entity
id: box_44p
name: ".44 box (Practice)"
parent: box_44_empty
components:
- type: AmmoBox
fill: ammo_casing_44_p
caliber: A44
capacity: 20
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.44/box44-practice.rsi
state: box44-practice-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.44/box44-practice.rsi
state: box44-practice-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box44-practice
steps: 2
- type: entity
id: box_44r
name: ".44 box (Rubber)"
parent: box_44_empty
components:
- type: AmmoBox
fill: ammo_casing_44_r
caliber: A44
capacity: 20
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.44/box44-rubber.rsi
state: box44-rubber-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.44/box44-rubber.rsi
state: box44-rubber-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box44-rubber
steps: 2

View File

@@ -0,0 +1,99 @@
# Empty boxes
- type: entity
id: box_45_empty
name: ".45mm box - empty"
parent: BaseItem
abstract: true
components:
- type: AmmoBox
caliber: A45
capacity: 30
- type: Sprite
netsync: false
# Ammo boxes
- type: entity
id: box_45
name: ".45mm box"
parent: box_45_empty
components:
- type: AmmoBox
fill: ammo_casing_45
caliber: A45
capacity: 30
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.45mm/box45.rsi
state: box45-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.45mm/box45.rsi
state: box45-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box45
steps: 2
- type: entity
id: box_45f
name: ".45mm box (Flash)"
parent: box_45_empty
components:
- type: AmmoBox
fill: ammo_casing_45_flash
caliber: A45
capacity: 30
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.45mm/box45-flash.rsi
state: box45-flash-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.45mm/box45-flash.rsi
state: box45-flash-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box45-flash
steps: 2
# Surprise: no HV
- type: entity
id: box_45p
name: ".45mm box (Practice)"
parent: box_45_empty
components:
- type: AmmoBox
fill: ammo_casing_45_p
caliber: A45
capacity: 30
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.45mm/box45-practice.rsi
state: box45-practice-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.45mm/box45-practice.rsi
state: box45-practice-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box45-practice
steps: 2
- type: entity
id: box_45r
name: ".45mm box (Rubber)"
parent: box_45_empty
components:
- type: AmmoBox
fill: ammo_casing_45_r
caliber: A45
capacity: 30
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.45mm/box45-rubber.rsi
state: box45-rubber-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.45mm/box45-rubber.rsi
state: box45-rubber-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box45-rubber
steps: 2

View File

@@ -38,7 +38,7 @@
parent: magazine_50_empty parent: magazine_50_empty
components: components:
- type: BallisticMagazine - type: BallisticMagazine
fill: ammo_casing_50f fill: ammo_casing_50_f
capacity: 7 capacity: 7
- type: Icon - type: Icon
sprite: Objects/Guns/Ammunition/Magazine/.50/50aef.rsi sprite: Objects/Guns/Ammunition/Magazine/.50/50aef.rsi
@@ -58,7 +58,7 @@
parent: magazine_50_empty parent: magazine_50_empty
components: components:
- type: BallisticMagazine - type: BallisticMagazine
fill: ammo_casing_50hv fill: ammo_casing_50_hv
capacity: 7 capacity: 7
- type: Icon - type: Icon
sprite: Objects/Guns/Ammunition/Magazine/.50/50aehv.rsi sprite: Objects/Guns/Ammunition/Magazine/.50/50aehv.rsi
@@ -78,7 +78,7 @@
parent: magazine_50_empty parent: magazine_50_empty
components: components:
- type: BallisticMagazine - type: BallisticMagazine
fill: ammo_casing_50l fill: ammo_casing_50_l
capacity: 7 capacity: 7
- type: Icon - type: Icon
sprite: Objects/Guns/Ammunition/Magazine/.50/50ael.rsi sprite: Objects/Guns/Ammunition/Magazine/.50/50ael.rsi
@@ -98,7 +98,7 @@
parent: magazine_50_empty parent: magazine_50_empty
components: components:
- type: BallisticMagazine - type: BallisticMagazine
fill: ammo_casing_50p fill: ammo_casing_50_p
capacity: 7 capacity: 7
- type: Icon - type: Icon
sprite: Objects/Guns/Ammunition/Magazine/.50/50aep.rsi sprite: Objects/Guns/Ammunition/Magazine/.50/50aep.rsi
@@ -118,7 +118,7 @@
parent: magazine_50_empty parent: magazine_50_empty
components: components:
- type: BallisticMagazine - type: BallisticMagazine
fill: ammo_casing_50r fill: ammo_casing_50_r
capacity: 7 capacity: 7
- type: Icon - type: Icon
sprite: Objects/Guns/Ammunition/Magazine/.50/50aer.rsi sprite: Objects/Guns/Ammunition/Magazine/.50/50aer.rsi
@@ -150,7 +150,7 @@
state: s-casing state: s-casing
- type: entity - type: entity
id: ammo_casing_50f id: ammo_casing_50_f
name: ".50 cal casing (Flash)" name: ".50 cal casing (Flash)"
parent: BaseItem parent: BaseItem
components: components:
@@ -166,7 +166,7 @@
state: s-casing state: s-casing
- type: entity - type: entity
id: ammo_casing_50hv id: ammo_casing_50_hv
name: ".50 cal casing (High-Velocity)" name: ".50 cal casing (High-Velocity)"
parent: BaseItem parent: BaseItem
components: components:
@@ -182,7 +182,7 @@
state: s-casing state: s-casing
- type: entity - type: entity
id: ammo_casing_50l id: ammo_casing_50_l
name: ".50 cal casing (L)" name: ".50 cal casing (L)"
parent: BaseItem parent: BaseItem
components: components:
@@ -198,7 +198,7 @@
state: s-casing state: s-casing
- type: entity - type: entity
id: ammo_casing_50p id: ammo_casing_50_p
name: ".50 cal casing (Practice)" name: ".50 cal casing (Practice)"
parent: BaseItem parent: BaseItem
components: components:
@@ -214,7 +214,7 @@
state: s-casing state: s-casing
- type: entity - type: entity
id: ammo_casing_50r id: ammo_casing_50_r
name: ".50 cal casing (Rubber)" name: ".50 cal casing (Rubber)"
parent: BaseItem parent: BaseItem
components: components:

View File

@@ -0,0 +1,99 @@
# Empty boxes
- type: entity
id: box_50_empty
name: ".50 cal box - empty"
parent: BaseItem
abstract: true
components:
- type: AmmoBox
caliber: A50
capacity: 20
- type: Sprite
netsync: false
# Ammo boxes
- type: entity
id: box_50
name: ".50 cal box"
parent: box_50_empty
components:
- type: AmmoBox
fill: ammo_casing_50
caliber: A50
capacity: 20
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.50/box50.rsi
state: box50-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.50/box50.rsi
state: box50-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box50
steps: 2
- type: entity
id: box_50f
name: ".50 cal box (Flash)"
parent: box_50_empty
components:
- type: AmmoBox
fill: ammo_casing_50_f
caliber: A50
capacity: 20
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.50/box50-flash.rsi
state: box50-flash-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.50/box50-flash.rsi
state: box50-flash-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box50-flash
steps: 2
# Surprise: no HV
- type: entity
id: box_50p
name: ".50 cal box (Practice)"
parent: box_50_empty
components:
- type: AmmoBox
fill: ammo_casing_50_p
caliber: A50
capacity: 20
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.50/box50-practice.rsi
state: box50-practice-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.50/box50-practice.rsi
state: box50-practice-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box50-practice
steps: 2
- type: entity
id: box_50r
name: ".50 cal box (Rubber)"
parent: box_50_empty
components:
- type: AmmoBox
fill: ammo_casing_50_r
caliber: A50
capacity: 20
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/.50/box50-rubber.rsi
state: box50-rubber-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/.50/box50-rubber.rsi
state: box50-rubber-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box50-rubber
steps: 2

View File

@@ -166,7 +166,7 @@
parent: magazine_10mm_empty parent: magazine_10mm_empty
components: components:
- type: BallisticMagazine - type: BallisticMagazine
fill: ammo_casing_10mm_f fill: ammo_casing_10mm_flash
caliber: A10mm caliber: A10mm
magazine: A10mmSMG magazine: A10mmSMG
capacity: 20 capacity: 20

View File

@@ -0,0 +1,118 @@
# Empty boxes
- type: entity
id: box_10mm_empty
name: "10mm box - empty"
parent: BaseItem
abstract: true
components:
- type: AmmoBox
caliber: A10mm
capacity: 30
- type: Sprite
netsync: false
# Ammo boxes
- type: entity
id: box_10mm
name: "10mm box"
parent: box_10mm_empty
components:
- type: AmmoBox
fill: ammo_casing_10mm
caliber: A10mm
capacity: 30
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/10mm/box10mm.rsi
state: box10mm-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/10mm/box10mm.rsi
state: box10mm-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box10mm
steps: 2
- type: entity
id: box_10mmf
name: "10mm box (Flash)"
parent: box_10mm_empty
components:
- type: AmmoBox
fill: ammo_casing_10mm_flash
caliber: A10mm
capacity: 30
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/10mm/box10mm-flash.rsi
state: box10mm-flash-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/10mm/box10mm-flash.rsi
state: box10mm-flash-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box10mm-flash
steps: 2
- type: entity
id: box_10mmhv
name: "10mm box (High-velocity)"
parent: box_10mm_empty
components:
- type: AmmoBox
fill: ammo_casing_10mm_hv
caliber: A10mm
capacity: 30
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/10mm/box10mm-hv.rsi
state: box10mm-hv-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/10mm/box10mm-hv.rsi
state: box10mm-hv-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box10mm-hv
steps: 2
- type: entity
id: box_10mmp
name: "10mm box (Practice)"
parent: box_10mm_empty
components:
- type: AmmoBox
fill: ammo_casing_10mm_p
caliber: A10mm
capacity: 30
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/10mm/box10mm-practice.rsi
state: box10mm-practice-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/10mm/box10mm-practice.rsi
state: box10mm-practice-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box10mm-practice
steps: 2
- type: entity
id: box_10mmr
name: "10mm box (Rubber)"
parent: box_10mm_empty
components:
- type: AmmoBox
fill: ammo_casing_10mm_r
caliber: A10mm
capacity: 30
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/10mm/box10mm-rubber.rsi
state: box10mm-rubber-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/10mm/box10mm-rubber.rsi
state: box10mm-rubber-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box10mm-rubber
steps: 2

View File

@@ -0,0 +1,34 @@
# Empty boxes
- type: entity
id: box_24mm_empty
name: "7.62mm box - empty"
parent: BaseItem
abstract: true
components:
- type: AmmoBox
caliber: A24mm
capacity: 200
- type: Sprite
netsync: false
# Ammo boxes
- type: entity
id: box_24mm
name: "24mm box"
parent: box_24mm_empty
components:
- type: AmmoBox
fill: ammo_casing_24mm
caliber: A24mm
capacity: 200
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/24mm/box10x24.rsi
state: box10x24-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/24mm/box10x24.rsi
state: box10x24-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box10x24
steps: 2

View File

@@ -0,0 +1,55 @@
# Empty boxes
- type: entity
id: box_556mm_empty
name: "5.56mm box - empty"
parent: BaseItem
abstract: true
components:
- type: AmmoBox
caliber: A556mm
capacity: 80
- type: Sprite
netsync: false
# Ammo boxes
- type: entity
id: box_556mm
name: "5.56mm box"
parent: box_556mm_empty
components:
- type: AmmoBox
fill: ammo_casing_556mm
caliber: A556mm
capacity: 80
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/5.56mm/box556mm.rsi
state: box556mm-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/5.56mm/box556mm.rsi
state: box556mm-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box556mm
steps: 2
- type: entity
id: box_556mmp
name: "5.56mm box (Practice)"
parent: box_556mm_empty
components:
- type: AmmoBox
fill: ammo_casing_556mm_p
caliber: A556mm
capacity: 80
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/5.56mm/box556mm-practice.rsi
state: box556mm-practice-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/5.56mm/box556mm-practice.rsi
state: box556mm-practice-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box556mm-practice
steps: 2

View File

@@ -0,0 +1,55 @@
# Empty boxes
- type: entity
id: box_65mm_empty
name: "6.5mm box - empty"
parent: BaseItem
abstract: true
components:
- type: AmmoBox
caliber: A65mm
capacity: 80
- type: Sprite
netsync: false
# Ammo boxes
- type: entity
id: box_65mm
name: "6.5mm box"
parent: box_65mm_empty
components:
- type: AmmoBox
fill: ammo_casing_65mm
caliber: A65mm
capacity: 80
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/6.5mm/box65mm.rsi
state: box65mm-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/6.5mm/box65mm.rsi
state: box65mm-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box65mm
steps: 2
- type: entity
id: box_65mmr
name: "6.5mm box (Rubber)"
parent: box_65mm_empty
components:
- type: AmmoBox
fill: ammo_casing_65mm_r
caliber: A65mm
capacity: 80
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/6.5mm/box65mm-rubber.rsi
state: box65mm-rubber-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/6.5mm/box65mm-rubber.rsi
state: box65mm-rubber-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box65mm-rubber
steps: 2

View File

@@ -0,0 +1,34 @@
# Empty boxes
- type: entity
id: box_762mm_empty
name: "7.62mm box - empty"
parent: BaseItem
abstract: true
components:
- type: AmmoBox
caliber: A762mm
capacity: 80
- type: Sprite
netsync: false
# Ammo boxes
- type: entity
id: box_762mm
name: "7.62mm box"
parent: box_762mm_empty
components:
- type: AmmoBox
fill: ammo_casing_762mm
caliber: A762mm
capacity: 80
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/7.62mm/box762mm.rsi
state: box762mm-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/7.62mm/box762mm.rsi
state: box762mm-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box762mm
steps: 2

View File

@@ -0,0 +1,118 @@
# Empty boxes
- type: entity
id: box_9mm_empty
name: "9mm box - empty"
parent: BaseItem
abstract: true
components:
- type: AmmoBox
caliber: A9mm
capacity: 30
- type: Sprite
netsync: false
# Ammo boxes
- type: entity
id: box_9mm
name: "9mm box"
parent: box_9mm_empty
components:
- type: AmmoBox
fill: ammo_casing_9mm
caliber: A9mm
capacity: 30
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/9mm/box9mm.rsi
state: box9mm-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/9mm/box9mm.rsi
state: box9mm-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box9mm
steps: 2
- type: entity
id: box_9mmf
name: "9mm box (Flash)"
parent: box_9mm_empty
components:
- type: AmmoBox
fill: ammo_casing_9mm_flash
caliber: A9mm
capacity: 30
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/9mm/box9mm-flash.rsi
state: box9mm-flash-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/9mm/box9mm-flash.rsi
state: box9mm-flash-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box9mm-flash
steps: 2
- type: entity
id: box_9mmhv
name: "9mm box (High-velocity)"
parent: box_9mm_empty
components:
- type: AmmoBox
fill: ammo_casing_9mm_hv
caliber: A9mm
capacity: 30
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/9mm/box9mm-hv.rsi
state: box9mm-hv-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/9mm/box9mm-hv.rsi
state: box9mm-hv-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box9mm-hv
steps: 2
- type: entity
id: box_9mmp
name: "9mm box (Practice)"
parent: box_9mm_empty
components:
- type: AmmoBox
fill: ammo_casing_9mm_p
caliber: A9mm
capacity: 30
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/9mm/box9mm-practice.rsi
state: box9mm-practice-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/9mm/box9mm-practice.rsi
state: box9mm-practice-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box9mm-practice
steps: 2
- type: entity
id: box_9mmr
name: "9mm box (Rubber)"
parent: box_9mm_empty
components:
- type: AmmoBox
fill: ammo_casing_9mm_r
caliber: A9mm
capacity: 30
- type: Icon
sprite: Objects/Guns/Ammunition/Boxes/9mm/box9mm-rubber.rsi
state: box9mm-rubber-1
- type: Sprite
sprite: Objects/Guns/Ammunition/Boxes/9mm/box9mm-rubber.rsi
state: box9mm-rubber-1
- type: Appearance
visuals:
- type: BallisticMagazineVisualizer2D
base_state: box9mm-rubber
steps: 2

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box32-flash", "directions": 1}, {"name": "box32-flash-0", "directions": 1}, {"name": "box32-flash-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box32-hv", "directions": 1}, {"name": "box32-hv-0", "directions": 1}, {"name": "box32-hv-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box32-practice", "directions": 1}, {"name": "box32-practice-0", "directions": 1}, {"name": "box32-practice-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box32-rubber", "directions": 1}, {"name": "box32-rubber-0", "directions": 1}, {"name": "box32-rubber-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box32", "directions": 1}, {"name": "box32-0", "directions": 1}, {"name": "box32-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 392 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 471 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 471 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box357-flash", "directions": 1}, {"name": "box357-flash-0", "directions": 1}, {"name": "box357-flash-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box357-hv", "directions": 1}, {"name": "box357-hv-0", "directions": 1}, {"name": "box357-hv-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box357-practice", "directions": 1}, {"name": "box357-practice-0", "directions": 1}, {"name": "box357-practice-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 402 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box357-rubber", "directions": 1}, {"name": "box357-rubber-0", "directions": 1}, {"name": "box357-rubber-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box357", "directions": 1}, {"name": "box357-0", "directions": 1}, {"name": "box357-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box44-flash", "directions": 1}, {"name": "box44-flash-0", "directions": 1}, {"name": "box44-flash-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box44-hv", "directions": 1}, {"name": "box44-hv-0", "directions": 1}, {"name": "box44-hv-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box44-practice", "directions": 1}, {"name": "box44-practice-0", "directions": 1}, {"name": "box44-practice-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box44-rubber", "directions": 1}, {"name": "box44-rubber-0", "directions": 1}, {"name": "box44-rubber-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box44", "directions": 1}, {"name": "box44-0", "directions": 1}, {"name": "box44-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box45-flash", "directions": 1}, {"name": "box45-flash-0", "directions": 1}, {"name": "box45-flash-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 491 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 491 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box45-practice", "directions": 1}, {"name": "box45-practice-0", "directions": 1}, {"name": "box45-practice-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box45-rubber", "directions": 1}, {"name": "box45-rubber-0", "directions": 1}, {"name": "box45-rubber-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 487 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 487 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box45", "directions": 1}, {"name": "box45-0", "directions": 1}, {"name": "box45-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 392 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box50-flash", "directions": 1}, {"name": "box50-flash-0", "directions": 1}, {"name": "box50-flash-1", "directions": 1}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

View File

@@ -0,0 +1 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi", "states": [{"name": "box50-hv", "directions": 1}, {"name": "box50-hv-0", "directions": 1}, {"name": "box50-hv-1", "directions": 1}]}

Some files were not shown because too many files have changed in this diff Show More