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
@@ -43,6 +43,7 @@ namespace Content.Client
|
|||||||
|
|
||||||
var registerIgnore = new[]
|
var registerIgnore = new[]
|
||||||
{
|
{
|
||||||
|
"AmmoBox",
|
||||||
"Breakable",
|
"Breakable",
|
||||||
"Pickaxe",
|
"Pickaxe",
|
||||||
"Interactable",
|
"Interactable",
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
|
|||||||
118
Resources/Prototypes/Entities/Weapons/Ammunition/.32/boxes.yml
Normal 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
|
||||||
118
Resources/Prototypes/Entities/Weapons/Ammunition/.357/boxes.yml
Normal 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
|
||||||
118
Resources/Prototypes/Entities/Weapons/Ammunition/.44/boxes.yml
Normal 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
|
||||||
@@ -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
|
||||||
@@ -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:
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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
|
||||||
|
|||||||
118
Resources/Prototypes/Entities/Weapons/Ammunition/10mm/boxes.yml
Normal 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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
118
Resources/Prototypes/Entities/Weapons/Ammunition/9mm/boxes.yml
Normal 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
|
||||||
|
After Width: | Height: | Size: 407 B |
|
After Width: | Height: | Size: 439 B |
|
After Width: | Height: | Size: 439 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 445 B |
|
After Width: | Height: | Size: 460 B |
|
After Width: | Height: | Size: 460 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 435 B |
|
After Width: | Height: | Size: 467 B |
|
After Width: | Height: | Size: 467 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 431 B |
|
After Width: | Height: | Size: 464 B |
|
After Width: | Height: | Size: 464 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 420 B |
|
After Width: | Height: | Size: 453 B |
|
After Width: | Height: | Size: 453 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 392 B |
|
After Width: | Height: | Size: 471 B |
|
After Width: | Height: | Size: 471 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 409 B |
|
After Width: | Height: | Size: 476 B |
|
After Width: | Height: | Size: 476 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 399 B |
|
After Width: | Height: | Size: 453 B |
|
After Width: | Height: | Size: 453 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 402 B |
|
After Width: | Height: | Size: 478 B |
|
After Width: | Height: | Size: 478 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 393 B |
|
After Width: | Height: | Size: 450 B |
|
After Width: | Height: | Size: 450 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 416 B |
|
After Width: | Height: | Size: 441 B |
|
After Width: | Height: | Size: 441 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 423 B |
|
After Width: | Height: | Size: 442 B |
|
After Width: | Height: | Size: 442 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 423 B |
|
After Width: | Height: | Size: 442 B |
|
After Width: | Height: | Size: 442 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 424 B |
|
After Width: | Height: | Size: 443 B |
|
After Width: | Height: | Size: 443 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 412 B |
|
After Width: | Height: | Size: 436 B |
|
After Width: | Height: | Size: 436 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 457 B |
|
After Width: | Height: | Size: 494 B |
|
After Width: | Height: | Size: 494 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 457 B |
|
After Width: | Height: | Size: 491 B |
|
After Width: | Height: | Size: 491 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 457 B |
|
After Width: | Height: | Size: 498 B |
|
After Width: | Height: | Size: 498 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 453 B |
|
After Width: | Height: | Size: 487 B |
|
After Width: | Height: | Size: 487 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 392 B |
|
After Width: | Height: | Size: 421 B |
|
After Width: | Height: | Size: 421 B |
@@ -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}]}
|
||||||
|
After Width: | Height: | Size: 393 B |
|
After Width: | Height: | Size: 421 B |
|
After Width: | Height: | Size: 421 B |
@@ -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}]}
|
||||||