Всякое по мелочи (#148)
* fix: у мартышек снова отображается одежда * fix: с зеркалом снова можно взаимодействовать * tweak: шлюзы культа теперь работают как двери, а не шлюзы * remove: убрано отображение текущего патрона у револьверов * add: новые плитки для мапперов
@@ -102,13 +102,8 @@ public sealed class ClientClothingSystem : ClothingSystem
|
|||||||
// if that returned nothing, attempt to find generic data
|
// if that returned nothing, attempt to find generic data
|
||||||
if (layers == null && !item.ClothingVisuals.TryGetValue(args.Slot, out layers))
|
if (layers == null && !item.ClothingVisuals.TryGetValue(args.Slot, out layers))
|
||||||
{
|
{
|
||||||
if (!TryComp(args.Equipee, out HumanoidAppearanceComponent? humanoid))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// No generic data either. Attempt to generate defaults from the item's RSI & item-prefixes
|
// No generic data either. Attempt to generate defaults from the item's RSI & item-prefixes
|
||||||
if (!TryGetDefaultVisuals(uid, item, args.Slot, inventory.SpeciesId, humanoid, out layers))
|
if (!TryGetDefaultVisuals(uid, item, args.Slot, inventory.SpeciesId, args.Equipee, out layers))
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -139,7 +134,7 @@ public sealed class ClientClothingSystem : ClothingSystem
|
|||||||
ClothingComponent clothing,
|
ClothingComponent clothing,
|
||||||
string slot,
|
string slot,
|
||||||
string? speciesId,
|
string? speciesId,
|
||||||
HumanoidAppearanceComponent humanoid,
|
EntityUid? target,
|
||||||
[NotNullWhen(true)] out List<PrototypeLayerData>? layers)
|
[NotNullWhen(true)] out List<PrototypeLayerData>? layers)
|
||||||
{
|
{
|
||||||
layers = null;
|
layers = null;
|
||||||
@@ -166,10 +161,13 @@ public sealed class ClientClothingSystem : ClothingSystem
|
|||||||
state = $"{clothing.EquippedState}";
|
state = $"{clothing.EquippedState}";
|
||||||
|
|
||||||
// body type specific
|
// body type specific
|
||||||
var bodyTypeProto = _prototypeManager.Index<BodyTypePrototype>(humanoid.BodyType);
|
if (TryComp(target, out HumanoidAppearanceComponent? humanoid))
|
||||||
if (rsi.TryGetState($"{state}-{bodyTypeProto.Name}", out _))
|
|
||||||
{
|
{
|
||||||
state = $"{state}-{bodyTypeProto.Name}";
|
var bodyTypeProto = _prototypeManager.Index<BodyTypePrototype>(humanoid.BodyType);
|
||||||
|
if (rsi.TryGetState($"{state}-{bodyTypeProto.Name}", out _))
|
||||||
|
{
|
||||||
|
state = $"{state}-{bodyTypeProto.Name}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// species specific
|
// species specific
|
||||||
@@ -389,4 +387,4 @@ public sealed class ClientClothingSystem : ClothingSystem
|
|||||||
|
|
||||||
sprite.LayerSetVisible(layer, true);
|
sprite.LayerSetVisible(layer, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -434,7 +434,7 @@ public sealed partial class GunSystem
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Update(int currentIndex, bool?[] bullets)
|
public void Update(bool?[] bullets)
|
||||||
{
|
{
|
||||||
_bulletsList.RemoveAllChildren();
|
_bulletsList.RemoveAllChildren();
|
||||||
var capacity = bullets.Length;
|
var capacity = bullets.Length;
|
||||||
@@ -456,10 +456,10 @@ public sealed partial class GunSystem
|
|||||||
var texture = StaticIoC.ResC.GetTexture(texturePath);
|
var texture = StaticIoC.ResC.GetTexture(texturePath);
|
||||||
var spentTexture = StaticIoC.ResC.GetTexture("/Textures/Interface/ItemStatus/Bullets/empty.png");
|
var spentTexture = StaticIoC.ResC.GetTexture("/Textures/Interface/ItemStatus/Bullets/empty.png");
|
||||||
|
|
||||||
FillBulletRow(currentIndex, bullets, _bulletsList, texture, spentTexture);
|
FillBulletRow(bullets, _bulletsList, texture, spentTexture);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FillBulletRow(int currentIndex, bool?[] bullets, Control container, Texture texture, Texture emptyTexture)
|
private void FillBulletRow(bool?[] bullets, Control container, Texture texture, Texture emptyTexture)
|
||||||
{
|
{
|
||||||
var capacity = bullets.Length;
|
var capacity = bullets.Length;
|
||||||
var colorA = Color.FromHex("#b68f0e");
|
var colorA = Color.FromHex("#b68f0e");
|
||||||
@@ -467,7 +467,6 @@ public sealed partial class GunSystem
|
|||||||
var colorSpentA = Color.FromHex("#b50e25");
|
var colorSpentA = Color.FromHex("#b50e25");
|
||||||
var colorSpentB = Color.FromHex("#d3745f");
|
var colorSpentB = Color.FromHex("#d3745f");
|
||||||
var colorGoneA = Color.FromHex("#000000");
|
var colorGoneA = Color.FromHex("#000000");
|
||||||
var colorGoneB = Color.FromHex("#222222");
|
|
||||||
|
|
||||||
var altColor = false;
|
var altColor = false;
|
||||||
var scale = 1.3f;
|
var scale = 1.3f;
|
||||||
@@ -480,15 +479,6 @@ public sealed partial class GunSystem
|
|||||||
{
|
{
|
||||||
MinSize = texture.Size * scale,
|
MinSize = texture.Size * scale,
|
||||||
};
|
};
|
||||||
if (i == currentIndex)
|
|
||||||
{
|
|
||||||
box.AddChild(new TextureRect
|
|
||||||
{
|
|
||||||
Texture = texture,
|
|
||||||
TextureScale = new Vector2(scale, scale),
|
|
||||||
ModulateSelfOverride = Color.LimeGreen,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
Color color;
|
Color color;
|
||||||
Texture bulletTexture = texture;
|
Texture bulletTexture = texture;
|
||||||
|
|
||||||
@@ -506,7 +496,7 @@ public sealed partial class GunSystem
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
color = altColor ? colorGoneA : colorGoneB;
|
color = colorGoneA;
|
||||||
}
|
}
|
||||||
|
|
||||||
box.AddChild(new TextureRect
|
box.AddChild(new TextureRect
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ public sealed partial class GunSystem
|
|||||||
private void OnRevolverAmmoUpdate(EntityUid uid, RevolverAmmoProviderComponent component, UpdateAmmoCounterEvent args)
|
private void OnRevolverAmmoUpdate(EntityUid uid, RevolverAmmoProviderComponent component, UpdateAmmoCounterEvent args)
|
||||||
{
|
{
|
||||||
if (args.Control is not RevolverStatusControl control) return;
|
if (args.Control is not RevolverStatusControl control) return;
|
||||||
control.Update(component.CurrentIndex, component.Chambers);
|
control.Update(component.Chambers);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnRevolverCounter(EntityUid uid, RevolverAmmoProviderComponent component, AmmoCounterControlEvent args)
|
private void OnRevolverCounter(EntityUid uid, RevolverAmmoProviderComponent component, AmmoCounterControlEvent args)
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ public sealed class MagicMirrorSystem : EntitySystem
|
|||||||
subs.Event<MagicMirrorRemoveSlotMessage>(OnTryMagicMirrorRemoveSlot);
|
subs.Event<MagicMirrorRemoveSlotMessage>(OnTryMagicMirrorRemoveSlot);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
SubscribeLocalEvent<MagicMirrorComponent, InteractHandEvent>(OnMagicMirrorInWorldInteract);
|
||||||
SubscribeLocalEvent<MagicMirrorComponent, AfterInteractEvent>(OnMagicMirrorInteract);
|
SubscribeLocalEvent<MagicMirrorComponent, AfterInteractEvent>(OnMagicMirrorInteract);
|
||||||
|
|
||||||
SubscribeLocalEvent<MagicMirrorComponent, MagicMirrorSelectDoAfterEvent>(OnSelectSlotDoAfter);
|
SubscribeLocalEvent<MagicMirrorComponent, MagicMirrorSelectDoAfterEvent>(OnSelectSlotDoAfter);
|
||||||
@@ -49,9 +50,19 @@ public sealed class MagicMirrorSystem : EntitySystem
|
|||||||
SubscribeLocalEvent<MagicMirrorComponent, BoundUserInterfaceCheckRangeEvent>(OnMirrorRangeCheck);
|
SubscribeLocalEvent<MagicMirrorComponent, BoundUserInterfaceCheckRangeEvent>(OnMirrorRangeCheck);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnMirrorRangeCheck(EntityUid uid, MagicMirrorComponent component, ref BoundUserInterfaceCheckRangeEvent args)
|
private void OnMagicMirrorInWorldInteract(Entity<MagicMirrorComponent> mirror, ref InteractHandEvent args)
|
||||||
{
|
{
|
||||||
if (!Exists(component.Target) || !_interaction.InRangeUnobstructed(uid, component.Target.Value))
|
UpdateInterface(mirror.Owner, args.User, mirror.Comp);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnMirrorRangeCheck(
|
||||||
|
EntityUid uid,
|
||||||
|
MagicMirrorComponent component,
|
||||||
|
ref BoundUserInterfaceCheckRangeEvent args)
|
||||||
|
{
|
||||||
|
component.Target ??= args.Player.AttachedEntity;
|
||||||
|
|
||||||
|
if (!component.Target.HasValue || !_interaction.InRangeUnobstructed(uid, component.Target!.Value))
|
||||||
{
|
{
|
||||||
args.Result = BoundUserInterfaceRangeResult.Fail;
|
args.Result = BoundUserInterfaceRangeResult.Fail;
|
||||||
}
|
}
|
||||||
@@ -92,16 +103,17 @@ public sealed class MagicMirrorSystem : EntitySystem
|
|||||||
Marking = message.Marking,
|
Marking = message.Marking,
|
||||||
};
|
};
|
||||||
|
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.SelectSlotTime, doAfter, uid, target: target, used: uid)
|
_doAfterSystem.TryStartDoAfter(
|
||||||
{
|
new DoAfterArgs(EntityManager, user, component.SelectSlotTime, doAfter, uid, target: target, used: uid)
|
||||||
DistanceThreshold = SharedInteractionSystem.InteractionRange,
|
{
|
||||||
BreakOnTargetMove = true,
|
DistanceThreshold = SharedInteractionSystem.InteractionRange,
|
||||||
BreakOnDamage = true,
|
BreakOnTargetMove = true,
|
||||||
BreakOnHandChange = false,
|
BreakOnDamage = true,
|
||||||
BreakOnUserMove = true,
|
BreakOnHandChange = false,
|
||||||
BreakOnWeightlessMove = false,
|
BreakOnUserMove = true,
|
||||||
NeedHand = true
|
BreakOnWeightlessMove = false,
|
||||||
}, out var doAfterId);
|
NeedHand = true
|
||||||
|
}, out var doAfterId);
|
||||||
|
|
||||||
component.DoAfter = doAfterId;
|
component.DoAfter = doAfterId;
|
||||||
_audio.PlayPvs(component.ChangeHairSound, uid);
|
_audio.PlayPvs(component.ChangeHairSound, uid);
|
||||||
@@ -134,7 +146,10 @@ public sealed class MagicMirrorSystem : EntitySystem
|
|||||||
UpdateInterface(uid, component.Target.Value, component);
|
UpdateInterface(uid, component.Target.Value, component);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnTryMagicMirrorChangeColor(EntityUid uid, MagicMirrorComponent component, MagicMirrorChangeColorMessage message)
|
private void OnTryMagicMirrorChangeColor(
|
||||||
|
EntityUid uid,
|
||||||
|
MagicMirrorComponent component,
|
||||||
|
MagicMirrorChangeColorMessage message)
|
||||||
{
|
{
|
||||||
if (component.Target is not { } target || message.Session.AttachedEntity is not { } user)
|
if (component.Target is not { } target || message.Session.AttachedEntity is not { } user)
|
||||||
return;
|
return;
|
||||||
@@ -149,19 +164,24 @@ public sealed class MagicMirrorSystem : EntitySystem
|
|||||||
Colors = message.Colors,
|
Colors = message.Colors,
|
||||||
};
|
};
|
||||||
|
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.ChangeSlotTime, doAfter, uid, target: target, used: uid)
|
_doAfterSystem.TryStartDoAfter(
|
||||||
{
|
new DoAfterArgs(EntityManager, user, component.ChangeSlotTime, doAfter, uid, target: target, used: uid)
|
||||||
BreakOnTargetMove = true,
|
{
|
||||||
BreakOnDamage = true,
|
BreakOnTargetMove = true,
|
||||||
BreakOnHandChange = false,
|
BreakOnDamage = true,
|
||||||
BreakOnUserMove = true,
|
BreakOnHandChange = false,
|
||||||
BreakOnWeightlessMove = false,
|
BreakOnUserMove = true,
|
||||||
NeedHand = true
|
BreakOnWeightlessMove = false,
|
||||||
}, out var doAfterId);
|
NeedHand = true
|
||||||
|
}, out var doAfterId);
|
||||||
|
|
||||||
component.DoAfter = doAfterId;
|
component.DoAfter = doAfterId;
|
||||||
}
|
}
|
||||||
private void OnChangeColorDoAfter(EntityUid uid, MagicMirrorComponent component, MagicMirrorChangeColorDoAfterEvent args)
|
|
||||||
|
private void OnChangeColorDoAfter(
|
||||||
|
EntityUid uid,
|
||||||
|
MagicMirrorComponent component,
|
||||||
|
MagicMirrorChangeColorDoAfterEvent args)
|
||||||
{
|
{
|
||||||
if (args.Handled || args.Target == null || args.Cancelled)
|
if (args.Handled || args.Target == null || args.Cancelled)
|
||||||
return;
|
return;
|
||||||
@@ -189,7 +209,10 @@ public sealed class MagicMirrorSystem : EntitySystem
|
|||||||
// UpdateInterface(uid, component.Target, message.Session);
|
// UpdateInterface(uid, component.Target, message.Session);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnTryMagicMirrorRemoveSlot(EntityUid uid, MagicMirrorComponent component, MagicMirrorRemoveSlotMessage message)
|
private void OnTryMagicMirrorRemoveSlot(
|
||||||
|
EntityUid uid,
|
||||||
|
MagicMirrorComponent component,
|
||||||
|
MagicMirrorRemoveSlotMessage message)
|
||||||
{
|
{
|
||||||
if (component.Target is not { } target || message.Session.AttachedEntity is not { } user)
|
if (component.Target is not { } target || message.Session.AttachedEntity is not { } user)
|
||||||
return;
|
return;
|
||||||
@@ -203,22 +226,26 @@ public sealed class MagicMirrorSystem : EntitySystem
|
|||||||
Slot = message.Slot,
|
Slot = message.Slot,
|
||||||
};
|
};
|
||||||
|
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, user, component.RemoveSlotTime, doAfter, uid, target: target, used: uid)
|
_doAfterSystem.TryStartDoAfter(
|
||||||
{
|
new DoAfterArgs(EntityManager, user, component.RemoveSlotTime, doAfter, uid, target: target, used: uid)
|
||||||
DistanceThreshold = SharedInteractionSystem.InteractionRange,
|
{
|
||||||
BreakOnTargetMove = true,
|
DistanceThreshold = SharedInteractionSystem.InteractionRange,
|
||||||
BreakOnDamage = true,
|
BreakOnTargetMove = true,
|
||||||
BreakOnHandChange = false,
|
BreakOnDamage = true,
|
||||||
BreakOnUserMove = true,
|
BreakOnHandChange = false,
|
||||||
BreakOnWeightlessMove = false,
|
BreakOnUserMove = true,
|
||||||
NeedHand = true
|
BreakOnWeightlessMove = false,
|
||||||
}, out var doAfterId);
|
NeedHand = true
|
||||||
|
}, out var doAfterId);
|
||||||
|
|
||||||
component.DoAfter = doAfterId;
|
component.DoAfter = doAfterId;
|
||||||
_audio.PlayPvs(component.ChangeHairSound, uid);
|
_audio.PlayPvs(component.ChangeHairSound, uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnRemoveSlotDoAfter(EntityUid uid, MagicMirrorComponent component, MagicMirrorRemoveSlotDoAfterEvent args)
|
private void OnRemoveSlotDoAfter(
|
||||||
|
EntityUid uid,
|
||||||
|
MagicMirrorComponent component,
|
||||||
|
MagicMirrorRemoveSlotDoAfterEvent args)
|
||||||
{
|
{
|
||||||
if (args.Handled || args.Target == null || args.Cancelled)
|
if (args.Handled || args.Target == null || args.Cancelled)
|
||||||
return;
|
return;
|
||||||
@@ -245,7 +272,10 @@ public sealed class MagicMirrorSystem : EntitySystem
|
|||||||
UpdateInterface(uid, component.Target.Value, component);
|
UpdateInterface(uid, component.Target.Value, component);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnTryMagicMirrorAddSlot(EntityUid uid, MagicMirrorComponent component, MagicMirrorAddSlotMessage message)
|
private void OnTryMagicMirrorAddSlot(
|
||||||
|
EntityUid uid,
|
||||||
|
MagicMirrorComponent component,
|
||||||
|
MagicMirrorAddSlotMessage message)
|
||||||
{
|
{
|
||||||
if (component.Target == null)
|
if (component.Target == null)
|
||||||
return;
|
return;
|
||||||
@@ -261,7 +291,8 @@ public sealed class MagicMirrorSystem : EntitySystem
|
|||||||
Category = message.Category,
|
Category = message.Category,
|
||||||
};
|
};
|
||||||
|
|
||||||
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, message.Session.AttachedEntity.Value, component.AddSlotTime, doAfter, uid, target: component.Target.Value, used: uid)
|
_doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, message.Session.AttachedEntity.Value,
|
||||||
|
component.AddSlotTime, doAfter, uid, target: component.Target.Value, used: uid)
|
||||||
{
|
{
|
||||||
BreakOnTargetMove = true,
|
BreakOnTargetMove = true,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
@@ -274,9 +305,11 @@ public sealed class MagicMirrorSystem : EntitySystem
|
|||||||
component.DoAfter = doAfterId;
|
component.DoAfter = doAfterId;
|
||||||
_audio.PlayPvs(component.ChangeHairSound, uid);
|
_audio.PlayPvs(component.ChangeHairSound, uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnAddSlotDoAfter(EntityUid uid, MagicMirrorComponent component, MagicMirrorAddSlotDoAfterEvent args)
|
private void OnAddSlotDoAfter(EntityUid uid, MagicMirrorComponent component, MagicMirrorAddSlotDoAfterEvent args)
|
||||||
{
|
{
|
||||||
if (args.Handled || args.Target == null || args.Cancelled || !TryComp(component.Target, out HumanoidAppearanceComponent? humanoid))
|
if (args.Handled || args.Target == null || args.Cancelled ||
|
||||||
|
!TryComp(component.Target, out HumanoidAppearanceComponent? humanoid))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
MarkingCategories category;
|
MarkingCategories category;
|
||||||
@@ -301,7 +334,6 @@ public sealed class MagicMirrorSystem : EntitySystem
|
|||||||
_humanoid.AddMarking(component.Target.Value, marking, Color.Black);
|
_humanoid.AddMarking(component.Target.Value, marking, Color.Black);
|
||||||
|
|
||||||
UpdateInterface(uid, component.Target.Value, component);
|
UpdateInterface(uid, component.Target.Value, component);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateInterface(EntityUid mirrorUid, EntityUid targetUid, MagicMirrorComponent component)
|
private void UpdateInterface(EntityUid mirrorUid, EntityUid targetUid, MagicMirrorComponent component)
|
||||||
@@ -332,4 +364,4 @@ public sealed class MagicMirrorSystem : EntitySystem
|
|||||||
{
|
{
|
||||||
ent.Comp.Target = null;
|
ent.Comp.Target = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
11
Resources/Locale/en-US/_white/tiles.ftl
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
tiles-dark-floor-pavement-alt = тёмное стальное покрытие (альтернативное)
|
||||||
|
tiles-dark-floor-pavement-vertical-alt = тёмное стальное вертикальное покрытие (альтернативное)
|
||||||
|
tiles-dark-floor-herringbone-alt = тёмное стальное покрытие мозаикой (альтернативное)
|
||||||
|
|
||||||
|
tiles-steel-floor-pavement-alt = стальное покрытие (альтернативное)
|
||||||
|
tiles-steel-floor-pavement-vertical-alt = стальное вертикальное покрытие (альтернативное)
|
||||||
|
tiles-steel-floor-herringbone-alt = стальное покрытие мозаикой (альтернативное)
|
||||||
|
|
||||||
|
tiles-white-floor-pavement-alt = белое стальное покрытие (альтернативное)
|
||||||
|
tiles-white-floor-pavement-vertical-alt = белое стальное вертикальное покрытие (альтернативное)
|
||||||
|
tiles-white-floor-herringbone-alt = белое стальное покрытие мозаикой (альтернативное)
|
||||||
@@ -35,8 +35,8 @@ gun-chamber-bolt-closed = Затвор закрыт
|
|||||||
gun-chamber-bolt-opened = Затвор открыт
|
gun-chamber-bolt-opened = Затвор открыт
|
||||||
gun-chamber-bolt-close = Закрыть завтор
|
gun-chamber-bolt-close = Закрыть завтор
|
||||||
gun-chamber-bolt-open = Открыть затвор
|
gun-chamber-bolt-open = Открыть затвор
|
||||||
gun-chamber-bolt-closed-state = закрыт
|
gun-chamber-bolt-closed-state = открыт
|
||||||
gun-chamber-bolt-open-state = открыт
|
gun-chamber-bolt-open-state = закрыт
|
||||||
gun-chamber-rack = Разрядить
|
gun-chamber-rack = Разрядить
|
||||||
|
|
||||||
# MagazineAmmoProvider
|
# MagazineAmmoProvider
|
||||||
|
|||||||
@@ -3,18 +3,19 @@
|
|||||||
name: mirror
|
name: mirror
|
||||||
description: 'Mirror mirror on the wall , who''s the most robust of them all?'
|
description: 'Mirror mirror on the wall , who''s the most robust of them all?'
|
||||||
components:
|
components:
|
||||||
- type: WallMount
|
- type: WallMount
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Wallmounts/mirror.rsi
|
sprite: Structures/Wallmounts/mirror.rsi
|
||||||
state: mirror
|
state: mirror
|
||||||
- type: InteractionOutline
|
- type: InteractionOutline
|
||||||
- type: Clickable
|
- type: Clickable
|
||||||
- type: Transform
|
- type: Transform
|
||||||
anchored: true
|
anchored: true
|
||||||
- type: MagicMirror
|
- type: MagicMirror
|
||||||
- type: ActivatableUI
|
- type: ActivatableUI
|
||||||
key: enum.MagicMirrorUiKey.Key
|
key: enum.MagicMirrorUiKey.Key
|
||||||
- type: UserInterface
|
singleUser: true
|
||||||
interfaces:
|
- type: UserInterface
|
||||||
- key: enum.MagicMirrorUiKey.Key
|
interfaces:
|
||||||
type: MagicMirrorBoundUserInterface
|
- key: enum.MagicMirrorUiKey.Key
|
||||||
|
type: MagicMirrorBoundUserInterface
|
||||||
|
|||||||
162
Resources/Prototypes/White/Tiles/floors.yml
Normal file
@@ -0,0 +1,162 @@
|
|||||||
|
- type: tile
|
||||||
|
id: FloorDarkPavementAlt
|
||||||
|
name: tiles-dark-floor-pavement-alt
|
||||||
|
sprite: /Textures/White/Tiles/dark_pavement.png
|
||||||
|
variants: 4
|
||||||
|
placementVariants:
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
baseTurf: Plating
|
||||||
|
isSubfloor: false
|
||||||
|
deconstructTools: [ Prying ]
|
||||||
|
footstepSounds:
|
||||||
|
collection: FootstepTile
|
||||||
|
itemDrop: FloorTileItemDark
|
||||||
|
heatCapacity: 10000
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
id: FloorDarkPavementVerticalAlt
|
||||||
|
name: tiles-dark-floor-pavement-vertical-alt
|
||||||
|
sprite: /Textures/White/Tiles/dark_pavement_vertical.png
|
||||||
|
variants: 4
|
||||||
|
placementVariants:
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
baseTurf: Plating
|
||||||
|
isSubfloor: false
|
||||||
|
deconstructTools: [ Prying ]
|
||||||
|
footstepSounds:
|
||||||
|
collection: FootstepTile
|
||||||
|
itemDrop: FloorTileItemDark
|
||||||
|
heatCapacity: 10000
|
||||||
|
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
id: FloorDarkHerringboneAlt
|
||||||
|
name: tiles-dark-floor-herringbone-alt
|
||||||
|
sprite: /Textures/White/Tiles/dark_herringbone.png
|
||||||
|
variants: 4
|
||||||
|
placementVariants:
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
baseTurf: Plating
|
||||||
|
isSubfloor: false
|
||||||
|
deconstructTools: [ Prying ]
|
||||||
|
footstepSounds:
|
||||||
|
collection: FootstepTile
|
||||||
|
itemDrop: FloorTileItemDark
|
||||||
|
heatCapacity: 10000
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
id: FloorSteelHerringboneAlt
|
||||||
|
name: tiles-steel-floor-herringbone-alt
|
||||||
|
sprite: /Textures/White/Tiles/steel_herringbone.png
|
||||||
|
variants: 4
|
||||||
|
placementVariants:
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
baseTurf: Plating
|
||||||
|
isSubfloor: false
|
||||||
|
deconstructTools: [ Prying ]
|
||||||
|
footstepSounds:
|
||||||
|
collection: FootstepTile
|
||||||
|
itemDrop: FloorTileItemSteel
|
||||||
|
heatCapacity: 10000
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
id: FloorSteelPavementAlt
|
||||||
|
name: tiles-steel-floor-pavement-alt
|
||||||
|
sprite: /Textures/White/Tiles/steel_pavement.png
|
||||||
|
variants: 4
|
||||||
|
placementVariants:
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
baseTurf: Plating
|
||||||
|
isSubfloor: false
|
||||||
|
deconstructTools: [ Prying ]
|
||||||
|
footstepSounds:
|
||||||
|
collection: FootstepFloor
|
||||||
|
itemDrop: FloorTileItemSteel
|
||||||
|
heatCapacity: 10000
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
id: FloorSteelPavementVerticalAlt
|
||||||
|
name: tiles-steel-floor-pavement-vertical-alt
|
||||||
|
sprite: /Textures/White/Tiles/steel_pavement_vertical.png
|
||||||
|
variants: 4
|
||||||
|
placementVariants:
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
baseTurf: Plating
|
||||||
|
isSubfloor: false
|
||||||
|
deconstructTools: [ Prying ]
|
||||||
|
footstepSounds:
|
||||||
|
collection: FootstepTile
|
||||||
|
itemDrop: FloorTileItemSteel
|
||||||
|
heatCapacity: 10000
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
id: FloorWhiteHerringboneAlt
|
||||||
|
name: tiles-white-floor-herringbone-alt
|
||||||
|
sprite: /Textures/White/Tiles/white_herringbone.png
|
||||||
|
variants: 4
|
||||||
|
placementVariants:
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
baseTurf: Plating
|
||||||
|
isSubfloor: false
|
||||||
|
deconstructTools: [ Prying ]
|
||||||
|
footstepSounds:
|
||||||
|
collection: FootstepTile
|
||||||
|
itemDrop: FloorTileItemWhite
|
||||||
|
heatCapacity: 10000
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
id: FloorWhitePavementAlt
|
||||||
|
name: tiles-white-floor-pavement-alt
|
||||||
|
sprite: /Textures/White/Tiles/white_pavement.png
|
||||||
|
variants: 4
|
||||||
|
placementVariants:
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
baseTurf: Plating
|
||||||
|
isSubfloor: false
|
||||||
|
deconstructTools: [ Prying ]
|
||||||
|
footstepSounds:
|
||||||
|
collection: FootstepTile
|
||||||
|
itemDrop: FloorTileItemWhite
|
||||||
|
heatCapacity: 10000
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
id: FloorWhitePavementVerticalAlt
|
||||||
|
name: tiles-white-floor-pavement-vertical-alt
|
||||||
|
sprite: /Textures/White/Tiles/white_pavement_vertical.png
|
||||||
|
variants: 4
|
||||||
|
placementVariants:
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
- 1.0
|
||||||
|
baseTurf: Plating
|
||||||
|
isSubfloor: false
|
||||||
|
deconstructTools: [ Prying ]
|
||||||
|
footstepSounds:
|
||||||
|
collection: FootstepTile
|
||||||
|
itemDrop: FloorTileItemWhite
|
||||||
|
heatCapacity: 10000
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: AirlockGlassCult
|
id: AirlockGlassCult
|
||||||
parent: BaseStructure
|
parent: BaseMaterialDoor
|
||||||
name: runic airlock
|
name: runic airlock
|
||||||
description: Strange glass airlock with a rune.
|
description: Strange glass airlock with a rune.
|
||||||
components:
|
components:
|
||||||
@@ -8,65 +8,32 @@
|
|||||||
soundGroups:
|
soundGroups:
|
||||||
Brute:
|
Brute:
|
||||||
collection: GlassSmash
|
collection: GlassSmash
|
||||||
- type: InteractionOutline
|
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: /Textures/White/Cult/Structures/cult_airlock.rsi
|
sprite: /Textures/White/Cult/Structures/cult_airlock.rsi
|
||||||
layers:
|
layers:
|
||||||
- state: closed
|
- state: closed
|
||||||
map: ["enum.DoorVisualLayers.Base"]
|
map: ["enum.DoorVisualLayers.Base"]
|
||||||
- state: closed_unlit
|
|
||||||
shader: unshaded
|
|
||||||
map: ["enum.DoorVisualLayers.BaseUnlit"]
|
|
||||||
- state: welded
|
|
||||||
map: ["enum.WeldableLayers.BaseWelded"]
|
|
||||||
visible: false
|
|
||||||
- state: bolted_unlit
|
|
||||||
shader: unshaded
|
|
||||||
map: ["enum.DoorVisualLayers.BaseBolted"]
|
|
||||||
- state: emergency_unlit
|
|
||||||
map: ["enum.DoorVisualLayers.BaseEmergencyAccess"]
|
|
||||||
shader: unshaded
|
|
||||||
- state: panel_closed
|
|
||||||
map: ["enum.WiresVisualLayers.MaintenancePanel"]
|
|
||||||
visible: false
|
|
||||||
- type: AnimationPlayer
|
|
||||||
- type: Physics
|
- type: Physics
|
||||||
- type: Fixtures
|
bodyType: Static
|
||||||
fixtures:
|
- type: Occluder
|
||||||
fix1:
|
enabled: false
|
||||||
shape:
|
|
||||||
!type:PhysShapeAabb
|
|
||||||
bounds: "-0.49,-0.49,0.49,0.49" # don't want this colliding with walls or they won't close
|
|
||||||
density: 100
|
|
||||||
mask:
|
|
||||||
- FullTileMask
|
|
||||||
layer:
|
|
||||||
- GlassAirlockLayer
|
|
||||||
- type: Door
|
- type: Door
|
||||||
occludes: false
|
occludes: false
|
||||||
|
bumpOpen: true
|
||||||
crushDamage:
|
crushDamage:
|
||||||
types:
|
types:
|
||||||
Blunt: 15
|
Blunt: 15
|
||||||
openSound:
|
openSound:
|
||||||
path: /Audio/Machines/airlock_open.ogg
|
path: /Audio/Effects/stonedoor_openclose.ogg
|
||||||
closeSound:
|
closeSound:
|
||||||
path: /Audio/Machines/airlock_close.ogg
|
path: /Audio/Effects/stonedoor_openclose.ogg
|
||||||
denySound:
|
denySound:
|
||||||
path: /Audio/Machines/airlock_deny.ogg
|
path: /Audio/Machines/airlock_deny.ogg
|
||||||
- type: Airlock
|
|
||||||
openUnlitVisible: true
|
|
||||||
- type: DoorBolt
|
|
||||||
- type: Appearance
|
|
||||||
- type: Airtight
|
- type: Airtight
|
||||||
fixVacuum: true
|
fixVacuum: true
|
||||||
noAirWhenFullyAirBlocked: false
|
noAirWhenFullyAirBlocked: false
|
||||||
- type: RadiationBlocker
|
- type: RadiationBlocker
|
||||||
resistance: 2
|
resistance: 2
|
||||||
- type: Occluder
|
|
||||||
enabled: false
|
|
||||||
- type: Damageable
|
|
||||||
damageContainer: Inorganic
|
|
||||||
damageModifierSet: Metallic
|
|
||||||
- type: Destructible
|
- type: Destructible
|
||||||
thresholds:
|
thresholds:
|
||||||
- trigger:
|
- trigger:
|
||||||
@@ -76,8 +43,6 @@
|
|||||||
- !type:DoActsBehavior
|
- !type:DoActsBehavior
|
||||||
acts: ["Destruction"]
|
acts: ["Destruction"]
|
||||||
- type: RunicDoor
|
- type: RunicDoor
|
||||||
- type: ApcPowerReceiver
|
|
||||||
needsPower: false
|
|
||||||
- type: Construction
|
- type: Construction
|
||||||
graph: AirlockGlassCult
|
graph: AirlockGlassCult
|
||||||
node: airlock
|
node: airlock
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 120 B |
|
Before Width: | Height: | Size: 298 B |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 120 B |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 946 B |
|
Before Width: | Height: | Size: 675 B |
|
Before Width: | Height: | Size: 120 B |
|
Before Width: | Height: | Size: 312 B |
@@ -41,157 +41,6 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "assembly"
|
"name": "assembly"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "bolted_unlit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "welded"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "closing_unlit",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "deny_unlit",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "emergency_unlit",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
1.2,
|
|
||||||
1.2
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "opening_unlit",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "panel_closed"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "panel_open"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "panel_opening",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "panel_closing",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "sparks",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "sparks_damaged",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
1.7
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "sparks_open",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "sparks_broken",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1,
|
|
||||||
0.1
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "bolted_open_unlit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "closed_unlit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "emergency_open_unlit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "open_unlit"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 120 B |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 962 B |
|
Before Width: | Height: | Size: 328 B |
|
Before Width: | Height: | Size: 576 B |
|
Before Width: | Height: | Size: 120 B |
|
Before Width: | Height: | Size: 617 B |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 448 B |
|
Before Width: | Height: | Size: 507 B |
|
Before Width: | Height: | Size: 420 B |
|
Before Width: | Height: | Size: 356 B |
BIN
Resources/Textures/White/Tiles/dark_herringbone.png
Normal file
|
After Width: | Height: | Size: 337 B |
BIN
Resources/Textures/White/Tiles/dark_pavement.png
Normal file
|
After Width: | Height: | Size: 247 B |
BIN
Resources/Textures/White/Tiles/dark_pavement_vertical.png
Normal file
|
After Width: | Height: | Size: 252 B |
BIN
Resources/Textures/White/Tiles/steel_herringbone.png
Normal file
|
After Width: | Height: | Size: 337 B |
BIN
Resources/Textures/White/Tiles/steel_pavement.png
Normal file
|
After Width: | Height: | Size: 247 B |
BIN
Resources/Textures/White/Tiles/steel_pavement_vertical.png
Normal file
|
After Width: | Height: | Size: 252 B |
BIN
Resources/Textures/White/Tiles/white_herringbone.png
Normal file
|
After Width: | Height: | Size: 337 B |
BIN
Resources/Textures/White/Tiles/white_pavement.png
Normal file
|
After Width: | Height: | Size: 247 B |
BIN
Resources/Textures/White/Tiles/white_pavement_vertical.png
Normal file
|
After Width: | Height: | Size: 252 B |