diff --git a/Content.Client/Mech/MechSystem.cs b/Content.Client/Mech/MechSystem.cs index ba4e29951d..6140385df5 100644 --- a/Content.Client/Mech/MechSystem.cs +++ b/Content.Client/Mech/MechSystem.cs @@ -2,6 +2,7 @@ using Content.Shared.Mech.Components; using Content.Shared.Mech.EntitySystems; using Robust.Client.GameObjects; +using Robust.Shared.GameObjects; using DrawDepth = Content.Shared.DrawDepth.DrawDepth; namespace Content.Client.Mech; @@ -17,6 +18,7 @@ public sealed class MechSystem : SharedMechSystem base.Initialize(); SubscribeLocalEvent(OnAppearanceChanged); + SubscribeLocalEvent(OnUpdateAppearanceEvent); } private void OnAppearanceChanged(EntityUid uid, MechComponent component, ref AppearanceChangeEvent args) @@ -24,23 +26,41 @@ public sealed class MechSystem : SharedMechSystem if (args.Sprite == null) return; - if (!args.Sprite.TryGetLayer((int) MechVisualLayers.Base, out var layer)) + UpdateAppearance(uid, component, args.Sprite); + } + + private void OnUpdateAppearanceEvent(EntityUid uid, MechComponent component, ref UpdateAppearanceEvent args) + { + if (!TryComp(uid, out var sprite)) + return; + + UpdateAppearance(uid, component, sprite); + } + + private void UpdateAppearance(EntityUid uid, MechComponent component, SpriteComponent sprite) + { + if (!sprite.TryGetLayer((int) MechVisualLayers.Base, out var layer)) return; var state = component.BaseState; var drawDepth = DrawDepth.Mobs; - if (component.BrokenState != null && _appearance.TryGetData(uid, MechVisuals.Broken, out var broken, args.Component) && broken) + + if (component.BrokenState != null + && _appearance.TryGetData(uid, MechVisuals.Broken, out var broken) + && broken) { state = component.BrokenState; drawDepth = DrawDepth.SmallMobs; } - else if (component.OpenState != null && _appearance.TryGetData(uid, MechVisuals.Open, out var open, args.Component) && open) + else if (component.OpenState != null + && _appearance.TryGetData(uid, MechVisuals.Open, out var open) + && open) { state = component.OpenState; drawDepth = DrawDepth.SmallMobs; } layer.SetState(state); - args.Sprite.DrawDepth = (int) drawDepth; + sprite.DrawDepth = (int) drawDepth; } } diff --git a/Content.Server/Chemistry/EntitySystems/HypospraySystem.cs b/Content.Server/Chemistry/EntitySystems/HypospraySystem.cs index 9b78e81aa0..eac4ece0aa 100644 --- a/Content.Server/Chemistry/EntitySystems/HypospraySystem.cs +++ b/Content.Server/Chemistry/EntitySystems/HypospraySystem.cs @@ -11,8 +11,12 @@ using Content.Shared.Interaction.Events; using Content.Shared.Mobs.Components; using Content.Shared.Timing; using Content.Shared.Weapons.Melee.Events; +using Content.Shared.Inventory; +using Content.Shared.Tag; +using Content.Shared.Popups; using Content.Server.Interaction; using Content.Server.Body.Components; +using Content.Server.Popups; using Robust.Shared.GameStates; using System.Diagnostics.CodeAnalysis; using System.Linq; @@ -22,6 +26,8 @@ namespace Content.Server.Chemistry.EntitySystems; public sealed class HypospraySystem : SharedHypospraySystem { + [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly InventorySystem _inventorySystem = default!; [Dependency] private readonly AudioSystem _audio = default!; [Dependency] private readonly InteractionSystem _interaction = default!; @@ -84,6 +90,23 @@ public sealed class HypospraySystem : SharedHypospraySystem } string? msgFormat = null; + + if (!component.PierceArmor && _inventorySystem.TryGetSlotEntity(target, "outerClothing", out var suit)) + { + if (TryComp(suit, out var tag) && tag.Tags.Contains("Hardsuit")) + { + if (target == null) return false; + var taget = (EntityUid) target; + + _popup.PopupEntity(Loc.GetString("hypospay-component-failure-hardsuit"), target, user, PopupType.MediumCaution); + return false; + } + } + else if (!component.PierceArmor && TryComp(target, out var tag) && tag.Tags.Contains("NoInjectable")) + { + _popup.PopupEntity(Loc.GetString("hypospay-component-failure-hardsuit"), target, user, PopupType.MediumCaution); + return false; + } if (target == user) msgFormat = "hypospray-component-inject-self-message"; diff --git a/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs b/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs index c5c45daa5b..fe204a8314 100644 --- a/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs @@ -1,5 +1,6 @@ using Content.Server.Body.Components; using Content.Server.Body.Systems; +using Content.Server.Popups; using Content.Shared.Chemistry; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components.SolutionManager; @@ -11,13 +12,18 @@ using Content.Shared.FixedPoint; using Content.Shared.Forensics; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; +using Content.Shared.Inventory; using Content.Shared.Mobs.Components; using Content.Shared.Stacks; +using Content.Shared.Tag; +using Content.Shared.Popups; namespace Content.Server.Chemistry.EntitySystems; public sealed class InjectorSystem : SharedInjectorSystem { + [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly InventorySystem _inventorySystem = default!; [Dependency] private readonly BloodstreamSystem _blood = default!; [Dependency] private readonly ReactiveSystem _reactiveSystem = default!; @@ -31,6 +37,20 @@ public sealed class InjectorSystem : SharedInjectorSystem private bool TryUseInjector(Entity injector, EntityUid target, EntityUid user) { + if (_inventorySystem.TryGetSlotEntity(target, "outerClothing", out var suit)) + { + if (TryComp(suit, out var tag) && tag.Tags.Contains("Hardsuit")) + { + _popup.PopupEntity(Loc.GetString("injector-component-failure-hardsuit"), target, user, PopupType.MediumCaution); + return false; + } + } + else if (TryComp(target, out var tag) && tag.Tags.Contains("NoInjectable")) + { + _popup.PopupEntity(Loc.GetString("injector-component-failure-hardsuit"), target, user, PopupType.MediumCaution); + return false; + } + // Handle injecting/drawing for solutions if (injector.Comp.ToggleState == InjectorToggleMode.Inject) { diff --git a/Content.Server/Mech/Systems/MechSystem.cs b/Content.Server/Mech/Systems/MechSystem.cs index 4fbe9d7429..012aab55a4 100644 --- a/Content.Server/Mech/Systems/MechSystem.cs +++ b/Content.Server/Mech/Systems/MechSystem.cs @@ -11,6 +11,9 @@ using Content.Shared.Interaction; using Content.Shared.Mech; using Content.Shared.Mech.Components; using Content.Shared.Mech.EntitySystems; +using Content.Shared.Mobs; +using Content.Shared.Mobs.Systems; +using Content.Shared.Mobs.Components; using Content.Shared.Movement.Events; using Content.Shared.Popups; using Content.Shared.Tools.Components; @@ -20,7 +23,11 @@ using Content.Server.Body.Systems; using Content.Shared.Tools.Systems; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; +using Content.Shared.NPC.Components; +using Content.Shared.NPC.Systems; using Content.Shared.Tag; +using Robust.Server.Audio; +using Robust.Shared.Audio; using Robust.Server.Containers; using Robust.Server.GameObjects; using Robust.Shared.Containers; @@ -32,6 +39,8 @@ namespace Content.Server.Mech.Systems; /// public sealed partial class MechSystem : SharedMechSystem { + [Dependency] private readonly AudioSystem _audioSystem = default!; + [Dependency] private readonly NpcFactionSystem _factionSystem = default!; [Dependency] private readonly ActionBlockerSystem _actionBlocker = default!; [Dependency] private readonly AtmosphereSystem _atmosphere = default!; [Dependency] private readonly BatterySystem _battery = default!; @@ -44,6 +53,7 @@ public sealed partial class MechSystem : SharedMechSystem [Dependency] private readonly SharedToolSystem _toolSystem = default!; [Dependency] private readonly SharedHandsSystem _hands = default!; [Dependency] private readonly TagSystem _tag = default!; + [Dependency] private readonly MobThresholdSystem _mobThresholdSystem = default!; /// public override void Initialize() @@ -240,14 +250,11 @@ public sealed partial class MechSystem : SharedMechSystem return; } - if (!TryComp(args.Args.User, out var handsComponent)) - return; - - foreach (var hand in _hands.EnumerateHands(args.Args.User, handsComponent)) - { - _hands.DoDrop(args.Args.User, hand, true, handsComponent); - } + if (TryComp(args.Args.User, out var handsComponent)) + foreach (var hand in _hands.EnumerateHands(args.Args.User, handsComponent)) + _hands.DoDrop(args.Args.User, hand, true, handsComponent); + _factionSystem.Up(args.Args.User, uid); TryInsert(uid, args.Args.User, component); _actionBlocker.UpdateCanMove(uid); @@ -259,6 +266,7 @@ public sealed partial class MechSystem : SharedMechSystem if (args.Cancelled || args.Handled) return; + RemComp(component.Owner); TryEject(uid, component); args.Handled = true; @@ -266,17 +274,40 @@ public sealed partial class MechSystem : SharedMechSystem private void OnDamageChanged(EntityUid uid, MechComponent component, DamageChangedEvent args) { - var integrity = component.MaxIntegrity - args.Damageable.TotalDamage; - SetIntegrity(uid, integrity, component); - + /* + if (TryComp(uid, out var damage)) + { + PlayCritSound(uid, component, damage); + } + */ if (args.DamageIncreased && args.DamageDelta != null && component.PilotSlot.ContainedEntity != null) { - var damage = args.DamageDelta * component.MechToPilotDamageMultiplier; - _damageable.TryChangeDamage(component.PilotSlot.ContainedEntity, damage); + var damagetoplayer = args.DamageDelta * component.MechToPilotDamageMultiplier; + _damageable.TryChangeDamage(component.PilotSlot.ContainedEntity, damagetoplayer); } } + + private void PlayCritSound(EntityUid uid, MechComponent component, DamageableComponent damage ) + { + var total = damage.TotalDamage; + if (_mobThresholdSystem.TryGetThresholdForState(uid, MobState.Critical, out var critThreshold)) + { + var damagePercentage = (total / critThreshold) * 100; + if (component.PilotSlot.ContainedEntity != null) + { + if (damagePercentage >= 95) + _audioSystem.PlayPvs(_audioSystem.GetSound(component.Alert5), component.PilotSlot.ContainedEntity.Value); + else if (damagePercentage >= 75) + _audioSystem.PlayPvs(_audioSystem.GetSound(component.Alert25), component.PilotSlot.ContainedEntity.Value); + else if (damagePercentage >= 50) + _audioSystem.PlayPvs(_audioSystem.GetSound(component.Alert50), component.PilotSlot.ContainedEntity.Value); + Dirty(uid ,component); + } + } + } + private void ToggleMechUi(EntityUid uid, MechComponent? component = null, EntityUid? user = null) { diff --git a/Content.Server/Medical/HealingSystem.cs b/Content.Server/Medical/HealingSystem.cs index cf5869d1cb..ae4a21b610 100644 --- a/Content.Server/Medical/HealingSystem.cs +++ b/Content.Server/Medical/HealingSystem.cs @@ -127,7 +127,7 @@ public sealed class HealingSystem : EntitySystem var healingDict = healing.Damage.DamageDict; foreach (var type in healingDict) { - if (damageableDict[type.Key].Value > 0) + if (damageableDict.TryGetValue(type.Key, out var damageValue) && damageValue.Value > 0) //Sunrise-edit: fix server crashes { return true; } diff --git a/Content.Server/_Sunrise/Execution/ExecutionSystem.cs b/Content.Server/_Sunrise/Execution/ExecutionSystem.cs index 5afb305004..d777b773c4 100644 --- a/Content.Server/_Sunrise/Execution/ExecutionSystem.cs +++ b/Content.Server/_Sunrise/Execution/ExecutionSystem.cs @@ -21,6 +21,7 @@ using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; using Robust.Shared.Player; using Robust.Shared.Prototypes; +using Robust.Shared.Containers; namespace Content.Server._Sunrise.Execution; @@ -29,6 +30,7 @@ namespace Content.Server._Sunrise.Execution; /// public sealed class ExecutionSystem : EntitySystem { + [Dependency] private readonly SharedContainerSystem _containerSystem = default!; [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; [Dependency] private readonly SharedPopupSystem _popupSystem = default!; [Dependency] private readonly MobStateSystem _mobStateSystem = default!; @@ -168,6 +170,15 @@ public sealed class ExecutionSystem : EntitySystem // We must be able to actually fire the gun if (!TryComp(weapon, out var gun) && _gunSystem.CanShoot(gun!)) return false; + + if (_containerSystem.TryGetContainer(weapon, "gun_chamber", out var chamberContainer)) + { + foreach (var contained in chamberContainer.ContainedEntities) + { + if (TryComp(contained, out var cartridge) && cartridge.Spent) + return false; + } + } return true; } diff --git a/Content.Server/_Sunrise/Paint/MechPaintSystem.cs b/Content.Server/_Sunrise/Paint/MechPaintSystem.cs new file mode 100644 index 0000000000..af6052f8dc --- /dev/null +++ b/Content.Server/_Sunrise/Paint/MechPaintSystem.cs @@ -0,0 +1,92 @@ +using Content.Server.Chemistry.Containers.EntitySystems; +using Content.Shared._Sunrise.Paint; +using Content.Shared.DoAfter; +using Content.Shared.Humanoid; +using Content.Shared.Interaction; +using Content.Shared.Inventory; +using Content.Shared.Nutrition.EntitySystems; +using Content.Shared.Popups; +using Content.Shared.Sprite; +using Content.Shared.SubFloor; +using Content.Shared.Verbs; +using Content.Shared.Mech.Components; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Utility; +using PaintComponent = Content.Shared._Sunrise.Paint.PaintComponent; +using PaintDoAfterEvent = Content.Shared._Sunrise.Paint.PaintDoAfterEvent; +using PaintedComponent = Content.Shared._Sunrise.Paint.PaintedComponent; + +namespace Content.Server._Sunrise.Paint; + +/// +/// Colors target and consumes reagent on each color success. +/// +public sealed class MechPaintSystem : SharedMechPaintSystem +{ + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly SolutionContainerSystem _solutionContainer = default!; + [Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly InventorySystem _inventory = default!; + [Dependency] private readonly OpenableSystem _openable = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnInteract); + SubscribeLocalEvent>(OnPaintVerb); + } + + private void OnInteract(EntityUid uid, MechPaintComponent component, AfterInteractEvent args) + { + if (!args.CanReach) + return; + + if (args.Target is not { Valid: true } target) + return; + + if (!HasComp(args.Target)) + return; + + PrepPaint(uid, component, target, args.User); + } + + private void OnPaintVerb(EntityUid uid, MechPaintComponent component, GetVerbsEvent args) + { + if (!args.CanInteract || !args.CanAccess) + return; + + if (!HasComp(args.Target)) + return; + + var paintText = Loc.GetString("paint-verb"); + + var verb = new UtilityVerb() + { + Act = () => + { + PrepPaint(uid, component, args.Target, args.User); + }, + + Text = paintText, + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/paint.svg.192dpi.png")) + }; + args.Verbs.Add(verb); + } + private void PrepPaint(EntityUid uid, MechPaintComponent component, EntityUid target, EntityUid user) + { + + var doAfterEventArgs = new DoAfterArgs(EntityManager, user, component.Delay, new PaintDoAfterEvent(), uid, target: target, used: uid) + { + BreakOnMove = true, + BreakOnDamage = true, + NeedHand = true, + BreakOnHandChange = true + }; + + if (!_doAfterSystem.TryStartDoAfter(doAfterEventArgs)) + return; + } +} diff --git a/Content.Shared/Chemistry/Components/HyposprayComponent.cs b/Content.Shared/Chemistry/Components/HyposprayComponent.cs index 05ef84bbaf..b7abe47944 100644 --- a/Content.Shared/Chemistry/Components/HyposprayComponent.cs +++ b/Content.Shared/Chemistry/Components/HyposprayComponent.cs @@ -37,4 +37,11 @@ public sealed partial class HyposprayComponent : Component /// [DataField] public bool InjectOnly = false; + + /// + /// Whether the hypospray uses a needle (i.e. medipens) + /// or sci fi bullshit that sprays into the bloodstream directly (i.e. hypos) + /// + [DataField] + public bool PierceArmor = false; } diff --git a/Content.Shared/CombatMode/SharedCombatModeSystem.cs b/Content.Shared/CombatMode/SharedCombatModeSystem.cs index 5eed8ee242..84c9aa65aa 100644 --- a/Content.Shared/CombatMode/SharedCombatModeSystem.cs +++ b/Content.Shared/CombatMode/SharedCombatModeSystem.cs @@ -1,6 +1,7 @@ using Content.Shared.Actions; using Content.Shared.Mind; using Content.Shared.MouseRotator; +using Content.Shared.Mech.Components; using Content.Shared.Movement.Components; using Content.Shared.Popups; using Robust.Shared.Network; @@ -94,11 +95,21 @@ public abstract class SharedCombatModeSystem : EntitySystem { if (value) { + if (TryComp(uid, out var mechPilot) && !HasComp(mechPilot.Mech)) + { + EnsureComp(mechPilot.Mech); + } + EnsureComp(uid); EnsureComp(uid); } else { + if (TryComp(uid, out var mechPilot) && HasComp(mechPilot.Mech)) + { + RemComp(mechPilot.Mech); + } + RemComp(uid); RemComp(uid); } diff --git a/Content.Shared/Mech/Components/MechComponent.cs b/Content.Shared/Mech/Components/MechComponent.cs index ce7026796b..deb3b494ef 100644 --- a/Content.Shared/Mech/Components/MechComponent.cs +++ b/Content.Shared/Mech/Components/MechComponent.cs @@ -1,7 +1,9 @@ using Content.Shared.FixedPoint; using Content.Shared.Whitelist; +using Robust.Shared.Audio; using Robust.Shared.Containers; using Robust.Shared.GameStates; +using Robust.Shared.Serialization; using Robust.Shared.Prototypes; namespace Content.Shared.Mech.Components; @@ -67,6 +69,12 @@ public sealed partial class MechComponent : Component /// [ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public bool Broken = false; + + /// + /// Whether the mech has toggled lights. + /// + [ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public bool Lights = false; /// /// The slot the pilot is stored in. @@ -119,7 +127,7 @@ public sealed partial class MechComponent : Component /// outside of the mech. You can exit instantly yourself. /// [DataField, ViewVariables(VVAccess.ReadWrite)] - public float ExitDelay = 3; + public float ExitDelay = 6; /// /// How long it takes to pull out the battery. @@ -143,6 +151,21 @@ public sealed partial class MechComponent : Component /// [DataField] public List StartingEquipment = new(); + + #region Sounds + [DataField] + public SoundSpecifier EnableLightSound = new SoundPathSpecifier("/Audio/_Sunrise/Mechs/mech_lights_enabled.ogg"); + [DataField] + public SoundSpecifier DisableLightSound = new SoundPathSpecifier("/Audio/_Sunrise/Mechs/mech_lights_disabled.ogg"); + [DataField] + public SoundSpecifier HelloSound = new SoundPathSpecifier("/Audio/_Sunrise/Mechs/mech_hello.ogg"); + [DataField] + public SoundSpecifier Alert50 = new SoundPathSpecifier("/Audio/_Sunrise/Mechs/mech_alert_50.ogg"); + [DataField] + public SoundSpecifier Alert25 = new SoundPathSpecifier("/Audio/_Sunrise/Mechs/mech_alert_25.ogg"); + [DataField] + public SoundSpecifier Alert5 = new SoundPathSpecifier("/Audio/_Sunrise/Mechs/mech_alert_5.ogg"); + #endregion #region Action Prototypes [DataField] @@ -151,18 +174,21 @@ public sealed partial class MechComponent : Component public EntProtoId MechUiAction = "ActionMechOpenUI"; [DataField] public EntProtoId MechEjectAction = "ActionMechEject"; + [DataField] + public EntProtoId MechLightsAction = "ActionMechLights"; #endregion #region Visualizer States - [DataField] + [DataField, AutoNetworkedField] public string? BaseState; - [DataField] + [DataField, AutoNetworkedField] public string? OpenState; - [DataField] + [DataField, AutoNetworkedField] public string? BrokenState; #endregion [DataField] public EntityUid? MechCycleActionEntity; [DataField] public EntityUid? MechUiActionEntity; [DataField] public EntityUid? MechEjectActionEntity; + [DataField] public EntityUid? MechLightsActionEntity; } diff --git a/Content.Shared/Mech/EntitySystems/SharedMechSystem.cs b/Content.Shared/Mech/EntitySystems/SharedMechSystem.cs index 9724297315..2a280ae761 100644 --- a/Content.Shared/Mech/EntitySystems/SharedMechSystem.cs +++ b/Content.Shared/Mech/EntitySystems/SharedMechSystem.cs @@ -4,6 +4,7 @@ using Content.Shared.ActionBlocker; using Content.Shared.Actions; using Content.Shared.Destructible; using Content.Shared.DoAfter; +using Content.Shared.Mobs; using Content.Shared.DragDrop; using Content.Shared.Emag.Components; using Content.Shared.Emag.Systems; @@ -19,10 +20,12 @@ using Content.Shared.Popups; using Content.Shared.Weapons.Melee; using Content.Shared.Weapons.Ranged.Events; using Content.Shared.Whitelist; +using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Robust.Shared.Network; using Robust.Shared.Serialization; using Robust.Shared.Timing; +using DrawDepth = Content.Shared.DrawDepth.DrawDepth; namespace Content.Shared.Mech.EntitySystems; @@ -33,12 +36,14 @@ public abstract class SharedMechSystem : EntitySystem { [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly INetManager _net = default!; + [Dependency] private readonly SharedAudioSystem _audioSystem = default!; [Dependency] private readonly ActionBlockerSystem _actionBlocker = default!; [Dependency] private readonly SharedActionsSystem _actions = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly SharedInteractionSystem _interaction = default!; [Dependency] private readonly SharedMoverController _mover = default!; + [Dependency] private readonly SharedPointLightSystem _pointLight = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; @@ -48,9 +53,10 @@ public abstract class SharedMechSystem : EntitySystem { SubscribeLocalEvent(OnToggleEquipmentAction); SubscribeLocalEvent(OnEjectPilotEvent); + SubscribeLocalEvent(OnToggleLightsEvent); SubscribeLocalEvent(RelayInteractionEvent); SubscribeLocalEvent(OnStartup); - SubscribeLocalEvent(OnDestruction); + SubscribeLocalEvent(OnMobState); SubscribeLocalEvent(OnGetAdditionalAccess); SubscribeLocalEvent(OnDragDrop); SubscribeLocalEvent(OnCanDragDrop); @@ -76,7 +82,17 @@ public abstract class SharedMechSystem : EntitySystem args.Handled = true; TryEject(uid, component); } + + private void OnToggleLightsEvent(EntityUid uid, MechComponent component, MechToggleLightsEvent args) + { + if (args.Handled) + return; + ToggleLights(uid, component); + + args.Handled = true; + } + private void RelayInteractionEvent(EntityUid uid, MechComponent component, UserActivateInWorldEvent args) { var pilot = component.PilotSlot.ContainedEntity; @@ -101,9 +117,17 @@ public abstract class SharedMechSystem : EntitySystem UpdateAppearance(uid, component); } - private void OnDestruction(EntityUid uid, MechComponent component, DestructionEventArgs args) + private void OnMobState(EntityUid uid, MechComponent component, MobStateChangedEvent args) { - BreakMech(uid, component); + if (args.NewMobState == MobState.Critical) + { + BreakMech(uid, component); + } + if (args.NewMobState == MobState.Alive) + { + component.Broken = false; + UpdateAppearance(uid, component); + } } private void OnGetAdditionalAccess(EntityUid uid, MechComponent component, ref GetAdditionalAccessEvent args) @@ -135,6 +159,7 @@ public abstract class SharedMechSystem : EntitySystem _actions.AddAction(pilot, ref component.MechCycleActionEntity, component.MechCycleAction, mech); _actions.AddAction(pilot, ref component.MechUiActionEntity, component.MechUiAction, mech); + _actions.AddAction(pilot, ref component.MechLightsActionEntity, component.MechLightsAction, mech); _actions.AddAction(pilot, ref component.MechEjectActionEntity, component.MechEjectAction, mech); } @@ -147,6 +172,21 @@ public abstract class SharedMechSystem : EntitySystem _actions.RemoveProvidedActions(pilot, mech); } + + public void ToggleLights(EntityUid uid, MechComponent component) + { + if (_pointLight.TryGetLight(uid, out var pointLightComponent)) + { + component.Lights = !component.Lights; + _pointLight.SetEnabled(uid, component.Lights, pointLightComponent); + _actions.SetToggled(component.MechLightsActionEntity, component.Lights); + if(component.Lights) + _audioSystem.PlayPredicted(component.EnableLightSound, component.Owner, component.PilotSlot.ContainedEntity); + else + _audioSystem.PlayPredicted(component.DisableLightSound, component.Owner, component.PilotSlot.ContainedEntity); + Dirty(uid ,component); + } + } /// /// Destroys the mech, removing the user and ejecting all installed equipment. @@ -370,6 +410,7 @@ public abstract class SharedMechSystem : EntitySystem return false; SetupUser(uid, toInsert.Value); + _audioSystem.PlayPredicted(component.HelloSound, component.Owner, toInsert.Value); _container.Insert(toInsert.Value, component.PilotSlot); UpdateAppearance(uid, component); return true; @@ -389,6 +430,11 @@ public abstract class SharedMechSystem : EntitySystem if (component.PilotSlot.ContainedEntity == null) return false; + if (HasComp(uid)) + { + RemComp(uid); + } + var pilot = component.PilotSlot.ContainedEntity.Value; RemoveUser(uid, pilot); @@ -421,7 +467,7 @@ public abstract class SharedMechSystem : EntitySystem args.Cancel(); } - private void UpdateAppearance(EntityUid uid, MechComponent? component = null, + public void UpdateAppearance(EntityUid uid, MechComponent? component = null, AppearanceComponent? appearance = null) { if (!Resolve(uid, ref component, ref appearance, false)) @@ -429,6 +475,9 @@ public abstract class SharedMechSystem : EntitySystem _appearance.SetData(uid, MechVisuals.Open, IsEmpty(component), appearance); _appearance.SetData(uid, MechVisuals.Broken, component.Broken, appearance); + + var ev = new UpdateAppearanceEvent(); + RaiseLocalEvent(uid, ev); } private void OnDragDrop(EntityUid uid, MechComponent component, ref DragDropTargetEvent args) @@ -488,3 +537,8 @@ public sealed partial class MechExitEvent : SimpleDoAfterEvent public sealed partial class MechEntryEvent : SimpleDoAfterEvent { } + +[Serializable, NetSerializable] +public sealed partial class UpdateAppearanceEvent : EntityEventArgs +{ +} diff --git a/Content.Shared/Mech/SharedMech.cs b/Content.Shared/Mech/SharedMech.cs index 94af4453d4..7cbd832db5 100644 --- a/Content.Shared/Mech/SharedMech.cs +++ b/Content.Shared/Mech/SharedMech.cs @@ -60,3 +60,7 @@ public sealed partial class MechOpenUiEvent : InstantActionEvent public sealed partial class MechEjectPilotEvent : InstantActionEvent { } + +public sealed partial class MechToggleLightsEvent : InstantActionEvent +{ +} diff --git a/Content.Shared/Mobs/Systems/MobStateSystem.cs b/Content.Shared/Mobs/Systems/MobStateSystem.cs index d3e55f0d69..22e376afe4 100644 --- a/Content.Shared/Mobs/Systems/MobStateSystem.cs +++ b/Content.Shared/Mobs/Systems/MobStateSystem.cs @@ -1,6 +1,7 @@ using Content.Shared.ActionBlocker; using Content.Shared.Administration.Logs; using Content.Shared.Mobs.Components; +using Content.Shared.Mech.Components; using Content.Shared.Standing; using Robust.Shared.Physics.Systems; using Robust.Shared.Timing; @@ -38,6 +39,8 @@ public partial class MobStateSystem : EntitySystem /// If the entity is alive public bool IsAlive(EntityUid target, MobStateComponent? component = null) { + if (TryComp(target, out var mech)) + return !mech.Broken; if (!_mobStateQuery.Resolve(target, ref component, false)) return false; return component.CurrentState == MobState.Alive; diff --git a/Content.Shared/Mobs/Systems/MobThresholdSystem.cs b/Content.Shared/Mobs/Systems/MobThresholdSystem.cs index eeaecc24d8..43d78eec4d 100644 --- a/Content.Shared/Mobs/Systems/MobThresholdSystem.cs +++ b/Content.Shared/Mobs/Systems/MobThresholdSystem.cs @@ -168,7 +168,7 @@ public sealed class MobThresholdSystem : EntitySystem MobThresholdsComponent? thresholdComponent = null) { threshold = null; - if (!Resolve(target, ref thresholdComponent)) + if (!Resolve(target, ref thresholdComponent, false)) return false; return TryGetThresholdForState(target, MobState.Critical, out threshold, thresholdComponent) diff --git a/Content.Shared/MouseRotator/SharedMouseRotatorSystem.cs b/Content.Shared/MouseRotator/SharedMouseRotatorSystem.cs index 9663b3363d..836acaa518 100644 --- a/Content.Shared/MouseRotator/SharedMouseRotatorSystem.cs +++ b/Content.Shared/MouseRotator/SharedMouseRotatorSystem.cs @@ -1,4 +1,5 @@ using Content.Shared.Interaction; +using Content.Shared.Mech.Components; namespace Content.Shared.MouseRotator; @@ -9,6 +10,7 @@ namespace Content.Shared.MouseRotator; public abstract class SharedMouseRotatorSystem : EntitySystem { [Dependency] private readonly RotateToFaceSystem _rotate = default!; + public override void Initialize() { @@ -29,9 +31,17 @@ public abstract class SharedMouseRotatorSystem : EntitySystem { if (rotator.GoalRotation == null) continue; + + var target = uid; + + if (TryComp(uid, out var mechPilot)) + { + target = mechPilot.Mech; + xform = Transform(mechPilot.Mech); + } if (_rotate.TryRotateTo( - uid, + target, rotator.GoalRotation.Value, frameTime, rotator.AngleTolerance, diff --git a/Content.Shared/NPC/Systems/NpcFactionSystem.cs b/Content.Shared/NPC/Systems/NpcFactionSystem.cs index 98f14afe2a..7508bb1eb2 100644 --- a/Content.Shared/NPC/Systems/NpcFactionSystem.cs +++ b/Content.Shared/NPC/Systems/NpcFactionSystem.cs @@ -1,6 +1,7 @@ using Content.Shared.NPC.Components; using Content.Shared.NPC.Prototypes; using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.Manager; using System.Collections.Frozen; using System.Linq; @@ -13,6 +14,7 @@ public sealed partial class NpcFactionSystem : EntitySystem { [Dependency] private readonly EntityLookupSystem _lookup = default!; [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly ISerializationManager _serialization = default!; [Dependency] private readonly SharedTransformSystem _xform = default!; /// @@ -80,6 +82,23 @@ public sealed partial class NpcFactionSystem : EntitySystem return ent.Comp.Factions.Contains(faction); } + + public void Up(EntityUid from, EntityUid to) + { + if (TryComp(from, out var fromFaction)) + { + if (TryComp(to, out var toFaction)) + { + _serialization.CopyTo(fromFaction, ref toFaction, notNullableOverride: true); + } + else + { + var newComp = new NpcFactionMemberComponent(); + _serialization.CopyTo(fromFaction, ref newComp, notNullableOverride: true); + AddComp(to, newComp); + } + } + } /// /// Adds this entity to the particular faction. diff --git a/Content.Shared/Tag/TagComponent.cs b/Content.Shared/Tag/TagComponent.cs index ad4240ba06..a2724d6743 100644 --- a/Content.Shared/Tag/TagComponent.cs +++ b/Content.Shared/Tag/TagComponent.cs @@ -6,6 +6,7 @@ namespace Content.Shared.Tag; [RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(TagSystem))] public sealed partial class TagComponent : Component { - [DataField, ViewVariables, AutoNetworkedField] + [DataField, AutoNetworkedField] + [Access(typeof(TagSystem), Other = AccessPermissions.ReadExecute)] public HashSet> Tags = new(); } diff --git a/Content.Shared/_Sunrise/Paint/MechPaintComponent.cs b/Content.Shared/_Sunrise/Paint/MechPaintComponent.cs new file mode 100644 index 0000000000..0fa4fee616 --- /dev/null +++ b/Content.Shared/_Sunrise/Paint/MechPaintComponent.cs @@ -0,0 +1,53 @@ +using Content.Shared.Chemistry.Reagent; +using Content.Shared.FixedPoint; +using Content.Shared.Whitelist; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Utility; + +namespace Content.Shared._Sunrise.Paint; + +/// +/// Entity when used on another entity will paint target entity. +/// +[RegisterComponent, NetworkedComponent] +[Access(typeof(SharedMechPaintSystem))] +public sealed partial class MechPaintComponent : Component +{ + /// + /// Noise made when paint applied. + /// + [DataField] + public SoundSpecifier Spray = new SoundPathSpecifier("/Audio/Effects/spray2.ogg"); + + /// + /// This paint was used? + /// + [DataField] + public bool Used = false; + + /// + /// How long the doafter will take. + /// + [DataField] + public int Delay = 2; + + /// + /// What mech are paint? + /// + [DataField, ViewVariables(VVAccess.ReadWrite)] + public EntityWhitelist? Whitelist; + + /// + /// Paint states + /// + #region Visualizer States + [DataField] + public string BaseState; + [DataField] + public string OpenState; + [DataField] + public string BrokenState; + #endregion +} diff --git a/Content.Shared/_Sunrise/Paint/SharedMechPaintSystem.cs b/Content.Shared/_Sunrise/Paint/SharedMechPaintSystem.cs new file mode 100644 index 0000000000..94652ee897 --- /dev/null +++ b/Content.Shared/_Sunrise/Paint/SharedMechPaintSystem.cs @@ -0,0 +1,92 @@ +using Content.Shared.DoAfter; +using Content.Shared.Humanoid; +using Content.Shared.Interaction; +using Content.Shared.Inventory; +using Content.Shared.Mech.Components; +using Content.Shared.Mech.EntitySystems; +using Content.Shared.Popups; +using Content.Shared.SubFloor; +using Robust.Shared.Audio.Systems; +using Content.Shared.Nutrition.EntitySystems; +using Content.Shared.Whitelist; + +namespace Content.Shared._Sunrise.Paint; + +/// +/// Colors target and consumes reagent on each color success. +/// +public abstract class SharedMechPaintSystem : EntitySystem +{ + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly OpenableSystem _openable = default!; + [Dependency] private readonly SharedMechSystem _mechSystem = default!; + [Dependency] private readonly EntityWhitelistSystem _whitelist = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnPaint); + } + + private void OnPaint(Entity entity, ref PaintDoAfterEvent args) + { + if (args.Target == null || args.Used == null || !HasComp(args.Target)) + return; + + if (args.Handled || args.Cancelled) + return; + + if (args.Target is not { Valid: true } target) + return; + + if (!_openable.IsOpen(entity)) + { + _popup.PopupEntity(Loc.GetString("paint-closed", ("used", args.Used)), args.User, args.User, PopupType.Medium); + return; + } + + if (entity.Comp.Whitelist != null && !_whitelist.IsValid(entity.Comp.Whitelist, target) || HasComp(target) || HasComp(target)) + { + _popup.PopupEntity(Loc.GetString("paint-failure", ("target", args.Target)), args.User, args.User, PopupType.Medium); + return; + } + + + if (TryPaint(entity, target)) + { + EnsureComp(target, out MechComponent? mech); + EnsureComp(target, out AppearanceComponent? appearance); + + _audio.PlayPvs(entity.Comp.Spray, entity); + + _popup.PopupEntity(Loc.GetString("paint-success", ("target", args.Target)), args.User, args.User, PopupType.Medium); + mech.BaseState = entity.Comp.BaseState; + mech.OpenState = entity.Comp.OpenState; + mech.BrokenState = entity.Comp.BrokenState; + entity.Comp.Used = true; + Dirty(target, mech); + args.Handled = true; + _mechSystem.UpdateAppearance(target, mech, appearance); + return; + } + + if (!TryPaint(entity, target)) + { + _popup.PopupEntity(Loc.GetString("paint-empty", ("used", args.Used)), args.User, args.User, PopupType.Medium); + return; + } + } + + private bool TryPaint(Entity entity, EntityUid target) + { + if (HasComp(target) || HasComp(target) || entity.Comp.Used) + return false; + + if (HasComp(target)) + return true; + + return false; + } +} diff --git a/Resources/Audio/_Sunrise/Mechs/mech_alert_25.ogg b/Resources/Audio/_Sunrise/Mechs/mech_alert_25.ogg new file mode 100644 index 0000000000..96a0fbb752 Binary files /dev/null and b/Resources/Audio/_Sunrise/Mechs/mech_alert_25.ogg differ diff --git a/Resources/Audio/_Sunrise/Mechs/mech_alert_5.ogg b/Resources/Audio/_Sunrise/Mechs/mech_alert_5.ogg new file mode 100644 index 0000000000..fb20eb6c5a Binary files /dev/null and b/Resources/Audio/_Sunrise/Mechs/mech_alert_5.ogg differ diff --git a/Resources/Audio/_Sunrise/Mechs/mech_alert_50.ogg b/Resources/Audio/_Sunrise/Mechs/mech_alert_50.ogg new file mode 100644 index 0000000000..4295353c9c Binary files /dev/null and b/Resources/Audio/_Sunrise/Mechs/mech_alert_50.ogg differ diff --git a/Resources/Audio/_Sunrise/Mechs/mech_hello.ogg b/Resources/Audio/_Sunrise/Mechs/mech_hello.ogg new file mode 100644 index 0000000000..ef5f6094b3 Binary files /dev/null and b/Resources/Audio/_Sunrise/Mechs/mech_hello.ogg differ diff --git a/Resources/Audio/_Sunrise/Mechs/mech_lights_disabled.ogg b/Resources/Audio/_Sunrise/Mechs/mech_lights_disabled.ogg new file mode 100644 index 0000000000..02d74d07c5 Binary files /dev/null and b/Resources/Audio/_Sunrise/Mechs/mech_lights_disabled.ogg differ diff --git a/Resources/Audio/_Sunrise/Mechs/mech_lights_enabled.ogg b/Resources/Audio/_Sunrise/Mechs/mech_lights_enabled.ogg new file mode 100644 index 0000000000..0a496e1695 Binary files /dev/null and b/Resources/Audio/_Sunrise/Mechs/mech_lights_enabled.ogg differ diff --git a/Resources/Locale/en-US/_strings/chemistry/components/hypospray-component.ftl b/Resources/Locale/en-US/_strings/chemistry/components/hypospray-component.ftl index 52dbf9010e..26c7367763 100644 --- a/Resources/Locale/en-US/_strings/chemistry/components/hypospray-component.ftl +++ b/Resources/Locale/en-US/_strings/chemistry/components/hypospray-component.ftl @@ -19,3 +19,6 @@ hypospray-cant-inject = Can't inject into {$target}! hypospray-verb-mode-label = Toggle Container Draw hypospray-verb-mode-inject-all = You cannot draw from containers anymore. hypospray-verb-mode-inject-mobs-only = You can now draw from containers. + +## failure +hypospay-component-failure-hardsuit = You cant get the needle to go through the thick plating! \ No newline at end of file diff --git a/Resources/Locale/en-US/_strings/chemistry/components/injector-component.ftl b/Resources/Locale/en-US/_strings/chemistry/components/injector-component.ftl index 24f524081e..99e1f1c310 100644 --- a/Resources/Locale/en-US/_strings/chemistry/components/injector-component.ftl +++ b/Resources/Locale/en-US/_strings/chemistry/components/injector-component.ftl @@ -27,3 +27,6 @@ injector-component-drawing-user = You start drawing the needle. injector-component-injecting-user = You start injecting the needle. injector-component-drawing-target = {CAPITALIZE(THE($user))} is trying to use a needle to draw from you! injector-component-injecting-target = {CAPITALIZE(THE($user))} is trying to inject a needle into you! + +## failure +injector-component-failure-hardsuit = You can't get the needle to go through the thick plating! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/devices/handheld.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/devices/handheld.ftl index cb8b44ee55..19465b93f4 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/devices/handheld.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/devices/handheld.ftl @@ -31,6 +31,17 @@ ent-HandheldRoboAnalyzerEmpty = { ent-HandheldRoboAnalyzer } ent-HandheldRoboAnalyzerUnpowered = { ent-BaseHandheldRoboAnalyzer } .desc = { ent-BaseHandheldRoboAnalyzer.desc } .suffix = Переносной, Не требует энергии +ent-BaseHandheldMechAnalyzer = анализатор механоидов + .desc = Портативный анализатор механоидов. +ent-HandheldMechAnalyzer = { ent-BaseHandheldMechAnalyzer } + .desc = { ent-BaseHandheldMechAnalyzer.desc } + .suffix = Переносной, Требует энергию +ent-HandheldMechAnalyzerEmpty = { ent-HandheldMechAnalyzer } + .desc = { ent-HandheldMechAnalyzer.desc } + .suffix = Переносной, Пустой +ent-HandheldMechAnalyzerUnpowered = { ent-BaseHandheldMechAnalyzer } + .desc = { ent-BaseHandheldMechAnalyzer.desc } + .suffix = Переносной, Не требует энергии ent-BaseHandheldCamera = бодикамера .desc = Оно наблюдает за вами... И пикает.. ent-HandheldCamera = { ent-BaseHandheldCamera } diff --git a/Resources/Locale/ru-RU/_prototypes/actions/mech.ftl b/Resources/Locale/ru-RU/_prototypes/actions/mech.ftl index 9047bceb15..587f850d05 100644 --- a/Resources/Locale/ru-RU/_prototypes/actions/mech.ftl +++ b/Resources/Locale/ru-RU/_prototypes/actions/mech.ftl @@ -4,3 +4,5 @@ ent-ActionMechOpenUI = Панель управления .desc = Открывает панель управления меха. ent-ActionMechEject = Покинуть .desc = Высаживает пилота из меха. +ent-ActionMechLights = Свет + .desc = Переключает освещение меха. diff --git a/Resources/Locale/ru-RU/_prototypes/catalog/fills/crates/syndicate.ftl b/Resources/Locale/ru-RU/_prototypes/catalog/fills/crates/syndicate.ftl index d5165dc959..04b08d8d5d 100644 --- a/Resources/Locale/ru-RU/_prototypes/catalog/fills/crates/syndicate.ftl +++ b/Resources/Locale/ru-RU/_prototypes/catalog/fills/crates/syndicate.ftl @@ -8,6 +8,9 @@ ent-CrateSyndicateSuperSurplusBundle = ящик суперприпасов си ent-CrateCybersunDarkGygaxBundle = набор Cybersun "Гигакс" .desc = Содержит набор легкобронированных мехов от компании Cybersun. .suffix = Заполненный +ent-CrateCybersunRoverBundle = набор Cybersun "Ровер" + .desc = Содержит набор среднебронированных мехов от компании Cybersun. + .suffix = Заполненный ent-CrateCybersunMaulerBundle = набор Cybersun "Маулер" .desc = Содержит набор тяжелых бронированных мехов от компании Cybersun. .suffix = Заполненный diff --git a/Resources/Locale/ru-RU/_prototypes/entities/objects/devices/electronics/exosuit_components.ftl b/Resources/Locale/ru-RU/_prototypes/entities/objects/devices/electronics/exosuit_components.ftl index 8252a4dd5b..59d89c5b97 100644 --- a/Resources/Locale/ru-RU/_prototypes/entities/objects/devices/electronics/exosuit_components.ftl +++ b/Resources/Locale/ru-RU/_prototypes/entities/objects/devices/electronics/exosuit_components.ftl @@ -4,9 +4,13 @@ ent-DurandArmorPlate = бронепластины Дюранда .desc = Броневые пластины из пластали для экзокостюма Дюранд. ent-GygaxArmorPlate = бронепластины Гигакса .desc = Броневые пластины из стали для экзокостюма Гигакс. +ent-PhazonArmorPlate = бронепластины Фазона + .desc = Броневые пластины из стали для экзокостюма Фазон. ent-RipleyUpgradeKit = комплект модернизации экзокостюма .desc = Этот комплект позволяет собрать экзокостюм Рипли MK-II. ent-MechAirTank = воздушный баллон экзокостюма .desc = Специальный воздушный баллон, способный вместить большое количество воздуха. ent-MechThruster = ускоритель экзокостюма .desc = Ускоритель, который позволяет экзокостюму безопасно двигаться при отсутствии гравитации. +ent-MechPhasicScanningModule = фазовый сканирующий модуль + .desc = Высокотехнологичный сканирующий модуль, позволяющий прорывать пространство и проходить сквозь твердые объекты. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_prototypes/entities/objects/devices/electronics/mech.ftl b/Resources/Locale/ru-RU/_prototypes/entities/objects/devices/electronics/mech.ftl index 26095156a2..884d935c7a 100644 --- a/Resources/Locale/ru-RU/_prototypes/entities/objects/devices/electronics/mech.ftl +++ b/Resources/Locale/ru-RU/_prototypes/entities/objects/devices/electronics/mech.ftl @@ -28,3 +28,9 @@ ent-DurandPeripheralsElectronics = модуль управления периф .desc = Система управления электрическими периферийными устройствами меха Дюранд. ent-DurandTargetingElectronics = модуль управления огнём Дюранд .desc = Электрическая система управления огнём меха Дюранд. +ent-PhazonCentralElectronics = центральный модуль управления Фазон + .desc = Центр управления электрооборудованием меха Фазон. +ent-PhazonPeripheralsElectronics = модуль управления периферией Фазон + .desc = Система управления электрическими периферийными устройствами меха Фазон. +ent-PhazonTargetingElectronics = модуль управления огнём Фазон + .desc = Электрическая система управления огнём меха Фазон. diff --git a/Resources/Locale/ru-RU/_prototypes/entities/objects/specific/mech/mech_construction.ftl b/Resources/Locale/ru-RU/_prototypes/entities/objects/specific/mech/mech_construction.ftl index 3e0f0e7587..aa65ee2d95 100644 --- a/Resources/Locale/ru-RU/_prototypes/entities/objects/specific/mech/mech_construction.ftl +++ b/Resources/Locale/ru-RU/_prototypes/entities/objects/specific/mech/mech_construction.ftl @@ -114,3 +114,17 @@ ent-VimHarness = каркас ВИМ .desc = Небольшой кронштейн для крепления частей ВИМ. ent-VimChassis = шасси ВИМ .desc = Незавершённое шасси меха ВИМ. +ent-PhazonHarness = каркас Фазона + .desc = Ядро меха Фазон. +ent-PhazonHead = голова Фазона + .desc = Голова меха Фазон. Устанавливается на шасси меха. +ent-PhazonLArm = левая рука Фазона + .desc = Левая рука меха Фазон. Устанавливается на шасси меха. +ent-PhazonLLeg = левая нога Фазона + .desc = Левая нога меха Фазон. Устанавливается на шасси меха. +ent-PhazonRLeg = правая нога Фазона + .desc = Правая нога меха Фазон. Устанавливается на шасси меха. +ent-PhazonRArm = правая рука Фазона + .desc = Правая рука меха Фазон. Устанавливается на шасси меха. +ent-PhazonChassis = шасси Фазона + .desc = Незавершённое шасси меха Фазон. diff --git a/Resources/Locale/ru-RU/_prototypes/entities/objects/specific/mech/mechs.ftl b/Resources/Locale/ru-RU/_prototypes/entities/objects/specific/mech/mechs.ftl index 02e1e66d87..b5fdb5df60 100644 --- a/Resources/Locale/ru-RU/_prototypes/entities/objects/specific/mech/mechs.ftl +++ b/Resources/Locale/ru-RU/_prototypes/entities/objects/specific/mech/mechs.ftl @@ -51,6 +51,19 @@ ent-MechDurand = Дюранд ent-MechDurandBattery = { ent-MechDurand } .suffix = Батарея .desc = { ent-MechDurand.desc } +ent-MechPhazon = Фазон + .desc = Самый продвинутый мех на рынке, вершина технологического развития, крайне мобильная и смертоносная. +ent-MechPhazonBattery = { ent-MechPhazon } + .suffix = Батарея + .desc = { ent-MechPhazon.desc } +ent-MechNTGygax = Особый гигакс NanoTrasen + .desc = Козырь Nanotrasen при решении проблем. Высокая прочность, повышенная защита от ударов, взрывов, температуры, выстрелов: обычных, лазерных и энергетических, а также расширенные слоты под оборудование позволяют перевернуть ситуацию на станции. Ускорители потребляют колоссальное количество энергии. +ent-MechNTGygaxBattery = { ent-MechNTGygax } + .desc = { ent-MechNTGygax.desc } + .suffix = Батарея +ent-MechNTGygaxFilled = { ent-MechNTGygaxBattery } + .desc = { ent-MechNTGygaxBattery.desc } + .suffix = Батарея, Заполненный ent-MechMarauder = Мародёр .desc = Похоже, мы все спасены. ent-MechMarauderBattery = { ent-MechMarauder } @@ -75,6 +88,14 @@ ent-MechGygaxSyndieBattery = { ent-MechGygaxSyndie } ent-MechGygaxSyndieFilled = { ent-MechGygaxSyndieBattery } .suffix = Батарея, Заполненный .desc = { ent-MechGygaxSyndieBattery.desc } +ent-MechRoverSyndie = Ровер + .desc = Модифицированный Дюранд, используемый в неблаговидных целях. На задней стороне бронепластины имеется надпись "Cybersun Inc.". +ent-MechRoverSyndieBattery = { ent-MechRoverSyndie } + .suffix = Батарея + .desc = { ent-MechRoverSyndie.desc } +ent-MechRoverSyndieFilled = { ent-MechRoverSyndieBattery } + .suffix = Батарея, Заполненный + .desc = { ent-MechRoverSyndieBattery.desc } ent-MechMaulerSyndie = Маулер .desc = Модифицированный Мародёр, используемый Синдикатом, не такой маневренный, как Тёмный гигакс, но он компенсирует это броней и мощной огневой мощью. На задней стороне бронепластины имеется надпись "Cybersun Inc.". ent-MechMaulerSyndieBattery = { ent-MechMaulerSyndie } diff --git a/Resources/Locale/ru-RU/_prototypes/entities/objects/specific/mech/weapons/gun/combat.ftl b/Resources/Locale/ru-RU/_prototypes/entities/objects/specific/mech/weapons/gun/combat.ftl index 7b70ef7588..bec70f533d 100644 --- a/Resources/Locale/ru-RU/_prototypes/entities/objects/specific/mech/weapons/gun/combat.ftl +++ b/Resources/Locale/ru-RU/_prototypes/entities/objects/specific/mech/weapons/gun/combat.ftl @@ -24,7 +24,7 @@ ent-WeaponMechCombatShotgun = LBX AC 10 "Залп" .suffix = Оружие мехов, Стрелковое, Боевое, Дробовик ent-WeaponMechCombatShotgunIncendiary = карабин FNX-99 "Аид" .desc = Навесной карабин, стреляющий зажигательными патронами. - .suffix = Оружие мехов, Стрелковое, Боевое, Дробовик, Incendiary + .suffix = Оружие мехов, Стрелковое, Боевое, Дробовик, Зажигательный ent-WeaponMechCombatUltraRifle = AC-2 "Ультра" .desc = Навесной карабин, стреляющий зажигательными патронами. .suffix = Оружие мехов, Стрелковое, Боевое, Автомат diff --git a/Resources/Locale/ru-RU/_strings/_sunrise/construction/steps.ftl b/Resources/Locale/ru-RU/_strings/_sunrise/construction/steps.ftl index e53bcff011..7ae19688c8 100644 --- a/Resources/Locale/ru-RU/_strings/_sunrise/construction/steps.ftl +++ b/Resources/Locale/ru-RU/_strings/_sunrise/construction/steps.ftl @@ -16,6 +16,7 @@ step-wallmount-generator-circuit-board-name = микросхему настен step-freezer-electronics-name = микросхему морозильника step-multitool-name = мультитул step-capacitor-name = конденсатор +step-powercage-name = любую энерго ячейку step-powercell-name = любую батарею step-powercell-small-name = маленькую батарею step-signal-trigger-name = сигнальный триггер diff --git a/Resources/Locale/ru-RU/_strings/_sunrise/research/technologies.ftl b/Resources/Locale/ru-RU/_strings/_sunrise/research/technologies.ftl index 2eb6b7935f..eea95fec35 100644 --- a/Resources/Locale/ru-RU/_strings/_sunrise/research/technologies.ftl +++ b/Resources/Locale/ru-RU/_strings/_sunrise/research/technologies.ftl @@ -2,4 +2,5 @@ research-technology-handcraft-nvd = Кустарные ПНВ research-technology-basic-nvd = Продвинутое ПНВ research-technology-combat-equipment = Боевое снаряжение research-technology-extended-amunitions = Расширенные магазины +research-technology-phazon = Фазон research-technology-cargo-bluespace-equipment = Блюспейс экипировка карго diff --git a/Resources/Locale/ru-RU/_strings/_sunrise/store/categories.ftl b/Resources/Locale/ru-RU/_strings/_sunrise/store/categories.ftl index 60472ec461..1f9dc06cef 100644 --- a/Resources/Locale/ru-RU/_strings/_sunrise/store/categories.ftl +++ b/Resources/Locale/ru-RU/_strings/_sunrise/store/categories.ftl @@ -24,3 +24,4 @@ shop-disease-category-symptoms = Симптомы shop-disease-category-evolution = Улучшение # Uplink store-category-objectives = Цели +store-category-mechs = Мехи diff --git a/Resources/Locale/ru-RU/_strings/_sunrise/store/uplink-catalog.ftl b/Resources/Locale/ru-RU/_strings/_sunrise/store/uplink-catalog.ftl index 0f89fc2886..b2ea51ba44 100644 --- a/Resources/Locale/ru-RU/_strings/_sunrise/store/uplink-catalog.ftl +++ b/Resources/Locale/ru-RU/_strings/_sunrise/store/uplink-catalog.ftl @@ -62,3 +62,26 @@ uplink-hypo-name = Горлекс гипоспрей uplink-hypo-desc = Химический гипоспрей, произвёденный синдикатом, способный мгновенно впрыснуть до 20 ед. реагентов. Изначально пуст. uplink-polytrinic-acid-chemistry-bottle-name = Политриновая кислота uplink-polytrinic-acid-chemistry-bottle-desc = Чрезвычайно едкое химическое вещество. Сильно обжигает всех, кто вступит с ней в непосредственный контакт. + +## Mechs equipment + +uplink-mech-equipment-immolation-gun-name = пушка-испепелитель ZFI +uplink-mech-equipment-immolation-gun-desc = Оружие для боевых мехов, стреляющее высокотемпературными лучами. +uplink-mech-equipment-tesla-cannon-name = тесла-пушка P-X +uplink-mech-equipment-tesla-cannon-desc = Оружие для боевых мехов, стреляющее энергетическими шарами, основанное на принципе экспериментального двигателя Теслы. +uplink-mech-equipment-shotgun-name = LBX AC 10 "Залп" +uplink-mech-equipment-shotgun-desc = Навесной нелетальный электрошокер, позволяющий оглушить злоумышленников. +uplink-mech-equipment-shotgun-incendiary-name = карабин FNX-99 "Аид" +uplink-mech-equipment-shotgun-incendiary-desc = Навесной карабин, стреляющий зажигательными патронами. +uplink-mech-equipment-ultra-rifle-name = AC-2 "Ультра" +uplink-mech-equipment-ultra-rifle-desc = Навесной карабин, стреляющий зажигательными патронами. +uplink-mech-equipment-ion-name = ионная тяжёлая пушка М-4 +uplink-mech-equipment-ion-desc = Навесное ионное орудие, действующее по тому же принципу, что и ручной ионный карабин. Чрезвычайно эффективно против синтетиков, роботов и других мехов. +uplink-mech-equipment-amlg90-name = AMLG-90 +uplink-mech-equipment-amlg90-desc = Лазерный навесной пулемёт. +uplink-mech-equipment-vindictor-name = Устанавливаемый MG-100 Vindicator Minigun +uplink-mech-equipment-vindictor-desc = Тяжёлое оружие массового поражения. +uplink-mech-equipment-uvm31-name = UVM-31 "Дрейк" +uplink-mech-equipment-uvm31-desc = Тяжёлое оружие массового поражения разработанное Cybersun на основе минигана. теперь на прочном штативе позволяющем вести огонь прямо из МЕХа! +uplink-mech-teleporter-medium-name = Телепорт среднего меха +uplink-mech-teleporter-medium-desc = Содержит среднебронированный мех Cybersan с интегрированными цепным мечом и ракетной установкой BRM-8. diff --git a/Resources/Locale/ru-RU/_strings/chemistry/components/hypospray-component.ftl b/Resources/Locale/ru-RU/_strings/chemistry/components/hypospray-component.ftl index e28f25c4e8..2d144a7985 100644 --- a/Resources/Locale/ru-RU/_strings/chemistry/components/hypospray-component.ftl +++ b/Resources/Locale/ru-RU/_strings/chemistry/components/hypospray-component.ftl @@ -19,3 +19,7 @@ hypospray-verb-mode-label = Переключить на набор из конт hypospray-verb-mode-inject-all = Вы больше не можете набирать из контейнеров. hypospray-verb-mode-inject-mobs-only = Теперь вы можете набирать из контейнеров. hypospray-cant-inject = Нельзя сделать инъекцию в { $target }! + +## failure + +hypospay-component-failure-hardsuit = Вы не сможете провести иглу через толстое покрытие! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_strings/chemistry/components/injector-component.ftl b/Resources/Locale/ru-RU/_strings/chemistry/components/injector-component.ftl index ebc585fa24..4c8e9cc199 100644 --- a/Resources/Locale/ru-RU/_strings/chemistry/components/injector-component.ftl +++ b/Resources/Locale/ru-RU/_strings/chemistry/components/injector-component.ftl @@ -28,3 +28,7 @@ injector-component-drawing-user = Вы начинаете набирать шп injector-component-injecting-user = Вы начинаете вводить содержимое шприца. injector-component-drawing-target = { CAPITALIZE($user) } начинает набирать шприц из вас! injector-component-injecting-target = { CAPITALIZE($user) } начинает вводить содержимое шприца в вас! + +## failure + +injector-component-failure-hardsuit = Вы не сможете провести иглу через толстое покрытие! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_strings/lathe/lathe-categories.ftl b/Resources/Locale/ru-RU/_strings/lathe/lathe-categories.ftl index 93661fc125..718d30e45e 100644 --- a/Resources/Locale/ru-RU/_strings/lathe/lathe-categories.ftl +++ b/Resources/Locale/ru-RU/_strings/lathe/lathe-categories.ftl @@ -16,5 +16,6 @@ lathe-category-mechs-ripleymkii = Рипли MK-II lathe-category-mechs-clarke = Кларк lathe-category-mechs-gygax = Гигакс lathe-category-mechs-durand = Дюранд +lathe-category-mechs-phazon = Фазон lathe-category-mechs-equipment = Оборудование механоидов lathe-category-mechs-weapons = Вооружение механоидов diff --git a/Resources/Locale/ru-RU/_strings/store/uplink-catalog.ftl b/Resources/Locale/ru-RU/_strings/store/uplink-catalog.ftl index 5864314bcc..4d50bcad60 100644 --- a/Resources/Locale/ru-RU/_strings/store/uplink-catalog.ftl +++ b/Resources/Locale/ru-RU/_strings/store/uplink-catalog.ftl @@ -93,9 +93,9 @@ uplink-reinforcement-radio-nukeops-desc = Телепортирует в каче uplink-reinforcement-radio-cyborg-assault-name = Телепорт штурмового киборга Синдиката uplink-reinforcement-radio-cyborg-assault-desc = Машина для убийств с доступом к энергомечу, пулемёту, криптографическому секвенсору и пинпоинтеру. uplink-mech-teleporter-heavy-name = Телепорт тяжелого меха -uplink-mech-teleporter-heavy-desc = Содержит тяжелобронированный мех Cybersan с интегрированными цепным мечом, Ultra AC-2, LBX AC 10 "Картечь", ракетной установкой BRM-6 и пушкой P-X Tesla. +uplink-mech-teleporter-heavy-desc = Содержит тяжелобронированный мех Cybersan с интегрированными цепным мечом и ракетной установкой BRM-6. uplink-mech-teleporter-assault-name = Телепорт штурмового меха -uplink-mech-teleporter-assault-desc = Содержит легкобронированный мех Cybersan с интегрированными цепным мечом, LBX AC 10 "Картечь", легкой ракетной установкой SRM-8 и пушкой P-X Tesla. +uplink-mech-teleporter-assault-desc = Содержит легкобронированный мех Cybersan с интегрированными цепным мечом и легкой ракетной установкой SRM-8. uplink-stealth-box-name = Стелс-коробка uplink-stealth-box-desc = Ящик, оснащённый технологией невидимости, проникните везде и не двигайтесь слишком быстро! uplink-headset-name = Полноразмерная гарнитура Синдиката diff --git a/Resources/Prototypes/Actions/mech.yml b/Resources/Prototypes/Actions/mech.yml index 48092f9c5a..b812b12899 100644 --- a/Resources/Prototypes/Actions/mech.yml +++ b/Resources/Prototypes/Actions/mech.yml @@ -35,3 +35,15 @@ sprite: Interface/Actions/actions_mecha.rsi state: mech_eject event: !type:MechEjectPilotEvent + +- type: entity + id: ActionMechLights + name: Lights + description: Turns mech lights. + components: + - type: InstantAction + useDelay: 5 + itemIconStyle: NoItem + icon: { sprite: Interface/Actions/actions_mecha.rsi, state: mech_lights_off } + iconOn: { sprite: Interface/Actions/actions_mecha.rsi, state: mech_lights_on } + event: !type:MechToggleLightsEvent diff --git a/Resources/Prototypes/Catalog/Fills/Crates/syndicate.yml b/Resources/Prototypes/Catalog/Fills/Crates/syndicate.yml index 31c87b4fe7..15a69fde8c 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/syndicate.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/syndicate.yml @@ -45,6 +45,21 @@ - id: DoubleEmergencyNitrogenTankFilled - id: ToolboxSyndicateFilled - id: PlushieNuke + +- type: entity + id: CrateCybersunRoverBundle + suffix: Filled + parent: CrateSyndicate + name: Cybersun rover bundle + description: Contains a set of Cybersan medium armored mechs. + components: + - type: StorageFill + contents: + - id: MechRoverSyndieFilled + - id: DoubleEmergencyOxygenTankFilled + - id: DoubleEmergencyNitrogenTankFilled + - id: ToolboxSyndicateFilled + - id: PlushieNuke - type: entity id: CrateCybersunMaulerBundle diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index 51e3f49466..5919a8b6be 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -1424,38 +1424,6 @@ - !type:ListingLimitedStockCondition stock: 1 -- type: listing - id: UplinkDarkGygax - name: uplink-mech-teleporter-assault-name - description: uplink-mech-teleporter-assault-desc - icon: { sprite: /Textures/Objects/Specific/Mech/mecha.rsi, state: darkgygax } - productEntity: CrateCybersunDarkGygaxBundle - cost: - Telecrystal: 100 - categories: - - UplinkAllies - conditions: - - !type:StoreWhitelistCondition - whitelist: - tags: - - NukeOpsUplink - -- type: listing - id: UplinkMauler - name: uplink-mech-teleporter-heavy-name - description: uplink-mech-teleporter-heavy-desc - icon: { sprite: /Textures/Objects/Specific/Mech/mecha.rsi, state: mauler } - productEntity: CrateCybersunMaulerBundle - cost: - Telecrystal: 150 - categories: - - UplinkAllies - conditions: - - !type:StoreWhitelistCondition - whitelist: - tags: - - NukeOpsUplink - # Implants - type: listing diff --git a/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml b/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml index 1ab3547284..19cbf94d29 100644 --- a/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml +++ b/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml @@ -33,6 +33,7 @@ damageContainers: - Inorganic - Silicon + - Mech # Sunrise-edit - type: entity parent: [ClothingEyesBase, ShowMedicalIcons] diff --git a/Resources/Prototypes/Entities/Effects/dome.yml b/Resources/Prototypes/Entities/Effects/dome.yml index 3a5390f254..c58b02e62c 100644 --- a/Resources/Prototypes/Entities/Effects/dome.yml +++ b/Resources/Prototypes/Entities/Effects/dome.yml @@ -1,3 +1,5 @@ +# Basic + - type: entity id: EnergyDomeBase abstract: true @@ -32,40 +34,8 @@ tags: - HideContextMenu - IgnoreMelee - -- type: entity - id: EnergyDomeSmallPink - categories: [ HideSpawnMenu ] - parent: EnergyDomeBase - components: - - type: Sprite - sprite: Effects/EnergyDome/energydome_small.rsi - layers: - - state: small - color: "#f5166b" - - type: PointLight - enabled: true - radius: 5 - power: 2 - color: "#f5166b" - -- type: entity - id: EnergyDomeSmallBlue - categories: [ HideSpawnMenu ] - parent: EnergyDomeBase - components: - - type: Sprite - drawdepth: Effects - noRot: true - sprite: Effects/EnergyDome/energydome_small.rsi - layers: - - state: small - color: "#64b9de" - - type: PointLight - enabled: true - radius: 5 - power: 2 - color: "#64b9de" + +# Nukeops - type: entity id: EnergyDomeSmallRed @@ -84,34 +54,6 @@ radius: 5 power: 2 color: "#b00000" - -- type: entity - id: EnergyDomeMediumBlue - categories: [ HideSpawnMenu ] - parent: EnergyDomeBase - components: - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeCircle - radius: 1.8 - density: 0 - mask: - - None - layer: - - BulletImpassable - - Opaque - - type: Sprite - sprite: Effects/EnergyDome/energydome_medium.rsi - layers: - - state: medium - color: "#64b9de" - - type: PointLight - enabled: true - radius: 5 - power: 10 - color: "#64b9de" - type: entity id: EnergyDomeMediumRed @@ -141,6 +83,72 @@ power: 10 color: "#b00000" +# NanoTrasen + +- type: entity + id: EnergyDomeSmallBlue + categories: [ HideSpawnMenu ] + parent: EnergyDomeBase + components: + - type: Sprite + drawdepth: Effects + noRot: true + sprite: Effects/EnergyDome/energydome_small.rsi + layers: + - state: small + color: "#64b9de" + - type: PointLight + enabled: true + radius: 5 + power: 2 + color: "#64b9de" + +- type: entity + id: EnergyDomeMediumBlue + categories: [ HideSpawnMenu ] + parent: EnergyDomeBase + components: + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 1.8 + density: 0 + mask: + - None + layer: + - BulletImpassable + - Opaque + - type: Sprite + sprite: Effects/EnergyDome/energydome_medium.rsi + layers: + - state: medium + color: "#64b9de" + - type: PointLight + enabled: true + radius: 5 + power: 10 + color: "#64b9de" + +# Misc + +- type: entity + id: EnergyDomeSmallPink + categories: [ HideSpawnMenu ] + parent: EnergyDomeBase + components: + - type: Sprite + sprite: Effects/EnergyDome/energydome_small.rsi + layers: + - state: small + color: "#f5166b" + - type: PointLight + enabled: true + radius: 5 + power: 2 + color: "#f5166b" + - type: entity id: EnergyDomeSlowing categories: [ HideSpawnMenu ] diff --git a/Resources/Prototypes/Entities/Markers/Spawners/mechs.yml b/Resources/Prototypes/Entities/Markers/Spawners/mechs.yml index 699ed8903f..915df2c01b 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/mechs.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/mechs.yml @@ -6,7 +6,7 @@ - type: Sprite layers: - state: green - - sprite: Objects/Specific/Mech/mecha.rsi + - sprite: Objects/Specific/Mech/ripley.rsi state: ripley - type: ConditionalSpawner prototypes: @@ -20,7 +20,7 @@ - type: Sprite layers: - state: green - - sprite: Objects/Specific/Mech/mecha.rsi + - sprite: Objects/Specific/Mech/ripley.rsi state: ripleymkii - type: ConditionalSpawner prototypes: @@ -63,7 +63,7 @@ - type: Sprite layers: - state: green - - sprite: Objects/Specific/Mech/mecha.rsi + - sprite: Objects/Specific/Mech/clarke.rsi state: clarke - type: ConditionalSpawner prototypes: @@ -77,7 +77,7 @@ - type: Sprite layers: - state: green - - sprite: Objects/Specific/Mech/mecha.rsi + - sprite: Objects/Specific/Mech/gygax.rsi state: gygax - type: ConditionalSpawner prototypes: @@ -91,7 +91,7 @@ - type: Sprite layers: - state: green - - sprite: Objects/Specific/Mech/mecha.rsi + - sprite: Objects/Specific/Mech/durand.rsi state: durand - type: ConditionalSpawner prototypes: @@ -163,7 +163,7 @@ - type: Sprite layers: - state: green - - sprite: Objects/Specific/Mech/mecha.rsi + - sprite: Objects/Specific/Mech/gygax.rsi state: darkgygax - type: ConditionalSpawner prototypes: @@ -178,7 +178,7 @@ - type: Sprite layers: - state: green - - sprite: Objects/Specific/Mech/mecha.rsi + - sprite: Objects/Specific/Mech/gygax.rsi state: darkgygax - type: ConditionalSpawner prototypes: diff --git a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml index 09256dd582..d8035292be 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml @@ -66,6 +66,15 @@ 295: 0.6 285: 0.4 - type: Wagging +# Sunrise-start + - type: Tag + tags: + - CanPilot + - FootstepSound + - DoorBumpOpener + - AnomalyHost + - NoInjectable +#Sunrise-end - type: Inventory speciesId: reptilian femaleDisplacements: diff --git a/Resources/Prototypes/Entities/Objects/Devices/Electronics/exosuit_components.yml b/Resources/Prototypes/Entities/Objects/Devices/Electronics/exosuit_components.yml index 16e593a1f8..4579116023 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Electronics/exosuit_components.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Electronics/exosuit_components.yml @@ -51,6 +51,24 @@ - type: GuideHelp guides: - Robotics + +- type: entity + id: PhazonArmorPlate + parent: BaseExosuitParts + name: phazon armor plates + description: Armor plates made of steel for Phazon exosuit. + components: + - type: Item + storedRotation: 0 + - type: Sprite + sprite: Objects/Specific/Mech/phazon_construction.rsi + state: phazon_armor + - type: Tag + tags: + - PhazonArmor + - type: GuideHelp + guides: + - Robotics - type: entity id: RipleyUpgradeKit @@ -99,6 +117,23 @@ - type: Tag tags: - MechThruster + - type: GuideHelp + guides: + - Robotics + +- type: entity + id: MechPhasicScanningModule + parent: BaseExosuitParts + name: phasic scanning module + description: An application part used in the construction of various devices. + components: + - type: Item + storedRotation: 0 + - type: Sprite + state: triphasic_scan_module + - type: Tag + tags: + - MechPhasicScanningModule - type: GuideHelp guides: - Robotics \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Devices/Electronics/mech.yml b/Resources/Prototypes/Entities/Objects/Devices/Electronics/mech.yml index a3c45f5f44..55e617407b 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Electronics/mech.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Electronics/mech.yml @@ -258,6 +258,58 @@ - type: Tag tags: - DurandTargetingControlModule + - type: GuideHelp + guides: + - Robotics + +# Phazon + +- type: entity + id: PhazonCentralElectronics + parent: BaseElectronics + name: phazon central control module + description: The electrical control center for the Phazon mech. + components: + - type: Item + storedRotation: 0 + - type: Sprite + sprite: Objects/Misc/module.rsi + state: mainboard + - type: Tag + tags: + - PhazonCentralControlModule + - type: GuideHelp + guides: + - Robotics + +- type: entity + id: PhazonPeripheralsElectronics + parent: BaseElectronics + name: phazon peripherals control module + description: The electrical peripherals control for the Phazon mech. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: id_mod + - type: Tag + tags: + - PhazonPeripheralsControlModule + - type: GuideHelp + guides: + - Robotics + +- type: entity + id: PhazonTargetingElectronics + parent: BaseElectronics + name: phazon weapon control and targeting module + description: The electrical targeting control for the Phazon mech. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: mcontroller + - type: Tag + tags: + - PhazonTargetingControlModule - type: GuideHelp guides: - Robotics \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Specific/Mech/Weapons/Gun/combat.yml b/Resources/Prototypes/Entities/Objects/Specific/Mech/Weapons/Gun/combat.yml index 9db1a8434e..fdc29fc97b 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Mech/Weapons/Gun/combat.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Mech/Weapons/Gun/combat.yml @@ -30,7 +30,7 @@ components: - type: Sprite sprite: Objects/Specific/Mech/mecha_equipment.rsi - state: mecha_laser + state: mecha_immolator - type: Gun fireRate: 0.6 selectedMode: SemiAuto @@ -53,7 +53,7 @@ components: - type: Sprite sprite: Objects/Specific/Mech/mecha_equipment.rsi - state: mecha_laser + state: mecha_solaris - type: Gun fireRate: 1 selectedMode: SemiAuto @@ -76,7 +76,7 @@ components: - type: Sprite sprite: Objects/Specific/Mech/mecha_equipment.rsi - state: mecha_laser + state: mecha_firedart - type: Gun fireRate: 0.8 selectedMode: SemiAuto @@ -220,7 +220,7 @@ sprite: Objects/Specific/Mech/mecha_equipment.rsi state: mecha_uac2 - type: Gun - fireRate: 2 + fireRate: 5 shotsPerBurst: 3 burstCooldown: 1.2 selectedMode: Burst @@ -273,7 +273,7 @@ sprite: Objects/Specific/Mech/mecha_equipment.rsi state: mecha_amlg90 - type: Gun - fireRate: 2 + fireRate: 4 shotsPerBurst: 3 burstCooldown: 1.2 selectedMode: Burst @@ -285,7 +285,7 @@ path: /Audio/Weapons/Guns/Empty/empty.ogg - type: ProjectileBatteryAmmoProvider proto: BulletSyndiPlasma - fireCost: 75 + fireCost: 20 - type: Appearance - type: AmmoCounter diff --git a/Resources/Prototypes/Entities/Objects/Specific/Mech/mech_construction.yml b/Resources/Prototypes/Entities/Objects/Specific/Mech/mech_construction.yml index 41c5f28ba0..3946984a39 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Mech/mech_construction.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Mech/mech_construction.yml @@ -978,3 +978,149 @@ graph: Vim node: start defaultTarget: vim + + +# Phazon + +- type: entity + id: BasePhazonPart + parent: BaseMechPart + abstract: true + components: + - type: Sprite + drawdepth: Items + noRot: false + sprite: Objects/Specific/Mech/phazon_construction.rsi + +- type: entity + id: BasePhazonPartItem + parent: BasePhazonPart + abstract: true + components: + - type: Item + size: Ginormous + +- type: entity + parent: BasePhazonPart + id: PhazonHarness + name: phazon harness + description: The core of the Phazon. + components: + - type: Appearance + - type: ItemMapper + mapLayers: + phazon_head+o: + whitelist: + tags: + - PhazonHead + phazon_l_arm+o: + whitelist: + tags: + - PhazonLArm + phazon_r_arm+o: + whitelist: + tags: + - PhazonRArm + phazon_l_leg+o: + whitelist: + tags: + - PhazonLLeg + phazon_r_leg+o: + whitelist: + tags: + - PhazonRLeg + sprite: Objects/Specific/Mech/phazon_construction.rsi + - type: ContainerContainer + containers: + mech-assembly-container: !type:Container + - type: MechAssembly + finishedPrototype: PhazonChassis + requiredParts: + PhazonHead: false + PhazonLArm: false + PhazonRArm: false + PhazonLLeg: false + PhazonRLeg: false + - type: Sprite + state: phazon_harness+o + noRot: true + +- type: entity + parent: BasePhazonPartItem + id: PhazonHead + name: phazon head + description: The head of the Phazon. It belongs on the chassis of the mech. + components: + - type: Sprite + state: phazon_head + - type: Tag + tags: + - PhazonHead + +- type: entity + parent: BasePhazonPartItem + id: PhazonLArm + name: phazon left arm + description: The left arm of the Phazon. It belongs on the chassis of the mech. + components: + - type: Sprite + state: phazon_l_arm + - type: Tag + tags: + - PhazonLArm + +- type: entity + parent: BasePhazonPartItem + id: PhazonLLeg + name: phazon left leg + description: The left leg of the Phazon. It belongs on the chassis of the mech. + components: + - type: Sprite + state: phazon_l_leg + - type: Tag + tags: + - PhazonLLeg + +- type: entity + parent: BasePhazonPartItem + id: PhazonRLeg + name: phazon right leg + description: The right leg of the Phazon. It belongs on the chassis of the mech. + components: + - type: Sprite + state: phazon_r_leg + - type: Tag + tags: + - PhazonRLeg + +- type: entity + parent: BasePhazonPartItem + id: PhazonRArm + name: phazon right arm + description: The right arm of the Phazon. It belongs on the chassis of the mech. + components: + - type: Sprite + state: phazon_r_arm + - type: Tag + tags: + - PhazonRArm + +- type: entity + id: PhazonChassis + parent: BasePhazonPart + name: phazon chassis + description: An in-progress construction of the Phazon mech. + components: + - type: Appearance + - type: ContainerContainer + containers: + battery-container: !type:Container + - type: MechAssemblyVisuals + statePrefix: phazon + - type: Sprite + noRot: true + state: phazon0 + - type: Construction + graph: Phazon + node: start + defaultTarget: phazon \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml b/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml index 812f99580c..9afe19372a 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml @@ -77,7 +77,12 @@ - type: DoAfter - type: Repairable fuelCost: 25 - doAfterDelay: 10 + doAfterDelay: 3 + damage: + types: + Blunt: -15 + Slash: -15 + Piercing: -15 - type: UserInterface interfaces: enum.MechUiKey.Key: @@ -118,6 +123,25 @@ - MobMask layer: - MobLayer + - type: MobState + allowedStates: + - Alive + - Critical + - type: MobThresholds + currentThresholdState : Alive + thresholds: + 0: Alive + 500: Critical + showOverlays: false + allowRevives: true + - type: HealthExaminable + examinableTypes: + - Blunt + - Slash + - Piercing + - Heat + - Shock + locPrefix: mech - type: Appearance - type: ContainerContainer containers: @@ -125,7 +149,7 @@ mech-equipment-container: !type:Container mech-battery-slot: !type:ContainerSlot - type: Damageable - damageContainer: Inorganic + damageContainer: Mech damageModifierSet: LightArmor - type: FootstepModifier footstepSoundCollection: @@ -137,7 +161,7 @@ thresholds: - trigger: !type:DamageTrigger - damage: 1000 + damage: 700 behaviors: - !type:PlaySoundBehavior sound: @@ -147,6 +171,14 @@ - !type:DoActsBehavior acts: ["Destruction"] - type: Prying + - type: StatusIcon + bounds: "-0.6,-0.6, 0.6, 0.6" + - type: PointLight + enabled: false + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + radius: 4 + netsync: false # Ripley MK-I - type: entity @@ -158,7 +190,7 @@ - type: Sprite drawdepth: Mobs noRot: true - sprite: Objects/Specific/Mech/mecha.rsi + sprite: Objects/Specific/Mech/ripley.rsi scale: 1.08, 1.08 layers: - map: [ "enum.MechVisualLayers.Base" ] @@ -184,9 +216,23 @@ baseWalkSpeed: 2.25 baseSprintSpeed: 3.6 - type: Reflect - reflectProb: 0.05 + reflectProb: 0.15 + spread: 180 + soundOnReflect: /Audio/Weapons/block_metal1.ogg reflects: - NonEnergy + - type: Tag + tags: + - DoorBumpOpener + - FootstepSound + - Ripley + - type: MobThresholds + currentThresholdState : Alive + thresholds: + 0: Alive + 200: Critical + showOverlays: false + allowRevives: true - type: entity id: MechRipleyBattery @@ -208,7 +254,7 @@ - type: Sprite drawdepth: Mobs noRot: true - sprite: Objects/Specific/Mech/mecha.rsi + sprite: Objects/Specific/Mech/ripley.rsi scale: 1.08, 1.08 layers: - map: [ "enum.MechVisualLayers.Base" ] @@ -237,9 +283,18 @@ - type: Damageable damageModifierSet: MediumArmorNT - type: Reflect - reflectProb: 0.15 + reflectProb: 0.25 + spread: 180 + soundOnReflect: /Audio/Weapons/block_metal1.ogg reflects: - NonEnergy + - type: MobThresholds + currentThresholdState : Alive + thresholds: + 0: Alive + 250: Critical + showOverlays: false + allowRevives: true - type: entity id: MechRipley2Battery @@ -261,7 +316,7 @@ - type: Sprite drawdepth: Mobs noRot: true - sprite: Objects/Specific/Mech/mecha.rsi + sprite: Objects/Specific/Mech/clarke.rsi scale: 1.08, 1.08 layers: - map: [ "enum.MechVisualLayers.Base" ] @@ -290,9 +345,29 @@ - type: CanMoveInAir - type: MovementAlwaysTouching - type: Reflect - reflectProb: 0.15 + reflectProb: 0.25 + spread: 180 + soundOnReflect: /Audio/Weapons/block_metal1.ogg reflects: - NonEnergy + - type: MobThresholds + currentThresholdState : Alive + thresholds: + 0: Alive + 250: Critical + showOverlays: false + allowRevives: true + - type: PointLight + enabled: false + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + radius: 8 + netsync: false + - type: Tag + tags: + - DoorBumpOpener + - FootstepSound + - Clarke - type: entity id: MechClarkeBattery @@ -332,9 +407,18 @@ components: - HumanoidAppearance - type: Reflect - reflectProb: 0.05 + reflectProb: 0.15 + spread: 180 + soundOnReflect: /Audio/Weapons/block_metal1.ogg reflects: - NonEnergy + - type: MobThresholds + currentThresholdState : Alive + thresholds: + 0: Alive + 150: Critical + showOverlays: false + allowRevives: true - type: entity parent: MechHonker @@ -396,10 +480,19 @@ baseWalkSpeed: 2.4 baseSprintSpeed: 3.7 - type: Reflect - reflectProb: 0.05 + reflectProb: 0.15 + spread: 180 + soundOnReflect: /Audio/Weapons/block_metal1.ogg reflects: - NonEnergy - + - type: MobThresholds + currentThresholdState : Alive + thresholds: + 0: Alive + 150: Critical + showOverlays: false + allowRevives: true + - type: entity parent: MechHamtr id: MechHamtrBattery @@ -467,9 +560,18 @@ tags: - Maintenance - type: Reflect - reflectProb: 0.05 + reflectProb: 0.15 + spread: 180 + soundOnReflect: /Audio/Weapons/block_metal1.ogg reflects: - NonEnergy + - type: MobThresholds + currentThresholdState : Alive + thresholds: + 0: Alive + 150: Critical + showOverlays: false + allowRevives: true # TOOD: buzz / chime actions # TODO: builtin flashlight @@ -495,7 +597,7 @@ - type: Sprite drawdepth: Mobs noRot: true - sprite: Objects/Specific/Mech/mecha.rsi + sprite: Objects/Specific/Mech/gygax.rsi scale: 1.08, 1.08 layers: - map: [ "enum.MechVisualLayers.Base" ] @@ -523,9 +625,23 @@ baseWalkSpeed: 2 baseSprintSpeed: 2.6 - type: Reflect - reflectProb: 0.15 + reflectProb: 0.25 + spread: 180 + soundOnReflect: /Audio/Weapons/block_metal1.ogg reflects: - NonEnergy + - type: MobThresholds + currentThresholdState : Alive + thresholds: + 0: Alive + 300: Critical + showOverlays: false + allowRevives: true + - type: Tag + tags: + - DoorBumpOpener + - FootstepSound + - Gygax - type: entity id: MechGygaxBattery @@ -547,7 +663,7 @@ - type: Sprite drawdepth: Mobs noRot: true - sprite: Objects/Specific/Mech/mecha.rsi + sprite: Objects/Specific/Mech/durand.rsi scale: 1.08, 1.08 layers: - map: [ "enum.MechVisualLayers.Base" ] @@ -561,7 +677,6 @@ brokenState: durand-broken mechToPilotDamageMultiplier: 0.25 airtight: true - maxIntegrity: 400 pilotWhitelist: components: - HumanoidAppearance @@ -583,9 +698,23 @@ fuelCost: 30 doAfterDelay: 15 - type: Reflect - reflectProb: 0.15 + reflectProb: 0.25 + spread: 180 + soundOnReflect: /Audio/Weapons/block_metal1.ogg reflects: - NonEnergy + - type: MobThresholds + currentThresholdState : Alive + thresholds: + 0: Alive + 450: Critical + showOverlays: false + allowRevives: true + - type: Tag + tags: + - DoorBumpOpener + - FootstepSound + - Durand - type: entity id: MechDurandBattery @@ -596,9 +725,154 @@ containers: mech-battery-slot: - PowerCageHigh + +# Phazon + +- type: entity + id: MechPhazon + parent: [ BaseMech, CombatMech, BaseRestrictedContraband ] + name: Phazon + description: The most advanced mech on the market, the pinnacle of technological development, extremely mobile and deadly. + components: + - type: Sprite + drawdepth: Mobs + noRot: true + sprite: Objects/Specific/Mech/mecha.rsi + scale: 1.08, 1.08 + layers: + - map: [ "enum.MechVisualLayers.Base" ] + state: phazon + - type: FootstepModifier + footstepSoundCollection: + path: /Audio/Mecha/sound_mecha_powerloader_step.ogg + - type: Mech + baseState: phazon + openState: phazon-open + brokenState: phazon-broken + mechToPilotDamageMultiplier: 0.4 + maxEquipmentAmount: 6 + airtight: true + pilotWhitelist: + components: + - HumanoidAppearance + - type: MeleeWeapon + hidden: true + attackRate: 1 + damage: + types: + Blunt: 20 + Structural: 130 + - type: MovementSpeedModifier + baseWalkSpeed: 3.2 + baseSprintSpeed: 4 + - type: Reflect + reflectProb: 0.65 + spread: 180 + soundOnReflect: /Audio/Weapons/block_metal1.ogg + reflects: + - NonEnergy + - Energy + - type: MobThresholds + currentThresholdState : Alive + thresholds: + 0: Alive + 200: Critical + showOverlays: false + allowRevives: true + - type: Tag + tags: + - DoorBumpOpener + - FootstepSound + - Phazon + +- type: entity + id: MechPhazonBattery + parent: MechPhazon + suffix: Battery + components: + - type: ContainerFill + containers: + mech-battery-slot: + - PowerCageHigh # Nanotrasen Combat Mechs +# NT Gygax +- type: entity + id: MechNTGygax + parent: [ BaseMech, CombatMech, BaseRestrictedContraband ] + name: Nanotrasen Special Gygax + description: "Nanotrasen's trump card when solving problems. High durability, increased protection against shock, explosions, temperature, shots: conventional, laser and energy, as well as expanded equipment slots allow to turn the situation on the station upside down. Gas pedals consume a colossal amount of energy." + components: + - type: Sprite + drawdepth: Mobs + noRot: true + sprite: Objects/Specific/Mech/gygax.rsi + scale: 1.08, 1.08 + layers: + - map: [ "enum.MechVisualLayers.Base" ] + state: ntgygax + - type: FootstepModifier + footstepSoundCollection: + path: /Audio/Mecha/sound_mecha_powerloader_step.ogg + - type: Mech + baseState: ntgygax + openState: ntgygax-open + brokenState: ntgygax-broken + mechToPilotDamageMultiplier: 0.2 + airtight: true + maxEquipmentAmount: 4 + pilotWhitelist: + components: + - HumanoidAppearance + - type: MeleeWeapon + hidden: true + attackRate: 1 + damage: + types: + Blunt: 30 + Structural: 180 + - type: MovementSpeedModifier + baseWalkSpeed: 2.4 + baseSprintSpeed: 3 + - type: Reflect + reflectProb: 0.30 + spread: 180 + soundOnReflect: /Audio/Weapons/block_metal1.ogg + reflects: + - NonEnergy + - type: Damageable + damageModifierSet: MediumArmorNT + - type: MobThresholds + currentThresholdState : Alive + thresholds: + 0: Alive + 400: Critical + showOverlays: false + allowRevives: true + +- type: entity + id: MechNTGygaxBattery + parent: MechNTGygax + suffix: Battery + components: + - type: ContainerFill + containers: + mech-battery-slot: + - PowerCageHigh + +- type: entity + id: MechNTGygaxFilled + parent: MechNTGygaxBattery + suffix: Battery, Filled + components: + - type: Mech + startingEquipment: + - WeaponMechChainSword + - WeaponMechCombatPulseRifle + - WeaponMechCombatXray + - WeaponMechCombatMissileRack6 + # Marauder - type: entity id: MechMarauder @@ -623,7 +897,6 @@ brokenState: marauder-broken mechToPilotDamageMultiplier: 0.1 airtight: true - maxIntegrity: 500 maxEquipmentAmount: 4 pilotWhitelist: components: @@ -646,9 +919,18 @@ fuelCost: 30 doAfterDelay: 15 - type: Reflect - reflectProb: 0.3 + reflectProb: 0.4 + spread: 180 + soundOnReflect: /Audio/Weapons/block_metal1.ogg reflects: - NonEnergy + - type: MobThresholds + currentThresholdState : Alive + thresholds: + 0: Alive + 500: Critical + showOverlays: false + allowRevives: true - type: entity id: MechMarauderBattery @@ -677,7 +959,7 @@ id: MechSeraph parent: [ BaseMech, CombatMech, BaseCentcommContraband ] name: Seraph - description: That's the last thing you'll see. # Death Squad mech + description: That's the last thing you'll see. components: - type: Sprite drawdepth: Mobs @@ -696,7 +978,6 @@ brokenState: seraph-broken mechToPilotDamageMultiplier: 0.05 airtight: true - maxIntegrity: 550 maxEquipmentAmount: 5 pilotWhitelist: components: @@ -719,9 +1000,18 @@ fuelCost: 30 doAfterDelay: 20 - type: Reflect - reflectProb: 0.3 + reflectProb: 0.4 + spread: 180 + soundOnReflect: /Audio/Weapons/block_metal1.ogg reflects: - NonEnergy + - type: MobThresholds + currentThresholdState : Alive + thresholds: + 0: Alive + 550: Critical + showOverlays: false + allowRevives: true - type: entity id: MechSeraphBattery @@ -758,7 +1048,7 @@ - type: Sprite drawdepth: Mobs noRot: true - sprite: Objects/Specific/Mech/mecha.rsi + sprite: Objects/Specific/Mech/gygax.rsi scale: 1.08, 1.08 layers: - map: [ "enum.MechVisualLayers.Base" ] @@ -770,9 +1060,8 @@ baseState: darkgygax openState: darkgygax-open brokenState: darkgygax-broken - mechToPilotDamageMultiplier: 0.15 + mechToPilotDamageMultiplier: 0.2 airtight: true - maxIntegrity: 300 maxEquipmentAmount: 4 pilotWhitelist: components: @@ -795,9 +1084,18 @@ fuelCost: 40 doAfterDelay: 20 - type: Reflect - reflectProb: 0.25 + reflectProb: 0.30 + spread: 180 + soundOnReflect: /Audio/Weapons/block_metal1.ogg reflects: - NonEnergy + - type: MobThresholds + currentThresholdState : Alive + thresholds: + 0: Alive + 350: Critical + showOverlays: false + allowRevives: true - type: entity id: MechGygaxSyndieBattery @@ -817,9 +1115,86 @@ - type: Mech startingEquipment: - WeaponMechChainSword - - WeaponMechCombatShotgun - WeaponMechCombatMissileRack8 - - WeaponMechCombatTeslaCannon + +# Rover +- type: entity + id: MechRoverSyndie + parent: [ BaseMech, CombatMech, BaseSyndicateContraband ] + name: Rover + description: A modified Durand used for nefarious purposes. On the back of the armor plate there is an inscription "Cybersun Inc." + components: + - type: Sprite + drawdepth: Mobs + noRot: true + sprite: Objects/Specific/Mech/durand.rsi + scale: 1.08, 1.08 + layers: + - map: [ "enum.MechVisualLayers.Base" ] + state: darkdurand + - type: FootstepModifier + footstepSoundCollection: + path: /Audio/Mecha/sound_mecha_powerloader_step.ogg + - type: Mech + baseState: darkdurand + openState: darkdurand-open + brokenState: darkdurand-broken + mechToPilotDamageMultiplier: 0.15 + airtight: true + maxEquipmentAmount: 5 + pilotWhitelist: + components: + - HumanoidAppearance + - type: MeleeWeapon + hidden: true + attackRate: 1 + damage: + types: + Blunt: 30 + Structural: 200 + - type: MovementSpeedModifier + baseWalkSpeed: 2 + baseSprintSpeed: 3 + - type: Damageable + damageModifierSet: MediumArmorSyndi + - type: CanMoveInAir + - type: MovementAlwaysTouching + - type: Repairable + fuelCost: 30 + doAfterDelay: 20 + - type: Reflect + reflectProb: 0.35 + spread: 180 + soundOnReflect: /Audio/Weapons/block_metal1.ogg + reflects: + - NonEnergy + - type: MobThresholds + currentThresholdState : Alive + thresholds: + 0: Alive + 450: Critical + showOverlays: false + allowRevives: true + +- type: entity + id: MechRoverSyndieBattery + parent: MechRoverSyndie + suffix: Battery + components: + - type: ContainerFill + containers: + mech-battery-slot: + - PowerCageHigh + +- type: entity + id: MechRoverSyndieFilled + parent: MechRoverSyndieBattery + suffix: Battery, Filled + components: + - type: Mech + startingEquipment: + - WeaponMechChainSword + - WeaponMechCombatMissileRack8 # Mauler - type: entity @@ -845,7 +1220,6 @@ brokenState: mauler-broken mechToPilotDamageMultiplier: 0.1 airtight: true - maxIntegrity: 500 maxEquipmentAmount: 5 pilotWhitelist: components: @@ -868,9 +1242,18 @@ fuelCost: 50 doAfterDelay: 25 - type: Reflect - reflectProb: 0.35 + reflectProb: 0.45 + spread: 180 + soundOnReflect: /Audio/Weapons/block_metal1.ogg reflects: - NonEnergy + - type: MobThresholds + currentThresholdState : Alive + thresholds: + 0: Alive + 500: Critical + showOverlays: false + allowRevives: true - type: entity id: MechMaulerSyndieBattery @@ -890,7 +1273,4 @@ - type: Mech startingEquipment: - WeaponMechChainSword - - WeaponMechCombatUltraRifle - - WeaponMechCombatShotgun - - WeaponMechCombatMissileRack6 - - WeaponMechCombatTeslaCannon \ No newline at end of file + - WeaponMechCombatMissileRack6 \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml index 37d572c26a..87d01c536d 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml @@ -88,6 +88,9 @@ solutions: hypospray: maxVol: 3000 + - type: Hypospray + onlyAffectsMobs: false + pierceArmor: true - type: UseDelay delay: 0.0 @@ -116,6 +119,7 @@ transferAmount: 15 onlyAffectsMobs: false injectOnly: true + pierceArmor: true - type: Appearance - type: SolutionContainerVisuals maxFillLevels: 1 diff --git a/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml b/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml index 73eb283671..160a78dc2b 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml @@ -199,8 +199,9 @@ - type: Healing delay: 1 damageContainers: - - Synth + - Synth #Sunrise-edit - Silicon + - Mech #Sunrise-edit damage: types: Heat: -5 diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 7096e6293a..e8f4c1a145 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -361,6 +361,7 @@ - DeviceQuantumSpinInverter - EnergyDomeDirectionalTurtle # Sunrise-start + - MechPhasicScanningModule - HandCraftedNVD - BasicNVD - PowerCageHigh @@ -527,6 +528,9 @@ - GygaxCentralElectronics - GygaxPeripheralsElectronics - GygaxTargetingElectronics + - PhazonCentralElectronics + - PhazonPeripheralsElectronics + - PhazonTargetingElectronics - DurandCentralElectronics - DurandPeripheralsElectronics - DurandTargetingElectronics @@ -721,6 +725,13 @@ - GygaxLLeg - GygaxRArm - GygaxRLeg + - PhazonHarness + - PhazonArmor + - PhazonHead + - PhazonLArm + - PhazonLLeg + - PhazonRArm + - PhazonRLeg - MechEquipmentDrill - MechEquipmentDrillDiamond - MechEquipmentKineticAccelerator diff --git a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/cores.yml b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/cores.yml index 315505b81e..b32a1a08e9 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/cores.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/cores.yml @@ -29,6 +29,7 @@ - type: Tag tags: - ForceableFollow + - AnomalyCore #Sunrise-edit - type: AnomalyCore timeToDecay: 600 startPrice: 10000 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/clarke_construction.yml b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/clarke_construction.yml index 98d2aa7aaf..86798dd850 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/clarke_construction.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/clarke_construction.yml @@ -84,11 +84,11 @@ key: "enum.MechAssemblyVisuals.State" data: 10 - - component: PowerCell - name: power cell + - tag: PowerCage + name: power cage store: battery-container icon: - sprite: Objects/Power/power_cells.rsi + sprite: Objects/Power/power_cages.rsi state: small completed: - !type:VisualizerDataInt diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/durand_construction.yml b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/durand_construction.yml index 6ff9f5c1ee..db77ef6a40 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/durand_construction.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/durand_construction.yml @@ -97,11 +97,11 @@ key: "enum.MechAssemblyVisuals.State" data: 11 - - component: PowerCell - name: step-powercell-name + - tag: PowerCage + name: step-powercage-name store: battery-container icon: - sprite: Objects/Power/power_cells.rsi + sprite: Objects/Power/power_cages.rsi state: small completed: - !type:VisualizerDataInt diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/gygax_construction.yml b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/gygax_construction.yml index 065c350908..117100b368 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/gygax_construction.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/gygax_construction.yml @@ -97,11 +97,11 @@ key: "enum.MechAssemblyVisuals.State" data: 11 - - component: PowerCell - name: step-powercell-name + - tag: PowerCage + name: step-powercage-name store: battery-container icon: - sprite: Objects/Power/power_cells.rsi + sprite: Objects/Power/power_cages.rsi state: small completed: - !type:VisualizerDataInt diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/hamtr_construction.yml b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/hamtr_construction.yml index 17c3712b5c..4124c066ce 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/hamtr_construction.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/hamtr_construction.yml @@ -70,11 +70,11 @@ #i omitted the steps involving inserting machine parts because #currently mechs don't support upgrading. add them back in once that's squared away. - - component: PowerCell - name: step-powercell-name + - tag: PowerCage + name: step-powercage-name store: battery-container icon: - sprite: Objects/Power/power_cells.rsi + sprite: Objects/Power/power_cages.rsi state: small completed: - !type:VisualizerDataInt diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/honker_construction.yml b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/honker_construction.yml index 2ba065028a..befc988e2a 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/honker_construction.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/honker_construction.yml @@ -67,11 +67,11 @@ #i omitted the steps involving inserting machine parts because #currently mechs don't support upgrading. add them back in once that's squared away. - - component: PowerCell - name: step-powercell-name + - tag: PowerCage + name: step-powercage-name store: battery-container icon: - sprite: Objects/Power/power_cells.rsi + sprite: Objects/Power/power_cages.rsi state: small completed: - !type:VisualizerDataInt diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/phazon_construction.yml b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/phazon_construction.yml new file mode 100644 index 0000000000..3894e2220f --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/phazon_construction.yml @@ -0,0 +1,215 @@ +- type: constructionGraph + id: Phazon + start: start + graph: + - node: start + edges: + - to: phazon + steps: + - tool: Anchoring + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 1 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 2 + + - material: Cable + amount: 4 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 3 + + - tool: Cutting + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 4 + + - tag: PhazonCentralControlModule + name: phazon central control module + icon: + sprite: "Objects/Misc/module.rsi" + state: "mainboard" + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 5 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 6 + + - tag: PhazonPeripheralsControlModule + name: phazon peripherals control module + icon: + sprite: "Objects/Misc/module.rsi" + state: id_mod + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 7 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 8 + + - tag: PhazonTargetingControlModule + name: phazon weapon control and targeting module + icon: + sprite: "Objects/Misc/module.rsi" + state: mcontroller + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 9 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 10 + + - tag: MechPhasicScanningModule + name: phasic scanning module + icon: + sprite: "Objects/Specific/Mech/mecha_equipment.rsi" + state: triphasic_scan_module + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 11 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 12 + + - tag: CapacitorStockPart + name: capacitor + icon: + sprite: Objects/Misc/stock_parts.rsi + state: capacitor + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 13 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 14 + + - tag: AnomalyCore + name: any anomaly core + icon: + sprite: "Structures/Specific/Anomalies/Cores/gravity_core.rsi" + state: core + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 15 + + - tag: PowerCage + name: power cage + store: battery-container + icon: + sprite: Objects/Power/power_cages.rsi + state: small + + - material: Cable + amount: 4 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 16 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 17 + + - material: Plasteel + amount: 5 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 18 + + - tool: Anchoring + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 19 + + - tool: Welding + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 20 + + - tag: MechAirTank + name: exosuit air tank + icon: + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_air_tank + + - tool: Anchoring + doAfter: 1 + + - tag: MechThruster + name: exosuit thruster + icon: + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_bin + + - tool: Anchoring + doAfter: 1 + + - tag: PhazonArmor + name: phazon armor plates + icon: + sprite: "Objects/Specific/Mech/phazon_construction.rsi" + state: phazon_armor + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 21 + + - tool: Anchoring + doAfter: 2 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 22 + + - tool: Welding + doAfter: 1 + + - node: phazon + actions: + - !type:BuildMech + mechPrototype: MechPhazon \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/ripley_construction.yml b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/ripley_construction.yml index 1c62ba1dcc..a4fa103571 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/ripley_construction.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/ripley_construction.yml @@ -70,11 +70,11 @@ #i omitted the steps involving inserting machine parts because #currently mechs don't support upgrading. add them back in once that's squared away. - - component: PowerCell - name: step-powercell-name + - tag: PowerCage + name: step-powercage-name store: battery-container icon: - sprite: Objects/Power/power_cells.rsi + sprite: Objects/Power/power_cages.rsi state: small completed: - !type:VisualizerDataInt diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/ripleymkii_construction.yml b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/ripleymkii_construction.yml index b343b156cc..a74728f6c4 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/ripleymkii_construction.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/ripleymkii_construction.yml @@ -67,11 +67,11 @@ key: "enum.MechAssemblyVisuals.State" data: 8 - - component: PowerCell - name: step-powercell-name + - tag: PowerCage + name: step-powercage-name store: battery-container icon: - sprite: Objects/Power/power_cells.rsi + sprite: Objects/Power/power_cages.rsi state: small completed: - !type:VisualizerDataInt diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/vim_construction.yml b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/vim_construction.yml index e6dabd9167..3b56f69698 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/vim_construction.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/vim_construction.yml @@ -15,11 +15,11 @@ - !type:VisualizerDataInt key: "enum.MechAssemblyVisuals.State" data: 1 - - component: PowerCell - name: step-powercell-name + - tag: PowerCage + name: step-powercage-name store: battery-container icon: - sprite: Objects/Power/power_cells.rsi + sprite: Objects/Power/power_cages.rsi state: small - tool: Screwing doAfter: 1 diff --git a/Resources/Prototypes/Recipes/Lathes/categories.yml b/Resources/Prototypes/Recipes/Lathes/categories.yml index e67111d8f7..316c962bac 100644 --- a/Resources/Prototypes/Recipes/Lathes/categories.yml +++ b/Resources/Prototypes/Recipes/Lathes/categories.yml @@ -72,6 +72,10 @@ - type: latheCategory id: Durand name: lathe-category-mechs-durand + +- type: latheCategory + id: Phazon + name: lathe-category-mechs-phazon - type: latheCategory id: MechEquipment diff --git a/Resources/Prototypes/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Recipes/Lathes/electronics.yml index 4689813832..dd887f295a 100644 --- a/Resources/Prototypes/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/Recipes/Lathes/electronics.yml @@ -377,6 +377,21 @@ parent: BaseGoldCircuitboardRecipe id: GygaxTargetingElectronics result: GygaxTargetingElectronics + +- type: latheRecipe + parent: BaseGoldCircuitboardRecipe + id: PhazonCentralElectronics + result: PhazonCentralElectronics + +- type: latheRecipe + parent: BaseGoldCircuitboardRecipe + id: PhazonPeripheralsElectronics + result: PhazonPeripheralsElectronics + +- type: latheRecipe + parent: BaseGoldCircuitboardRecipe + id: PhazonTargetingElectronics + result: PhazonTargetingElectronics - type: latheRecipe parent: BaseSilverCircuitboardRecipe diff --git a/Resources/Prototypes/Recipes/Lathes/mech_parts.yml b/Resources/Prototypes/Recipes/Lathes/mech_parts.yml index 943ce85715..01029d92cc 100644 --- a/Resources/Prototypes/Recipes/Lathes/mech_parts.yml +++ b/Resources/Prototypes/Recipes/Lathes/mech_parts.yml @@ -340,6 +340,72 @@ materials: Steel: 500 Glass: 200 + +#Phazon + +- type: latheRecipe + id: PhazonHarness + result: PhazonHarness + category: Phazon + completetime: 10 + materials: + Steel: 2500 + Glass: 2000 + +- type: latheRecipe + id: PhazonArmor + result: PhazonArmorPlate + category: Phazon + completetime: 10 + materials: + Steel: 3000 + Plasma: 1000 + +- type: latheRecipe + id: PhazonHead + result: PhazonHead + category: Phazon + completetime: 10 + materials: + Steel: 1500 + Glass: 250 + Plasma: 500 + +- type: latheRecipe + id: PhazonLArm + result: PhazonLArm + category: Phazon + completetime: 10 + materials: + Steel: 1100 + Plasma: 250 + +- type: latheRecipe + id: PhazonLLeg + result: PhazonLLeg + category: Phazon + completetime: 10 + materials: + Steel: 1100 + Plasma: 250 + +- type: latheRecipe + id: PhazonRLeg + result: PhazonRLeg + category: Phazon + completetime: 10 + materials: + Steel: 1100 + Plasma: 250 + +- type: latheRecipe + id: PhazonRArm + result: PhazonRArm + category: Phazon + completetime: 10 + materials: + Steel: 1100 + Plasma: 250 # Equipment @@ -409,6 +475,16 @@ Bananium: 300 # Misc +- type: latheRecipe + id: MechPhasicScanningModule + result: MechPhasicScanningModule + category: MechEquipment + completetime: 10 + materials: + Steel: 2000 + Glass: 500 + Silver: 100 + - type: latheRecipe id: MechAirTank result: MechAirTank diff --git a/Resources/Prototypes/Research/experimental.yml b/Resources/Prototypes/Research/experimental.yml index 34443e78f0..434f491a3f 100644 --- a/Resources/Prototypes/Research/experimental.yml +++ b/Resources/Prototypes/Research/experimental.yml @@ -127,6 +127,30 @@ # Tier 3 +- type: technology + id: Phazon + name: research-technology-phazon + icon: + sprite: Objects/Specific/Mech/mecha.rsi + state: phazon + discipline: Experimental + tier: 3 + cost: 20000 + recipeUnlocks: + - MechPhasicScanningModule + - PhazonHarness + - PhazonArmor + - PhazonHead + - PhazonLArm + - PhazonLLeg + - PhazonRArm + - PhazonRLeg + - PhazonCentralElectronics + - PhazonPeripheralsElectronics + - PhazonTargetingElectronics + technologyPrerequisites: + - Ripley2 + - type: technology id: GravityManipulation name: research-technology-gravity-manipulation diff --git a/Resources/Prototypes/Research/industrial.yml b/Resources/Prototypes/Research/industrial.yml index 651e2d1f8b..5dc64117ce 100644 --- a/Resources/Prototypes/Research/industrial.yml +++ b/Resources/Prototypes/Research/industrial.yml @@ -107,7 +107,7 @@ id: RipleyAPLU name: research-technology-ripley-aplu icon: - sprite: Objects/Specific/Mech/mecha.rsi + sprite: Objects/Specific/Mech/ripley.rsi state: ripley discipline: Industrial tier: 1 @@ -190,7 +190,7 @@ id: Ripley2 name: research-technology-ripley-mkii icon: - sprite: Objects/Specific/Mech/mecha.rsi + sprite: Objects/Specific/Mech/ripley.rsi state: ripleymkii discipline: Industrial tier: 2 @@ -205,7 +205,7 @@ id: Clarke name: research-technology-clarke icon: - sprite: Objects/Specific/Mech/mecha.rsi + sprite: Objects/Specific/Mech/clarke.rsi state: clarke discipline: Industrial tier: 2 diff --git a/Resources/Prototypes/Store/categories.yml b/Resources/Prototypes/Store/categories.yml index 94be8cbab4..01e11d166e 100644 --- a/Resources/Prototypes/Store/categories.yml +++ b/Resources/Prototypes/Store/categories.yml @@ -77,22 +77,22 @@ - type: storeCategory id: UplinkAllies name: store-category-allies - priority: 8 + priority: 9 #Sunrise-mechs - type: storeCategory id: UplinkJob name: store-category-job - priority: 9 + priority: 10 #Sunrise-mechs - type: storeCategory id: UplinkPointless name: store-category-pointless - priority: 10 + priority: 11 #Sunrise-mechs - type: storeCategory id: UplinkObjectives name: store-category-objectives - priority: 11 + priority: 12 #Sunrise-mechs #revenant - type: storeCategory diff --git a/Resources/Prototypes/Store/presets.yml b/Resources/Prototypes/Store/presets.yml index 5905cb80ba..6950f7b3eb 100644 --- a/Resources/Prototypes/Store/presets.yml +++ b/Resources/Prototypes/Store/presets.yml @@ -17,6 +17,7 @@ - UplinkJob - UplinkPointless - UplinkObjectives + - UplinkMechs #Sunrise-mechs currencyWhitelist: - Telecrystal balance: diff --git a/Resources/Prototypes/_Sunrise/Catalog/uplink_catalog.yml b/Resources/Prototypes/_Sunrise/Catalog/uplink_catalog.yml index 08ce798dbc..ed2a3c575c 100644 --- a/Resources/Prototypes/_Sunrise/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/_Sunrise/Catalog/uplink_catalog.yml @@ -389,4 +389,200 @@ cost: Telecrystal: 8 categories: - - UplinkChemicals \ No newline at end of file + - UplinkChemicals + +# Mechs + +- type: listing + id: UplinkDarkGygax + name: uplink-mech-teleporter-assault-name + description: uplink-mech-teleporter-assault-desc + icon: { sprite: /Textures/Objects/Specific/Mech/mecha.rsi, state: darkgygax } + productEntity: CrateCybersunDarkGygaxBundle + cost: + Telecrystal: 65 + categories: + - UplinkMechs + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkRover + name: uplink-mech-teleporter-medium-name + description: uplink-mech-teleporter-medium-desc + icon: { sprite: /Textures/Objects/Specific/Mech/mecha.rsi, state: rover } + productEntity: CrateCybersunRoverBundle + cost: + Telecrystal: 75 + categories: + - UplinkMechs + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkMauler + name: uplink-mech-teleporter-heavy-name + description: uplink-mech-teleporter-heavy-desc + icon: { sprite: /Textures/Objects/Specific/Mech/mecha.rsi, state: mauler } + productEntity: CrateCybersunMaulerBundle + cost: + Telecrystal: 90 + categories: + - UplinkMechs + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +# Mechs equipment + +- type: listing + id: UplinkMechImmolationGun + name: uplink-mech-equipment-immolation-gun-name + description: uplink-mech-equipment-immolation-gun-desc + icon: { sprite: /Textures/Objects/Specific/Mech/mecha_equipment.rsi, state: mecha_laser } + productEntity: WeaponMechCombatImmolationGun + cost: + Telecrystal: 7 + categories: + - UplinkMechs + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkMechTeslaCannon + name: uplink-mech-equipment-tesla-cannon-name + description: uplink-mech-equipment-tesla-cannon-desc + icon: { sprite: /Textures/Objects/Specific/Mech/mecha_equipment.rsi, state: mecha_wholegen } + productEntity: WeaponMechCombatTeslaCannon + cost: + Telecrystal: 15 + categories: + - UplinkMechs + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkMechShotgun + name: uplink-mech-equipment-shotgun-name + description: uplink-mech-equipment-shotgun-desc + icon: { sprite: /Textures/Objects/Specific/Mech/mecha_equipment.rsi, state: mecha_scatter } + productEntity: WeaponMechCombatShotgun + cost: + Telecrystal: 7 + categories: + - UplinkMechs + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkMechShotgunIncendiary + name: uplink-mech-equipment-shotgun-incendiary-name + description: uplink-mech-equipment-shotgun-incendiary-desc + icon: { sprite: /Textures/Objects/Specific/Mech/mecha_equipment.rsi, state: mecha_carbine } + productEntity: WeaponMechCombatShotgunIncendiary + cost: + Telecrystal: 12 + categories: + - UplinkMechs + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkMechUltraRifle + name: uplink-mech-equipment-ultra-rifle-name + description: uplink-mech-equipment-ultra-rifle-desc + icon: { sprite: /Textures/Objects/Specific/Mech/mecha_equipment.rsi, state: mecha_uac2 } + productEntity: WeaponMechCombatUltraRifle + cost: + Telecrystal: 10 + categories: + - UplinkMechs + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkMechIon + name: uplink-mech-equipment-ion-name + description: uplink-mech-equipment-ion-desc + icon: { sprite: /Textures/Objects/Specific/Mech/mecha_equipment.rsi, state: mecha_ion } + productEntity: WeaponMechCombatIon + cost: + Telecrystal: 12 + categories: + - UplinkMechs + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkMechAMLG90 + name: uplink-mech-equipment-amlg90-name + description: uplink-mech-equipment-amlg90-desc + icon: { sprite: /Textures/Objects/Specific/Mech/mecha_equipment.rsi, state: mecha_amlg90 } + productEntity: WeaponMechCombatAMLG90 + cost: + Telecrystal: 15 + categories: + - UplinkMechs + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkMechVindictor + name: uplink-mech-equipment-vindictor-name + description: uplink-mech-equipment-vindictor-desc + icon: { sprite: /Textures/_Sunrise/Objects/Specific/Mech/mecha_vindictor.rsi, state: mecha_vindictor } + productEntity: WeaponMechCombatVindictor + cost: + Telecrystal: 30 + categories: + - UplinkMechs + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkMechUVM31 + name: uplink-mech-equipment-uvm31-name + description: uplink-mech-equipment-uvm31-desc + icon: { sprite: /Textures/_Sunrise/Objects/Specific/Mech/mecha_uvm31.rsi, state: mecha_uvm31 } + productEntity: WeaponMechCombatUVM31 + cost: + Telecrystal: 20 + categories: + - UplinkMechs + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink diff --git a/Resources/Prototypes/_Sunrise/Damage/containers.yml b/Resources/Prototypes/_Sunrise/Damage/containers.yml index fa1e798828..ec3ca0e8a6 100644 --- a/Resources/Prototypes/_Sunrise/Damage/containers.yml +++ b/Resources/Prototypes/_Sunrise/Damage/containers.yml @@ -6,3 +6,12 @@ - Heat - Shock - Caustic + +- type: damageContainer + id: Mech + supportedGroups: + - Brute + supportedTypes: + - Heat + - Shock + - Caustic diff --git a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/humanoid_xeno.yml b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/humanoid_xeno.yml index 2d4b45e393..6dcb9bb816 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/humanoid_xeno.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/humanoid_xeno.yml @@ -126,6 +126,7 @@ - CanPilot - FootstepSound - DoorBumpOpener + - NoInjectable - type: CollectiveMind minds: - Xeno diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Devices/handheld.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Devices/handheld.yml index 280aa79334..d681ca5c23 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Devices/handheld.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Devices/handheld.yml @@ -226,6 +226,82 @@ id: HandheldRoboAnalyzerUnpowered parent: BaseHandheldRoboAnalyzer suffix: Handheld, Unpowered + +# Handheld Mech Analyzer + +- type: entity + id: BaseHandheldMechAnalyzer + parent: BaseItem + name: mech analyzer + description: A hand-held mech scaner. + abstract: true + components: + - type: Sprite + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_analyzer + layers: + - state: mecha_analyzer + - state: mecha_analyzer_anim + shader: unshaded + visible: true + map: [ "enum.PowerDeviceVisualLayers.Powered" ] + - type: Item + storedRotation: -90 + - type: ActivatableUI + key: enum.HealthAnalyzerUiKey.Key + - type: UserInterface + interfaces: + enum.HealthAnalyzerUiKey.Key: + type: HealthAnalyzerBoundUserInterface + - type: HealthAnalyzer + scanningEndSound: + path: "/Audio/Items/Medical/healthscanner.ogg" + damageContainers: + - Mech + - type: Tag + tags: + - DiscreteHealthAnalyzer + - type: Appearance + - type: GenericVisualizer + visuals: + enum.PowerCellSlotVisuals.Enabled: + enum.PowerDeviceVisualLayers.Powered: + True: { visible: true } + False: { visible: false } + - type: GuideHelp + guides: + - Robotics + +- type: entity + id: HandheldMechAnalyzer + parent: + - BaseHandheldMechAnalyzer + - BaseHandheldComputer + suffix: HandHeld, Powered + +- type: entity + id: HandheldMechAnalyzerEmpty + parent: HandheldMechAnalyzer + suffix: HandHeld, Empty + components: + - type: Sprite + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_analyzer + layers: + - state: mecha_analyzer + - state: mecha_analyzer_anim + shader: unshaded + visible: false + map: [ "enum.PowerDeviceVisualLayers.Powered" ] + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + +- type: entity + id: HandheldMechAnalyzerUnpowered + parent: BaseHandheldMechAnalyzer + suffix: Handheld, Unpowered # Handheld Camera diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Fun/mech_spray_paint.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Fun/mech_spray_paint.yml new file mode 100644 index 0000000000..cf8e32c12b --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Fun/mech_spray_paint.yml @@ -0,0 +1,434 @@ +# Base Paints +- type: entity + parent: BaseItem + id: MechPaintBase + name: mech spray paint + description: A tin of mech spray paint. + categories: [ HideSpawnMenu ] + components: + - type: Appearance + - type: Sprite + sprite: Objects/Fun/spraycans.rsi + state: clown_cap + layers: + - state: clown_cap + map: ["enum.OpenableVisuals.Layer"] + - type: MechPaint + used: false + whitelist: + tags: + - Gygax + baseState: gygax + openState: gygax-open + brokenState: gygax-broken + - type: Item + sprite: Objects/Fun/spraycans.rsi + heldPrefix: spray + - type: SolutionContainerManager + solutions: + drink: + maxVol: 50 + reagents: + - ReagentId: SpaceGlue + Quantity: 50 + - type: TrashOnSolutionEmpty + solution: drink + - type: Sealable + - type: Openable + sound: + path: /Audio/Effects/pop_high.ogg + closeable: true + closeSound: + path: /Audio/Effects/pop_high.ogg + +# Paints + +# Ripley-Aluminizer +- type: entity + parent: MechPaintBase + suffix: DEBUG, Ripley, Aluminizer + id: MechPaintClarkeOrangey + components: + - type: Sprite + sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi + state: aluminizer-cap + layers: + - state: aluminizer-cap + map: ["enum.OpenableVisuals.Layer"] + - type: Item + sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi + heldPrefix: aluminizer + - type: MechPaint + used: false + whitelist: + tags: + - Ripley + baseState: aluminizer + openState: aluminizer-open + brokenState: aluminizer-broken + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "aluminizer"} + False: {state: "aluminizer-cap"} + +# Ripley-Combat Ripley +- type: entity + parent: MechPaintBase + suffix: DEBUG, Ripley, Combat Ripley + id: MechPaintRipleyCombatRipley + components: + - type: Sprite + sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi + state: combat-ripley-cap + layers: + - state: combat-ripley-cap + map: ["enum.OpenableVisuals.Layer"] + - type: Item + sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi + heldPrefix: combat-ripley + - type: MechPaint + used: false + whitelist: + tags: + - Ripley + baseState: combatripley + openState: combatripley-open + brokenState: combatripley-broken + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "combat-ripley"} + False: {state: "combat-ripley-cap"} + +# Ripley-Firestarter +- type: entity + parent: MechPaintBase + suffix: DEBUG, Ripley, Firestarter + id: MechPaintRipleyFirestarter + components: + - type: Sprite + sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi + state: firestarter-cap + layers: + - state: firestarter-cap + map: ["enum.OpenableVisuals.Layer"] + - type: Item + sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi + heldPrefix: firestarter + - type: MechPaint + used: false + whitelist: + tags: + - Ripley + baseState: ripley_flames_red + openState: ripley_flames_red-open + brokenState: ripley_flames_red-broken + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "firestarter"} + False: {state: "firestarter-cap"} + +# Ripley-Hauler +- type: entity + parent: MechPaintBase + suffix: DEBUG, Ripley, Hauler + id: MechPaintRipleyHauler + components: + - type: Sprite + sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi + state: hauler-cap + layers: + - state: hauler-cap + map: ["enum.OpenableVisuals.Layer"] + - type: Item + sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi + heldPrefix: hauler + - type: MechPaint + used: false + whitelist: + tags: + - Ripley + baseState: hauler + openState: hauler-open + brokenState: hauler-broken + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "hauler"} + False: {state: "hauler-cap"} + +# Ripley-Reaper +- type: entity + parent: MechPaintBase + suffix: DEBUG, Ripley, Reaper + id: MechPaintRipleyReaper + components: + - type: Sprite + sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi + state: reaper-cap + layers: + - state: reaper-cap + map: ["enum.OpenableVisuals.Layer"] + - type: Item + sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi + heldPrefix: reaper + - type: MechPaint + used: false + whitelist: + tags: + - Ripley + baseState: deathripley + openState: deathripley-open + brokenState: deathripley-broken + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "reaper"} + False: {state: "reaper-cap"} + +# Ripley-Zairjah +- type: entity + parent: MechPaintBase + suffix: DEBUG, Ripley, Zairjah + id: MechPaintRipleyZairjah + components: + - type: Sprite + sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi + state: zairjah-cap + layers: + - state: zairjah-cap + map: ["enum.OpenableVisuals.Layer"] + - type: Item + sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi + heldPrefix: zairjah + - type: MechPaint + used: false + whitelist: + tags: + - Ripley + baseState: ripley_zairjah + openState: ripley_zairjah-open + brokenState: ripley_zairjah-broken + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "zairjah"} + False: {state: "zairjah-cap"} + +# Clarke-Orangey +- type: entity + parent: MechPaintBase + suffix: DEBUG, Clarke, Orangey + id: MechPaintClarkeOrangey + components: + - type: Sprite + sprite: _Sunrise/Objects/Fun/mech_spraycans/clarke.rsi + state: orangey-cap + layers: + - state: orangey-cap + map: ["enum.OpenableVisuals.Layer"] + - type: Item + sprite: _Sunrise/Objects/Fun/mech_spraycans/clarke.rsi + heldPrefix: orangey + - type: MechPaint + used: false + whitelist: + tags: + - Clarke + baseState: orangey + openState: orangey-open + brokenState: orangey-broken + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "orangey"} + False: {state: "orangey-cap"} + +# Gygax-Molot +- type: entity + parent: MechPaintBase + suffix: DEBUG, Gygax, Molot + id: MechPaintGygaxMolot + components: + - type: Sprite + sprite: _Sunrise/Objects/Fun/mech_spraycans/gygax.rsi + state: pobeda-cap + layers: + - state: pobeda-cap + map: ["enum.OpenableVisuals.Layer"] + - type: Item + sprite: _Sunrise/Objects/Fun/mech_spraycans/gygax.rsi + heldPrefix: pobeda + - type: MechPaint + used: false + whitelist: + tags: + - Gygax + baseState: molot + openState: molot-open + brokenState: molot-broken + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "pobeda"} + False: {state: "pobeda-cap"} + +#Gygax-Old + +- type: entity + parent: MechPaintBase + suffix: DEBUG, Gygax, Old + id: MechPaintGygaxOld + components: + - type: Sprite + sprite: Objects/Fun/spraycans.rsi + layers: + - state: spray + map: ["Base"] + - state: spray_cap_colors + map: ["enum.OpenableVisuals.Layer"] + color: "#ed5f3b" + - type: MechPaint + used: false + whitelist: + tags: + - Gygax + baseState: gygax_alt + openState: gygax_alt-open + brokenState: gygax_alt-broken + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "spray_colors" , color: "#ed5f3b"} + False: {state: "spray_cap_colors" , color: "#ed5f3b"} + +#Durand-Unathi + +- type: entity + parent: MechPaintBase + suffix: DEBUG, Durand, Unathi + id: MechPaintDurandUnathi + components: + - type: Sprite + sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi + layers: + - state: kharn-cap + map: ["enum.OpenableVisuals.Layer"] + - type: Item + sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi + heldPrefix: kharn + - type: MechPaint + used: false + whitelist: + tags: + - Durand + baseState: unathi + openState: unathi-open + brokenState: unathi-broken + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "kharn"} + False: {state: "kharn-cap"} + +#Durand-Shire + +- type: entity + parent: MechPaintBase + suffix: DEBUG, Durand , Shire + id: MechPaintDurandShire + components: + - type: Sprite + sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi + layers: + - state: shire-cap + map: ["enum.OpenableVisuals.Layer"] + - type: Item + sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi + heldPrefix: shire + - type: MechPaint + used: false + whitelist: + tags: + - Durand + baseState: shire + openState: shire-open + brokenState: shire-broken + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "shire"} + False: {state: "shire-cap"} + +#Durand-Dollhouse + +- type: entity + parent: MechPaintBase + suffix: DEBUG, Durand , Dollhouse + id: MechPaintDurandDollhouse + components: + - type: Sprite + sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi + layers: + - state: dollhouse-cap + map: ["enum.OpenableVisuals.Layer"] + - type: Item + sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi + heldPrefix: dollhouse + - type: MechPaint + used: false + whitelist: + tags: + - Durand + baseState: dollhouse + openState: dollhouse-open + brokenState: dollhouse-broken + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "dollhouse"} + False: {state: "dollhouse-cap"} + +#Durand-Executor + +- type: entity + parent: MechPaintBase + suffix: DEBUG, Durand , Executor + id: MechPaintDurandExecutor + components: + - type: Sprite + sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi + layers: + - state: executioner-cap + map: ["enum.OpenableVisuals.Layer"] + - type: Item + sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi + heldPrefix: executioner + - type: MechPaint + used: false + whitelist: + tags: + - Durand + baseState: executor + openState: executor-open + brokenState: executor-broken + - type: GenericVisualizer + visuals: + enum.OpenableVisuals.Opened: + enum.OpenableVisuals.Layer: + True: {state: "executioner"} + False: {state: "executioner-cap"} \ No newline at end of file diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Fun/prunks.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Fun/prunks.yml index 9e651f1430..170daa2dc0 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Fun/prunks.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Fun/prunks.yml @@ -122,6 +122,7 @@ solutionName: hypospray transferAmount: 10 onlyAffectsMobs: false + injectOnly: true - type: UseDelay delay: 0.5 # - type: HiddenDescription diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Mech/Weapons/Gun/combat.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Mech/Weapons/Gun/combat.yml index e9c20edbb7..6c4c6c3ec8 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Mech/Weapons/Gun/combat.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Mech/Weapons/Gun/combat.yml @@ -10,7 +10,7 @@ - type: Gun minAngle: -25 maxAngle: 25 - fireRate: 8 + fireRate: 6 selectedMode: FullAuto availableModes: - FullAuto @@ -18,7 +18,7 @@ path: /Audio/_Sunrise/Weapons/Guns/HMGs/minigun_shot.ogg - type: ProjectileBatteryAmmoProvider proto: CartridgeLightRifle - fireCost: 50 + fireCost: 30 - type: Appearance - type: AmmoCounter @@ -44,7 +44,7 @@ soundGunshot: path: /Audio/Weapons/Guns/Gunshots/laser.ogg - type: ProjectileBatteryAmmoProvider - proto: BulletEnergyGunLaser - fireCost: 20 + proto: BulletSyndiPlasma2 + fireCost: 25 - type: Appearance - type: AmmoCounter \ No newline at end of file diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Mech/mechs.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Mech/mechs.yml index 4789655e55..452aba8a0f 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Mech/mechs.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Mech/mechs.yml @@ -1,27 +1,26 @@ - type: entity - id: MechMolot - parent: [ BaseMech, CombatMech ] - name: Molot M-1 - description: A heavy mech designed by the SSSP to operate in aggressive, unaccepted environments. It has 4 weapon mounts on board, oxygen maintenance in the cockpit. + id: MechSecPod + parent: [ BaseMech, CombatMech, BaseRestrictedContraband ] + name: Security Pod + description: While lightly armored, the Gygax has incredible mobility thanks to its ability that lets it smash through walls at high speeds. components: - type: Sprite drawdepth: Mobs noRot: true - sprite: _Sunrise/Objects/Specific/Mech/mecha.rsi + sprite: _Sunrise/Objects/Specific/Mech/sec_pod.rsi + scale: 1.08, 1.08 layers: - map: [ "enum.MechVisualLayers.Base" ] - state: molot + state: sec_pod - type: FootstepModifier footstepSoundCollection: path: /Audio/Mecha/sound_mecha_powerloader_step.ogg - type: Mech - baseState: molot - openState: molot-open - brokenState: molot-broken - mechToPilotDamageMultiplier: 0.1 + baseState: sec_pod + openState: sec_pod + brokenState: sec_pod + mechToPilotDamageMultiplier: 0.3 airtight: true - maxIntegrity: 700 - maxEquipmentAmount: 4 pilotWhitelist: components: - HumanoidAppearance @@ -30,41 +29,22 @@ attackRate: 1 damage: types: - Blunt: 40 - Structural: 200 + Blunt: 0 + Structural: 0 - type: MovementSpeedModifier - baseWalkSpeed: 2 - baseSprintSpeed: 2.5 - - type: Damageable - damageModifierSet: HeavyArmorNT - - type: CanMoveInAir - - type: MovementAlwaysTouching - - type: Repairable - fuelCost: 30 - doAfterDelay: 15 + baseWalkSpeed: 2.5 + baseSprintSpeed: 3 - type: Reflect - reflectProb: 0.3 + reflectProb: 0.25 + spread: 180 + soundOnReflect: /Audio/Weapons/block_metal1.ogg reflects: - NonEnergy - -- type: entity - id: MechMolotBattery - parent: MechMolot - suffix: Battery - components: - - type: ContainerFill - containers: - mech-battery-slot: - - PowerCageHigh - -- type: entity - id: MechMolotFilled - parent: MechMolotBattery - suffix: Battery, Filled - components: - - type: Mech - startingEquipment: - - WeaponMechChainSword - - WeaponMechCombatPulseRifle - - WeaponMechCombatUltraRifle - - WeaponMechCombatMissileRack8 \ No newline at end of file + - type: MobThresholds + currentThresholdState : Alive + thresholds: + 0: Alive + 300: Critical + showOverlays: false + allowRevives: true + - type: Tag \ No newline at end of file diff --git a/Resources/Prototypes/_Sunrise/Entities/Structures/Doors/Airlocks/Glass/glass_airlock.yml b/Resources/Prototypes/_Sunrise/Entities/Structures/Doors/Airlocks/Glass/glass_airlock.yml index 085a8159f0..722147a8a0 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Structures/Doors/Airlocks/Glass/glass_airlock.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Structures/Doors/Airlocks/Glass/glass_airlock.yml @@ -42,7 +42,6 @@ - type: Sprite sprite: _Sunrise/Structures/Doors/Airlocks/Glass/double_glass_airlock.rsi snapCardinals: false - scale: 1.5,1 offset: 0,0 - type: Fixtures fixtures: diff --git a/Resources/Prototypes/_Sunrise/Store/categories.yml b/Resources/Prototypes/_Sunrise/Store/categories.yml index 0e77a3b5db..4782ef2f79 100644 --- a/Resources/Prototypes/_Sunrise/Store/categories.yml +++ b/Resources/Prototypes/_Sunrise/Store/categories.yml @@ -113,4 +113,11 @@ - type: currency id: DiseasePoints displayName: shop-disease-currency - canWithdraw: false \ No newline at end of file + canWithdraw: false + +#uplink categoires + +- type: storeCategory + id: UplinkMechs + name: store-category-mechs + priority: 8 diff --git a/Resources/Prototypes/_Sunrise/Store/presets.yml b/Resources/Prototypes/_Sunrise/Store/presets.yml index f7d4a7569a..674bac7ff3 100644 --- a/Resources/Prototypes/_Sunrise/Store/presets.yml +++ b/Resources/Prototypes/_Sunrise/Store/presets.yml @@ -5,18 +5,19 @@ - type: Store name: store-preset-name-uplink categories: - - UplinkWeaponrySilent + - UplinkWeaponry - UplinkAmmoSilent - - UplinkExplosivesSilent + - UplinkExplosives - UplinkChemicals - UplinkDeception - - UplinkDisruptionSilent + - UplinkDisruption - UplinkImplants - UplinkAllies - - UplinkWearablesSilent + - UplinkWearables - UplinkJob - UplinkPointless - UplinkObjectives + - UplinkMechs #Sunrise-mechs currencyWhitelist: - Telecrystal balance: diff --git a/Resources/Prototypes/_Sunrise/tags.yml b/Resources/Prototypes/_Sunrise/tags.yml index b56ea9a4fb..166d6968cb 100644 --- a/Resources/Prototypes/_Sunrise/tags.yml +++ b/Resources/Prototypes/_Sunrise/tags.yml @@ -3,6 +3,9 @@ - type: Tag id: IgnoreMelee + +- type: Tag + id: NoInjectable - type: Tag id: Nanopaste @@ -33,6 +36,9 @@ - type: Tag id: SyndieAgentUplink + +- type: Tag + id: AnomalyCore # Catridges: @@ -158,3 +164,20 @@ - type: Tag id: Board + +# Mechs + +- type: Tag + id: Ripley + +- type: Tag + id: Clarke + +- type: Tag + id: Gygax + +- type: Tag + id: Durand + +- type: Tag + id: Phazon diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index d61acb713e..53da0cbe12 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -808,6 +808,33 @@ - type: Tag id: GygaxRLeg + +- type: Tag + id: PhazonArmor + +- type: Tag + id: PhazonCentralControlModule + +- type: Tag + id: PhazonPeripheralsControlModule + +- type: Tag + id: PhazonTargetingControlModule + +- type: Tag + id: PhazonHead + +- type: Tag + id: PhazonLArm + +- type: Tag + id: PhazonLLeg + +- type: Tag + id: PhazonRArm + +- type: Tag + id: PhazonRLeg - type: Tag id: HudMedical @@ -1049,6 +1076,9 @@ - type: Tag id: MechThruster + +- type: Tag + id: MechPhasicScanningModule - type: Tag id: Medal diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/clarke-broken.png b/Resources/Textures/Objects/Specific/Mech/clarke.rsi/clarke-broken.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/clarke-broken.png rename to Resources/Textures/Objects/Specific/Mech/clarke.rsi/clarke-broken.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/clarke-open.png b/Resources/Textures/Objects/Specific/Mech/clarke.rsi/clarke-open.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/clarke-open.png rename to Resources/Textures/Objects/Specific/Mech/clarke.rsi/clarke-open.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/clarke.png b/Resources/Textures/Objects/Specific/Mech/clarke.rsi/clarke.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/clarke.png rename to Resources/Textures/Objects/Specific/Mech/clarke.rsi/clarke.png diff --git a/Resources/Textures/Objects/Specific/Mech/clarke.rsi/meta.json b/Resources/Textures/Objects/Specific/Mech/clarke.rsi/meta.json new file mode 100644 index 0000000000..3e911362d2 --- /dev/null +++ b/Resources/Textures/Objects/Specific/Mech/clarke.rsi/meta.json @@ -0,0 +1,75 @@ +{ + "copyright" : "Taken from https://github.com/tgstation/tgstation at at https://github.com/tgstation/tgstation/commit/40d89d11ea4a5cb81d61dc1018b46f4e7d32c62a, hamtr made by brainfood1183 (github)", + "license" : "CC-BY-SA-3.0", + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "clarke", + "directions": 4, + "delays": [ + [ + 0.1, + 0.05, + 0.05 + ], + [ + 0.1, + 0.05, + 0.05 + ], + [ + 0.1, + 0.05, + 0.05 + ], + [ + 0.1, + 0.05, + 0.05 + ] + ] + }, + { + "name": "clarke-open" + }, + { + "name": "clarke-broken" + }, + { + "name": "orangey", + "directions": 4, + "delays": [ + [ + 0.1, + 0.05, + 0.05 + ], + [ + 0.1, + 0.05, + 0.05 + ], + [ + 0.1, + 0.05, + 0.05 + ], + [ + 0.1, + 0.05, + 0.05 + ] + ] + }, + { + "name": "orangey-open" + }, + { + "name": "orangey-broken" + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Mech/clarke.rsi/orangey-broken.png b/Resources/Textures/Objects/Specific/Mech/clarke.rsi/orangey-broken.png new file mode 100644 index 0000000000..9a49572c0b Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/clarke.rsi/orangey-broken.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/clarke.rsi/orangey-open.png b/Resources/Textures/Objects/Specific/Mech/clarke.rsi/orangey-open.png new file mode 100644 index 0000000000..9f4e89a5a0 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/clarke.rsi/orangey-open.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/clarke.rsi/orangey.png b/Resources/Textures/Objects/Specific/Mech/clarke.rsi/orangey.png new file mode 100644 index 0000000000..b4d77a0804 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/clarke.rsi/orangey.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/durand.rsi/darkdurand-broken.png b/Resources/Textures/Objects/Specific/Mech/durand.rsi/darkdurand-broken.png new file mode 100644 index 0000000000..207855901d Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/durand.rsi/darkdurand-broken.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/durand.rsi/darkdurand-open.png b/Resources/Textures/Objects/Specific/Mech/durand.rsi/darkdurand-open.png new file mode 100644 index 0000000000..443c94ad50 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/durand.rsi/darkdurand-open.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/durand.rsi/darkdurand.png b/Resources/Textures/Objects/Specific/Mech/durand.rsi/darkdurand.png new file mode 100644 index 0000000000..c9a4ca77fe Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/durand.rsi/darkdurand.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/durand.rsi/dollhouse-broken.png b/Resources/Textures/Objects/Specific/Mech/durand.rsi/dollhouse-broken.png new file mode 100644 index 0000000000..9088fa935e Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/durand.rsi/dollhouse-broken.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/durand.rsi/dollhouse-open.png b/Resources/Textures/Objects/Specific/Mech/durand.rsi/dollhouse-open.png new file mode 100644 index 0000000000..f7757afd5d Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/durand.rsi/dollhouse-open.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/durand.rsi/dollhouse.png b/Resources/Textures/Objects/Specific/Mech/durand.rsi/dollhouse.png new file mode 100644 index 0000000000..6c886ed81f Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/durand.rsi/dollhouse.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/durand-broken.png b/Resources/Textures/Objects/Specific/Mech/durand.rsi/durand-broken.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/durand-broken.png rename to Resources/Textures/Objects/Specific/Mech/durand.rsi/durand-broken.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/durand-open.png b/Resources/Textures/Objects/Specific/Mech/durand.rsi/durand-open.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/durand-open.png rename to Resources/Textures/Objects/Specific/Mech/durand.rsi/durand-open.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/durand.png b/Resources/Textures/Objects/Specific/Mech/durand.rsi/durand.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/durand.png rename to Resources/Textures/Objects/Specific/Mech/durand.rsi/durand.png diff --git a/Resources/Textures/Objects/Specific/Mech/durand.rsi/executor-broken.png b/Resources/Textures/Objects/Specific/Mech/durand.rsi/executor-broken.png new file mode 100644 index 0000000000..36ced42285 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/durand.rsi/executor-broken.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/durand.rsi/executor-open.png b/Resources/Textures/Objects/Specific/Mech/durand.rsi/executor-open.png new file mode 100644 index 0000000000..5a3337716c Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/durand.rsi/executor-open.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/durand.rsi/executor.png b/Resources/Textures/Objects/Specific/Mech/durand.rsi/executor.png new file mode 100644 index 0000000000..e02879deac Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/durand.rsi/executor.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/durand.rsi/meta.json b/Resources/Textures/Objects/Specific/Mech/durand.rsi/meta.json new file mode 100644 index 0000000000..a3d6721b9a --- /dev/null +++ b/Resources/Textures/Objects/Specific/Mech/durand.rsi/meta.json @@ -0,0 +1,196 @@ +{ + "copyright" : "Taken from https://github.com/tgstation/tgstation at at https://github.com/tgstation/tgstation/commit/40d89d11ea4a5cb81d61dc1018b46f4e7d32c62a, hamtr made by brainfood1183 (github)", + "license" : "CC-BY-SA-3.0", + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "durand", + "directions": 4 + }, + { + "name": "durand-open", + "delays": [ + [ + 1, + 0.1, + 0.1, + 0.5, + 0.1, + 0.1 + ] + ] + }, + { + "name": "durand-broken", + "delays": [ + [ + 0.5, + 1, + 0.5, + 1 + ] + ] + }, + { + "name": "darkdurand", + "directions": 4 + }, + { + "name": "darkdurand-open", + "delays": [ + [ + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5 + ] + ] + }, + { + "name": "darkdurand-broken", + "delays": [ + [ + 0.5, + 0.5, + 0.5, + 0.5 + ] + ] + }, + { + "name": "unathi", + "directions": 4, + "delays": [ + [ + 0.5, + 0.5, + 0.5, + 0.5 + ], + [ + 0.5, + 0.5, + 0.5, + 0.5 + ], + [ + 0.5, + 0.5, + 0.5, + 0.5 + ], + [ + 0.5, + 0.5, + 0.5, + 0.5 + ] + ] + }, + { + "name": "unathi-open", + "delays": [ + [ + 0.5, + 0.5, + 0.5 + ] + ] + }, + { + "name": "unathi-broken", + "delays": [ + [ + 0.5, + 0.5, + 0.5, + 0.5 + ] + ] + }, + { + "name": "dollhouse", + "directions": 4 + }, + { + "name": "dollhouse-open", + "delays": [ + [ + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5 + ] + ] + }, + { + "name": "dollhouse-broken" + }, + { + "name": "shire", + "directions": 4 + }, + { + "name": "shire-open" + }, + { + "name": "shire-broken" + }, + { + "name": "executor", + "directions": 4, + "delays": [ + [ + 0.5, + 0.5, + 0.5, + 0.5, + 0.5 + ], + [ + 0.5, + 0.5, + 0.5, + 0.5, + 0.5 + ], + [ + 0.5, + 0.5, + 0.5, + 0.5, + 0.5 + ], + [ + 0.5, + 0.5, + 0.5, + 0.5, + 0.5 + ] + ] + }, + { + "name": "executor-open" + }, + { + "name": "executor-broken", + "delays": [ + [ + 0.5, + 0.5, + 0.5, + 0.5 + ] + ] + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Mech/durand.rsi/shire-broken.png b/Resources/Textures/Objects/Specific/Mech/durand.rsi/shire-broken.png new file mode 100644 index 0000000000..f7a64e6bf2 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/durand.rsi/shire-broken.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/durand.rsi/shire-open.png b/Resources/Textures/Objects/Specific/Mech/durand.rsi/shire-open.png new file mode 100644 index 0000000000..92343144c2 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/durand.rsi/shire-open.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/durand.rsi/shire.png b/Resources/Textures/Objects/Specific/Mech/durand.rsi/shire.png new file mode 100644 index 0000000000..acd52c2ed8 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/durand.rsi/shire.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/durand.rsi/unathi-broken.png b/Resources/Textures/Objects/Specific/Mech/durand.rsi/unathi-broken.png new file mode 100644 index 0000000000..210db65670 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/durand.rsi/unathi-broken.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/durand.rsi/unathi-open.png b/Resources/Textures/Objects/Specific/Mech/durand.rsi/unathi-open.png new file mode 100644 index 0000000000..f823587c96 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/durand.rsi/unathi-open.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/durand.rsi/unathi.png b/Resources/Textures/Objects/Specific/Mech/durand.rsi/unathi.png new file mode 100644 index 0000000000..2f5c94709b Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/durand.rsi/unathi.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/gygax.rsi/darkgygax-broken.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/darkgygax-broken.png new file mode 100644 index 0000000000..f7e95642a5 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/darkgygax-broken.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/gygax.rsi/darkgygax-open.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/darkgygax-open.png new file mode 100644 index 0000000000..59645ab2f8 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/darkgygax-open.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/gygax.rsi/darkgygax.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/darkgygax.png new file mode 100644 index 0000000000..d3b72e271a Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/darkgygax.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/gygax-broken.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax-broken.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/gygax-broken.png rename to Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax-broken.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/gygax-open.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax-open.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/gygax-open.png rename to Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax-open.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/gygax.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/gygax.png rename to Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax.png diff --git a/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_alt-broken.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_alt-broken.png new file mode 100644 index 0000000000..ed7b8c6a89 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_alt-broken.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_alt-open.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_alt-open.png new file mode 100644 index 0000000000..7adda9b528 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_alt-open.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_alt.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_alt.png new file mode 100644 index 0000000000..d1719ed5b1 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_alt.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/darkgygax-broken.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_black-broken.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/darkgygax-broken.png rename to Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_black-broken.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/darkgygax-open.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_black-open.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/darkgygax-open.png rename to Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_black-open.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/darkgygax.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_black.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/darkgygax.png rename to Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_black.png diff --git a/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_white-broken.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_white-broken.png new file mode 100644 index 0000000000..91a894412c Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_white-broken.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_white-open.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_white-open.png new file mode 100644 index 0000000000..c26c2e49d2 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_white-open.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_white.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_white.png new file mode 100644 index 0000000000..99a8c3556e Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/gygax_white.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/gygax.rsi/meta.json b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/meta.json new file mode 100644 index 0000000000..63850a96d8 --- /dev/null +++ b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/meta.json @@ -0,0 +1,213 @@ +{ + "copyright" : "Taken from https://github.com/tgstation/tgstation at at https://github.com/tgstation/tgstation/commit/40d89d11ea4a5cb81d61dc1018b46f4e7d32c62a, hamtr made by brainfood1183 (github)", + "license" : "CC-BY-SA-3.0", + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gygax", + "directions": 4 + }, + { + "name": "gygax-open", + "delays": [ + [ + 0.1, + 0.05, + 0.05, + 0.05, + 0.1, + 0.05, + 0.05, + 0.05, + 0.1 + ] + ] + }, + { + "name": "gygax-broken", + "delays": [ + [ + 5, + 0.05, + 0.05, + 0.05, + 0.1, + 0.1, + 0.5, + 0.1 + ] + ] + }, + { + "name": "ntgygax", + "directions": 4 + }, + { + "name": "ntgygax-open", + "delays": [ + [ + 0.1, + 0.05, + 0.05, + 0.05, + 0.1, + 0.05, + 0.05, + 0.05, + 0.1 + ] + ] + }, + { + "name": "ntgygax-broken", + "delays": [ + [ + 5, + 0.05, + 0.05, + 0.05, + 0.1, + 0.1, + 0.5, + 0.1 + ] + ] + }, + { + "name": "gygax_black", + "directions": 4 + }, + { + "name": "gygax_black-open", + "delays": [ + [ + 0.1, + 0.05, + 0.05, + 0.05, + 0.1, + 0.05, + 0.05, + 0.05, + 0.1 + ] + ] + }, + { + "name": "gygax_black-broken", + "delays": [ + [ + 0.3, + 0.5, + 0.3, + 0.5, + 0.3, + 0.4, + 0.5, + 0.3 + ] + ] + }, + { + "name": "gygax_white", + "directions": 4 + }, + { + "name": "gygax_white-open", + "delays": [ + [ + 0.1, + 0.05, + 0.05, + 0.05, + 0.1, + 0.05, + 0.05, + 0.05, + 0.1 + ] + ] + }, + { + "name": "gygax_white-broken", + "delays": [ + [ + 0.3, + 0.5, + 0.4, + 0.3, + 0.5, + 0.3, + 0.4, + 0.5, + 0.3 + ] + ] + }, + { + "name": "darkgygax", + "directions": 4 + }, + { + "name": "darkgygax-open" + }, + { + "name": "darkgygax-broken" + }, + { + "name": "gygax_alt", + "directions": 4 + }, + { + "name": "gygax_alt-open" + }, + { + "name": "gygax_alt-broken" + }, + { + "name": "piratgygax", + "directions": 4 + }, + { + "name": "piratgygax-open" + }, + { + "name": "piratgygax-broken", + "delays": [ + [ + 0.3, + 0.5, + 0.3, + 0.5, + 0.3, + 0.5 + ] + ] + }, + { + "name": "molot", + "directions": 4 + }, + { + "name": "molot-broken", + "directions": 4 + }, + { + "name": "molot-open", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + } + ] +} diff --git a/Resources/Textures/_Sunrise/Objects/Specific/Mech/mecha.rsi/molot-broken.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/molot-broken.png similarity index 100% rename from Resources/Textures/_Sunrise/Objects/Specific/Mech/mecha.rsi/molot-broken.png rename to Resources/Textures/Objects/Specific/Mech/gygax.rsi/molot-broken.png diff --git a/Resources/Textures/_Sunrise/Objects/Specific/Mech/mecha.rsi/molot-open.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/molot-open.png similarity index 100% rename from Resources/Textures/_Sunrise/Objects/Specific/Mech/mecha.rsi/molot-open.png rename to Resources/Textures/Objects/Specific/Mech/gygax.rsi/molot-open.png diff --git a/Resources/Textures/_Sunrise/Objects/Specific/Mech/mecha.rsi/molot.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/molot.png similarity index 100% rename from Resources/Textures/_Sunrise/Objects/Specific/Mech/mecha.rsi/molot.png rename to Resources/Textures/Objects/Specific/Mech/gygax.rsi/molot.png diff --git a/Resources/Textures/Objects/Specific/Mech/gygax.rsi/ntgygax-broken.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/ntgygax-broken.png new file mode 100644 index 0000000000..1fcbeed4bc Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/ntgygax-broken.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/gygax.rsi/ntgygax-open.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/ntgygax-open.png new file mode 100644 index 0000000000..f3c3235f4c Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/ntgygax-open.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/gygax.rsi/ntgygax.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/ntgygax.png new file mode 100644 index 0000000000..e7e7704a61 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/ntgygax.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/gygax.rsi/piratgygax-broken.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/piratgygax-broken.png new file mode 100644 index 0000000000..51e93465a9 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/piratgygax-broken.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/gygax.rsi/piratgygax-open.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/piratgygax-open.png new file mode 100644 index 0000000000..936fa252a5 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/piratgygax-open.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/gygax.rsi/piratgygax.png b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/piratgygax.png new file mode 100644 index 0000000000..9c53e684e5 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/gygax.rsi/piratgygax.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/meta.json b/Resources/Textures/Objects/Specific/Mech/mecha.rsi/meta.json index b8f723250e..7cc8980369 100644 --- a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Mech/mecha.rsi/meta.json @@ -45,20 +45,6 @@ { "name": "reticence-broken" }, - { - "name": "ripley", - "directions": 4 - }, - { - "name": "ripley-empty", - "directions": 4 - }, - { - "name": "ripley-open" - }, - { - "name": "ripley-broken" - }, { "name": "marauder", "directions": 4 @@ -137,13 +123,6 @@ { "name": "phazon-broken" }, - { - "name": "ripley-old", - "directions": 4 - }, - { - "name": "ripley-broken-old" - }, { "name": "mauler", "directions": 4, @@ -259,138 +238,6 @@ { "name": "hamtr-broken" }, - { - "name": "firefighter", - "directions": 4 - }, - { - "name": "firefighter-open" - }, - { - "name": "firefighter-broken" - }, - { - "name": "deathripley", - "directions": 4 - }, - { - "name": "deathripley-open" - }, - { - "name": "deathripley-broken" - }, - { - "name": "darkgygax", - "directions": 4 - }, - { - "name": "darkgygax-open", - "delays": [ - [ - 0.1, - 0.05, - 0.05, - 0.05, - 0.1, - 0.05, - 0.05, - 0.05, - 0.1 - ] - ] - }, - { - "name": "darkgygax-broken", - "delays": [ - [ - 0.3, - 0.5, - 0.3, - 0.5, - 0.3, - 0.4, - 0.5, - 0.3 - ] - ] - }, - { - "name": "durand", - "directions": 4 - }, - { - "name": "durand-open", - "delays": [ - [ - 1, - 0.1, - 0.1, - 0.5, - 0.1, - 0.1 - ] - ] - }, - { - "name": "durand-broken", - "delays": [ - [ - 0.5, - 1, - 0.5, - 1 - ] - ] - }, - { - "name": "gygax", - "directions": 4 - }, - { - "name": "gygax-open", - "delays": [ - [ - 0.1, - 0.05, - 0.05, - 0.05, - 0.1, - 0.05, - 0.05, - 0.05, - 0.1 - ] - ] - }, - { - "name": "gygax-broken", - "delays": [ - [ - 5, - 0.05, - 0.05, - 0.05, - 0.1, - 0.1, - 0.5, - 0.1 - ] - ] - }, - { - "name": "ripley-g", - "directions": 4 - }, - { - "name": "ripley-g-open" - }, - { - "name": "ripley-g-full", - "directions": 4 - }, - { - "name": "ripley-g-full-open" - }, { "name": "darkhonker", "directions": 4, @@ -419,62 +266,6 @@ { "name": "darkhonker-broken" }, - { - "name": "ripleymkii", - "directions": 4 - }, - { - "name": "ripleymkii-open" - }, - { - "name": "ripleymkii-broken" - }, - { - "name": "clarke", - "directions": 4, - "delays": [ - [ - 0.1, - 0.05, - 0.05 - ], - [ - 0.1, - 0.05, - 0.05 - ], - [ - 0.1, - 0.05, - 0.05 - ], - [ - 0.1, - 0.05, - 0.05 - ] - ] - }, - { - "name": "clarke-open" - }, - { - "name": "clarke-broken" - }, - { - "name": "hauler", - "directions": 4 - }, - { - "name": "hauler-empty", - "directions": 4 - }, - { - "name": "hauler-open" - }, - { - "name": "hauler-broken" - }, { "name": "vim", "directions": 4 diff --git a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_analyzer.png b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_analyzer.png index 5a6a2194a1..0fda68c97b 100644 Binary files a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_analyzer.png and b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_analyzer.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_analyzer_anim.png b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_analyzer_anim.png new file mode 100644 index 0000000000..f850413f6c Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_analyzer_anim.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_firedart.png b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_firedart.png new file mode 100644 index 0000000000..c661ef82fa Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_firedart.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_immolator.png b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_immolator.png new file mode 100644 index 0000000000..7f29abd8b3 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_immolator.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_solaris.png b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_solaris.png new file mode 100644 index 0000000000..97f3985845 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_solaris.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/meta.json b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/meta.json index d888b350b7..404ed5db46 100644 --- a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/meta.json @@ -130,6 +130,25 @@ { "name": "mecha_analyzer" }, + { + "name": "mecha_analyzer_anim", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.5 + ] + ] + }, { "name": "mecha_medigun" }, @@ -184,11 +203,73 @@ ] ] }, + { + "name": "mecha_immolator", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "mecha_solaris", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "mecha_firedart" + }, { "name": "mecha_xray" }, { "name": "mecha_amlg90" + }, + { + "name": "triphasic_scan_module", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/triphasic_scan_module.png b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/triphasic_scan_module.png new file mode 100644 index 0000000000..e506b78722 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/triphasic_scan_module.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/meta.json b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/meta.json new file mode 100644 index 0000000000..7e2446ba2f --- /dev/null +++ b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/meta.json @@ -0,0 +1,130 @@ +{ + "copyright" : "Taken from https://github.com/tgstation/tgstation at at https://github.com/tgstation/tgstation/commit/40d89d11ea4a5cb81d61dc1018b46f4e7d32c62a", + "license" : "CC-BY-SA-3.0", + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "phazon_armor" + }, + { + "name": "phazon_chassis" + }, + { + "name": "phazon_harness" + }, + { + "name": "phazon_harness+o" + }, + { + "name": "phazon_head" + }, + { + "name": "phazon_head+o" + }, + { + "name": "phazon_r_arm" + }, + { + "name": "phazon_r_arm+o" + }, + { + "name": "phazon_l_arm" + }, + { + "name": "phazon_l_arm+o" + }, + { + "name": "phazon_r_leg" + }, + { + "name": "phazon_r_leg+o" + }, + { + "name": "phazon_l_leg" + }, + { + "name": "phazon_l_leg+o" + }, + { + "name": "phazon0" + }, + { + "name": "phazon1" + }, + { + "name": "phazon2" + }, + { + "name": "phazon3" + }, + { + "name": "phazon4" + }, + { + "name": "phazon5" + }, + { + "name": "phazon6" + }, + { + "name": "phazon7" + }, + { + "name": "phazon8" + }, + { + "name": "phazon9" + }, + { + "name": "phazon10" + }, + { + "name": "phazon11" + }, + { + "name": "phazon12" + }, + { + "name": "phazon13" + }, + { + "name": "phazon14" + }, + { + "name": "phazon15" + }, + { + "name": "phazon16" + }, + { + "name": "phazon17" + }, + { + "name": "phazon18" + }, + { + "name": "phazon19" + }, + { + "name": "phazon20", + "delays": [ + [ + 0.5, + 0.5, + 0.5, + 0.5 + ] + ] + }, + { + "name": "phazon21" + }, + { + "name": "phazon22" + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon0.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon0.png new file mode 100644 index 0000000000..b6a87bab80 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon0.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon1.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon1.png new file mode 100644 index 0000000000..a59b571d4f Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon1.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon10.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon10.png new file mode 100644 index 0000000000..8555371b23 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon10.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon11.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon11.png new file mode 100644 index 0000000000..d0f4ca4e1d Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon11.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon12.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon12.png new file mode 100644 index 0000000000..6c1cf4a18c Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon12.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon13.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon13.png new file mode 100644 index 0000000000..628f97636d Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon13.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon14.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon14.png new file mode 100644 index 0000000000..546310caf2 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon14.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon15.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon15.png new file mode 100644 index 0000000000..03e7953f0d Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon15.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon16.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon16.png new file mode 100644 index 0000000000..9d5d36d575 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon16.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon17.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon17.png new file mode 100644 index 0000000000..3b0b7f7d06 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon17.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon18.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon18.png new file mode 100644 index 0000000000..dd69ed3e4e Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon18.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon19.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon19.png new file mode 100644 index 0000000000..bed380d027 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon19.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon2.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon2.png new file mode 100644 index 0000000000..0bf40d445d Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon2.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon20.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon20.png new file mode 100644 index 0000000000..4d65a3addd Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon20.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon21.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon21.png new file mode 100644 index 0000000000..dcca9c7a51 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon21.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon22.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon22.png new file mode 100644 index 0000000000..c2328f287d Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon22.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon3.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon3.png new file mode 100644 index 0000000000..ae91616fa4 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon3.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon4.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon4.png new file mode 100644 index 0000000000..9a61a15e05 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon4.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon5.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon5.png new file mode 100644 index 0000000000..239b8a45ae Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon5.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon6.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon6.png new file mode 100644 index 0000000000..f14733da24 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon6.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon7.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon7.png new file mode 100644 index 0000000000..5dfb796732 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon7.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon8.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon8.png new file mode 100644 index 0000000000..2f37d63593 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon8.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon9.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon9.png new file mode 100644 index 0000000000..50f7ff3f59 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon9.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_armor.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_armor.png new file mode 100644 index 0000000000..c3027692a2 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_armor.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_chassis.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_chassis.png new file mode 100644 index 0000000000..b6a87bab80 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_chassis.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_harness+o.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_harness+o.png new file mode 100644 index 0000000000..2784820292 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_harness+o.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_harness.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_harness.png new file mode 100644 index 0000000000..832245dd69 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_harness.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_head+o.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_head+o.png new file mode 100644 index 0000000000..bfdef684a0 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_head+o.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_head.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_head.png new file mode 100644 index 0000000000..917e21a2bf Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_head.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_l_arm+o.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_l_arm+o.png new file mode 100644 index 0000000000..f6977ef6c3 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_l_arm+o.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_l_arm.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_l_arm.png new file mode 100644 index 0000000000..c07042a9c2 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_l_arm.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_l_leg+o.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_l_leg+o.png new file mode 100644 index 0000000000..0b35b4a279 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_l_leg+o.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_l_leg.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_l_leg.png new file mode 100644 index 0000000000..24ecab3b54 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_l_leg.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_r_arm+o.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_r_arm+o.png new file mode 100644 index 0000000000..04f198345d Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_r_arm+o.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_r_arm.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_r_arm.png new file mode 100644 index 0000000000..8272601a93 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_r_arm.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_r_leg+o.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_r_leg+o.png new file mode 100644 index 0000000000..6073d82ed5 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_r_leg+o.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_r_leg.png b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_r_leg.png new file mode 100644 index 0000000000..9aad6c4707 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/phazon_construction.rsi/phazon_r_leg.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/ripley.rsi/aluminizer-broken.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/aluminizer-broken.png new file mode 100644 index 0000000000..b3adce6e1b Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/aluminizer-broken.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/ripley.rsi/aluminizer-open.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/aluminizer-open.png new file mode 100644 index 0000000000..28e62db358 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/aluminizer-open.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/ripley.rsi/aluminizer.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/aluminizer.png new file mode 100644 index 0000000000..4d00dc3d5f Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/aluminizer.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/ripley.rsi/combatripley-broken.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/combatripley-broken.png new file mode 100644 index 0000000000..ada5a8bed6 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/combatripley-broken.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/ripley.rsi/combatripley-open.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/combatripley-open.png new file mode 100644 index 0000000000..5235aaa78f Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/combatripley-open.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/ripley.rsi/combatripley.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/combatripley.png new file mode 100644 index 0000000000..dcb4d5b2d9 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/combatripley.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/deathripley-broken.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/deathripley-broken.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/deathripley-broken.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/deathripley-broken.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/deathripley-open.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/deathripley-open.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/deathripley-open.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/deathripley-open.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/deathripley.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/deathripley.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/deathripley.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/deathripley.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/firefighter-broken.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/firefighter-broken.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/firefighter-broken.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/firefighter-broken.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/firefighter-open.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/firefighter-open.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/firefighter-open.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/firefighter-open.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/firefighter.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/firefighter.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/firefighter.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/firefighter.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/hauler-broken.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/hauler-broken.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/hauler-broken.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/hauler-broken.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/hauler-empty.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/hauler-empty.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/hauler-empty.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/hauler-empty.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/hauler-open.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/hauler-open.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/hauler-open.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/hauler-open.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/hauler.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/hauler.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/hauler.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/hauler.png diff --git a/Resources/Textures/Objects/Specific/Mech/ripley.rsi/meta.json b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/meta.json new file mode 100644 index 0000000000..e1578581e7 --- /dev/null +++ b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/meta.json @@ -0,0 +1,129 @@ +{ + "copyright" : "Taken from https://github.com/tgstation/tgstation at at https://github.com/tgstation/tgstation/commit/40d89d11ea4a5cb81d61dc1018b46f4e7d32c62a, hamtr made by brainfood1183 (github)", + "license" : "CC-BY-SA-3.0", + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "aluminizer", + "directions": 4 + }, + { + "name": "aluminizer-open" + }, + { + "name": "aluminizer-broken" + }, + { + "name": "combatripley", + "directions": 4 + }, + { + "name": "combatripley-open" + }, + { + "name": "combatripley-broken" + }, + { + "name": "deathripley", + "directions": 4 + }, + { + "name": "deathripley-open" + }, + { + "name": "deathripley-broken" + }, + { + "name": "firefighter", + "directions": 4 + }, + { + "name": "firefighter-open" + }, + { + "name": "firefighter-broken" + }, + { + "name": "hauler", + "directions": 4 + }, + { + "name": "hauler-open" + }, + { + "name": "hauler-broken" + }, + { + "name": "hauler-empty" + }, + { + "name": "ripley", + "directions": 4 + }, + { + "name": "ripley-open" + }, + { + "name": "ripley-broken" + }, + { + "name": "ripley-empty", + "directions": 4 + }, + { + "name": "ripley-old", + "directions": 4 + }, + { + "name": "ripley-broken-old" + }, + { + "name": "ripleymkii", + "directions": 4 + }, + { + "name": "ripleymkii-open" + }, + { + "name": "ripleymkii-broken" + }, + { + "name": "ripley_flames_red", + "directions": 4 + }, + { + "name": "ripley_flames_red-broken" + }, + { + "name": "ripley_flames_red-open" + }, + { + "name": "ripley_zairjah", + "directions": 4 + }, + { + "name": "ripley_zairjah-broken" + }, + { + "name": "ripley_zairjah-open" + }, + { + "name": "ripley-g", + "directions": 4 + }, + { + "name": "ripley-g-open" + }, + { + "name": "ripley-g-full", + "directions": 4 + }, + { + "name": "ripley-g-full-open" + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley-broken-old.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley-broken-old.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley-broken-old.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley-broken-old.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley-broken.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley-broken.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley-broken.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley-broken.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley-empty.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley-empty.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley-empty.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley-empty.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley-g-full-open.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley-g-full-open.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley-g-full-open.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley-g-full-open.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley-g-full.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley-g-full.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley-g-full.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley-g-full.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley-g-open.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley-g-open.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley-g-open.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley-g-open.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley-g.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley-g.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley-g.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley-g.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley-old.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley-old.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley-old.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley-old.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley-open.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley-open.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley-open.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley-open.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripley.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley.png diff --git a/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley_flames_red-broken.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley_flames_red-broken.png new file mode 100644 index 0000000000..f0d3a9c3e7 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley_flames_red-broken.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley_flames_red-open.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley_flames_red-open.png new file mode 100644 index 0000000000..865e372ac9 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley_flames_red-open.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley_flames_red.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley_flames_red.png new file mode 100644 index 0000000000..5da9e96856 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley_flames_red.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley_zairjah-broken.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley_zairjah-broken.png new file mode 100644 index 0000000000..a89e7e6183 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley_zairjah-broken.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley_zairjah-open.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley_zairjah-open.png new file mode 100644 index 0000000000..d263e8fca4 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley_zairjah-open.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley_zairjah.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley_zairjah.png new file mode 100644 index 0000000000..f70cf92a1b Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripley_zairjah.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripleymkii-broken.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripleymkii-broken.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripleymkii-broken.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripleymkii-broken.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripleymkii-open.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripleymkii-open.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripleymkii-open.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripleymkii-open.png diff --git a/Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripleymkii.png b/Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripleymkii.png similarity index 100% rename from Resources/Textures/Objects/Specific/Mech/mecha.rsi/ripleymkii.png rename to Resources/Textures/Objects/Specific/Mech/ripley.rsi/ripleymkii.png diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/clarke.rsi/meta.json b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/clarke.rsi/meta.json new file mode 100644 index 0000000000..4b26ddab7b --- /dev/null +++ b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/clarke.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "copyright" : "SUNRISE", + "license" : "CLA", + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "orangey" + }, + { + "name": "orangey-cap" + }, + { + "name": "spiderclarke" + }, + { + "name": "spiderclarke-cap" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/clarke.rsi/orangey-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/clarke.rsi/orangey-cap.png new file mode 100644 index 0000000000..de23e170b7 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/clarke.rsi/orangey-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/clarke.rsi/orangey.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/clarke.rsi/orangey.png new file mode 100644 index 0000000000..b337d9e154 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/clarke.rsi/orangey.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/clarke.rsi/spiderclarke-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/clarke.rsi/spiderclarke-cap.png new file mode 100644 index 0000000000..4139624d1d Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/clarke.rsi/spiderclarke-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/clarke.rsi/spiderclarke.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/clarke.rsi/spiderclarke.png new file mode 100644 index 0000000000..6cb8ec4fe9 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/clarke.rsi/spiderclarke.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/dollhouse-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/dollhouse-cap.png new file mode 100644 index 0000000000..813a00cd9e Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/dollhouse-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/dollhouse.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/dollhouse.png new file mode 100644 index 0000000000..9c1e2e037b Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/dollhouse.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/executioner-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/executioner-cap.png new file mode 100644 index 0000000000..4234a5612f Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/executioner-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/executioner.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/executioner.png new file mode 100644 index 0000000000..2c2aa180a8 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/executioner.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/kharn-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/kharn-cap.png new file mode 100644 index 0000000000..68df8662a6 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/kharn-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/kharn.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/kharn.png new file mode 100644 index 0000000000..a78665752f Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/kharn.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/meta.json b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/meta.json new file mode 100644 index 0000000000..36349ad5b3 --- /dev/null +++ b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/meta.json @@ -0,0 +1,35 @@ +{ + "copyright" : "SUNRISE", + "license" : "CLA", + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "dollhouse" + }, + { + "name": "dollhouse-cap" + }, + { + "name": "executioner" + }, + { + "name": "executioner-cap" + }, + { + "name": "kharn" + }, + { + "name": "kharn-cap" + }, + { + "name": "shire" + }, + { + "name": "shire-cap" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/shire-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/shire-cap.png new file mode 100644 index 0000000000..f5f872e217 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/shire-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/shire.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/shire.png new file mode 100644 index 0000000000..513321dc8e Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/durand.rsi/shire.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/gygax-white-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/gygax-white-cap.png new file mode 100644 index 0000000000..ae1be133da Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/gygax-white-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/gygax-white.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/gygax-white.png new file mode 100644 index 0000000000..6839101550 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/gygax-white.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/medgax-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/medgax-cap.png new file mode 100644 index 0000000000..da98c5ec06 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/medgax-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/medgax.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/medgax.png new file mode 100644 index 0000000000..863ab2dbc9 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/medgax.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/meta.json b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/meta.json new file mode 100644 index 0000000000..b9e24ba811 --- /dev/null +++ b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/meta.json @@ -0,0 +1,35 @@ +{ + "copyright" : "SUNRISE", + "license" : "CLA", + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gygax-white" + }, + { + "name": "gygax-white-cap" + }, + { + "name": "medgax" + }, + { + "name": "medgax-cap" + }, + { + "name": "pobeda" + }, + { + "name": "pobeda-cap" + }, + { + "name": "syndiegax" + }, + { + "name": "syndiegax-cap" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/pobeda-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/pobeda-cap.png new file mode 100644 index 0000000000..7aad273f7b Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/pobeda-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/pobeda.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/pobeda.png new file mode 100644 index 0000000000..45e93f6994 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/pobeda.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/syndiegax-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/syndiegax-cap.png new file mode 100644 index 0000000000..7c6502ccb5 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/syndiegax-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/syndiegax.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/syndiegax.png new file mode 100644 index 0000000000..077b13b771 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/gygax.rsi/syndiegax.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/blanco-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/blanco-cap.png new file mode 100644 index 0000000000..65f5b5a008 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/blanco-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/blanco.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/blanco.png new file mode 100644 index 0000000000..0ace054f27 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/blanco.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/imperion-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/imperion-cap.png new file mode 100644 index 0000000000..b18ed139a0 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/imperion-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/imperion.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/imperion.png new file mode 100644 index 0000000000..7f5d120578 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/imperion.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/janus-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/janus-cap.png new file mode 100644 index 0000000000..11778c3622 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/janus-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/janus.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/janus.png new file mode 100644 index 0000000000..11cd77f8d0 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/janus.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/meta.json b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/meta.json new file mode 100644 index 0000000000..0d97e554dd --- /dev/null +++ b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/meta.json @@ -0,0 +1,35 @@ +{ + "copyright" : "SUNRISE", + "license" : "CLA", + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "blanco" + }, + { + "name": "blanco-cap" + }, + { + "name": "imperion" + }, + { + "name": "imperion-cap" + }, + { + "name": "janus" + }, + { + "name": "janus-cap" + }, + { + "name": "plazmus" + }, + { + "name": "plazmus-cap" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/plazmus-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/plazmus-cap.png new file mode 100644 index 0000000000..03df735624 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/plazmus-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/plazmus.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/plazmus.png new file mode 100644 index 0000000000..907ecf484e Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/phazon.rsi/plazmus.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/aluminizer-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/aluminizer-cap.png new file mode 100644 index 0000000000..b3d0d0dbf7 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/aluminizer-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/aluminizer.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/aluminizer.png new file mode 100644 index 0000000000..2003e4fa0d Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/aluminizer.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/combat-ripley-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/combat-ripley-cap.png new file mode 100644 index 0000000000..bc73f6e3b8 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/combat-ripley-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/combat-ripley.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/combat-ripley.png new file mode 100644 index 0000000000..75427007d0 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/combat-ripley.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/firestarter-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/firestarter-cap.png new file mode 100644 index 0000000000..7a792702b1 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/firestarter-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/firestarter.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/firestarter.png new file mode 100644 index 0000000000..76453826ce Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/firestarter.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/hauler-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/hauler-cap.png new file mode 100644 index 0000000000..69745cab42 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/hauler-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/hauler.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/hauler.png new file mode 100644 index 0000000000..f4b50115b5 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/hauler.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/meta.json b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/meta.json new file mode 100644 index 0000000000..7f91af1ff8 --- /dev/null +++ b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/meta.json @@ -0,0 +1,47 @@ +{ + "copyright" : "SUNRISE", + "license" : "CLA", + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "aluminizer" + }, + { + "name": "aluminizer-cap" + }, + { + "name": "combat-ripley" + }, + { + "name": "combat-ripley-cap" + }, + { + "name": "firestarter" + }, + { + "name": "firestarter-cap" + }, + { + "name": "hauler" + }, + { + "name": "hauler-cap" + }, + { + "name": "reaper" + }, + { + "name": "reaper-cap" + }, + { + "name": "zairjah" + }, + { + "name": "zairjah-cap" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/reaper-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/reaper-cap.png new file mode 100644 index 0000000000..570ff06841 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/reaper-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/reaper.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/reaper.png new file mode 100644 index 0000000000..78a4e25413 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/reaper.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/zairjah-cap.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/zairjah-cap.png new file mode 100644 index 0000000000..5843e649aa Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/zairjah-cap.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/zairjah.png b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/zairjah.png new file mode 100644 index 0000000000..df9ab182c8 Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Fun/mech_spraycans/ripley.rsi/zairjah.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Specific/Mech/mecha.rsi/meta.json b/Resources/Textures/_Sunrise/Objects/Specific/Mech/mecha.rsi/meta.json deleted file mode 100644 index e80b83dd33..0000000000 --- a/Resources/Textures/_Sunrise/Objects/Specific/Mech/mecha.rsi/meta.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "copyright" : "SUNRISE", - "license" : "CLA", - "version": 1, - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "molot", - "directions": 4 - }, - { - "name": "molot-broken", - "directions": 4 - }, - { - "name": "molot-open", - "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] - } - ] -} diff --git a/Resources/Textures/_Sunrise/Objects/Specific/Mech/sec_pod.rsi/meta.json b/Resources/Textures/_Sunrise/Objects/Specific/Mech/sec_pod.rsi/meta.json new file mode 100644 index 0000000000..4fee9929dd --- /dev/null +++ b/Resources/Textures/_Sunrise/Objects/Specific/Mech/sec_pod.rsi/meta.json @@ -0,0 +1,15 @@ +{ + "copyright" : "Taken from https://github.com/tgstation/tgstation at at https://github.com/tgstation/tgstation/commit/40d89d11ea4a5cb81d61dc1018b46f4e7d32c62a", + "license" : "CC-BY-SA-3.0", + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "sec_pod", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Sunrise/Objects/Specific/Mech/sec_pod.rsi/sec_pod.png b/Resources/Textures/_Sunrise/Objects/Specific/Mech/sec_pod.rsi/sec_pod.png new file mode 100644 index 0000000000..6366d28acd Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Specific/Mech/sec_pod.rsi/sec_pod.png differ