diff --git a/Content.Client/Weapons/Ranged/Systems/GunSystem.cs b/Content.Client/Weapons/Ranged/Systems/GunSystem.cs index 0ad22bf1d87..acb111bfcf1 100644 --- a/Content.Client/Weapons/Ranged/Systems/GunSystem.cs +++ b/Content.Client/Weapons/Ranged/Systems/GunSystem.cs @@ -5,6 +5,7 @@ using Content.Client.Weapons.Ranged.Components; using Content.Shared.Camera; using Content.Shared.CombatMode; +using Content.Shared.Mech.Components; // Goobstation using Content.Shared.Weapons.Ranged; using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; @@ -156,6 +157,9 @@ public override void Update(float frameTime) var entity = entityNull.Value; + if (TryComp(entity, out var mechPilot)) // Goobstation + entity = mechPilot.Mech; + if (!TryGetGun(entity, out var gunUid, out var gun)) { return; diff --git a/Content.Server/Cloning/CloningSystem.cs b/Content.Server/Cloning/CloningSystem.cs index c107bbab7d4..d545b10a4ee 100644 --- a/Content.Server/Cloning/CloningSystem.cs +++ b/Content.Server/Cloning/CloningSystem.cs @@ -10,7 +10,7 @@ using Content.Server.Materials; using Content.Server.Popups; using Content.Server.Power.EntitySystems; -using Content.Server.Traits.Assorted; +using Content.Shared.Silicon.Components; // Goobstation using Content.Shared.Atmos; using Content.Shared.CCVar; using Content.Shared.Chemistry.Components; @@ -204,13 +204,16 @@ public bool TryCloning(EntityUid uid, EntityUid bodyToClone, Entity(bodyToClone)) + return false; // Goobstation: Don't clone IPCs. + // Yes, this can return true without making a body. If it returns true, we're making clone soup instead. if (CheckGeneticDamage(uid, bodyToClone, clonePod, out var geneticDamage, failChanceModifier)) return true; diff --git a/Content.Server/Mech/Systems/MechSystem.cs b/Content.Server/Mech/Systems/MechSystem.cs index b738d28b467..b7bbc4ad473 100644 --- a/Content.Server/Mech/Systems/MechSystem.cs +++ b/Content.Server/Mech/Systems/MechSystem.cs @@ -234,7 +234,6 @@ private void OnMechEntry(EntityUid uid, MechComponent component, MechEntryEvent TryInsert(uid, args.Args.User, component); _actionBlocker.UpdateCanMove(uid); - args.Handled = true; } @@ -244,7 +243,6 @@ private void OnMechExit(EntityUid uid, MechComponent component, MechExitEvent ar return; TryEject(uid, component); - args.Handled = true; } diff --git a/Content.Server/Objectives/Components/PickRandomPersonComponent.cs b/Content.Server/Objectives/Components/PickRandomPersonComponent.cs index 4188b1da3d2..7de6cb71468 100644 --- a/Content.Server/Objectives/Components/PickRandomPersonComponent.cs +++ b/Content.Server/Objectives/Components/PickRandomPersonComponent.cs @@ -8,4 +8,6 @@ namespace Content.Server.Objectives.Components; [RegisterComponent, Access(typeof(KillPersonConditionSystem))] public sealed partial class PickRandomPersonComponent : Component { + [DataField] + public bool NeedsOrganic; // Goobstation: Only pick non-silicon players. } diff --git a/Content.Server/Objectives/Systems/KillPersonConditionSystem.cs b/Content.Server/Objectives/Systems/KillPersonConditionSystem.cs index c1caa819e44..7afc74af4d1 100644 --- a/Content.Server/Objectives/Systems/KillPersonConditionSystem.cs +++ b/Content.Server/Objectives/Systems/KillPersonConditionSystem.cs @@ -1,3 +1,4 @@ +using System.Linq; using Content.Server.Objectives.Components; using Content.Server.Shuttles.Systems; using Content.Shared.CCVar; @@ -54,7 +55,7 @@ private void OnPersonAssigned(EntityUid uid, PickRandomPersonComponent comp, ref return; // no other humans to kill - var allHumans = _mind.GetAliveHumansExcept(args.MindId); + var allHumans = _mind.GetAliveHumans(args.MindId, comp.NeedsOrganic); if (allHumans.Count == 0) { args.Cancelled = true; @@ -78,7 +79,7 @@ private void OnHeadAssigned(EntityUid uid, PickRandomHeadComponent comp, ref Obj return; // no other humans to kill - var allHumans = _mind.GetAliveHumansExcept(args.MindId); + var allHumans = _mind.GetAliveHumans(args.MindId); if (allHumans.Count == 0) { args.Cancelled = true; @@ -94,7 +95,7 @@ private void OnHeadAssigned(EntityUid uid, PickRandomHeadComponent comp, ref Obj } if (allHeads.Count == 0) - allHeads = allHumans; // fallback to non-head target + allHeads = allHumans.Select(human => human.Owner).ToList(); // fallback to non-head target _target.SetTarget(uid, _random.Pick(allHeads), target); } diff --git a/Content.Server/PowerCell/PowerCellSystem.cs b/Content.Server/PowerCell/PowerCellSystem.cs index f7b4cf02491..221a3909e26 100644 --- a/Content.Server/PowerCell/PowerCellSystem.cs +++ b/Content.Server/PowerCell/PowerCellSystem.cs @@ -228,8 +228,8 @@ private void OnCellEmpAttempt(EntityUid uid, PowerCellComponent component, EmpAt private void OnCellSlotExamined(EntityUid uid, PowerCellSlotComponent component, ExaminedEvent args) { - TryGetBatteryFromSlot(uid, out var battery); - OnBatteryExamined(uid, battery, args); + TryGetBatteryFromSlot(uid, out var batteryEnt, out var battery); // Goobstation + OnBatteryExamined(batteryEnt.GetValueOrDefault(uid), battery, args); // Goobstation } private void OnBatteryExamined(EntityUid uid, BatteryComponent? component, ExaminedEvent args) diff --git a/Content.Server/Silicon/Charge/Systems/SiliconChargeSystem.cs b/Content.Server/Silicon/Charge/Systems/SiliconChargeSystem.cs index 444b65530b2..b1fef0f1d3a 100644 --- a/Content.Server/Silicon/Charge/Systems/SiliconChargeSystem.cs +++ b/Content.Server/Silicon/Charge/Systems/SiliconChargeSystem.cs @@ -182,8 +182,9 @@ private float SiliconHeatEffects(EntityUid silicon, SiliconComponent siliconComp if (!_random.Prob(Math.Clamp(temperComp.CurrentTemperature / (upperThresh * 5), 0.001f, 0.9f))) return hotTempMulti; - _flammable.AdjustFireStacks(silicon, Math.Clamp(siliconComp.FireStackMultiplier, -10, 10), flamComp); - _flammable.Ignite(silicon, silicon, flamComp); + // Goobstation: Replaced by KillOnOverheatSystem + //_flammable.AdjustFireStacks(silicon, Math.Clamp(siliconComp.FireStackMultiplier, -10, 10), flamComp); + //_flammable.Ignite(silicon, silicon, flamComp); return hotTempMulti; } diff --git a/Content.Server/Silicon/WeldingHealable/WeldingHealableSystem.cs b/Content.Server/Silicon/WeldingHealable/WeldingHealableSystem.cs index df7ac7ac0fd..70f5c063f57 100644 --- a/Content.Server/Silicon/WeldingHealable/WeldingHealableSystem.cs +++ b/Content.Server/Silicon/WeldingHealable/WeldingHealableSystem.cs @@ -6,6 +6,9 @@ using Content.Shared.Damage; using Content.Shared.Interaction; using Content.Shared.Popups; +using Content.Shared.Tools; +using Content.Shared._Shitmed.Targeting; +using Content.Shared.Body.Systems; using Content.Shared.Tools.Components; using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem; @@ -17,7 +20,7 @@ public sealed class WeldingHealableSystem : SharedWeldingHealableSystem [Dependency] private readonly DamageableSystem _damageableSystem = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedSolutionContainerSystem _solutionContainer = default!; - + [Dependency] private readonly SharedBodySystem _bodySystem = default!; public override void Initialize() { SubscribeLocalEvent(Repair); @@ -31,7 +34,7 @@ private void OnRepairFinished(EntityUid uid, WeldingHealableComponent healableCo || !TryComp(args.Used, out var component) || damageable.DamageContainerID is null || !component.DamageContainers.Contains(damageable.DamageContainerID) - || !HasDamage(damageable, component) + || !HasDamage((args.Target.Value, damageable), component, args.User) || !TryComp(args.Used, out var welder) || !TryComp(args.Used, out var solutionContainer)) return; @@ -70,7 +73,7 @@ private async void Repair(EntityUid uid, WeldingHealableComponent healableCompon || !EntityManager.TryGetComponent(args.Target, out DamageableComponent? damageable) || damageable.DamageContainerID is null || !component.DamageContainers.Contains(damageable.DamageContainerID) - || !HasDamage(damageable, component) + || !HasDamage((args.Target, damageable), component, args.User) || !_toolSystem.HasQuality(args.Used, component.QualityNeeded) || args.User == args.Target && !component.AllowSelfHeal) return; @@ -79,8 +82,8 @@ private async void Repair(EntityUid uid, WeldingHealableComponent healableCompon ? component.DoAfterDelay * component.SelfHealPenalty : component.DoAfterDelay; - args.Handled = _toolSystem.UseTool - (args.Used, + args.Handled = _toolSystem.UseTool( + args.Used, args.User, args.Target, delay, @@ -91,15 +94,26 @@ private async void Repair(EntityUid uid, WeldingHealableComponent healableCompon }); } - private bool HasDamage(DamageableComponent component, WeldingHealingComponent healable) + private bool HasDamage(Entity damageable, WeldingHealingComponent healable, EntityUid user) { if (healable.Damage.DamageDict is null) return false; foreach (var type in healable.Damage.DamageDict) - if (component.Damage.DamageDict[type.Key].Value > 0) + if (damageable.Comp.Damage.DamageDict[type.Key].Value > 0) return true; + + // In case the healer is a humanoid entity with targeting, we run the check on the targeted parts. + if (!TryComp(user, out TargetingComponent? targeting)) + return false; + + var (targetType, targetSymmetry) = _bodySystem.ConvertTargetBodyPart(targeting.Target); + foreach (var part in _bodySystem.GetBodyChildrenOfType(damageable, targetType, symmetry: targetSymmetry)) + if (TryComp(part.Id, out var damageablePart)) + foreach (var type in healable.Damage.DamageDict) + if (damageablePart.Damage.DamageDict[type.Key].Value > 0) + return true; + return false; } } - diff --git a/Content.Server/_Goobstation/Mech/Equipment/EntitySystems/MechGunSystem.cs b/Content.Server/_Goobstation/Mech/Equipment/EntitySystems/MechGunSystem.cs new file mode 100644 index 00000000000..014204582c9 --- /dev/null +++ b/Content.Server/_Goobstation/Mech/Equipment/EntitySystems/MechGunSystem.cs @@ -0,0 +1,76 @@ +using Content.Server.Mech.Systems; +using Content.Server.Power.Components; +using Content.Server.Power.EntitySystems; +using Content.Shared.Mech.Components; +using Content.Shared.Mech.EntitySystems; +using Content.Shared.Mech.Equipment.Components; +using Content.Shared.Throwing; +using Content.Shared.Weapons.Ranged.Components; +using Robust.Shared.Random; + +namespace Content.Server.Mech.Equipment.EntitySystems; +public sealed class MechGunSystem : EntitySystem +{ + [Dependency] private readonly MechSystem _mech = default!; + [Dependency] private readonly BatterySystem _battery = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnHandleMechEquipmentBattery); + SubscribeLocalEvent(OnCheckBattery); + SubscribeLocalEvent(OnCheckBattery); + } + + private void OnHandleMechEquipmentBattery(EntityUid uid, MechEquipmentComponent component, HandleMechEquipmentBatteryEvent args) + { + if (!component.EquipmentOwner.HasValue) + return; + + if (!TryComp(component.EquipmentOwner.Value, out var mech)) + return; + + if (TryComp(uid, out var battery)) + { + var ev = new CheckMechWeaponBatteryEvent(battery); + RaiseLocalEvent(uid, ref ev); + + if (ev.Cancelled) + return; + + ChargeGunBattery(uid, battery); + } + } + + private void OnCheckBattery(EntityUid uid, BatteryAmmoProviderComponent component, CheckMechWeaponBatteryEvent args) + { + if (args.Battery.CurrentCharge > component.FireCost) + args.Cancelled = true; + } + + private void ChargeGunBattery(EntityUid uid, BatteryComponent component) + { + if (!TryComp(uid, out var mechEquipment) || !mechEquipment.EquipmentOwner.HasValue) + return; + + if (!TryComp(mechEquipment.EquipmentOwner.Value, out var mech)) + return; + + var maxCharge = component.MaxCharge; + var currentCharge = component.CurrentCharge; + + var chargeDelta = maxCharge - currentCharge; + + // TODO: The battery charge of the mech would be spent directly when fired. + if (chargeDelta <= 0 || mech.Energy - chargeDelta < 0) + return; + + if (!_mech.TryChangeEnergy(mechEquipment.EquipmentOwner.Value, -chargeDelta, mech)) + return; + + _battery.SetCharge(uid, component.MaxCharge, component); + } +} + +[ByRefEvent] +public record struct CheckMechWeaponBatteryEvent(BatteryComponent Battery, bool Cancelled = false); \ No newline at end of file diff --git a/Content.Server/_Goobstation/Temperature/KillOnOverheatComponent.cs b/Content.Server/_Goobstation/Temperature/KillOnOverheatComponent.cs new file mode 100644 index 00000000000..fc4e6155395 --- /dev/null +++ b/Content.Server/_Goobstation/Temperature/KillOnOverheatComponent.cs @@ -0,0 +1,16 @@ +using Content.Shared.Atmos; + +namespace Content.Server._Goobstation.Temperature; + +/// +/// Kills an entity when its temperature goes over a threshold. +/// +[RegisterComponent, Access(typeof(KillOnOverheatSystem))] +public sealed partial class KillOnOverheatComponent : Component +{ + [DataField] + public float OverheatThreshold = Atmospherics.T0C + 110f; + + [DataField] + public LocId OverheatPopup = "ipc-overheat-popup"; +} diff --git a/Content.Server/_Goobstation/Temperature/KillOnOverheatSystem.cs b/Content.Server/_Goobstation/Temperature/KillOnOverheatSystem.cs new file mode 100644 index 00000000000..9b32e344376 --- /dev/null +++ b/Content.Server/_Goobstation/Temperature/KillOnOverheatSystem.cs @@ -0,0 +1,33 @@ +using Content.Server.Temperature.Components; +using Content.Shared.IdentityManagement; +using Content.Shared.Mobs; +using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Systems; +using Content.Shared.Popups; +using Content.Shared.Damage.Components; + +namespace Content.Server._Goobstation.Temperature; + +public sealed class KillOnOverheatSystem : EntitySystem +{ + [Dependency] private readonly MobStateSystem _mob = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + + public override void Update(float frameTime) + { + base.Update(frameTime); + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp, out var temp, out var mob)) + { + if (mob.CurrentState == MobState.Dead + || temp.CurrentTemperature < comp.OverheatThreshold + || HasComp(uid)) + continue; + + var msg = Loc.GetString(comp.OverheatPopup, ("name", Identity.Name(uid, EntityManager))); + _popup.PopupEntity(msg, uid, PopupType.LargeCaution); + _mob.ChangeMobState(uid, MobState.Dead, mob); + } + } +} diff --git a/Content.Shared/Mech/Components/MechComponent.cs b/Content.Shared/Mech/Components/MechComponent.cs index ba380492bc9..6ebfde5f999 100644 --- a/Content.Shared/Mech/Components/MechComponent.cs +++ b/Content.Shared/Mech/Components/MechComponent.cs @@ -13,6 +13,13 @@ namespace Content.Shared.Mech.Components; [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class MechComponent : Component { + /// + /// Goobstation: Whether or not an emag disables it. + /// + [DataField("breakOnEmag")] + [AutoNetworkedField] + public bool BreakOnEmag = true; + /// /// How much "health" the mech has left. /// @@ -141,6 +148,8 @@ public sealed partial class MechComponent : Component [DataField] public EntProtoId MechCycleAction = "ActionMechCycleEquipment"; [DataField] + public EntProtoId ToggleAction = "ActionToggleLight"; //Goobstation Mech Lights toggle action + [DataField] public EntProtoId MechUiAction = "ActionMechOpenUI"; [DataField] public EntProtoId MechEjectAction = "ActionMechEject"; @@ -158,4 +167,5 @@ public sealed partial class MechComponent : Component [DataField] public EntityUid? MechCycleActionEntity; [DataField] public EntityUid? MechUiActionEntity; [DataField] public EntityUid? MechEjectActionEntity; + [DataField, AutoNetworkedField] public EntityUid? ToggleActionEntity; //Goobstation Mech Lights toggle action } diff --git a/Content.Shared/Mech/EntitySystems/SharedMechSystem.cs b/Content.Shared/Mech/EntitySystems/SharedMechSystem.cs index 2ec48085c47..f977a2eeb4e 100644 --- a/Content.Shared/Mech/EntitySystems/SharedMechSystem.cs +++ b/Content.Shared/Mech/EntitySystems/SharedMechSystem.cs @@ -21,6 +21,17 @@ using Robust.Shared.Serialization; using Robust.Shared.Timing; +// Goobstation Change +using Content.Shared.CCVar; +using Content.Shared._Goobstation.CCVar; +using Content.Shared.Emag.Systems; +using Content.Shared.Weapons.Ranged.Events; +using Content.Shared.Hands.Components; +using Content.Shared.Hands.EntitySystems; +using Content.Shared.Inventory.VirtualItem; +using Robust.Shared.Configuration; +using Content.Shared.Implants.Components; + namespace Content.Shared.Mech.EntitySystems; /// @@ -39,7 +50,13 @@ public abstract class SharedMechSystem : EntitySystem [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; + [Dependency] private readonly SharedHandsSystem _hands = default!; // Goobstation Change + [Dependency] private readonly SharedVirtualItemSystem _virtualItem = default!; // Goobstation Change + [Dependency] private readonly IConfigurationManager _config = default!; // Goobstation Change + // Goobstation: Local variable for checking if mech guns can be used out of them. + private bool _canUseMechGunOutside; + /// public override void Initialize() { @@ -51,10 +68,20 @@ public override void Initialize() SubscribeLocalEvent(OnGetAdditionalAccess); SubscribeLocalEvent(OnDragDrop); SubscribeLocalEvent(OnCanDragDrop); + SubscribeLocalEvent(OnEmagged); SubscribeLocalEvent(OnGetMeleeWeapon); SubscribeLocalEvent(OnCanAttackFromContainer); SubscribeLocalEvent(OnAttackAttempt); + SubscribeLocalEvent(OnEntGotRemovedFromContainer); + SubscribeLocalEvent(OnShotAttempted); // Goobstation + Subs.CVar(_config, GoobCVars.MechGunOutsideMech, value => _canUseMechGunOutside = value, true); // Goobstation + } + + // GoobStation: Fixes scram implants or teleports locking the pilot out of being able to move. + private void OnEntGotRemovedFromContainer(EntityUid uid, MechPilotComponent component, EntGotRemovedFromContainerMessage args) + { + TryEject(component.Mech, pilot: uid); } private void OnToggleEquipmentAction(EntityUid uid, MechComponent component, MechToggleEquipmentEvent args) @@ -132,6 +159,7 @@ private void SetupUser(EntityUid mech, EntityUid pilot, MechComponent? component _actions.AddAction(pilot, ref component.MechCycleActionEntity, component.MechCycleAction, mech); _actions.AddAction(pilot, ref component.MechUiActionEntity, component.MechUiAction, mech); _actions.AddAction(pilot, ref component.MechEjectActionEntity, component.MechEjectAction, mech); + _actions.AddAction(pilot, ref component.ToggleActionEntity, component.ToggleAction, mech); //Goobstation Mech Lights toggle action } private void RemoveUser(EntityUid mech, EntityUid pilot) @@ -368,6 +396,7 @@ public bool TryInsert(EntityUid uid, EntityUid? toInsert, MechComponent? compone SetupUser(uid, toInsert.Value); _container.Insert(toInsert.Value, component.PilotSlot); UpdateAppearance(uid, component); + UpdateHands(toInsert.Value, uid, true); // Goobstation return true; } @@ -376,23 +405,71 @@ public bool TryInsert(EntityUid uid, EntityUid? toInsert, MechComponent? compone /// /// /// + /// The pilot to eject /// Whether or not the pilot was ejected. - public bool TryEject(EntityUid uid, MechComponent? component = null) + public bool TryEject(EntityUid uid, MechComponent? component = null, EntityUid? pilot = null) { if (!Resolve(uid, ref component)) return false; - if (component.PilotSlot.ContainedEntity == null) - return false; + if (component.PilotSlot.ContainedEntity != null) + pilot = component.PilotSlot.ContainedEntity.Value; - var pilot = component.PilotSlot.ContainedEntity.Value; + if (pilot == null) + return false; - RemoveUser(uid, pilot); - _container.RemoveEntity(uid, pilot); + RemoveUser(uid, pilot.Value); + _container.RemoveEntity(uid, pilot.Value); UpdateAppearance(uid, component); + UpdateHands(pilot.Value, uid, false); // Goobstation return true; } + // Goobstation Change Start + private void UpdateHands(EntityUid uid, EntityUid mech, bool active) + { + if (!TryComp(uid, out var handsComponent)) + return; + + if (active) + BlockHands(uid, mech, handsComponent); + else + FreeHands(uid, mech); + } + + private void BlockHands(EntityUid uid, EntityUid mech, HandsComponent handsComponent) + { + var freeHands = 0; + foreach (var hand in _hands.EnumerateHands(uid, handsComponent)) + { + if (hand.HeldEntity == null) + { + freeHands++; + continue; + } + + // Is this entity removable? (they might have handcuffs on) + if (HasComp(hand.HeldEntity) && hand.HeldEntity != mech) + continue; + + _hands.DoDrop(uid, hand, true, handsComponent); + freeHands++; + if (freeHands == 2) + break; + } + if (_virtualItem.TrySpawnVirtualItemInHand(mech, uid, out var virtItem1)) + EnsureComp(virtItem1.Value); + + if (_virtualItem.TrySpawnVirtualItemInHand(mech, uid, out var virtItem2)) + EnsureComp(virtItem2.Value); + } + + private void FreeHands(EntityUid uid, EntityUid mech) + { + _virtualItem.DeleteInHandsMatching(uid, mech); + } + + // Goobstation Change End private void OnGetMeleeWeapon(EntityUid uid, MechPilotComponent component, GetMeleeWeaponEvent args) { if (args.Handled) @@ -417,6 +494,21 @@ private void OnAttackAttempt(EntityUid uid, MechPilotComponent component, Attack args.Cancel(); } + // Goobstation: Prevent guns being used out of mechs if CCVAR is set. + private void OnShotAttempted(EntityUid uid, MechEquipmentComponent component, ref ShotAttemptedEvent args) + { + if (!component.EquipmentOwner.HasValue + || !HasComp(component.EquipmentOwner.Value)) + { + if (!_canUseMechGunOutside) + args.Cancel(); + return; + } + + var ev = new HandleMechEquipmentBatteryEvent(); + RaiseLocalEvent(uid, ev); + } + private void UpdateAppearance(EntityUid uid, MechComponent? component = null, AppearanceComponent? appearance = null) { @@ -449,6 +541,14 @@ private void OnCanDragDrop(EntityUid uid, MechComponent component, ref CanDropTa args.CanDrop |= !component.Broken && CanInsert(uid, args.Dragged, component); } + private void OnEmagged(EntityUid uid, MechComponent component, ref GotEmaggedEvent args) // Goobstation + { + if (!component.BreakOnEmag) + return; + args.Handled = true; + component.EquipmentWhitelist = null; + Dirty(uid, component); + } } /// @@ -476,3 +576,12 @@ public sealed partial class MechExitEvent : SimpleDoAfterEvent public sealed partial class MechEntryEvent : SimpleDoAfterEvent { } + +/// +/// Event raised when an user attempts to fire a mech weapon to check if its battery is drained +/// + +[Serializable, NetSerializable] +public sealed partial class HandleMechEquipmentBatteryEvent : EntityEventArgs +{ +} diff --git a/Content.Shared/Mind/SharedMindSystem.cs b/Content.Shared/Mind/SharedMindSystem.cs index 994d230e8bd..9454443eb33 100644 --- a/Content.Shared/Mind/SharedMindSystem.cs +++ b/Content.Shared/Mind/SharedMindSystem.cs @@ -1,5 +1,6 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; +using Content.Shared.Silicon.Components; // Goobstation using Content.Shared.Administration.Logs; using Content.Shared.Database; using Content.Shared.Examine; @@ -538,22 +539,23 @@ public string MindOwnerLoggingString(MindComponent mind) /// /// Returns a list of every living humanoid player's minds, except for a single one which is exluded. /// - public List GetAliveHumansExcept(EntityUid exclude) + public HashSet> GetAliveHumans(EntityUid? exclude = null, bool excludeSilicon = false) { - var mindQuery = EntityQuery(); - - var allHumans = new List(); + var allHumans = new HashSet>(); // HumanoidAppearanceComponent is used to prevent mice, pAIs, etc from being chosen - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var mc, out var mobState, out _)) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var mobState, out _)) { - // the player needs to have a mind and not be the excluded one - if (mc.Mind == null || mc.Mind == exclude) + // the player needs to have a mind and not be the excluded one + + // the player has to be alive + if (!TryGetMind(uid, out var mind, out var mindComp) || mind == exclude || !_mobState.IsAlive(uid, mobState)) continue; - // the player has to be alive - if (_mobState.IsAlive(uid, mobState)) - allHumans.Add(mc.Mind.Value); + // Goobstation: Skip IPCs from selections + if (excludeSilicon && HasComp(uid)) + continue; + + allHumans.Add(new Entity(mind, mindComp)); } return allHumans; diff --git a/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs b/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs index e25328ada61..c393d2f6876 100644 --- a/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs +++ b/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs @@ -220,6 +220,10 @@ public sealed partial class MeleeWeaponComponent : Component /// [DataField, AutoNetworkedField] public bool MustBeEquippedToUse = false; + + // Goobstation + [DataField, AutoNetworkedField] + public bool CanWideSwing = true; } /// diff --git a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs index 99db6a5f70c..ce2228ff66b 100644 --- a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs +++ b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs @@ -174,7 +174,8 @@ private void OnHeavyAttack(HeavyAttackEvent msg, EntitySessionEventArgs args) return; if (!TryGetWeapon(user, out var weaponUid, out var weapon) || - weaponUid != GetEntity(msg.Weapon)) + weaponUid != GetEntity(msg.Weapon) || + !weapon.CanWideSwing) // Goobstation Change { return; } diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index 37e6451f92d..d391b138b3a 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -11,6 +11,8 @@ using Content.Shared.Gravity; using Content.Shared.Hands; using Content.Shared.Hands.Components; +using Content.Shared.Item; +using Content.Shared.Mech.Components; // Goobstation using Content.Shared.Popups; using Content.Shared.Projectiles; using Content.Shared.Tag; @@ -128,11 +130,15 @@ private void OnShootRequest(RequestShootEvent msg, EntitySessionEventArgs args) var user = args.SenderSession.AttachedEntity; if (user == null || - !_combatMode.IsInCombatMode(user) || - !TryGetGun(user.Value, out var ent, out var gun)) - { + !_combatMode.IsInCombatMode(user)) + return; + + if (TryComp(user.Value, out var mechPilot)) + user = mechPilot.Mech; + + if (!TryGetGun(user.Value, out var ent, out var gun) || + HasComp(user)) return; - } if (ent != GetEntity(msg.Gun)) return; @@ -146,14 +152,18 @@ private void OnStopShootRequest(RequestStopShootEvent ev, EntitySessionEventArgs { var gunUid = GetEntity(ev.Gun); - if (args.SenderSession.AttachedEntity == null || - !TryComp(gunUid, out var gun) || - !TryGetGun(args.SenderSession.AttachedEntity.Value, out _, out var userGun)) - { + var user = args.SenderSession.AttachedEntity; + + if (user == null) + return; + + if (TryComp(user.Value, out var mechPilot)) + user = mechPilot.Mech; + + if (!TryGetGun(user.Value, out var ent, out var gun)) return; - } - if (userGun != gun) + if (ent != gunUid) return; StopShooting(gunUid, gun); @@ -172,6 +182,15 @@ public bool TryGetGun(EntityUid entity, out EntityUid gunEntity, [NotNullWhen(tr gunEntity = default; gunComp = null; + if (TryComp(entity, out var mech) && + mech.CurrentSelectedEquipment.HasValue && + TryComp(mech.CurrentSelectedEquipment.Value, out var mechGun)) + { + gunEntity = mech.CurrentSelectedEquipment.Value; + gunComp = mechGun; + return true; + } + if (EntityManager.TryGetComponent(entity, out HandsComponent? hands) && hands.ActiveHandEntity is { } held && TryComp(held, out GunComponent? gun)) diff --git a/Content.Shared/_Goobstation/CCVars/CCVars.Goob.cs b/Content.Shared/_Goobstation/CCVars/CCVars.Goob.cs new file mode 100644 index 00000000000..16ef7e9da40 --- /dev/null +++ b/Content.Shared/_Goobstation/CCVars/CCVars.Goob.cs @@ -0,0 +1,17 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared._Goobstation.CCVar; + +[CVarDefs] +public sealed partial class GoobCVars +{ + #region Mechs + + /// + /// Whether or not players can use mech guns outside of mechs. + /// + public static readonly CVarDef MechGunOutsideMech = + CVarDef.Create("mech.gun_outside_mech", true, CVar.SERVER | CVar.REPLICATED); + + #endregion +} diff --git a/Resources/Locale/en-US/_Goobstation/lathe/lathe-categories.ftl b/Resources/Locale/en-US/_Goobstation/lathe/lathe-categories.ftl new file mode 100644 index 00000000000..c72f9b46fed --- /dev/null +++ b/Resources/Locale/en-US/_Goobstation/lathe/lathe-categories.ftl @@ -0,0 +1,10 @@ +lathe-category-mechs-vim = Vim +lathe-category-mechs-honker = H.O.N.K. +lathe-category-mechs-hamptr = H.A.M.P.T.R. +lathe-category-mechs-ripley = Riley +lathe-category-mechs-ripleymkii = Riley MK-II +lathe-category-mechs-clarke = Clarke +lathe-category-mechs-gygax = Gygax +lathe-category-mechs-durand = Durand +lathe-category-mechs-equipment = Mech equipment +lathe-category-mechs-weapons = Mech weapons diff --git a/Resources/Locale/en-US/_Goobstation/mech/mechs.ftl b/Resources/Locale/en-US/_Goobstation/mech/mechs.ftl new file mode 100644 index 00000000000..4543710a04a --- /dev/null +++ b/Resources/Locale/en-US/_Goobstation/mech/mechs.ftl @@ -0,0 +1,11 @@ +goobstation-clarke-bounty-desc = The local mining colony at the Sol Sector requires some more mechs. Send us a Clarke. +goobstation-clarke-bounty-name = Clarke + +goobstation-durand-bounty-desc = The Tranquility Assurance Force requires some more defensive power on the frontlines. We request a Durand. +goobstation-durand-bounty-name = Durand + +goobstation-ripley-bounty-desc = Hephaestus Industries is looking for some spare mechs to use in their dig sites. Send us a Ripley MkII. +goobstation-ripley-bounty-name = Ripley MkII + +goobstation-gygax-bounty-desc = The Tranquility Assurance Force needs to enhance their Peacekeeping squadrons, we request a Gygax. +goobstation-gygax-bounty-name = Gygax \ No newline at end of file diff --git a/Resources/Locale/en-US/_Goobstation/power/silicons.ftl b/Resources/Locale/en-US/_Goobstation/power/silicons.ftl new file mode 100644 index 00000000000..9d52b2210d1 --- /dev/null +++ b/Resources/Locale/en-US/_Goobstation/power/silicons.ftl @@ -0,0 +1 @@ +ipc-overheat-popup = {$name}'s circuits shut down from overheating! diff --git a/Resources/Locale/en-US/_Goobstation/research/technologies.ftl b/Resources/Locale/en-US/_Goobstation/research/technologies.ftl new file mode 100644 index 00000000000..31a8640b241 --- /dev/null +++ b/Resources/Locale/en-US/_Goobstation/research/technologies.ftl @@ -0,0 +1,8 @@ +research-technology-weapon-plasma-rifle = Experimental plasma rifle +research-technology-medical-defense = Medical Control Gear +research-technology-ripley-mkii = Ripley MK-II +research-technology-clarke = Clarke +research-technology-gygax = Gygax +research-technology-durand = Durand +research-technology-explosive-mech-ammunition = Explosive Mech Ammunition +research-technology-honk-weapons = Bananium Weapons diff --git a/Resources/Locale/en-US/_Goobstation/store/uplink-catalog.ftl b/Resources/Locale/en-US/_Goobstation/store/uplink-catalog.ftl new file mode 100644 index 00000000000..f94d63469d7 --- /dev/null +++ b/Resources/Locale/en-US/_Goobstation/store/uplink-catalog.ftl @@ -0,0 +1,7 @@ +# Mechs + +uplink-mech-teleporter-heavy-name = Heavy Mech teleporter +uplink-mech-teleporter-heavy-desc = Contains a heavily armored Cybersun mech with an integrated chainsword, Ultra AC-2, LBX AC 10 "Scattershot", BRM-6 Missile Rack and P-X Tesla Cannon. + +uplink-mech-teleporter-assault-name = Assault Mech teleporter +uplink-mech-teleporter-assault-desc = Contains a lightly armored Cybersun mech with an integrated chainsword, LBX AC 10 "Scattershot", SRM-8 Light Missile Rack and P-X Tesla Cannon. diff --git a/Resources/Locale/en-US/lathe/lathe-categories.ftl b/Resources/Locale/en-US/lathe/lathe-categories.ftl index 9fa331f3a4a..2a31138b7a6 100644 --- a/Resources/Locale/en-US/lathe/lathe-categories.ftl +++ b/Resources/Locale/en-US/lathe/lathe-categories.ftl @@ -1,7 +1,6 @@ lathe-category-ammo = Ammo lathe-category-circuitry = Circuitry lathe-category-lights = Lights -lathe-category-mechs = Mechs lathe-category-parts = Parts lathe-category-robotics = Robotics lathe-category-tacsuits = Tacsuits diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon_base.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon_base.yml index 9747f2436ce..5ec9b49a645 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon_base.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon_base.yml @@ -39,6 +39,18 @@ # safe: false # - type: EyeProtection # You'll want this if your robot can't wear glasses, like an IPC. # protectionTime: 12 + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + density: 185 + restitution: 0.0 + mask: + - MobMask + layer: + - MobLayer - type: Silicon entityType: enum.SiliconType.Player batteryPowered: false # Needs to also have a battery! @@ -53,7 +65,7 @@ 0: 0.00 - type: Temperature - heatDamageThreshold: 325 + heatDamageThreshold: 1800 # GoobStation: Roughly the melting point of mild steels coldDamageThreshold: 260 currentTemperature: 310.15 specificHeat: 42 @@ -64,6 +76,7 @@ types: Heat: 3 #per second, scales with temperature & other constants atmosTemperatureTransferEfficiency: 0.05 + - type: KillOnOverheat # GoobStation - type: Deathgasp prototype: SiliconDeathgasp needsCritical: false @@ -165,7 +178,7 @@ canResistFire: true damage: types: - Heat: 0.75 #per second, scales with number of fire 'stacks' + Heat: 0 # GoobStation: Replaced fire damage with overheating shutdown # - type: Barotrauma # Not particularly modifiable. In the future, some response to pressure changes would be nice. # damage: # types: @@ -315,6 +328,9 @@ - type: LightningTarget priority: 1 lightningExplode: false + - type: FootPrints + - type: Carriable + - type: LayingDown - type: damageModifierSet @@ -323,5 +339,4 @@ Poison: 0 Cold: 0.2 Heat: 2 - Shock: 2.5 - + Shock: 2.5 \ 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 f224c1c2bf9..47c843281a0 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Electronics/mech.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Electronics/mech.yml @@ -78,7 +78,7 @@ components: - type: Sprite sprite: Objects/Misc/module.rsi - state: id_mod + state: mcontroller # Goobstation - type: Tag tags: - HonkerTargetingControlModule diff --git a/Resources/Prototypes/Entities/Objects/Specific/Mech/mecha_equipment.yml b/Resources/Prototypes/Entities/Objects/Specific/Mech/mecha_equipment.yml index a97ca0f017b..e909bac111a 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Mech/mecha_equipment.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Mech/mecha_equipment.yml @@ -15,7 +15,7 @@ - type: entity id: MechEquipmentGrabber - parent: BaseMechEquipment + parent: [ BaseMechEquipment, IndustrialMechEquipment ] # Goobstation name: hydraulic clamp description: Gives the mech the ability to grab things and drag them around. components: @@ -40,18 +40,19 @@ maxContents: 4 grabDelay: 3 grabEnergyDelta: -20 - - type: Tag - tags: - - SmallMech - type: UIFragment ui: !type:MechGrabberUi - type: ContainerContainer containers: item-container: !type:Container + - type: Tag # Goobstation + tags: + - IndustrialMech + - SmallMech - type: entity id: MechEquipmentHorn - parent: BaseMechEquipment + parent: [ BaseMechEquipment, SpecialMechEquipment ] # Goobstation name: mech horn description: An enhanced bike horn that plays a hilarious array of sounds for the enjoyment of the crew. HONK! components: @@ -69,4 +70,3 @@ ui: !type:MechSoundboardUi - type: UseDelay delay: 0.5 - # TODO: tag as being for H.O.N.K. only!!! diff --git a/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml b/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml index 9da1e9753fc..7a76bf3d0d9 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml @@ -42,6 +42,7 @@ enum.MechUiKey.Key: type: MechBoundUserInterface - type: MeleeWeapon + canWideSwing: false hidden: true attackRate: 1.3333 damage: @@ -83,19 +84,68 @@ mech-pilot-slot: !type:ContainerSlot mech-equipment-container: !type:Container mech-battery-slot: !type:ContainerSlot + paper_label: !type:ContainerSlot # Goobstation - type: Damageable damageContainer: Inorganic - damageModifierSet: Metallic + damageModifierSet: LightArmor # Goobstation - type: FootstepModifier footstepSoundCollection: path: /Audio/Mecha/mechmove03.ogg - type: GuideHelp guides: - Robotics + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 1000 # Goobstation + behaviors: + - !type:PlaySoundBehavior + sound: + collection: MetalBreak + - !type:ChangeConstructionNodeBehavior + node: start + - !type:DoActsBehavior + acts: ["Destruction"] + # Goobstation Change Start + - type: UnpoweredFlashlight # Goobstation mech lights for all mechs its unpowered to match hardsuits + - type: PointLight + enabled: false + softness: 5 + autoRot: true + mask: /Textures/Effects/LightMasks/cone.png + radius: 7 + energy: 3 + netsync: false + - type: GenericVisualizer + visuals: + enum.PaperLabelVisuals.HasLabel: + enum.PaperLabelVisuals.Layer: + True: { visible: true } + False: { visible: false } + enum.PaperLabelVisuals.LabelType: + enum.PaperLabelVisuals.Layer: + Paper: { state: paper } + Bounty: { state: bounty } + CaptainsPaper: { state: captains_paper } + Invoice: { state: invoice } + - type: PaperLabel + labelSlot: + insertVerbText: Attach Label + ejectVerbText: Remove Label + whitelist: + components: + - Paper + blacklist: + tags: + - Book + - type: StaticPrice + price: 450 + # Goobstation Change End - type: entity id: MechRipley - parent: BaseMech + parent: [ BaseMech, IndustrialMech ] # Goobstation name: Ripley APLU description: Versatile and lightly armored, the Ripley is useful for almost any heavy work scenario. The "APLU" stands for Autonomous Power Loading Unit. components: @@ -137,9 +187,8 @@ mech-battery-slot: - PowerCellHigh -# TODO: have a whitelist for honker equipment - type: entity - parent: BaseMech + parent: [ BaseMech, SpecialMech ] # Goobstation id: MechHonker name: H.O.N.K. description: "Produced by \"Tyranny of Honk, INC\", this exosuit is designed as heavy clown-support. Used to spread the fun and joy of life. HONK!" @@ -159,6 +208,7 @@ openState: honker-open brokenState: honker-broken mechToPilotDamageMultiplier: 0.5 + airtight: true # Goobstation - Space Honk is real. pilotWhitelist: components: - HumanoidAppearance @@ -174,7 +224,7 @@ - PowerCellHigh - type: entity - parent: BaseMech + parent: [ BaseMech, SmallMech ] # Goobstation id: MechHamtr name: HAMTR description: "An experimental mech which uses a brain–computer interface to connect directly to a hamsters brain." @@ -196,9 +246,6 @@ mechToPilotDamageMultiplier: 0.2 maxEquipmentAmount: 2 airtight: true - equipmentWhitelist: - tags: - - SmallMech pilotWhitelist: tags: - Hamster diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 4e41768dbb4..5818f182be1 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -575,6 +575,14 @@ - AutodocCircuitboard # Shitmed Change - OperatingTableCircuitboard # Shitmed Change - MaterialSiloCircuitboard + - GygaxCentralElectronics + - GygaxPeripheralsElectronics + - GygaxTargetingElectronics + - DurandCentralElectronics + - DurandPeripheralsElectronics + - DurandTargetingElectronics + - ClarkeCentralElectronics + - ClarkePeripheralsElectronics - SMESAdvancedMachineCircuitboard - BaseComputerModularCircuitBoard # Arcadis - Modular Computer System - DiskBurnerMachineCircuitboard # Arcadis - Modular Computer System @@ -676,6 +684,8 @@ - RightLegBorgService - HeadBorgService - TorsoBorgService + - MechAirTank # Goobstation + - MechThruster # Goobstation dynamicRecipes: - ProximitySensor - BorgModuleLightReplacer @@ -707,6 +717,8 @@ - RipleyRArm - RipleyLLeg - RipleyRLeg + - RipleyMKIIHarness + - RipleyUpgradeKit - MechEquipmentGrabber - HonkerHarness - HonkerLArm @@ -725,6 +737,41 @@ - JetpackBlue - JetpackMini # End Nyano additions + - ClarkeHarness + - ClarkeHead + - ClarkeLArm + - ClarkeRArm + - ClarkeTreads + - DurandHarness + - DurandArmor + - DurandHead + - DurandLArm + - DurandLLeg + - DurandRArm + - DurandRLeg + - GygaxHarness + - GygaxArmor + - GygaxHead + - GygaxLArm + - GygaxLLeg + - GygaxRArm + - GygaxRLeg + - MechEquipmentDrill + - MechEquipmentDrillDiamond + - MechEquipmentKineticAccelerator + - MechEquipmentHonkerBananaMortar + - MechEquipmentHonkerMousetrapMortar + - type: EmagLatheRecipes + emagDynamicRecipes: + - WeaponMechCombatImmolationGun + - WeaponMechCombatSolarisLaser + - WeaponMechCombatFiredartLaser + - WeaponMechCombatUltraRifle + - WeaponMechCombatShotgun + - WeaponMechCombatShotgunIncendiary + - WeaponMechCombatDisabler + - WeaponMechCombatFlashbangLauncher + - WeaponMechCombatMissileRack8 - type: MaterialStorage whitelist: tags: @@ -988,6 +1035,15 @@ - ClothingOuterHardsuitCombatAdvanced - ClothingOuterHardsuitSyndieReverseEngineered - ClothingOuterHardsuitJuggernautReverseEngineered + - WeaponMechCombatImmolationGun + - WeaponMechCombatSolarisLaser + - WeaponMechCombatFiredartLaser + - WeaponMechCombatUltraRifle + - WeaponMechCombatShotgun + - WeaponMechCombatShotgunIncendiary + - WeaponMechCombatDisabler + - WeaponMechCombatFlashbangLauncher + - WeaponMechCombatMissileRack8 - type: MaterialStorage whitelist: tags: diff --git a/Resources/Prototypes/Recipes/Lathes/categories.yml b/Resources/Prototypes/Recipes/Lathes/categories.yml index 37883732552..98205eb4d06 100644 --- a/Resources/Prototypes/Recipes/Lathes/categories.yml +++ b/Resources/Prototypes/Recipes/Lathes/categories.yml @@ -10,10 +10,6 @@ id: Lights name: lathe-category-lights -- type: latheCategory - id: Mech - name: lathe-category-mechs - - type: latheCategory id: Parts name: lathe-category-parts diff --git a/Resources/Prototypes/Recipes/Lathes/mech_parts.yml b/Resources/Prototypes/Recipes/Lathes/mech_parts.yml index 4f9f84d0dc8..3f457ef8af9 100644 --- a/Resources/Prototypes/Recipes/Lathes/mech_parts.yml +++ b/Resources/Prototypes/Recipes/Lathes/mech_parts.yml @@ -2,7 +2,7 @@ - type: latheRecipe id: RipleyHarness result: RipleyHarness - category: Mech + category: Ripley # Goobstation completetime: 10 materials: Steel: 1500 @@ -11,7 +11,7 @@ - type: latheRecipe id: RipleyLArm result: RipleyLArm - category: Mech + category: Ripley # Goobstation completetime: 10 materials: Steel: 1000 @@ -20,7 +20,7 @@ - type: latheRecipe id: RipleyLLeg result: RipleyLLeg - category: Mech + category: Ripley # Goobstation completetime: 10 materials: Steel: 1000 @@ -29,7 +29,7 @@ - type: latheRecipe id: RipleyRLeg result: RipleyRLeg - category: Mech + category: Ripley # Goobstation completetime: 10 materials: Steel: 1000 @@ -38,7 +38,7 @@ - type: latheRecipe id: RipleyRArm result: RipleyRArm - category: Mech + category: Ripley completetime: 10 materials: Steel: 1000 @@ -47,17 +47,18 @@ - type: latheRecipe id: MechEquipmentGrabber result: MechEquipmentGrabber - category: Mech + category: MechEquipment completetime: 10 materials: - Steel: 500 - Plastic: 200 + Steel: 1000 + Glass: 750 + # H.O.N.K. - type: latheRecipe id: HonkerHarness result: HonkerHarness - category: Mech + category: Honker # Goobstation completetime: 10 materials: Steel: 3000 @@ -67,7 +68,7 @@ - type: latheRecipe id: HonkerLArm result: HonkerLArm - category: Mech + category: Honker # Goobstation completetime: 10 materials: Steel: 3000 @@ -77,7 +78,7 @@ - type: latheRecipe id: HonkerLLeg result: HonkerLLeg - category: Mech + category: Honker # Goobstation completetime: 10 materials: Steel: 3000 @@ -87,7 +88,7 @@ - type: latheRecipe id: HonkerRLeg result: HonkerRLeg - category: Mech + category: Honker # Goobstation completetime: 10 materials: Steel: 3000 @@ -97,7 +98,7 @@ - type: latheRecipe id: HonkerRArm result: HonkerRArm - category: Mech + category: Honker # Goobstation completetime: 10 materials: Steel: 3000 @@ -107,17 +108,18 @@ - type: latheRecipe id: MechEquipmentHorn result: MechEquipmentHorn - category: Mech + category: MechEquipment completetime: 10 materials: - Steel: 500 - Bananium: 200 + Steel: 3000 + Glass: 1200 + Bananium: 500 # HAMTR - type: latheRecipe id: HamtrHarness result: HamtrHarness - category: Mech + category: Hamptr # Goobstation completetime: 10 materials: Steel: 1200 @@ -126,7 +128,7 @@ - type: latheRecipe id: HamtrLArm result: HamtrLArm - category: Mech + category: Hamptr # Goobstation completetime: 10 materials: Steel: 800 @@ -135,7 +137,7 @@ - type: latheRecipe id: HamtrLLeg result: HamtrLLeg - category: Mech + category: Hamptr # Goobstation completetime: 10 materials: Steel: 800 @@ -144,7 +146,7 @@ - type: latheRecipe id: HamtrRLeg result: HamtrRLeg - category: Mech + category: Hamptr # Goobstation completetime: 10 materials: Steel: 800 @@ -153,7 +155,7 @@ - type: latheRecipe id: HamtrRArm result: HamtrRArm - category: Mech + category: Hamptr # Goobstation completetime: 10 materials: Steel: 800 @@ -162,18 +164,14 @@ - type: latheRecipe id: MechEquipmentGrabberSmall result: MechEquipmentGrabberSmall - category: Mech + category: MechEquipment # Goobstation completetime: 10 materials: Steel: 400 Plastic: 100 -# Vim - type: latheRecipe id: VimHarness result: VimHarness - category: Mech - completetime: 5 - materials: - Steel: 500 - Glass: 200 + category: MechEquipment + completetime: 5 \ No newline at end of file diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index a45c77ec2ae..3625f0cb4e7 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -15,6 +15,7 @@ - WeaponProtoKineticAccelerator - ShuttleGunKineticCircuitboard - WeaponLaserCarbine + - WeaponMechCombatFiredartLaser # Goobstation - WeaponEnergyGun - WeaponEnergyGunMini - WeaponLaserSvalinn @@ -22,6 +23,8 @@ - WeaponDisablerSMG - Truncheon #- WeaponPistolMk58 #todo: Add a bunch of basic ballistic guns to the list and make lathe recipes for them. + - MechEquipmentKineticAccelerator # Goobstation + # These are roundstart but not replenishable for salvage - type: technology id: DraconicMunitions @@ -84,6 +87,7 @@ - MagazineBoxPistolRubber # Frontier - MagazineBoxRifleRubber # Frontier - SpeedLoaderRifleHeavyRubber + - WeaponMechCombatDisabler # Goobstation - type: technology id: UraniumMunitions @@ -167,6 +171,8 @@ - WeaponXrayCannon - WeaponLaserCannon - WeaponGunLaserCarbineAutomatic + - WeaponLaserCannon + - WeaponMechCombatSolarisLaser # Goobstation technologyPrerequisites: - BasicWeapons @@ -205,6 +211,7 @@ - GrenadeEMP - PowerCageHigh - ShuttleGunDusterCircuitboard + - WeaponMechCombatImmolationGun # Goobstation #- EnergySword # TODO: Add a bunch of stupidly exotic energy weapons to act as a reaaaaaally nice incentive for research to consider this. # Make the energy sword for instance include bananium and bluespace in its recipe. :) softCapContribution: 1.5 diff --git a/Resources/Prototypes/Research/industrial.yml b/Resources/Prototypes/Research/industrial.yml index 7ebf525ed87..67246789ca5 100644 --- a/Resources/Prototypes/Research/industrial.yml +++ b/Resources/Prototypes/Research/industrial.yml @@ -14,6 +14,7 @@ - WeaponGrapplingGun - BorgModuleMining - BorgModuleGrapplingGun + - MechEquipmentDrill # Goobstation - OreProcessorIndustrialMachineCircuitboard - ClothingMaskWeldingGas - SalvageExpeditionsComputerCircuitboard @@ -183,19 +184,44 @@ recipeUnlocks: - OreBagOfHolding - MiningDrillDiamond + - MechEquipmentDrillDiamond - type: technology - id: MechanizedSalvaging - name: research-technology-mechanized-salvaging + id: Ripley2 + name: research-technology-ripley-mkii icon: - sprite: Mobs/Silicon/chassis.rsi - state: miner + sprite: Objects/Specific/Mech/mecha.rsi + state: ripleymkii + discipline: Industrial + tier: 2 + cost: 8000 + recipeUnlocks: + - RipleyMKIIHarness + - RipleyUpgradeKit + technologyPrerequisites: + - RipleyAPLU + +- type: technology + id: Clarke + name: research-technology-clarke + icon: + sprite: Objects/Specific/Mech/mecha.rsi + state: clarke discipline: Industrial tier: 2 cost: 10000 recipeUnlocks: - BorgModulePka - BorgModuleJetpack + - ClarkeHarness + - ClarkeHead + - ClarkeLArm + - ClarkeRArm + - ClarkeTreads + - ClarkeCentralElectronics + - ClarkePeripheralsElectronics + technologyPrerequisites: + - Ripley2 # Tier 3 diff --git a/Resources/Prototypes/_Goobstation/Catalog/Bounties/bounties.yml b/Resources/Prototypes/_Goobstation/Catalog/Bounties/bounties.yml new file mode 100644 index 00000000000..9148afe21ec --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Catalog/Bounties/bounties.yml @@ -0,0 +1,43 @@ +- type: cargoBounty + id: BountyClarke + reward: 20000 + description: goobstation-clarke-bounty-desc + entries: + - name: goobstation-clarke-bounty-name + amount: 1 + whitelist: + tags: + - Clarke + +- type: cargoBounty + id: BountyRipleyMkII + reward: 15000 + description: goobstation-ripley-bounty-desc + entries: + - name: goobstation-ripley-bounty-name + amount: 1 + whitelist: + tags: + - RipleyMkII + +- type: cargoBounty + id: BountyGygax + reward: 30000 + description: goobstation-gygax-bounty-desc + entries: + - name: goobstation-gygax-bounty-name + amount: 1 + whitelist: + tags: + - Gygax + +- type: cargoBounty + id: BountyDurand + reward: 60000 + description: goobstation-durand-bounty-desc + entries: + - name: goobstation-durand-bounty-name + amount: 1 + whitelist: + tags: + - Durand \ No newline at end of file diff --git a/Resources/Prototypes/_Goobstation/Catalog/Fills/Crates/syndicate.yml b/Resources/Prototypes/_Goobstation/Catalog/Fills/Crates/syndicate.yml new file mode 100644 index 00000000000..8af7a6276cf --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Catalog/Fills/Crates/syndicate.yml @@ -0,0 +1,30 @@ + +- type: entity + id: CrateCybersunDarkGygaxBundle + suffix: Filled + parent: CrateSyndicate + name: Cybersun gygax bundle + description: Contains a set of Cybersan light armored mechs. + components: + - type: StorageFill + contents: + - id: MechGygaxSyndieFilled + - id: DoubleEmergencyOxygenTankFilled + - id: DoubleEmergencyNitrogenTankFilled + - id: ToolboxSyndicateFilled + - id: PlushieNuke + +- type: entity + id: CrateCybersunMaulerBundle + suffix: Filled + parent: CrateSyndicate + name: Cybersun mauler bundle + description: Contains a set of Cybersan heavy armored mechs. + components: + - type: StorageFill + contents: + - id: MechMaulerSyndieFilled + - id: DoubleEmergencyOxygenTankFilled + - id: DoubleEmergencyNitrogenTankFilled + - id: ToolboxSyndicateFilled + - id: PlushieNuke diff --git a/Resources/Prototypes/_Goobstation/Catalog/uplink_catalog.yml b/Resources/Prototypes/_Goobstation/Catalog/uplink_catalog.yml new file mode 100644 index 00000000000..4706350a444 --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Catalog/uplink_catalog.yml @@ -0,0 +1,28 @@ +# 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: 400 + categories: + - UplinkAllies + +- 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: 650 + categories: + - UplinkAllies + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink \ No newline at end of file diff --git a/Resources/Prototypes/_Goobstation/Damage/modifier_sets.yml b/Resources/Prototypes/_Goobstation/Damage/modifier_sets.yml new file mode 100644 index 00000000000..c3b3a9f3c9e --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Damage/modifier_sets.yml @@ -0,0 +1,107 @@ +- type: damageModifierSet + id: Silicon + coefficients: + Heat: 0.8 + flatReductions: + Blunt: 5 + Slash: 5 + Piercing: 5 + +- type: damageModifierSet + id: SiliconProtected + coefficients: + Blunt: 0.6 + Slash: 0.6 + Piercing: 0.6 + Heat: 0.5 + flatReductions: + Blunt: 5 + Slash: 5 + Piercing: 5 + +- type: damageModifierSet + id: Yowie + coefficients: + Blunt: 0.85 + Slash: 0.85 + Piercing: 0.85 + Heat: 1.5 # Fur = Overheating + Shock: 1 + Cold: 0.7 # Fur = Keep warm + Bloodloss: 0.9 + Poison: 0.5 # Should be more resistant to toxin + Radiation : 0.7 # Engie yowies need some help against anti-rads + + +# Mech armor +- type: damageModifierSet + id: ThinArmor + coefficients: + Blunt: 0.8 + Slash: 0.8 + Piercing: 0.9 + Shock: 1.2 + Heat: 0.8 + flatReductions: + Blunt: 3 + Heat: 2 + +- type: damageModifierSet + id: LightArmor + coefficients: + Blunt: 0.75 + Slash: 0.75 + Piercing: 0.7 + Shock: 1.2 + Heat: 0.7 + flatReductions: + Blunt: 5 + Heat: 5 + +- type: damageModifierSet + id: MediumArmorNT + coefficients: + Blunt: 0.6 + Slash: 0.6 + Piercing: 0.65 + Shock: 1.4 + Heat: 0.7 + flatReductions: + Blunt: 8 + Heat: 10 + +- type: damageModifierSet + id: HeavyArmorNT + coefficients: + Blunt: 0.5 + Slash: 0.5 + Piercing: 0.35 + Shock: 1.8 + Heat: 0.6 + flatReductions: + Blunt: 15 + Heat: 15 + +- type: damageModifierSet + id: MediumArmorSyndi + coefficients: + Blunt: 0.6 + Slash: 0.6 + Piercing: 0.6 + Shock: 1.4 + Heat: 0.75 + flatReductions: + Blunt: 8 + Heat: 5 + +- type: damageModifierSet + id: HeavyArmorSyndi + coefficients: + Blunt: 0.5 + Slash: 0.5 + Piercing: 0.4 + Shock: 1.8 + Heat: 0.7 + flatReductions: + Blunt: 10 + Heat: 7 diff --git a/Resources/Prototypes/_Goobstation/Entities/Markers/Spawners/mechs.yml b/Resources/Prototypes/_Goobstation/Entities/Markers/Spawners/mechs.yml new file mode 100644 index 00000000000..300ff0ceaa3 --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Entities/Markers/Spawners/mechs.yml @@ -0,0 +1,186 @@ +- type: entity + name: Ripley APLU MK-II Spawner + id: SpawnMechRipley2 + parent: MarkerBase + components: + - type: Sprite + layers: + - state: green + - sprite: Objects/Specific/Mech/mecha.rsi + state: ripleymkii + - type: ConditionalSpawner + prototypes: + - MechRipley2Battery + +- type: entity + name: H.O.N.K. Spawner + suffix: Filled + id: SpawnMechHonkerFilled + parent: MarkerBase + components: + - type: Sprite + layers: + - state: green + - sprite: Objects/Specific/Mech/mecha.rsi + state: honker + - type: ConditionalSpawner + prototypes: + - MechHonkerFilled + +- type: entity + name: Clarke Spawner + id: SpawnMechClarke + parent: MarkerBase + components: + - type: Sprite + layers: + - state: green + - sprite: Objects/Specific/Mech/mecha.rsi + state: clarke + - type: ConditionalSpawner + prototypes: + - MechClarkeBattery + +- type: entity + name: Gygax Spawner + id: SpawnMechGygax + parent: MarkerBase + components: + - type: Sprite + layers: + - state: green + - sprite: Objects/Specific/Mech/mecha.rsi + state: gygax + - type: ConditionalSpawner + prototypes: + - MechGygaxBattery + +- type: entity + name: Durand Spawner + id: SpawnMechDurand + parent: MarkerBase + components: + - type: Sprite + layers: + - state: green + - sprite: Objects/Specific/Mech/mecha.rsi + state: durand + - type: ConditionalSpawner + prototypes: + - MechDurandBattery + +- type: entity + name: Marauder Spawner + id: SpawnMechMarauder + parent: MarkerBase + components: + - type: Sprite + layers: + - state: green + - sprite: Objects/Specific/Mech/mecha.rsi + state: marauder + - type: ConditionalSpawner + prototypes: + - MechMarauderBattery + +- type: entity + name: Marauder Spawner + suffix: Filled + id: SpawnMechMarauderFilled + parent: MarkerBase + components: + - type: Sprite + layers: + - state: green + - sprite: Objects/Specific/Mech/mecha.rsi + state: marauder + - type: ConditionalSpawner + prototypes: + - MechMarauderFilled + +- type: entity + name: Seraph Spawner + id: SpawnMechSeraph + parent: MarkerBase + components: + - type: Sprite + layers: + - state: green + - sprite: Objects/Specific/Mech/mecha.rsi + state: seraph + - type: ConditionalSpawner + prototypes: + - MechSeraphBattery + +- type: entity + name: Seraph Spawner + suffix: Filled + id: SpawnMechSeraphFilled + parent: MarkerBase + components: + - type: Sprite + layers: + - state: green + - sprite: Objects/Specific/Mech/mecha.rsi + state: seraph + - type: ConditionalSpawner + prototypes: + - MechSeraphFilled + +- type: entity + name: Dark Gygax Spawner + id: SpawnMechGygaxSyndie + parent: MarkerBase + components: + - type: Sprite + layers: + - state: green + - sprite: Objects/Specific/Mech/mecha.rsi + state: darkgygax + - type: ConditionalSpawner + prototypes: + - MechGygaxSyndieBattery + +- type: entity + name: Dark Gygax Spawner + suffix: Filled + id: SpawnMechGygaxSyndieFilled + parent: MarkerBase + components: + - type: Sprite + layers: + - state: green + - sprite: Objects/Specific/Mech/mecha.rsi + state: darkgygax + - type: ConditionalSpawner + prototypes: + - MechGygaxSyndieFilled + +- type: entity + name: Mauler Spawner + id: SpawnMechMaulerSyndie + parent: MarkerBase + components: + - type: Sprite + layers: + - state: green + - sprite: Objects/Specific/Mech/mecha.rsi + state: mauler + - type: ConditionalSpawner + prototypes: + - MechMaulerSyndieBattery + +- type: entity + name: Mauler Spawner + suffix: Filled + id: SpawnMechMaulerSyndieFilled + parent: MarkerBase + components: + - type: Sprite + layers: + - state: green + - sprite: Objects/Specific/Mech/mecha.rsi + state: mauler + - type: ConditionalSpawner + prototypes: + - MechMaulerSyndieFilled diff --git a/Resources/Prototypes/_Goobstation/Entities/Objects/Devices/Electronics/exosuit_components.yml b/Resources/Prototypes/_Goobstation/Entities/Objects/Devices/Electronics/exosuit_components.yml new file mode 100644 index 00000000000..08c7740bdf6 --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Entities/Objects/Devices/Electronics/exosuit_components.yml @@ -0,0 +1,104 @@ +- type: entity + id: BaseExosuitParts + parent: BaseItem + name: base components + abstract: true + components: + - type: Item + storedRotation: -90 + size: Ginormous + - type: Sprite + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_camera + - type: StaticPrice + price: 100 + - type: PhysicalComposition + materialComposition: + Steel: 200 + +- type: entity + id: DurandArmorPlate + parent: BaseExosuitParts + name: durand armor plates + description: Armor plates made of plasteel for Durand exosuit. + components: + - type: Item + storedRotation: 0 + - type: Sprite + sprite: _Goobstation/Objects/Specific/Mech/durand_construction.rsi + state: durand_armor + - type: Tag + tags: + - DurandArmor + - type: GuideHelp + guides: + - Robotics + +- type: entity + id: GygaxArmorPlate + parent: BaseExosuitParts + name: gygax armor plates + description: Armor plates made of steel for Gygax exosuit. + components: + - type: Item + storedRotation: 0 + - type: Sprite + sprite: _Goobstation/Objects/Specific/Mech/gygax_construction.rsi + state: gygax_armor + - type: Tag + tags: + - GygaxArmor + - type: GuideHelp + guides: + - Robotics + +- type: entity + id: RipleyUpgradeKit + parent: BaseExosuitParts + name: exosuit upgrade kit + description: This kit allows you to assemble an exosuit Ripley MK-II. + components: + - type: Item + storedRotation: 0 + - type: Sprite + state: ripleyupgrade + - type: Tag + tags: + - RipleyMKIIUpgradeKit + - type: GuideHelp + guides: + - Robotics + +- type: entity + id: MechAirTank + parent: BaseExosuitParts + name: exosuit air tank + description: A special air canister capable of holding a large amount of air. + components: + - type: Item + storedRotation: 0 + - type: Sprite + state: mecha_air_tank + - type: Tag + tags: + - MechAirTank + - type: GuideHelp + guides: + - Robotics + +- type: entity + id: MechThruster + parent: BaseExosuitParts + name: exosuit thruster + description: A thruster with which the exosuit can safely move in the absence of gravity. + components: + - type: Item + storedRotation: 0 + - type: Sprite + state: mecha_bin + - type: Tag + tags: + - MechThruster + - type: GuideHelp + guides: + - Robotics diff --git a/Resources/Prototypes/_Goobstation/Entities/Objects/Devices/Electronics/mech.yml b/Resources/Prototypes/_Goobstation/Entities/Objects/Devices/Electronics/mech.yml new file mode 100644 index 00000000000..b76adace4f6 --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Entities/Objects/Devices/Electronics/mech.yml @@ -0,0 +1,139 @@ +# Clarke + +- type: entity + id: ClarkeCentralElectronics + parent: BaseElectronics + name: clarke central control module + description: The electrical control center for the clarke mech. + components: + - type: Item + storedRotation: 0 + - type: Sprite + sprite: Objects/Misc/module.rsi + state: mainboard + - type: Tag + tags: + - ClarkeCentralControlModule + - type: GuideHelp + guides: + - Robotics + +- type: entity + id: ClarkePeripheralsElectronics + parent: BaseElectronics + name: clarke peripherals control module + description: The electrical peripherals control for the clarke mech. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: id_mod + - type: Tag + tags: + - ClarkePeripheralsControlModule + - type: GuideHelp + guides: + - Robotics + +# Gygax + +- type: entity + id: GygaxCentralElectronics + parent: BaseElectronics + name: gygax central control module + description: The electrical control center for the gygax mech. + components: + - type: Item + storedRotation: 0 + - type: Sprite + sprite: Objects/Misc/module.rsi + state: mainboard + - type: Tag + tags: + - GygaxCentralControlModule + - type: GuideHelp + guides: + - Robotics + +- type: entity + id: GygaxPeripheralsElectronics + parent: BaseElectronics + name: gygax peripherals control module + description: The electrical peripherals control for the gygax mech. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: id_mod + - type: Tag + tags: + - GygaxPeripheralsControlModule + - type: GuideHelp + guides: + - Robotics + +- type: entity + id: GygaxTargetingElectronics + parent: BaseElectronics + name: gygax weapon control and targeting module + description: The electrical targeting control for the gygax mech. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: mcontroller + - type: Tag + tags: + - GygaxTargetingControlModule + - type: GuideHelp + guides: + - Robotics + +# Durand + +- type: entity + id: DurandCentralElectronics + parent: BaseElectronics + name: durand central control module + description: The electrical control center for the durand mech. + components: + - type: Item + storedRotation: 0 + - type: Sprite + sprite: Objects/Misc/module.rsi + state: mainboard + - type: Tag + tags: + - DurandCentralControlModule + - type: GuideHelp + guides: + - Robotics + +- type: entity + id: DurandPeripheralsElectronics + parent: BaseElectronics + name: durand peripherals control module + description: The electrical peripherals control for the durand mech. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: id_mod + - type: Tag + tags: + - DurandPeripheralsControlModule + - type: GuideHelp + guides: + - Robotics + +- type: entity + id: DurandTargetingElectronics + parent: BaseElectronics + name: durand weapon control and targeting module + description: The electrical targeting control for the durand mech. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: mcontroller + - type: Tag + tags: + - DurandTargetingControlModule + - type: GuideHelp + guides: + - Robotics diff --git a/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Gun/base.yml b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Gun/base.yml new file mode 100644 index 00000000000..f4b8f23f12d --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Gun/base.yml @@ -0,0 +1,18 @@ +- type: entity + id: BaseMechWeaponRange + parent: BaseMechEquipment + abstract: true + components: + - type: Battery + maxCharge: 100 # Battery is charged by mech + startingCharge: 100 + - type: Appearance + - type: StaticPrice + price: 1 + - type: Item + size: Ginormous + - type: MultiHandedItem + - type: ClothingSpeedModifier + walkModifier: 0.5 + sprintModifier: 0.5 + - type: HeldSpeedModifier \ No newline at end of file diff --git a/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Gun/combat.yml b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Gun/combat.yml new file mode 100644 index 00000000000..9e1882f7cfe --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Gun/combat.yml @@ -0,0 +1,303 @@ +- type: entity + id: WeaponMechCombatPulseRifle + name: eZ-14 mk2 Heavy pulse rifle + description: Fires a heavy pulse laser. + suffix: Mech Weapon, Gun, Combat, Pulse + parent: [ BaseMechWeaponRange, CombatMechEquipment ] + components: + - type: Sprite + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_pulse + - type: Gun + fireRate: 1.5 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/laser3.ogg + - type: HitscanBatteryAmmoProvider + proto: Pulse + fireCost: 40 + - type: Appearance + - type: AmmoCounter + +- type: entity + id: WeaponMechCombatImmolationGun + name: ZFI Immolation Beam Gun + description: A gun for battlemechs, firing high-temperature beams. + suffix: Mech Weapon, Gun, Combat, Laser + parent: [ BaseMechWeaponRange, CombatMechEquipment ] + components: + - type: Sprite + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_laser + - type: Gun + fireRate: 0.6 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/laser_cannon.ogg + - type: HitscanBatteryAmmoProvider + proto: RedHeavyLaser + fireCost: 99 + - type: Appearance + - type: AmmoCounter + +- type: entity + id: WeaponMechCombatSolarisLaser + name: CH-LC "Solaris" laser cannon + description: An experimental combat mounted laser cannon that causes more damage, but also has a greater cooldown than a "Firedart". + suffix: Mech Weapon, Gun, Combat, Laser + parent: [ BaseMechWeaponRange, CombatMechEquipment ] + components: + - type: Sprite + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_laser + - type: Gun + fireRate: 1 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/laser.ogg + - type: HitscanBatteryAmmoProvider + proto: RedMediumLaser + fireCost: 59 + - type: Appearance + - type: AmmoCounter + +- type: entity + id: WeaponMechCombatFiredartLaser + name: CH-PS "Firedart" Laser + description: The standard combat armament of the mechs is a combat mounted laser. + suffix: Mech Weapon, Gun, Combat, Laser + parent: [ BaseMechWeaponRange, CombatMechEquipment ] + components: + - type: Sprite + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_laser + - type: Gun + fireRate: 0.8 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/laser.ogg + - type: HitscanBatteryAmmoProvider + proto: RedLaser + fireCost: 39 + - type: Appearance + - type: AmmoCounter + +- type: entity + id: WeaponMechCombatTeslaCannon + name: P-X Tesla Cannon + description: A weapon for combat mechs, firing energy balls, based on the principle of an experimental Tesla engine. + suffix: Mech Weapon, Gun, Combat, Tesla + parent: [ BaseMechWeaponRange, CombatMechEquipment ] + components: + - type: Sprite + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_wholegen + - type: Gun + projectileSpeed: 3 + fireRate: 0.4 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Effects/Lightning/lightningshock.ogg + params: + variation: 0.2 + - type: ProjectileBatteryAmmoProvider + proto: TeslaGunBullet + fireCost: 99 + - type: Appearance + - type: AmmoCounter + +- type: entity + id: WeaponMechCombatDisabler + name: CH-PD Disabler + description: A non-lethal mounted stun gun that allows you to immobilize intruders. + suffix: Mech Weapon, Gun, Combat, Disabler + parent: [ BaseMechWeaponRange, CombatMechEquipment ] + components: + - type: Sprite + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_disabler + - type: Gun + fireRate: 1 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/taser2.ogg + - type: ProjectileBatteryAmmoProvider + proto: BulletDisabler + fireCost: 29 + - type: Appearance + - type: AmmoCounter + +- type: entity + id: WeaponMechCombatTaser + name: PBT "Pacifier" Mounted Taser + description: A mounted non-lethal taser that allows you to stun intruders. + suffix: Mech Weapon, Gun, Combat, Disabler, admeme + parent: [ BaseMechWeaponRange, CombatMechEquipment ] + components: + - type: Sprite + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_taser + - type: Gun + fireRate: 1 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/taser2.ogg + - type: ProjectileBatteryAmmoProvider + proto: BulletTaser + fireCost: 19 + - type: Appearance + - type: AmmoCounter + +- type: entity + id: WeaponMechCombatShotgun + name: LBX AC 10 "Scattershot" + description: A mounted non-lethal taser that allows you to stun intruders. + suffix: Mech Weapon, Gun, Combat, Shotgun + parent: [ BaseMechWeaponRange, CombatMechEquipment ] + components: + - type: Sprite + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_scatter + - type: Gun + fireRate: 0.5 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/shotgun.ogg + - type: ProjectileBatteryAmmoProvider + proto: ShellShotgun + fireCost: 99 + - type: Appearance + - type: AmmoCounter + +- type: entity + id: WeaponMechCombatShotgunIncendiary + name: FNX-99 "Hades" Carbine + description: Mounted carbine, firing incendiary cartridges. + suffix: Mech Weapon, Gun, Combat, Shotgun, Incendiary + parent: [ BaseMechWeaponRange, CombatMechEquipment ] + components: + - type: Sprite + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_carbine + - type: Gun + fireRate: 1.2 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/shotgun.ogg + - type: ProjectileBatteryAmmoProvider + proto: ShellShotgunIncendiary + fireCost: 99 + - type: Appearance + - type: AmmoCounter + +- type: entity + id: WeaponMechCombatUltraRifle + name: Ultra AC-2 + description: Mounted carbine, firing incendiary cartridges. + suffix: Mech Weapon, Gun, Combat, Rifle + parent: [ BaseMechWeaponRange, CombatMechEquipment ] + components: + - type: Sprite + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_uac2 + - type: Gun + fireRate: 3 + selectedMode: FullAuto + availableModes: + - FullAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/shotgun.ogg + - type: ProjectileBatteryAmmoProvider + proto: CartridgeLightRifle + fireCost: 15 + - type: Appearance + - type: AmmoCounter + +- type: entity + id: WeaponMechCombatMissileRack8 + name: SRM-8 Light Missile Rack + description: Launches low-explosive breaching missiles designed to explode only when striking a sturdy target. + suffix: Mech Weapon, Gun, Combat, Light Missile + parent: [ BaseMechWeaponRange, CombatMechEquipment ] + components: + - type: Sprite + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_missilerack + - type: Gun + fireRate: 1 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/rpgfire.ogg + - type: ProjectileBatteryAmmoProvider + proto: BulletWeakRocket + fireCost: 25 + - type: Appearance + - type: AmmoCounter + +- type: entity + id: WeaponMechCombatMissileRack6 + name: BRM-6 Missile Rack + description: Tubes must be reloaded from the outside. + suffix: Mech Weapon, Gun, Combat, Missile + parent: [ BaseMechWeaponRange, CombatMechEquipment ] + components: + - type: Sprite + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_missilerack_six + - type: Gun + fireRate: 1 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/rpgfire.ogg + - type: ProjectileBatteryAmmoProvider + proto: GrenadeBlast + fireCost: 100 + - type: Appearance + - type: AmmoCounter + +- type: entity + id: WeaponMechCombatFlashbangLauncher + name: SGL-6 Flashbang Launcher + description: Launches low-explosive breaching missiles designed to explode only when striking a sturdy target. + suffix: Mech Weapon, Gun, Combat, Flashbang + parent: [ BaseMechWeaponRange, CombatMechEquipment ] + components: + - type: Sprite + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_grenadelnchr + - type: Gun + fireRate: 1 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/grenade_launcher.ogg + soundEmpty: + path: /Audio/Weapons/Guns/Empty/lmg_empty.ogg + - type: ProjectileBatteryAmmoProvider + proto: GrenadeFlash + fireCost: 30 + - type: Appearance + - type: AmmoCounter diff --git a/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Gun/debug.yml b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Gun/debug.yml new file mode 100644 index 00000000000..c98fdc92e32 --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Gun/debug.yml @@ -0,0 +1,98 @@ +- type: entity + id: WeaponMechDebugBallistic + parent: [ BaseMechWeaponRange, DebugMechEquipment ] # Debug equipment does have all whitelist tags. + suffix: Mech Weapon, DEBUG, Ballistic + name: debug bang + components: + - type: Sprite + sprite: Objects/Weapons/Guns/SMGs/c20r.rsi + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-0 + map: ["enum.GunVisualLayers.Mag"] + - type: Gun + minAngle: 24 + maxAngle: 45 + angleIncrease: 4 + angleDecay: 16 + fireRate: 5 + selectedMode: FullAuto + availableModes: + - FullAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/lmg.ogg + soundEmpty: + path: /Audio/Weapons/Guns/Empty/lmg_empty.ogg + - type: AmmoCounter + - type: ProjectileBatteryAmmoProvider + proto: CartridgeLightRifle + fireCost: 9 + - type: MagazineVisuals + magState: mag + steps: 5 + zeroVisible: true + - type: Appearance + +- type: entity + id: WeaponMechDebugLaser + name: debug pow + suffix: Mech Weapon, DEBUG, Laser + parent: [ BaseMechWeaponRange, DebugMechEquipment ] + description: A weapon using light amplified by the stimulated emission of radiation. + components: + - type: Sprite + sprite: Objects/Weapons/Guns/Battery/laser_retro.rsi + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-unshaded-4 + map: ["enum.GunVisualLayers.MagUnshaded"] + shader: unshaded + - type: HitscanBatteryAmmoProvider + proto: RedMediumLaser + fireCost: 19 + - type: MagazineVisuals + magState: mag + steps: 5 + zeroVisible: true + - type: Gun + fireRate: 2 + selectedMode: FullAuto + availableModes: + - FullAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/laser.ogg + - type: AmmoCounter + +- type: entity + id: WeaponMechDebugDisabler + name: debug tew + description: A self-defense weapon that exhausts organic targets, weakening them until they collapse. + suffix: Mech Weapon, DEBUG, Disabler + parent: [ BaseMechWeaponRange, DebugMechEquipment ] + components: + - type: Sprite + sprite: Objects/Weapons/Guns/Battery/disabler.rsi + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-unshaded-0 + map: ["enum.GunVisualLayers.MagUnshaded"] + shader: unshaded + - type: Gun + fireRate: 1 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/taser2.ogg + - type: ProjectileBatteryAmmoProvider + proto: BulletDisabler + fireCost: 19 + - type: MagazineVisuals + magState: mag + steps: 5 + zeroVisible: true + - type: Appearance + - type: AmmoCounter diff --git a/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Gun/industrial.yml b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Gun/industrial.yml new file mode 100644 index 00000000000..070b2553835 --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Gun/industrial.yml @@ -0,0 +1,23 @@ +- type: entity + id: WeaponMechIndustrialKineticAccelerator + name: exosuit proto-kinetic accelerator + description: Fires normal-damage kinetic bolts at a short range. + suffix: Mech Weapon, Gun, Industrial, Kinetic Accelerator + parent: [ BaseMechWeaponRange, IndustrialMechEquipment ] + components: + - type: Sprite + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_kineticgun + - type: Gun + fireRate: 1 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/kinetic_accel.ogg + - type: ProjectileBatteryAmmoProvider + proto: BulletKineticShuttle + fireCost: 0.1 + - type: Appearance + - type: AmmoCounter +# TODO: Plasma Cutter diff --git a/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Gun/special.yml b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Gun/special.yml new file mode 100644 index 00000000000..77d5ac3af42 --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Gun/special.yml @@ -0,0 +1,55 @@ +- type: entity + id: WeaponMechSpecialMousetrapMortar + parent: [ BaseMechWeaponRange, SpecialMechEquipment ] + suffix: Mech Weapon, Gun, Special, Mortar + name: mousetrap mortar + description: Mounted mousetrap launcher. + components: + - type: Sprite + state: mecha_mousetrapmrtr + - type: Gun + minAngle: 24 + maxAngle: 45 + angleIncrease: 4 + angleDecay: 16 + fireRate: 0.5 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/grenade_launcher.ogg + soundEmpty: + path: /Audio/Weapons/Guns/Empty/lmg_empty.ogg + - type: AmmoCounter + - type: ProjectileBatteryAmmoProvider + proto: MousetrapArmed + fireCost: 100 + - type: Appearance + +- type: entity + id: WeaponMechSpecialBananaMortar + parent: [ BaseMechWeaponRange, SpecialMechEquipment ] + suffix: Mech Weapon, Gun, Special, Mortar + name: banana mortar + description: Mounted banana peel launcher. + components: + - type: Sprite + state: mecha_bananamrtr + - type: Gun + minAngle: 24 + maxAngle: 25 + angleIncrease: 4 + angleDecay: 16 + fireRate: 0.5 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/grenade_launcher.ogg + soundEmpty: + path: /Audio/Weapons/Guns/Empty/lmg_empty.ogg + - type: AmmoCounter + - type: ProjectileBatteryAmmoProvider + proto: TrashBananaPeel + fireCost: 100 + - type: Appearance diff --git a/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Melee/base.yml b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Melee/base.yml new file mode 100644 index 00000000000..92915ce39a0 --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Melee/base.yml @@ -0,0 +1,15 @@ +- type: entity + id: BaseMechWeaponMelee + parent: BaseMechEquipment + abstract: true + components: + - type: Appearance + - type: StaticPrice + price: 1 + - type: Item + size: Ginormous + - type: MultiHandedItem + - type: ClothingSpeedModifier + walkModifier: 0.5 + sprintModifier: 0.5 + - type: HeldSpeedModifier diff --git a/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Melee/combat.yml b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Melee/combat.yml new file mode 100644 index 00000000000..dcb7ecfb45c --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Melee/combat.yml @@ -0,0 +1,20 @@ +- type: entity + id: WeaponMechChainSword + parent: [ BaseMechWeaponMelee, CombatMechEquipment ] + name: exosuit chainsword + suffix: Mech Weapon, Melee, Combat + description: Equipment for combat exosuits. This is the mechanical chainsword that'll pierce the heavens! + components: + - type: Sprite + state: mecha_chainsword + - type: MeleeWeapon + autoAttack: true + angle: 0 + wideAnimationRotation: -90 + soundHit: + path: "/Audio/Weapons/chainsaw.ogg" + attackRate: 3.5 + damage: + types: + Structural: 35 + Piercing: 15 diff --git a/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Melee/debug.yml b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Melee/debug.yml new file mode 100644 index 00000000000..5ffd975e44c --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Melee/debug.yml @@ -0,0 +1,18 @@ +- type: entity + id: WeaponMechDebugMelle + parent: [ BaseMechWeaponMelee, DebugMechEquipment ] # Debug equipment does have all whitelist tags. + name: debug bam + suffix: Mech Weapon, DEBUG, Melee + description: A robust thing. + components: + - type: Sprite + state: paddy_claw + - type: MeleeWeapon + hidden: true + attackRate: 0.75 + damage: + types: + Blunt: 40 + Structural: 20 + soundHit: + collection: MetalThud diff --git a/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Melee/industrial.yml b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Melee/industrial.yml new file mode 100644 index 00000000000..416af7e3ad3 --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/Weapons/Melee/industrial.yml @@ -0,0 +1,53 @@ +- type: entity + id: WeaponMechMeleeDrill + parent: BaseMechWeaponMelee + name: exosuit drill + suffix: Mech Weapon, Melee, Industrial + description: Equipment for mining exosuits. This is the drill that'll pierce the rocks! + components: + - type: Sprite + state: mecha_drill + - type: Tag + tags: + - Pickaxe + - IndustrialMech + - type: MeleeWeapon + canWideSwing: false + autoAttack: true + angle: 0 + wideAnimationRotation: -90 + soundHit: + path: "/Audio/Items/drill_hit.ogg" + attackRate: 3.5 + damage: + groups: + Brute: 9 + types: + Structural: 40 # ~10 seconds for solid wall / ~21 secods for reinforced wall + +- type: entity + id: WeaponMechMeleeDrillDiamond + parent: BaseMechWeaponMelee + name: diamond-tipped exosuit drill + suffix: Mech Weapon, Melee, Industrial + description: Equipment for mining exosuits. This is an upgraded version of the drill that'll pierce the rocks! + components: + - type: Sprite + state: mecha_diamond_drill + - type: Tag + tags: + - Pickaxe + - IndustrialMech + - type: MeleeWeapon + canWideSwing: false + autoAttack: true + angle: 0 + wideAnimationRotation: -90 + soundHit: + path: "/Audio/Items/drill_hit.ogg" + attackRate: 4 + damage: + groups: + Brute: 18 + types: + Structural: 60 # ~3 seconds for solid wall / 9 seconds for reinforced wall diff --git a/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/mech_construction.yml b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/mech_construction.yml new file mode 100644 index 00000000000..bfe7f488922 --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/mech_construction.yml @@ -0,0 +1,494 @@ +# Ripley MK-II + +- type: entity + id: BaseRipleyMKIIPart + parent: BaseMechPart + abstract: true + components: + - type: Sprite + drawdepth: Items + noRot: false + sprite: _Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi + +- type: entity + parent: BaseRipleyMKIIPart + id: RipleyMKIIHarness + name: ripley MK-II harness + description: The core of the Ripley MK-II. + components: + - type: Appearance + - type: ItemMapper + mapLayers: + ripleymkii_upgrade_kit+o: + whitelist: + tags: + - RipleyMKIIUpgradeKit + ripleymkii_l_arm+o: + whitelist: + tags: + - RipleyLArm + ripleymkii_r_arm+o: + whitelist: + tags: + - RipleyRArm + ripleymkii_l_leg+o: + whitelist: + tags: + - RipleyLLeg + ripleymkii_r_leg+o: + whitelist: + tags: + - RipleyRLeg + sprite: _Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi + - type: ContainerContainer + containers: + mech-assembly-container: !type:Container + - type: MechAssembly + finishedPrototype: RipleyMKIIChassis + requiredParts: + RipleyMKIIUpgradeKit: false + RipleyLArm: false + RipleyRArm: false + RipleyLLeg: false + RipleyRLeg: false + - type: Sprite + state: ripleymkii_harness+o + noRot: true + +- type: entity + id: RipleyMKIIChassis + parent: BaseRipleyMKIIPart + name: ripley MK-II chassis + description: An in-progress construction of the Ripley MK-II mech. + components: + - type: Appearance + - type: ContainerContainer + containers: + battery-container: !type:Container + - type: MechAssemblyVisuals + statePrefix: ripleymkii + - type: Sprite + noRot: true + state: ripleymkii0 + - type: Construction + graph: RipleyMKII + node: start + defaultTarget: ripleymkii + +# Clarke + +- type: entity + id: BaseClarkePart + parent: BaseMechPart + abstract: true + components: + - type: Sprite + drawdepth: Items + noRot: false + sprite: _Goobstation/Objects/Specific/Mech/clarke_construction.rsi + +- type: entity + id: BaseClarkePartItem + parent: BaseClarkePart + abstract: true + components: + - type: Item + size: Ginormous + +- type: entity + parent: BaseClarkePart + id: ClarkeHarness + name: clarke harness + description: The core of the Clarke. + components: + - type: Appearance + - type: ItemMapper + mapLayers: + clarke_head+o: + whitelist: + tags: + - ClarkeHead + clarke_r_arm+o: + whitelist: + tags: + - ClarkeLArm + clarke_l_arm+o: + whitelist: + tags: + - ClarkeRArm + clarke_treads+o: + whitelist: + tags: + - ClarkeTreads + sprite: _Goobstation/Objects/Specific/Mech/clarke_construction.rsi + - type: ContainerContainer + containers: + mech-assembly-container: !type:Container + - type: MechAssembly + finishedPrototype: ClarkeChassis + requiredParts: + ClarkeHead: false + ClarkeLArm: false + ClarkeRArm: false + ClarkeTreads: false + - type: Sprite + state: clarke_harness+o + noRot: true + +- type: entity + parent: BaseClarkePartItem + id: ClarkeHead + name: clarke head + description: The head of the Clarke. It belongs on the chassis of the mech. + components: + - type: Sprite + state: clarke_head + - type: Tag + tags: + - ClarkeHead + +- type: entity + parent: BaseClarkePartItem + id: ClarkeRArm + name: clarke right arm + description: The right arm of the Clarke. It belongs on the chassis of the mech. + components: + - type: Sprite + state: clarke_l_arm + - type: Tag + tags: + - ClarkeRArm + +- type: entity + parent: BaseClarkePartItem + id: ClarkeLArm + name: clarke left arm + description: The left arm of the Clarke. It belongs on the chassis of the mech. + components: + - type: Sprite + state: clarke_r_arm + - type: Tag + tags: + - ClarkeLArm + +- type: entity + parent: BaseClarkePartItem + id: ClarkeTreads + name: clarke treads + description: The treads of the Clarke. It belongs on the chassis of the mech. + components: + - type: Sprite + state: clarke_treads + - type: Tag + tags: + - ClarkeTreads + +- type: entity + id: ClarkeChassis + parent: BaseClarkePart + name: clarke chassis + description: An in-progress construction of the Clarke mech. + components: + - type: Appearance + - type: ContainerContainer + containers: + battery-container: !type:Container + - type: MechAssemblyVisuals + statePrefix: clarke + - type: Sprite + noRot: true + state: clarke0 + - type: Construction + graph: Clarke + node: start + defaultTarget: clarke + +# Durand + +- type: entity + id: BaseDurandPart + parent: BaseMechPart + abstract: true + components: + - type: Sprite + drawdepth: Items + noRot: false + sprite: _Goobstation/Objects/Specific/Mech/durand_construction.rsi + +- type: entity + id: BaseDurandPartItem + parent: BaseDurandPart + abstract: true + components: + - type: Item + size: Ginormous + +- type: entity + parent: BaseDurandPart + id: DurandHarness + name: durand harness + description: The core of the Durand. + components: + - type: Appearance + - type: ItemMapper + mapLayers: + durand_head+o: + whitelist: + tags: + - DurandHead + durand_l_arm+o: + whitelist: + tags: + - DurandLArm + durand_r_arm+o: + whitelist: + tags: + - DurandRArm + durand_l_leg+o: + whitelist: + tags: + - DurandLLeg + durand_r_leg+o: + whitelist: + tags: + - DurandRLeg + sprite: _Goobstation/Objects/Specific/Mech/durand_construction.rsi + - type: ContainerContainer + containers: + mech-assembly-container: !type:Container + - type: MechAssembly + finishedPrototype: DurandChassis + requiredParts: + DurandHead: false + DurandLArm: false + DurandRArm: false + DurandLLeg: false + DurandRLeg: false + - type: Sprite + state: durand_harness+o + noRot: true + +- type: entity + parent: BaseDurandPartItem + id: DurandHead + name: durand head + description: The head of the Durand. It belongs on the chassis of the mech. + components: + - type: Sprite + state: durand_head + - type: Tag + tags: + - DurandHead + +- type: entity + parent: BaseDurandPartItem + id: DurandLArm + name: durand left arm + description: The left arm of the Durand. It belongs on the chassis of the mech. + components: + - type: Sprite + state: durand_l_arm + - type: Tag + tags: + - DurandLArm + +- type: entity + parent: BaseDurandPartItem + id: DurandLLeg + name: durand left leg + description: The left leg of the Durand. It belongs on the chassis of the mech. + components: + - type: Sprite + state: durand_l_leg + - type: Tag + tags: + - DurandLLeg + +- type: entity + parent: BaseDurandPartItem + id: DurandRLeg + name: durand right leg + description: The right leg of the Durand. It belongs on the chassis of the mech. + components: + - type: Sprite + state: durand_r_leg + - type: Tag + tags: + - DurandRLeg + +- type: entity + parent: BaseDurandPartItem + id: DurandRArm + name: durand right arm + description: The right arm of the Durand. It belongs on the chassis of the mech. + components: + - type: Sprite + state: durand_r_arm + - type: Tag + tags: + - DurandRArm + +- type: entity + id: DurandChassis + parent: BaseDurandPart + name: durand chassis + description: An in-progress construction of the Durand mech. + components: + - type: Appearance + - type: ContainerContainer + containers: + battery-container: !type:Container + - type: MechAssemblyVisuals + statePrefix: durand + - type: Sprite + noRot: true + state: durand0 + - type: Construction + graph: Durand + node: start + defaultTarget: durand + +# Gygax + +- type: entity + id: BaseGygaxPart + parent: BaseMechPart + abstract: true + components: + - type: Sprite + drawdepth: Items + noRot: false + sprite: _Goobstation/Objects/Specific/Mech/gygax_construction.rsi + +- type: entity + id: BaseGygaxPartItem + parent: BaseGygaxPart + abstract: true + components: + - type: Item + size: Ginormous + +- type: entity + parent: BaseGygaxPart + id: GygaxHarness + name: gygax harness + description: The core of the Gygax. + components: + - type: Appearance + - type: ItemMapper + mapLayers: + gygax_head+o: + whitelist: + tags: + - GygaxHead + gygax_l_arm+o: + whitelist: + tags: + - GygaxLArm + gygax_r_arm+o: + whitelist: + tags: + - GygaxRArm + gygax_l_leg+o: + whitelist: + tags: + - GygaxLLeg + gygax_r_leg+o: + whitelist: + tags: + - GygaxRLeg + sprite: _Goobstation/Objects/Specific/Mech/gygax_construction.rsi + - type: ContainerContainer + containers: + mech-assembly-container: !type:Container + - type: MechAssembly + finishedPrototype: GygaxChassis + requiredParts: + GygaxHead: false + GygaxLArm: false + GygaxRArm: false + GygaxLLeg: false + GygaxRLeg: false + - type: Sprite + state: gygax_harness+o + noRot: true + +- type: entity + parent: BaseGygaxPartItem + id: GygaxHead + name: gygax head + description: The head of the Gygax. It belongs on the chassis of the mech. + components: + - type: Sprite + state: gygax_head + - type: Tag + tags: + - GygaxHead + +- type: entity + parent: BaseGygaxPartItem + id: GygaxLArm + name: gygax left arm + description: The left arm of the Gygax. It belongs on the chassis of the mech. + components: + - type: Sprite + state: gygax_l_arm + - type: Tag + tags: + - GygaxLArm + +- type: entity + parent: BaseGygaxPartItem + id: GygaxLLeg + name: gygax left leg + description: The left leg of the Gygax. It belongs on the chassis of the mech. + components: + - type: Sprite + state: gygax_l_leg + - type: Tag + tags: + - GygaxLLeg + +- type: entity + parent: BaseGygaxPartItem + id: GygaxRLeg + name: gygax right leg + description: The right leg of the Gygax. It belongs on the chassis of the mech. + components: + - type: Sprite + state: gygax_r_leg + - type: Tag + tags: + - GygaxRLeg + +- type: entity + parent: BaseGygaxPartItem + id: GygaxRArm + name: gygax right arm + description: The right arm of the Gygax. It belongs on the chassis of the mech. + components: + - type: Sprite + state: gygax_r_arm + - type: Tag + tags: + - GygaxRArm + +- type: entity + id: GygaxChassis + parent: BaseGygaxPart + name: gygax chassis + description: An in-progress construction of the Gygax mech. + components: + - type: Appearance + - type: ContainerContainer + containers: + battery-container: !type:Container + - type: MechAssemblyVisuals + statePrefix: gygax + - type: Sprite + noRot: true + state: gygax0 + - type: Construction + graph: Gygax + node: start + defaultTarget: gygax diff --git a/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/mecha_equipment.yml b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/mecha_equipment.yml new file mode 100644 index 00000000000..101c1036fb4 --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/mecha_equipment.yml @@ -0,0 +1,53 @@ +- type: entity + id: DebugMechEquipment + abstract: true + suffix: DEBUG + categories: [ HideSpawnMenu ] + components: + - type: Tag + tags: + - CombatMech + - IndustrialMech + - SpecialMech + - SmallMech + +- type: entity + id: CombatMechEquipment + abstract: true + categories: [ HideSpawnMenu ] + components: + - type: Tag + tags: + - CombatMech + - type: StaticPrice + price: 500 + +- type: entity + id: IndustrialMechEquipment + abstract: true + categories: [ HideSpawnMenu ] + components: + - type: Tag + tags: + - IndustrialMech + - type: StaticPrice + price: 250 + +- type: entity + id: SpecialMechEquipment + abstract: true + categories: [ HideSpawnMenu ] + components: + - type: Tag + tags: + - SpecialMech + +- type: entity + id: SmallMechEquipment + abstract: true + categories: [ HideSpawnMenu ] + components: + - type: Tag + tags: + - SmallMech +# TODO: Make medical mech with equipment. diff --git a/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/mechs.yml b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/mechs.yml new file mode 100644 index 00000000000..fb4c6b5deda --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Entities/Objects/Specific/Mech/mechs.yml @@ -0,0 +1,590 @@ +- type: entity + id: CombatMech + abstract: true + categories: [ HideSpawnMenu ] + components: + - type: Mech + equipmentWhitelist: + tags: + - CombatMech + +- type: entity + id: IndustrialMech + abstract: true + categories: [ HideSpawnMenu ] + components: + - type: Mech + equipmentWhitelist: + tags: + - IndustrialMech + +- type: entity + id: SpecialMech + abstract: true + categories: [ HideSpawnMenu ] + components: + - type: Mech + equipmentWhitelist: + tags: + - SpecialMech + +- type: entity + id: SmallMech + abstract: true + categories: [ HideSpawnMenu ] + components: + - type: Mech + equipmentWhitelist: + tags: + - SmallMech + +# Ripley MK-II +- type: entity + id: MechRipley2 + parent: [ BaseMech, IndustrialMech ] + name: Ripley APLU MK-II + description: The "MK-II" has a pressurized cabin for space operations, but the added weight has slowed it down. + components: + - type: Sprite + drawdepth: Mobs + noRot: true + sprite: Objects/Specific/Mech/mecha.rsi + layers: + - map: [ "enum.MechVisualLayers.Base" ] + state: ripleymkii + - map: ["enum.PaperLabelVisuals.Layer"] + sprite: Structures/Storage/Crates/labels.rsi + state: paper + - type: FootstepModifier + footstepSoundCollection: + path: /Audio/Mecha/sound_mecha_powerloader_step.ogg + - type: Mech + baseState: ripleymkii + openState: ripleymkii-open + brokenState: ripleymkii-broken + mechToPilotDamageMultiplier: 0.4 + airtight: true + pilotWhitelist: + components: + - HumanoidAppearance + - type: MeleeWeapon + hidden: true + attackRate: 1 + damage: + types: + Blunt: 20 + - type: MovementSpeedModifier + baseWalkSpeed: 1 + baseSprintSpeed: 2 + - type: Damageable + damageModifierSet: MediumArmorNT + - type: StaticPrice + price: 1000 + - type: Tag + tags: + - DoorBumpOpener + - FootstepSound + - RipleyMkII + +- type: entity + id: MechRipley2Battery + parent: MechRipley2 + suffix: Battery + components: + - type: ContainerFill + containers: + mech-battery-slot: + - PowerCellHigh + +# Clarke +- type: entity + id: MechClarke + parent: [ BaseMech, IndustrialMech ] + name: Clarke + description: A fast-moving mech for space travel. It has built-in trusts. + components: + - type: Sprite + drawdepth: Mobs + noRot: true + sprite: Objects/Specific/Mech/mecha.rsi + layers: + - map: [ "enum.MechVisualLayers.Base" ] + state: clarke + - map: ["enum.PaperLabelVisuals.Layer"] + sprite: Structures/Storage/Crates/labels.rsi + state: paper + - type: FootstepModifier + footstepSoundCollection: + path: /Audio/Mecha/sound_mecha_powerloader_step.ogg + - type: Mech + baseState: clarke + openState: clarke-open + brokenState: clarke-broken + mechToPilotDamageMultiplier: 0.5 + airtight: true + pilotWhitelist: + components: + - HumanoidAppearance + - type: MeleeWeapon + hidden: true + attackRate: 1 + damage: + types: + Blunt: 26 + - type: MovementSpeedModifier + baseWalkSpeed: 2.5 + baseSprintSpeed: 4.5 + - type: CanMoveInAir + - type: MovementAlwaysTouching + - type: StaticPrice + price: 1500 + - type: Tag + tags: + - DoorBumpOpener + - FootstepSound + - Clarke + +- type: entity + id: MechClarkeBattery + parent: MechClarke + suffix: Battery + components: + - type: ContainerFill + containers: + mech-battery-slot: + - PowerCellHigh + +- type: entity + parent: MechHonkerBattery + id: MechHonkerFilled + suffix: Battery, Filled + components: + - type: Mech + startingEquipment: + - WeaponMechSpecialBananaMortar + - WeaponMechSpecialMousetrapMortar + - MechEquipmentHorn + +# Combat-Station Mechs + +# Gygax +- type: entity + id: MechGygax + parent: [ BaseMech, CombatMech ] + name: Gygax + 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: Objects/Specific/Mech/mecha.rsi + layers: + - map: [ "enum.MechVisualLayers.Base" ] + state: gygax + - map: ["enum.PaperLabelVisuals.Layer"] + sprite: Structures/Storage/Crates/labels.rsi + state: paper + - type: FootstepModifier + footstepSoundCollection: + path: /Audio/Mecha/sound_mecha_powerloader_step.ogg + - type: Mech + baseState: gygax + openState: gygax-open + brokenState: gygax-broken + mechToPilotDamageMultiplier: 0.3 + airtight: true + pilotWhitelist: + components: + - HumanoidAppearance + - type: MeleeWeapon + hidden: true + attackRate: 1 + damage: + types: + Blunt: 25 + Structural: 180 + - type: CanMoveInAir + - type: MovementAlwaysTouching + - type: MovementSpeedModifier + baseWalkSpeed: 2 + baseSprintSpeed: 2.6 + - type: StaticPrice + price: 3000 + - type: Tag + tags: + - DoorBumpOpener + - FootstepSound + - Gygax + +- type: entity + id: MechGygaxBattery + parent: MechGygax + suffix: Battery + components: + - type: ContainerFill + containers: + mech-battery-slot: + - PowerCellHigh + +# Durand +- type: entity + id: MechDurand + parent: [ BaseMech, CombatMech ] + name: Durand + description: A slow but beefy combat exosuit that is extra scary in confined spaces due to its punches. Xenos hate it! + components: + - type: Sprite + drawdepth: Mobs + noRot: true + sprite: Objects/Specific/Mech/mecha.rsi + layers: + - map: [ "enum.MechVisualLayers.Base" ] + state: durand + - map: ["enum.PaperLabelVisuals.Layer"] + sprite: Structures/Storage/Crates/labels.rsi + state: paper + - type: FootstepModifier + footstepSoundCollection: + path: /Audio/Mecha/sound_mecha_powerloader_step.ogg + - type: Mech + baseState: durand + openState: durand-open + brokenState: durand-broken + mechToPilotDamageMultiplier: 0.25 + airtight: true + maxIntegrity: 400 + pilotWhitelist: + components: + - HumanoidAppearance + - type: MeleeWeapon + hidden: true + attackRate: 1 + damage: + types: + Blunt: 40 + Structural: 220 + - type: MovementSpeedModifier + baseWalkSpeed: 1.5 + baseSprintSpeed: 2 + - type: Damageable + damageModifierSet: MediumArmorNT + - type: CanMoveInAir + - type: MovementAlwaysTouching + - type: Repairable + fuelCost: 30 + doAfterDelay: 15 + - type: StaticPrice + price: 5000 + - type: Tag + tags: + - DoorBumpOpener + - FootstepSound + - Durand + +- type: entity + id: MechDurandBattery + parent: MechDurand + suffix: Battery + components: + - type: ContainerFill + containers: + mech-battery-slot: + - PowerCellHigh + +# Nanotrasen Combat Mechs + +# Marauder +- type: entity + id: MechMarauder + parent: [ BaseMech, CombatMech ] + name: Marauder + description: Looks like we're all saved. # ERT mech + components: + - type: Sprite + drawdepth: Mobs + noRot: true + sprite: Objects/Specific/Mech/mecha.rsi + layers: + - map: [ "enum.MechVisualLayers.Base" ] + state: marauder + - map: ["enum.PaperLabelVisuals.Layer"] + sprite: Structures/Storage/Crates/labels.rsi + state: paper + - type: FootstepModifier + footstepSoundCollection: + path: /Audio/Mecha/sound_mecha_powerloader_step.ogg + - type: Mech + baseState: marauder + openState: marauder-open + brokenState: marauder-broken + mechToPilotDamageMultiplier: 0.1 + airtight: true + maxIntegrity: 500 + maxEquipmentAmount: 4 + pilotWhitelist: + components: + - HumanoidAppearance + - type: MeleeWeapon + hidden: true + attackRate: 1 + damage: + types: + Blunt: 40 + Structural: 200 + - type: MovementSpeedModifier + baseWalkSpeed: 1 + baseSprintSpeed: 1.5 + - type: Damageable + damageModifierSet: HeavyArmorNT + - type: CanMoveInAir + - type: MovementAlwaysTouching + - type: Repairable + fuelCost: 30 + doAfterDelay: 15 + - type: StaticPrice + price: 15000 # Some respect if you steal one of these. + +- type: entity + id: MechMarauderBattery + parent: MechMarauder + suffix: Battery + components: + - type: ContainerFill + containers: + mech-battery-slot: + - PowerCellHyper + +- type: entity + id: MechMarauderFilled + parent: MechMarauderBattery + suffix: Battery, Filled + components: + - type: Mech + startingEquipment: + - WeaponMechChainSword + - WeaponMechCombatPulseRifle + - WeaponMechCombatUltraRifle + - WeaponMechCombatMissileRack8 + +# Seraph +- type: entity + id: MechSeraph + parent: [ BaseMech, CombatMech ] + name: Seraph + description: That's the last thing you'll see. # Death Squad mech + components: + - type: Sprite + drawdepth: Mobs + noRot: true + sprite: Objects/Specific/Mech/mecha.rsi + layers: + - map: [ "enum.MechVisualLayers.Base" ] + state: seraph + - map: ["enum.PaperLabelVisuals.Layer"] + sprite: Structures/Storage/Crates/labels.rsi + state: paper + - type: FootstepModifier + footstepSoundCollection: + path: /Audio/Mecha/sound_mecha_powerloader_step.ogg + - type: Mech + baseState: seraph + openState: seraph-open + brokenState: seraph-broken + mechToPilotDamageMultiplier: 0.05 + airtight: true + maxIntegrity: 550 + maxEquipmentAmount: 5 + pilotWhitelist: + components: + - HumanoidAppearance + - type: MeleeWeapon + hidden: true + attackRate: 1 + damage: + types: + Blunt: 60 + Structural: 400 + - type: MovementSpeedModifier + baseWalkSpeed: 2.2 + baseSprintSpeed: 3.7 + - type: Damageable + damageModifierSet: HeavyArmorNT + - type: CanMoveInAir + - type: MovementAlwaysTouching + - type: Repairable + fuelCost: 30 + doAfterDelay: 20 + - type: StaticPrice + price: 30000 # My respects if you manage to steal one of these. + +- type: entity + id: MechSeraphBattery + parent: MechSeraph + suffix: Battery + components: + - type: ContainerFill + containers: + mech-battery-slot: + - PowerCellAntiqueProto + +- type: entity + id: MechSeraphFilled + parent: MechSeraphBattery + suffix: Battery, Filled + components: + - type: Mech + startingEquipment: + - WeaponMechChainSword + - WeaponMechCombatPulseRifle + - WeaponMechCombatShotgun + - WeaponMechCombatMissileRack6 + - WeaponMechCombatUltraRifle + +# Syndicate Combat Mech + +# Dark Gygax +- type: entity + id: MechGygaxSyndie + parent: [ BaseMech, CombatMech ] + name: Dark Gygax + description: A modified Gygax 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/mecha.rsi + layers: + - map: [ "enum.MechVisualLayers.Base" ] + state: darkgygax + - map: ["enum.PaperLabelVisuals.Layer"] + sprite: Structures/Storage/Crates/labels.rsi + state: paper + - type: FootstepModifier + footstepSoundCollection: + path: /Audio/Mecha/sound_mecha_powerloader_step.ogg + - type: Mech + baseState: darkgygax + openState: darkgygax-open + brokenState: darkgygax-broken + mechToPilotDamageMultiplier: 0.15 + airtight: true + maxIntegrity: 300 + maxEquipmentAmount: 4 + pilotWhitelist: + components: + - HumanoidAppearance + - type: MeleeWeapon + hidden: true + attackRate: 1 + damage: + types: + Blunt: 30 + Structural: 200 + - type: MovementSpeedModifier + baseWalkSpeed: 2.2 + baseSprintSpeed: 3.7 + - type: Damageable + damageModifierSet: MediumArmorSyndi + - type: CanMoveInAir + - type: MovementAlwaysTouching + - type: Repairable + fuelCost: 40 + doAfterDelay: 20 + - type: StaticPrice + price: 15000 # Some respect if you steal one of these. + +- type: entity + id: MechGygaxSyndieBattery + parent: MechGygaxSyndie + suffix: Battery + components: + - type: ContainerFill + containers: + mech-battery-slot: + - PowerCellHyper + +- type: entity + id: MechGygaxSyndieFilled + parent: MechGygaxSyndieBattery + suffix: Battery, Filled + components: + - type: Mech + startingEquipment: + - WeaponMechChainSword + - WeaponMechCombatShotgun + - WeaponMechCombatMissileRack8 + - WeaponMechCombatTeslaCannon + +# Mauler +- type: entity + id: MechMaulerSyndie + parent: [ BaseMech, CombatMech ] + name: Mauler + description: A modified Marauder used by the Syndicate that's not as maneuverable as the Dark Gygax, but it makes up for that in armor and sheer firepower. On the back of the armor plate there is an inscription "Cybersun Inc." + components: + - type: Sprite + drawdepth: Mobs + noRot: true + sprite: Objects/Specific/Mech/mecha.rsi + layers: + - map: [ "enum.MechVisualLayers.Base" ] + state: mauler + - map: ["enum.PaperLabelVisuals.Layer"] + sprite: Structures/Storage/Crates/labels.rsi + state: paper + - type: FootstepModifier + footstepSoundCollection: + path: /Audio/Mecha/sound_mecha_powerloader_step.ogg + - type: Mech + baseState: mauler + openState: mauler-open + brokenState: mauler-broken + mechToPilotDamageMultiplier: 0.1 + airtight: true + maxIntegrity: 500 + maxEquipmentAmount: 5 + pilotWhitelist: + components: + - HumanoidAppearance + - type: MeleeWeapon + hidden: true + attackRate: 1 + damage: + types: + Blunt: 50 + Structural: 400 + - type: MovementSpeedModifier + baseWalkSpeed: 1 + baseSprintSpeed: 1.5 + - type: Damageable + damageModifierSet: HeavyArmorSyndi + - type: CanMoveInAir + - type: MovementAlwaysTouching + - type: Repairable + fuelCost: 50 + doAfterDelay: 25 + - type: StaticPrice + price: 30000 # Some respect if you steal one of these. + +- type: entity + id: MechMaulerSyndieBattery + parent: MechMaulerSyndie + suffix: Battery + components: + - type: ContainerFill + containers: + mech-battery-slot: + - PowerCellHyper + +- type: entity + id: MechMaulerSyndieFilled + parent: MechMaulerSyndieBattery + suffix: Battery, Filled + components: + - type: Mech + startingEquipment: + - WeaponMechChainSword + - WeaponMechCombatUltraRifle + - WeaponMechCombatShotgun + - WeaponMechCombatMissileRack6 + - WeaponMechCombatTeslaCannon diff --git a/Resources/Prototypes/_Goobstation/Recipes/Construction/Graphs/mechs/clarke_construction.yml b/Resources/Prototypes/_Goobstation/Recipes/Construction/Graphs/mechs/clarke_construction.yml new file mode 100644 index 00000000000..042395f6049 --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Recipes/Construction/Graphs/mechs/clarke_construction.yml @@ -0,0 +1,156 @@ +- type: constructionGraph + id: Clarke + start: start + graph: + - node: start + edges: + - to: clarke + 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 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 3 + + - tool: Cutting + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 4 + + - tag: ClarkeCentralControlModule + name: clarke 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: ClarkePeripheralsControlModule + name: clarke 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: CapacitorStockPart + name: capacitor + icon: + sprite: Objects/Misc/stock_parts.rsi + state: capacitor + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 9 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 10 + + - component: PowerCell + name: power cell + store: battery-container + icon: + sprite: Objects/Power/power_cells.rsi + state: small + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 11 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 12 + + - material: Steel + amount: 5 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 14 + + - tool: Anchoring + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 15 + + - tool: Welding + doAfter: 1 + + - material: Gold + amount: 5 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 16 + + - tool: Anchoring + doAfter: 1 + + - 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 + + - tool: Welding + doAfter: 1 + + - node: clarke + actions: + - !type:BuildMech + mechPrototype: MechClarke diff --git a/Resources/Prototypes/_Goobstation/Recipes/Construction/Graphs/mechs/durand_construction.yml b/Resources/Prototypes/_Goobstation/Recipes/Construction/Graphs/mechs/durand_construction.yml new file mode 100644 index 00000000000..048ec4872b0 --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Recipes/Construction/Graphs/mechs/durand_construction.yml @@ -0,0 +1,180 @@ +- type: constructionGraph + id: Durand + start: start + graph: + - node: start + edges: + - to: durand + steps: + - tool: Anchoring + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 1 + + - tool: Screwing + doAfter: 1 + + - material: Cable + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 2 + + - tool: Cutting + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 3 + + - tag: DurandCentralControlModule + name: durand central control module + icon: + sprite: "Objects/Misc/module.rsi" + state: "mainboard" + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 4 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 5 + + - tag: DurandPeripheralsControlModule + name: durand peripherals control module + icon: + sprite: "Objects/Misc/module.rsi" + state: id_mod + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 6 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 7 + + - tag: DurandTargetingControlModule + name: durand weapon control and targeting module + icon: + sprite: "Objects/Misc/module.rsi" + state: mcontroller + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 8 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 9 + + - tag: CapacitorStockPart + name: capacitor + icon: + sprite: Objects/Misc/stock_parts.rsi + state: capacitor + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 10 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 11 + + - component: PowerCell + name: power cell + store: battery-container + icon: + sprite: Objects/Power/power_cells.rsi + state: small + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 12 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 13 + + - material: Steel + amount: 5 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 14 + + - tool: Anchoring + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 15 + + - tool: Welding + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 16 + + - 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: DurandArmor + name: durand armor plates + icon: + sprite: "_Goobstation/Objects/Specific/Mech/durand_construction.rsi" + state: durand_armor + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 17 + + - tool: Anchoring + doAfter: 2 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 18 + + - tool: Welding + doAfter: 1 + + - node: durand + actions: + - !type:BuildMech + mechPrototype: MechDurand diff --git a/Resources/Prototypes/_Goobstation/Recipes/Construction/Graphs/mechs/gygax_construction.yml b/Resources/Prototypes/_Goobstation/Recipes/Construction/Graphs/mechs/gygax_construction.yml new file mode 100644 index 00000000000..f86984de3fa --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Recipes/Construction/Graphs/mechs/gygax_construction.yml @@ -0,0 +1,180 @@ +- type: constructionGraph + id: Gygax + start: start + graph: + - node: start + edges: + - to: gygax + steps: + - tool: Anchoring + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 1 + + - tool: Screwing + doAfter: 1 + + - material: Cable + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 2 + + - tool: Cutting + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 3 + + - tag: GygaxCentralControlModule + name: gygax central control module + icon: + sprite: "Objects/Misc/module.rsi" + state: "mainboard" + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 4 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 5 + + - tag: GygaxPeripheralsControlModule + name: gygax peripherals control module + icon: + sprite: "Objects/Misc/module.rsi" + state: id_mod + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 6 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 7 + + - tag: GygaxTargetingControlModule + name: gygax weapon control and targeting module + icon: + sprite: "Objects/Misc/module.rsi" + state: mcontroller + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 8 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 9 + + - tag: CapacitorStockPart + name: capacitor + icon: + sprite: Objects/Misc/stock_parts.rsi + state: capacitor + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 10 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 11 + + - component: PowerCell + name: power cell + store: battery-container + icon: + sprite: Objects/Power/power_cells.rsi + state: small + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 12 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 13 + + - material: Steel + amount: 5 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 16 + + - tool: Anchoring + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 17 + + - tool: Welding + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 18 + + - 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: GygaxArmor + name: gygax armor plates + icon: + sprite: "_Goobstation/Objects/Specific/Mech/gygax_construction.rsi" + state: gygax_armor + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 19 + + - tool: Anchoring + doAfter: 2 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 20 + + - tool: Welding + doAfter: 1 + + - node: gygax + actions: + - !type:BuildMech + mechPrototype: MechGygax diff --git a/Resources/Prototypes/_Goobstation/Recipes/Construction/Graphs/mechs/ripleymkii_construction.yml b/Resources/Prototypes/_Goobstation/Recipes/Construction/Graphs/mechs/ripleymkii_construction.yml new file mode 100644 index 00000000000..ffa6648ee32 --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Recipes/Construction/Graphs/mechs/ripleymkii_construction.yml @@ -0,0 +1,138 @@ +- type: constructionGraph + id: RipleyMKII + start: start + graph: + - node: start + edges: + - to: ripleymkii + 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 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 3 + + - tool: Cutting + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 4 + + - tag: RipleyCentralControlModule + name: ripley 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: RipleyPeripheralsControlModule + name: ripley 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 + + - component: PowerCell + name: power cell + store: battery-container + icon: + sprite: Objects/Power/power_cells.rsi + state: small + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 9 + + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 12 + + - material: Steel + amount: 5 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 15 + + - tool: Anchoring + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 16 + + - tool: Welding + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 17 + + - tag: MechAirTank + name: exosuit air tank + icon: + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_air_tank + + - tool: Anchoring + doAfter: 1 + + - material: Plasteel + amount: 10 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 19 + + - tool: Anchoring + doAfter: 2 + completed: + - !type:VisualizerDataInt + key: "enum.MechAssemblyVisuals.State" + data: 20 + + - tool: Welding + doAfter: 1 + + - node: ripleymkii + actions: + - !type:BuildMech + mechPrototype: MechRipley2 diff --git a/Resources/Prototypes/_Goobstation/Recipes/Lathes/categories.yml b/Resources/Prototypes/_Goobstation/Recipes/Lathes/categories.yml new file mode 100644 index 00000000000..42e63aaf246 --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Recipes/Lathes/categories.yml @@ -0,0 +1,40 @@ +# Exosuit +- type: latheCategory + id: Vim + name: lathe-category-mechs-vim + +- type: latheCategory + id: Honker + name: lathe-category-mechs-honker + +- type: latheCategory + id: Hamptr + name: lathe-category-mechs-hamptr + +- type: latheCategory + id: Ripley + name: lathe-category-mechs-ripley + +- type: latheCategory + id: RipleyMKII + name: lathe-category-mechs-ripleymkii + +- type: latheCategory + id: Clarke + name: lathe-category-mechs-clarke + +- type: latheCategory + id: Gygax + name: lathe-category-mechs-gygax + +- type: latheCategory + id: Durand + name: lathe-category-mechs-durand + +- type: latheCategory + id: MechEquipment + name: lathe-category-mechs-equipment + +- type: latheCategory + id: MechWeapons + name: lathe-category-mechs-weapons diff --git a/Resources/Prototypes/_Goobstation/Recipes/Lathes/electronics.yml b/Resources/Prototypes/_Goobstation/Recipes/Lathes/electronics.yml new file mode 100644 index 00000000000..7fdfc517935 --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Recipes/Lathes/electronics.yml @@ -0,0 +1,39 @@ +- type: latheRecipe + parent: BaseGoldCircuitboardRecipe + id: ClarkeCentralElectronics + result: ClarkeCentralElectronics + +- type: latheRecipe + parent: BaseGoldCircuitboardRecipe + id: ClarkePeripheralsElectronics + result: ClarkePeripheralsElectronics + +- type: latheRecipe + parent: BaseGoldCircuitboardRecipe + id: GygaxCentralElectronics + result: GygaxCentralElectronics + +- type: latheRecipe + parent: BaseGoldCircuitboardRecipe + id: GygaxPeripheralsElectronics + result: GygaxPeripheralsElectronics + +- type: latheRecipe + parent: BaseGoldCircuitboardRecipe + id: GygaxTargetingElectronics + result: GygaxTargetingElectronics + +- type: latheRecipe + parent: BaseSilverCircuitboardRecipe + id: DurandCentralElectronics + result: DurandCentralElectronics + +- type: latheRecipe + parent: BaseSilverCircuitboardRecipe + id: DurandPeripheralsElectronics + result: DurandPeripheralsElectronics + +- type: latheRecipe + parent: BaseSilverCircuitboardRecipe + id: DurandTargetingElectronics + result: DurandTargetingElectronics diff --git a/Resources/Prototypes/_Goobstation/Recipes/Lathes/mech_parts.yml b/Resources/Prototypes/_Goobstation/Recipes/Lathes/mech_parts.yml new file mode 100644 index 00000000000..65d4890c419 --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Recipes/Lathes/mech_parts.yml @@ -0,0 +1,247 @@ +# Ripley MK-II +- type: latheRecipe + id: RipleyMKIIHarness + result: RipleyMKIIHarness + category: RipleyMKII + completetime: 10 + materials: + Steel: 1500 + Glass: 1200 + +- type: latheRecipe + id: RipleyUpgradeKit + result: RipleyUpgradeKit + category: RipleyMKII + completetime: 10 + materials: + Steel: 500 + +# Clarke +- type: latheRecipe + id: ClarkeHarness + result: ClarkeHarness + category: Clarke + completetime: 10 + materials: + Steel: 2000 + Glass: 1500 + +- type: latheRecipe + id: ClarkeHead + result: ClarkeHead + category: Clarke + completetime: 10 + materials: + Steel: 1550 + Glass: 950 + +- type: latheRecipe + id: ClarkeLArm + result: ClarkeLArm + category: Clarke + completetime: 10 + materials: + Steel: 900 + Glass: 800 + +- type: latheRecipe + id: ClarkeRArm + result: ClarkeRArm + category: Clarke + completetime: 10 + materials: + Steel: 900 + Glass: 800 + +- type: latheRecipe + id: ClarkeTreads + result: ClarkeTreads + category: Clarke + completetime: 10 + materials: + Steel: 950 + +# Durand +- type: latheRecipe + id: DurandHarness + result: DurandHarness + category: Durand + completetime: 10 + materials: + Steel: 2500 + Glass: 2000 + Silver: 1500 + +- type: latheRecipe + id: DurandArmor + result: DurandArmorPlate + category: Durand + completetime: 10 + materials: + Steel: 3000 + Silver: 900 + +- type: latheRecipe + id: DurandHead + result: DurandHead + category: Durand + completetime: 10 + materials: + Steel: 1500 + Glass: 800 + Silver: 250 + Diamond: 100 + +- type: latheRecipe + id: DurandLArm + result: DurandLArm + category: Durand + completetime: 10 + materials: + Steel: 1100 + Silver: 250 + +- type: latheRecipe + id: DurandLLeg + result: DurandLLeg + category: Durand + completetime: 10 + materials: + Steel: 1100 + Silver: 250 + +- type: latheRecipe + id: DurandRLeg + result: DurandRLeg + category: Durand + completetime: 10 + materials: + Steel: 1100 + Silver: 250 + +- type: latheRecipe + id: DurandRArm + result: DurandRArm + category: Durand + completetime: 10 + materials: + Steel: 1100 + Silver: 250 + +# Gygax +- type: latheRecipe + id: GygaxHarness + result: GygaxHarness + category: Gygax + completetime: 10 + materials: + Steel: 2500 + Glass: 2000 + +- type: latheRecipe + id: GygaxArmor + result: GygaxArmorPlate + category: Gygax + completetime: 10 + materials: + Steel: 3000 + +- type: latheRecipe + id: GygaxHead + result: GygaxHead + category: Gygax + completetime: 10 + materials: + Steel: 1500 + Glass: 250 + Diamond: 100 + +- type: latheRecipe + id: GygaxLArm + result: GygaxLArm + category: Gygax + completetime: 10 + materials: + Steel: 1100 + +- type: latheRecipe + id: GygaxLLeg + result: GygaxLLeg + category: Gygax + completetime: 10 + materials: + Steel: 1100 + +- type: latheRecipe + id: GygaxRLeg + result: GygaxRLeg + category: Gygax + completetime: 10 + materials: + Steel: 1100 + +- type: latheRecipe + id: GygaxRArm + result: GygaxRArm + category: Gygax + completetime: 10 + materials: + Steel: 1100 + +# Equipment +- type: latheRecipe + id: MechEquipmentDrill + result: WeaponMechMeleeDrill + category: MechEquipment + completetime: 10 + materials: + Steel: 1000 + Glass: 250 + +- type: latheRecipe + id: MechEquipmentDrillDiamond + result: WeaponMechMeleeDrillDiamond + category: MechEquipment + completetime: 10 + materials: + Steel: 1000 + Plastic: 150 + Silver: 350 + Diamond: 150 + +- type: latheRecipe + id: MechEquipmentHonkerBananaMortar + result: WeaponMechSpecialBananaMortar + category: MechEquipment + completetime: 10 + materials: + Steel: 1150 + Bananium: 800 + +- type: latheRecipe + id: MechEquipmentHonkerMousetrapMortar + result: WeaponMechSpecialMousetrapMortar + category: MechEquipment + completetime: 10 + materials: + Steel: 1200 + Bananium: 300 + +# Misc +- type: latheRecipe + id: MechAirTank + result: MechAirTank + category: MechEquipment + completetime: 10 + materials: + Steel: 1000 + Glass: 150 + +- type: latheRecipe + id: MechThruster + result: MechThruster + category: MechEquipment + completetime: 10 + materials: + Steel: 1000 + Glass: 150 diff --git a/Resources/Prototypes/_Goobstation/Recipes/Lathes/security.yml b/Resources/Prototypes/_Goobstation/Recipes/Lathes/security.yml index ef91b7281be..57f1b2011a2 100644 --- a/Resources/Prototypes/_Goobstation/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/_Goobstation/Recipes/Lathes/security.yml @@ -20,3 +20,105 @@ result: MagazineMagnumLeverRifle materials: Steel: 185 + +# Mech Weapons +- type: latheRecipe + id: WeaponMechCombatImmolationGun + result: WeaponMechCombatImmolationGun + category: MechWeapons + completetime: 10 + materials: + Steel: 2800 + Plastic: 1000 + Plasma: 750 + Glass: 500 + +- type: latheRecipe + id: WeaponMechCombatSolarisLaser + result: WeaponMechCombatSolarisLaser + category: MechWeapons + completetime: 10 + materials: + Steel: 1650 + Plastic: 300 + Plasma: 250 + Glass: 200 + +- type: latheRecipe + id: WeaponMechCombatFiredartLaser + result: WeaponMechCombatFiredartLaser + category: MechWeapons + completetime: 10 + materials: + Steel: 1200 + Plastic: 200 + Plasma: 150 + Glass: 50 + +- type: latheRecipe + id: WeaponMechCombatUltraRifle + result: WeaponMechCombatUltraRifle + category: MechWeapons + completetime: 10 + materials: + Steel: 1000 + Plastic: 200 + +- type: latheRecipe + id: WeaponMechCombatShotgun + result: WeaponMechCombatShotgun + category: MechWeapons + completetime: 10 + materials: + Steel: 1600 + Plastic: 550 + +- type: latheRecipe + id: WeaponMechCombatShotgunIncendiary + result: WeaponMechCombatShotgunIncendiary + category: MechWeapons + completetime: 10 + materials: + Steel: 1500 + Plastic: 800 + Plasma: 300 + +- type: latheRecipe + id: WeaponMechCombatDisabler + result: WeaponMechCombatDisabler + category: MechWeapons + completetime: 10 + materials: + Steel: 750 + Glass: 250 + Plastic: 300 + +- type: latheRecipe + id: WeaponMechCombatFlashbangLauncher + result: WeaponMechCombatFlashbangLauncher + category: MechWeapons + completetime: 10 + materials: + Steel: 1200 + Glass: 300 + Plastic: 450 + +- type: latheRecipe + id: WeaponMechCombatMissileRack8 + result: WeaponMechCombatMissileRack8 + category: MechWeapons + completetime: 10 + materials: + Steel: 2500 + Glass: 1500 + Plastic: 750 + +- type: latheRecipe + id: MechEquipmentKineticAccelerator + result: WeaponMechIndustrialKineticAccelerator + category: MechEquipment + completetime: 10 + materials: + Steel: 1500 + Glass: 750 + Silver: 150 diff --git a/Resources/Prototypes/_Goobstation/Research/arsenal.yml b/Resources/Prototypes/_Goobstation/Research/arsenal.yml new file mode 100644 index 00000000000..5f276399895 --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Research/arsenal.yml @@ -0,0 +1,66 @@ +# Tier 2 + +- type: technology + id: Gygax + name: research-technology-gygax + icon: + sprite: Objects/Specific/Mech/mecha.rsi + state: gygax + discipline: Arsenal + tier: 2 + cost: 12000 + recipeUnlocks: + - GygaxHarness + - GygaxArmor + - GygaxHead + - GygaxLArm + - GygaxLLeg + - GygaxRArm + - GygaxRLeg + - GygaxCentralElectronics + - GygaxPeripheralsElectronics + - GygaxTargetingElectronics + - WeaponMechCombatUltraRifle + technologyPrerequisites: + - Ripley2 + +# Tier 3 + +- type: technology + id: ExplosiveMechAmmunition + name: research-technology-explosive-mech-ammunition + icon: + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_missilerack + discipline: Arsenal + tier: 3 + cost: 15000 + recipeUnlocks: + - WeaponMechCombatMissileRack8 + technologyPrerequisites: + - ExplosiveTechnology + +- type: technology + id: Durand + name: research-technology-durand + icon: + sprite: Objects/Specific/Mech/mecha.rsi + state: durand + discipline: Arsenal + tier: 3 + cost: 16000 + recipeUnlocks: + - DurandHarness + - DurandArmor + - DurandHead + - DurandLArm + - DurandLLeg + - DurandRArm + - DurandRLeg + - DurandCentralElectronics + - DurandPeripheralsElectronics + - DurandTargetingElectronics + - WeaponMechCombatShotgun + - WeaponMechCombatShotgunIncendiary + technologyPrerequisites: + - Gygax \ No newline at end of file diff --git a/Resources/Prototypes/_Goobstation/Research/civilianservices.yml b/Resources/Prototypes/_Goobstation/Research/civilianservices.yml new file mode 100644 index 00000000000..2e832386d2c --- /dev/null +++ b/Resources/Prototypes/_Goobstation/Research/civilianservices.yml @@ -0,0 +1,18 @@ +# Tier 1 + +# Tier 2 + +- type: technology + id: HONKWeapons + name: research-technology-honk-weapons + icon: + sprite: Objects/Specific/Mech/mecha_equipment.rsi + state: mecha_bananamrtr + discipline: CivilianServices + tier: 2 + cost: 6000 + recipeUnlocks: + - MechEquipmentHonkerBananaMortar + - MechEquipmentHonkerMousetrapMortar + +# Tier 3 diff --git a/Resources/Prototypes/_Goobstation/tags.yml b/Resources/Prototypes/_Goobstation/tags.yml index 4f28a4b5550..27c98e1ad88 100644 --- a/Resources/Prototypes/_Goobstation/tags.yml +++ b/Resources/Prototypes/_Goobstation/tags.yml @@ -1,2 +1,107 @@ - type: Tag - id: MagazineMagnumLeverRifle \ No newline at end of file + id: MagazineMagnumLeverRifle + +# Mechs + +- type: Tag + id: ClarkeCentralControlModule + +- type: Tag + id: ClarkePeripheralsControlModule + +- type: Tag + id: ClarkeHead + +- type: Tag + id: ClarkeLArm + +- type: Tag + id: ClarkeRArm + +- type: Tag + id: ClarkeTreads + +- type: Tag + id: DurandArmor + +- type: Tag + id: DurandCentralControlModule + +- type: Tag + id: DurandPeripheralsControlModule + +- type: Tag + id: DurandTargetingControlModule + +- type: Tag + id: DurandHead + +- type: Tag + id: DurandLArm + +- type: Tag + id: DurandLLeg + +- type: Tag + id: DurandRArm + +- type: Tag + id: DurandRLeg + +- type: Tag + id: GygaxArmor + +- type: Tag + id: GygaxCentralControlModule + +- type: Tag + id: GygaxPeripheralsControlModule + +- type: Tag + id: GygaxTargetingControlModule + +- type: Tag + id: GygaxHead + +- type: Tag + id: GygaxLArm + +- type: Tag + id: GygaxLLeg + +- type: Tag + id: GygaxRArm + +- type: Tag + id: GygaxRLeg + +- type: Tag + id: MechAirTank + +- type: Tag + id: MechThruster + +- type: Tag + id: RipleyMKIIUpgradeKit + +- type: Tag + id: IndustrialMech + +- type: Tag + id: CombatMech +# TODO: Make medical mech, I will. + +- type: Tag + id: SpecialMech + +- type: Tag + id: RipleyMkII + +- type: Tag + id: Clarke + +- type: Tag + id: Durand + +- type: Tag + id: Gygax \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_air_tank.png b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_air_tank.png new file mode 100644 index 00000000000..692cf7be000 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_air_tank.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_bin.png b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_bin.png new file mode 100644 index 00000000000..e6b23bb7518 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_bin.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_camera.png b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_camera.png new file mode 100644 index 00000000000..25bfc9a2ea3 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_camera.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_chainsword.png b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_chainsword.png new file mode 100644 index 00000000000..8a2878e9348 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_chainsword.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_radio.png b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_radio.png new file mode 100644 index 00000000000..fa3f24720b9 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_radio.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_sleeper.png b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_sleeper.png new file mode 100644 index 00000000000..d3635adb89f Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_sleeper.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_syringegun.png b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_syringegun.png new file mode 100644 index 00000000000..2cf012b4fbe Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/mecha_syringegun.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 5e07ad51faf..b8e924a5ba3 100644 --- a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/meta.json @@ -1,7 +1,7 @@ { - "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, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/tgstation/tgstation at https://github.com/tgstation/tgstation/commit/da4d61210600269aaf56a2e309dd31c056252d84 || Mech ChainSword by NULL882 (GitHub)", "size": { "x": 32, "y": 32 @@ -150,6 +150,39 @@ }, { "name": "mecha_kineticgun" + }, + { + "name": "mecha_camera" + }, + { + "name": "mecha_bin" + }, + { + "name": "mecha_air_tank" + }, + { + "name": "mecha_radio" + }, + { + "name": "mecha_sleeper" + }, + { + "name": "mecha_syringegun" + }, + { + "name": "paddy_claw" + }, + { + "name": "paddyupgrade" + }, + { + "name": "mecha_chainsword", + "delays": [ + [ + 0.1, + 0.1 + ] + ] } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/paddy_claw.png b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/paddy_claw.png new file mode 100644 index 00000000000..c6b69723bdd Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/paddy_claw.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/paddyupgrade.png b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/paddyupgrade.png new file mode 100644 index 00000000000..ad60fd40c05 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Mech/mecha_equipment.rsi/paddyupgrade.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/ripley_construction.rsi/ripley_chassis.png b/Resources/Textures/Objects/Specific/Mech/ripley_construction.rsi/ripley_chassis.png index 531ae1d850c..3467f89d7fe 100644 Binary files a/Resources/Textures/Objects/Specific/Mech/ripley_construction.rsi/ripley_chassis.png and b/Resources/Textures/Objects/Specific/Mech/ripley_construction.rsi/ripley_chassis.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/ripley_construction.rsi/ripley_harness+o.png b/Resources/Textures/Objects/Specific/Mech/ripley_construction.rsi/ripley_harness+o.png index 9c2eb36cdae..3ecc6d4edc1 100644 Binary files a/Resources/Textures/Objects/Specific/Mech/ripley_construction.rsi/ripley_harness+o.png and b/Resources/Textures/Objects/Specific/Mech/ripley_construction.rsi/ripley_harness+o.png differ diff --git a/Resources/Textures/Objects/Specific/Mech/ripley_construction.rsi/ripley_harness.png b/Resources/Textures/Objects/Specific/Mech/ripley_construction.rsi/ripley_harness.png index de4a5f8a77d..81579c00366 100644 Binary files a/Resources/Textures/Objects/Specific/Mech/ripley_construction.rsi/ripley_harness.png and b/Resources/Textures/Objects/Specific/Mech/ripley_construction.rsi/ripley_harness.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke0.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke0.png new file mode 100644 index 00000000000..8a88cec708a Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke0.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke1.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke1.png new file mode 100644 index 00000000000..e0c9e427c14 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke1.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke10.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke10.png new file mode 100644 index 00000000000..09fcc84858f Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke10.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke11.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke11.png new file mode 100644 index 00000000000..e547edb9b5c Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke11.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke12.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke12.png new file mode 100644 index 00000000000..55fc94a22fb Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke12.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke13.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke13.png new file mode 100644 index 00000000000..4acdbaf2568 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke13.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke14.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke14.png new file mode 100644 index 00000000000..248eb8b9716 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke14.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke15.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke15.png new file mode 100644 index 00000000000..6debc163997 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke15.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke16.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke16.png new file mode 100644 index 00000000000..7cc4912fd99 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke16.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke2.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke2.png new file mode 100644 index 00000000000..aa0010fc7df Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke2.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke3.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke3.png new file mode 100644 index 00000000000..4e877ed690d Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke3.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke4.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke4.png new file mode 100644 index 00000000000..065c065e6f9 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke4.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke5.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke5.png new file mode 100644 index 00000000000..997a7b94142 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke5.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke6.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke6.png new file mode 100644 index 00000000000..a4f188364a5 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke6.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke7.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke7.png new file mode 100644 index 00000000000..bf5d31c74ea Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke7.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke8.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke8.png new file mode 100644 index 00000000000..182863ce6e5 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke8.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke9.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke9.png new file mode 100644 index 00000000000..9d24298d6ea Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke9.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_chassis.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_chassis.png new file mode 100644 index 00000000000..8a88cec708a Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_chassis.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_harness+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_harness+o.png new file mode 100644 index 00000000000..c752b5066d5 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_harness+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_harness.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_harness.png new file mode 100644 index 00000000000..c752b5066d5 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_harness.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_head+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_head+o.png new file mode 100644 index 00000000000..559fe1a35ac Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_head+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_head.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_head.png new file mode 100644 index 00000000000..66eb01fe501 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_head.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_l_arm+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_l_arm+o.png new file mode 100644 index 00000000000..163500ca493 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_l_arm+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_l_arm.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_l_arm.png new file mode 100644 index 00000000000..4b8912ef276 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_l_arm.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_r_arm+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_r_arm+o.png new file mode 100644 index 00000000000..21fc39da630 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_r_arm+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_r_arm.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_r_arm.png new file mode 100644 index 00000000000..38bb6cf779d Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_r_arm.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_treads+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_treads+o.png new file mode 100644 index 00000000000..be12f067e7c Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_treads+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_treads.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_treads.png new file mode 100644 index 00000000000..be12f067e7c Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/clarke_treads.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/meta.json b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/meta.json new file mode 100644 index 00000000000..1730a88c1d5 --- /dev/null +++ b/Resources/Textures/_Goobstation/Objects/Specific/Mech/clarke_construction.rsi/meta.json @@ -0,0 +1,95 @@ +{ + "copyright" : "Taken from https://github.com/tgstation/tgstation at https://github.com/tgstation/tgstation/commit/91af16bcbfd2dd363a89d846ae2acd6d655083c2", + "license" : "CC-BY-SA-3.0", + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "clarke_chassis" + }, + { + "name": "clarke_harness" + }, + { + "name": "clarke_harness+o" + }, + { + "name": "clarke_head" + }, + { + "name": "clarke_head+o" + }, + { + "name": "clarke_r_arm" + }, + { + "name": "clarke_r_arm+o" + }, + { + "name": "clarke_l_arm" + }, + { + "name": "clarke_l_arm+o" + }, + { + "name": "clarke_treads" + }, + { + "name": "clarke_treads+o" + }, + { + "name": "clarke0" + }, + { + "name": "clarke1" + }, + { + "name": "clarke2" + }, + { + "name": "clarke3" + }, + { + "name": "clarke4" + }, + { + "name": "clarke5" + }, + { + "name": "clarke6" + }, + { + "name": "clarke7" + }, + { + "name": "clarke8" + }, + { + "name": "clarke9" + }, + { + "name": "clarke10" + }, + { + "name": "clarke11" + }, + { + "name": "clarke12" + }, + { + "name": "clarke13" + }, + { + "name": "clarke14" + }, + { + "name": "clarke15" + }, + { + "name": "clarke16" + } + ] +} diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand0.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand0.png new file mode 100644 index 00000000000..9d8db1028ae Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand0.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand1.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand1.png new file mode 100644 index 00000000000..2f4c63b8c5a Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand1.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand10.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand10.png new file mode 100644 index 00000000000..32f6a064d44 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand10.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand11.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand11.png new file mode 100644 index 00000000000..0e1f59cc33b Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand11.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand12.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand12.png new file mode 100644 index 00000000000..4e5946d44ac Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand12.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand13.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand13.png new file mode 100644 index 00000000000..32e8f4169b1 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand13.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand14.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand14.png new file mode 100644 index 00000000000..c1cf6d5485f Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand14.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand15.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand15.png new file mode 100644 index 00000000000..da8af5a091b Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand15.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand16.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand16.png new file mode 100644 index 00000000000..c8b51220dd4 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand16.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand17.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand17.png new file mode 100644 index 00000000000..3da36ede382 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand17.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand18.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand18.png new file mode 100644 index 00000000000..b3f022df3c7 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand18.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand2.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand2.png new file mode 100644 index 00000000000..63cc45f39bc Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand2.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand3.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand3.png new file mode 100644 index 00000000000..10a9b76423a Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand3.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand4.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand4.png new file mode 100644 index 00000000000..f310689c1cf Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand4.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand5.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand5.png new file mode 100644 index 00000000000..832d88cba3e Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand5.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand6.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand6.png new file mode 100644 index 00000000000..6891cecaa42 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand6.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand7.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand7.png new file mode 100644 index 00000000000..95de1294167 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand7.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand8.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand8.png new file mode 100644 index 00000000000..191fe7e6981 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand8.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand9.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand9.png new file mode 100644 index 00000000000..1c1c7c53c9f Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand9.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_armor.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_armor.png new file mode 100644 index 00000000000..b7925d3ecc9 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_armor.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_chassis.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_chassis.png new file mode 100644 index 00000000000..b94f935a073 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_chassis.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_harness+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_harness+o.png new file mode 100644 index 00000000000..09c1d9296ed Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_harness+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_harness.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_harness.png new file mode 100644 index 00000000000..75bc46691ed Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_harness.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_head+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_head+o.png new file mode 100644 index 00000000000..2e87f14fcf8 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_head+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_head.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_head.png new file mode 100644 index 00000000000..30a4aa31f93 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_head.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_l_arm+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_l_arm+o.png new file mode 100644 index 00000000000..0c168d0cdb1 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_l_arm+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_l_arm.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_l_arm.png new file mode 100644 index 00000000000..ab3a803f54d Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_l_arm.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_l_leg+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_l_leg+o.png new file mode 100644 index 00000000000..3603c6df8bc Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_l_leg+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_l_leg.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_l_leg.png new file mode 100644 index 00000000000..f6f9377ffe1 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_l_leg.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_r_arm+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_r_arm+o.png new file mode 100644 index 00000000000..0000a1a5c62 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_r_arm+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_r_arm.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_r_arm.png new file mode 100644 index 00000000000..4934a7a2772 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_r_arm.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_r_leg+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_r_leg+o.png new file mode 100644 index 00000000000..21887b6dec6 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_r_leg+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_r_leg.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_r_leg.png new file mode 100644 index 00000000000..2daa3d39194 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/durand_r_leg.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/meta.json b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/meta.json new file mode 100644 index 00000000000..d2841cd4129 --- /dev/null +++ b/Resources/Textures/_Goobstation/Objects/Specific/Mech/durand_construction.rsi/meta.json @@ -0,0 +1,111 @@ +{ + "copyright" : "Taken from https://github.com/tgstation/tgstation at https://github.com/tgstation/tgstation/commit/91af16bcbfd2dd363a89d846ae2acd6d655083c2", + "license" : "CC-BY-SA-3.0", + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "durand_chassis" + }, + { + "name": "durand_harness" + }, + { + "name": "durand_armor" + }, + { + "name": "durand_harness+o" + }, + { + "name": "durand_head" + }, + { + "name": "durand_head+o" + }, + { + "name": "durand_r_arm" + }, + { + "name": "durand_r_arm+o" + }, + { + "name": "durand_l_arm" + }, + { + "name": "durand_l_arm+o" + }, + { + "name": "durand_r_leg" + }, + { + "name": "durand_r_leg+o" + }, + { + "name": "durand_l_leg" + }, + { + "name": "durand_l_leg+o" + }, + { + "name": "durand0" + }, + { + "name": "durand1" + }, + { + "name": "durand2" + }, + { + "name": "durand3" + }, + { + "name": "durand4" + }, + { + "name": "durand5" + }, + { + "name": "durand6" + }, + { + "name": "durand7" + }, + { + "name": "durand8" + }, + { + "name": "durand9" + }, + { + "name": "durand10" + }, + { + "name": "durand11" + }, + { + "name": "durand12" + }, + { + "name": "durand13" + }, + { + "name": "durand14" + }, + { + "name": "durand15" + }, + { + "name": "durand16" + }, + { + "name": "durand17" + }, + { + "name": "durand18" + } + ] + } + \ No newline at end of file diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax0.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax0.png new file mode 100644 index 00000000000..492836d79cd Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax0.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax1.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax1.png new file mode 100644 index 00000000000..064c5734875 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax1.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax10.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax10.png new file mode 100644 index 00000000000..98f3307ae3c Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax10.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax11.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax11.png new file mode 100644 index 00000000000..c0c5be80890 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax11.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax12.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax12.png new file mode 100644 index 00000000000..a15acf6f12e Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax12.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax13.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax13.png new file mode 100644 index 00000000000..f08f1dc5156 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax13.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax14.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax14.png new file mode 100644 index 00000000000..f08f1dc5156 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax14.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax15.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax15.png new file mode 100644 index 00000000000..f08f1dc5156 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax15.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax16.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax16.png new file mode 100644 index 00000000000..b95d4e7ec91 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax16.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax17.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax17.png new file mode 100644 index 00000000000..7c33b55f170 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax17.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax18.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax18.png new file mode 100644 index 00000000000..1411d88dca3 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax18.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax19.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax19.png new file mode 100644 index 00000000000..6fad0c0d1d1 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax19.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax2.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax2.png new file mode 100644 index 00000000000..b338ea867be Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax2.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax20.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax20.png new file mode 100644 index 00000000000..ae0f808c958 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax20.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax3.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax3.png new file mode 100644 index 00000000000..cca6b2de54f Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax3.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax4.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax4.png new file mode 100644 index 00000000000..cd98f134f5d Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax4.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax5.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax5.png new file mode 100644 index 00000000000..a078a264c85 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax5.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax6.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax6.png new file mode 100644 index 00000000000..fad94386f0e Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax6.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax7.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax7.png new file mode 100644 index 00000000000..dfde3fe348d Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax7.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax8.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax8.png new file mode 100644 index 00000000000..c0295667e82 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax8.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax9.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax9.png new file mode 100644 index 00000000000..4c101e4fcf7 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax9.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_armor.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_armor.png new file mode 100644 index 00000000000..70c43bd960e Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_armor.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_chassis.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_chassis.png new file mode 100644 index 00000000000..451c80bef90 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_chassis.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_harness+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_harness+o.png new file mode 100644 index 00000000000..5b6ad43d373 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_harness+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_harness.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_harness.png new file mode 100644 index 00000000000..403a574ff53 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_harness.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_head+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_head+o.png new file mode 100644 index 00000000000..2f84e0bf960 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_head+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_head.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_head.png new file mode 100644 index 00000000000..078ea8017b8 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_head.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_l_arm+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_l_arm+o.png new file mode 100644 index 00000000000..7d8739484e5 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_l_arm+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_l_arm.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_l_arm.png new file mode 100644 index 00000000000..ed756014a65 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_l_arm.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_l_leg+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_l_leg+o.png new file mode 100644 index 00000000000..42d6f7b3558 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_l_leg+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_l_leg.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_l_leg.png new file mode 100644 index 00000000000..7fd0576f9e1 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_l_leg.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_r_arm+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_r_arm+o.png new file mode 100644 index 00000000000..e76face7962 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_r_arm+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_r_arm.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_r_arm.png new file mode 100644 index 00000000000..98137c1e502 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_r_arm.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_r_leg+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_r_leg+o.png new file mode 100644 index 00000000000..4d494a0b097 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_r_leg+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_r_leg.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_r_leg.png new file mode 100644 index 00000000000..3b16a068e0c Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/gygax_r_leg.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/meta.json b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/meta.json new file mode 100644 index 00000000000..aac1b8187d4 --- /dev/null +++ b/Resources/Textures/_Goobstation/Objects/Specific/Mech/gygax_construction.rsi/meta.json @@ -0,0 +1,117 @@ +{ + "copyright" : "Taken from https://github.com/tgstation/tgstation at https://github.com/tgstation/tgstation/commit/91af16bcbfd2dd363a89d846ae2acd6d655083c2", + "license" : "CC-BY-SA-3.0", + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gygax_chassis" + }, + { + "name": "gygax_harness" + }, + { + "name": "gygax_armor" + }, + { + "name": "gygax_harness+o" + }, + { + "name": "gygax_head" + }, + { + "name": "gygax_head+o" + }, + { + "name": "gygax_r_arm" + }, + { + "name": "gygax_r_arm+o" + }, + { + "name": "gygax_l_arm" + }, + { + "name": "gygax_l_arm+o" + }, + { + "name": "gygax_r_leg" + }, + { + "name": "gygax_r_leg+o" + }, + { + "name": "gygax_l_leg" + }, + { + "name": "gygax_l_leg+o" + }, + { + "name": "gygax0" + }, + { + "name": "gygax1" + }, + { + "name": "gygax2" + }, + { + "name": "gygax3" + }, + { + "name": "gygax4" + }, + { + "name": "gygax5" + }, + { + "name": "gygax6" + }, + { + "name": "gygax7" + }, + { + "name": "gygax8" + }, + { + "name": "gygax9" + }, + { + "name": "gygax10" + }, + { + "name": "gygax11" + }, + { + "name": "gygax12" + }, + { + "name": "gygax13" + }, + { + "name": "gygax14" + }, + { + "name": "gygax15" + }, + { + "name": "gygax16" + }, + { + "name": "gygax17" + }, + { + "name": "gygax18" + }, + { + "name": "gygax19" + }, + { + "name": "gygax20" + } + ] + } + \ No newline at end of file diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/meta.json b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/meta.json new file mode 100644 index 00000000000..0ec3c7105e6 --- /dev/null +++ b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/meta.json @@ -0,0 +1,113 @@ +{ + "copyright" : "Taken from https://github.com/tgstation/tgstation at https://github.com/tgstation/tgstation/commit/91af16bcbfd2dd363a89d846ae2acd6d655083c2", + "license" : "CC-BY-SA-3.0", + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "ripleymkii_chassis" + }, + { + "name": "ripleymkii_upgrade_kit" + }, + { + "name": "ripleymkii_upgrade_kit+o" + }, + { + "name": "ripleymkii_harness" + }, + { + "name": "ripleymkii_harness+o" + }, + { + "name": "ripleymkii_r_arm" + }, + { + "name": "ripleymkii_r_arm+o" + }, + { + "name": "ripleymkii_l_arm" + }, + { + "name": "ripleymkii_l_arm+o" + }, + { + "name": "ripleymkii_r_leg" + }, + { + "name": "ripleymkii_r_leg+o" + }, + { + "name": "ripleymkii_l_leg" + }, + { + "name": "ripleymkii_l_leg+o" + }, + { + "name": "ripleymkii0" + }, + { + "name": "ripleymkii1" + }, + { + "name": "ripleymkii2" + }, + { + "name": "ripleymkii3" + }, + { + "name": "ripleymkii4" + }, + { + "name": "ripleymkii5" + }, + { + "name": "ripleymkii6" + }, + { + "name": "ripleymkii7" + }, + { + "name": "ripleymkii8" + }, + { + "name": "ripleymkii9" + }, + { + "name": "ripleymkii10" + }, + { + "name": "ripleymkii11" + }, + { + "name": "ripleymkii12" + }, + { + "name": "ripleymkii13" + }, + { + "name": "ripleymkii14" + }, + { + "name": "ripleymkii15" + }, + { + "name": "ripleymkii16" + }, + { + "name": "ripleymkii17" + }, + { + "name": "ripleymkii18" + }, + { + "name": "ripleymkii19" + }, + { + "name": "ripleymkii20" + } + ] +} diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii0.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii0.png new file mode 100644 index 00000000000..f6c3604def8 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii0.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii1.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii1.png new file mode 100644 index 00000000000..11927eabe5e Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii1.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii10.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii10.png new file mode 100644 index 00000000000..6a17b5d6bd7 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii10.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii11.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii11.png new file mode 100644 index 00000000000..0f514a9223a Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii11.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii12.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii12.png new file mode 100644 index 00000000000..663d61978ca Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii12.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii13.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii13.png new file mode 100644 index 00000000000..663d61978ca Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii13.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii14.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii14.png new file mode 100644 index 00000000000..663d61978ca Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii14.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii15.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii15.png new file mode 100644 index 00000000000..3880364196e Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii15.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii16.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii16.png new file mode 100644 index 00000000000..4ce57047094 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii16.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii17.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii17.png new file mode 100644 index 00000000000..c0c545341cb Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii17.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii18.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii18.png new file mode 100644 index 00000000000..9a99bfcc32e Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii18.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii19.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii19.png new file mode 100644 index 00000000000..c18f6a8c300 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii19.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii2.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii2.png new file mode 100644 index 00000000000..6aeb7807f87 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii2.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii20.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii20.png new file mode 100644 index 00000000000..8f2146a859a Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii20.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii3.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii3.png new file mode 100644 index 00000000000..f4e775c918b Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii3.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii4.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii4.png new file mode 100644 index 00000000000..7446ffb9e85 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii4.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii5.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii5.png new file mode 100644 index 00000000000..7a3cadae020 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii5.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii6.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii6.png new file mode 100644 index 00000000000..6b5cff2cc53 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii6.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii7.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii7.png new file mode 100644 index 00000000000..3681585d8e7 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii7.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii8.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii8.png new file mode 100644 index 00000000000..2b02404c677 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii8.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii9.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii9.png new file mode 100644 index 00000000000..33da72a5494 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii9.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_chassis.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_chassis.png new file mode 100644 index 00000000000..693f7d38cc0 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_chassis.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_harness+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_harness+o.png new file mode 100644 index 00000000000..3ecc6d4edc1 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_harness+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_harness.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_harness.png new file mode 100644 index 00000000000..81579c00366 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_harness.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_l_arm+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_l_arm+o.png new file mode 100644 index 00000000000..a511f8f5428 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_l_arm+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_l_arm.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_l_arm.png new file mode 100644 index 00000000000..41d2c83327b Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_l_arm.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_l_leg+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_l_leg+o.png new file mode 100644 index 00000000000..c27a1ff245d Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_l_leg+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_l_leg.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_l_leg.png new file mode 100644 index 00000000000..b030880c475 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_l_leg.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_r_arm+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_r_arm+o.png new file mode 100644 index 00000000000..0733c1cd5c4 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_r_arm+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_r_arm.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_r_arm.png new file mode 100644 index 00000000000..b3897f09857 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_r_arm.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_r_leg+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_r_leg+o.png new file mode 100644 index 00000000000..0c75e70f833 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_r_leg+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_r_leg.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_r_leg.png new file mode 100644 index 00000000000..0b0c3ff8e54 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_r_leg.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_upgrade_kit+o.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_upgrade_kit+o.png new file mode 100644 index 00000000000..831e56c5657 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_upgrade_kit+o.png differ diff --git a/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_upgrade_kit.png b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_upgrade_kit.png new file mode 100644 index 00000000000..81fdea7e5b9 Binary files /dev/null and b/Resources/Textures/_Goobstation/Objects/Specific/Mech/ripleymkii_construction.rsi/ripleymkii_upgrade_kit.png differ