Рефактор мехов, правки в системе медицины (#507)
* mech system, fix hands, fix fraction * fix * fix fake hypo * fix triple airlocks big sizing * fix * upd clown hulk * xd fix 2 * bigger exit delay * mechs reflect changes * guns changes * draike up * mechs in another category * add equipment * Revert "upd clown hulk" This reverts commit b8084967040be5d442b2d4770cf7fdece1daa2a8. * SPIN MY MECH ASS * mech no rot * some resprite * no injections in hardsuits * some species can not be injectable * medipans can ignore armor, admeme hypospray ignore armor * fix * fix admeme hypo * mob fraction fix * rover + nt gygax add * fix description * fix id * some better dome effects * если пустая гильза в стволе -> Кнопки "казнь" не будет * phazon added * fix server crashes * full rework mechs on mobstates, coils fix mechs, diagnostic hud show health bar for mechs, mechs fastest repair, add mech analyzer * some fixes * configure health of all mechs * upd * add rover to uplink * translate bundle * change price * phazon construction * fix * fix * Finish phazon construction * add phazon research and recipes * phazon construction translate * fix * Mech lights * fix * translate light action * Mech sounds, fix damage * fix * fix hello sound * upd * fix linter * change damagePercentage * fix * fix hello sound * temp disable damage sounds * fix battery needed on construct * some changes * add mech painting system as DEBUG(in dev) * Fix yaml, durand paintings * mech spray cans textures * change sprite * fix * ripley, clarke new textures * ripley,clarke paints * fix * sec pod texture --------- Co-authored-by: Vigers Ray <60344369+VigersRay@users.noreply.github.com>
|
|
@ -2,6 +2,7 @@
|
|||
using Content.Shared.Mech.Components;
|
||||
using Content.Shared.Mech.EntitySystems;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Shared.GameObjects;
|
||||
using DrawDepth = Content.Shared.DrawDepth.DrawDepth;
|
||||
|
||||
namespace Content.Client.Mech;
|
||||
|
|
@ -17,6 +18,7 @@ public sealed class MechSystem : SharedMechSystem
|
|||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<MechComponent, AppearanceChangeEvent>(OnAppearanceChanged);
|
||||
SubscribeLocalEvent<MechComponent, UpdateAppearanceEvent>(OnUpdateAppearanceEvent);
|
||||
}
|
||||
|
||||
private void OnAppearanceChanged(EntityUid uid, MechComponent component, ref AppearanceChangeEvent args)
|
||||
|
|
@ -24,23 +26,41 @@ public sealed class MechSystem : SharedMechSystem
|
|||
if (args.Sprite == null)
|
||||
return;
|
||||
|
||||
if (!args.Sprite.TryGetLayer((int) MechVisualLayers.Base, out var layer))
|
||||
UpdateAppearance(uid, component, args.Sprite);
|
||||
}
|
||||
|
||||
private void OnUpdateAppearanceEvent(EntityUid uid, MechComponent component, ref UpdateAppearanceEvent args)
|
||||
{
|
||||
if (!TryComp<SpriteComponent>(uid, out var sprite))
|
||||
return;
|
||||
|
||||
UpdateAppearance(uid, component, sprite);
|
||||
}
|
||||
|
||||
private void UpdateAppearance(EntityUid uid, MechComponent component, SpriteComponent sprite)
|
||||
{
|
||||
if (!sprite.TryGetLayer((int) MechVisualLayers.Base, out var layer))
|
||||
return;
|
||||
|
||||
var state = component.BaseState;
|
||||
var drawDepth = DrawDepth.Mobs;
|
||||
if (component.BrokenState != null && _appearance.TryGetData<bool>(uid, MechVisuals.Broken, out var broken, args.Component) && broken)
|
||||
|
||||
if (component.BrokenState != null
|
||||
&& _appearance.TryGetData<bool>(uid, MechVisuals.Broken, out var broken)
|
||||
&& broken)
|
||||
{
|
||||
state = component.BrokenState;
|
||||
drawDepth = DrawDepth.SmallMobs;
|
||||
}
|
||||
else if (component.OpenState != null && _appearance.TryGetData<bool>(uid, MechVisuals.Open, out var open, args.Component) && open)
|
||||
else if (component.OpenState != null
|
||||
&& _appearance.TryGetData<bool>(uid, MechVisuals.Open, out var open)
|
||||
&& open)
|
||||
{
|
||||
state = component.OpenState;
|
||||
drawDepth = DrawDepth.SmallMobs;
|
||||
}
|
||||
|
||||
layer.SetState(state);
|
||||
args.Sprite.DrawDepth = (int) drawDepth;
|
||||
sprite.DrawDepth = (int) drawDepth;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,8 +11,12 @@ using Content.Shared.Interaction.Events;
|
|||
using Content.Shared.Mobs.Components;
|
||||
using Content.Shared.Timing;
|
||||
using Content.Shared.Weapons.Melee.Events;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Tag;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Server.Interaction;
|
||||
using Content.Server.Body.Components;
|
||||
using Content.Server.Popups;
|
||||
using Robust.Shared.GameStates;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
|
|
@ -22,6 +26,8 @@ namespace Content.Server.Chemistry.EntitySystems;
|
|||
|
||||
public sealed class HypospraySystem : SharedHypospraySystem
|
||||
{
|
||||
[Dependency] private readonly PopupSystem _popup = default!;
|
||||
[Dependency] private readonly InventorySystem _inventorySystem = default!;
|
||||
[Dependency] private readonly AudioSystem _audio = default!;
|
||||
[Dependency] private readonly InteractionSystem _interaction = default!;
|
||||
|
||||
|
|
@ -84,6 +90,23 @@ public sealed class HypospraySystem : SharedHypospraySystem
|
|||
}
|
||||
|
||||
string? msgFormat = null;
|
||||
|
||||
if (!component.PierceArmor && _inventorySystem.TryGetSlotEntity(target, "outerClothing", out var suit))
|
||||
{
|
||||
if (TryComp<TagComponent>(suit, out var tag) && tag.Tags.Contains("Hardsuit"))
|
||||
{
|
||||
if (target == null) return false;
|
||||
var taget = (EntityUid) target;
|
||||
|
||||
_popup.PopupEntity(Loc.GetString("hypospay-component-failure-hardsuit"), target, user, PopupType.MediumCaution);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (!component.PierceArmor && TryComp<TagComponent>(target, out var tag) && tag.Tags.Contains("NoInjectable"))
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("hypospay-component-failure-hardsuit"), target, user, PopupType.MediumCaution);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (target == user)
|
||||
msgFormat = "hypospray-component-inject-self-message";
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using Content.Server.Body.Components;
|
||||
using Content.Server.Body.Systems;
|
||||
using Content.Server.Popups;
|
||||
using Content.Shared.Chemistry;
|
||||
using Content.Shared.Chemistry.Components;
|
||||
using Content.Shared.Chemistry.Components.SolutionManager;
|
||||
|
|
@ -11,13 +12,18 @@ using Content.Shared.FixedPoint;
|
|||
using Content.Shared.Forensics;
|
||||
using Content.Shared.IdentityManagement;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Mobs.Components;
|
||||
using Content.Shared.Stacks;
|
||||
using Content.Shared.Tag;
|
||||
using Content.Shared.Popups;
|
||||
|
||||
namespace Content.Server.Chemistry.EntitySystems;
|
||||
|
||||
public sealed class InjectorSystem : SharedInjectorSystem
|
||||
{
|
||||
[Dependency] private readonly PopupSystem _popup = default!;
|
||||
[Dependency] private readonly InventorySystem _inventorySystem = default!;
|
||||
[Dependency] private readonly BloodstreamSystem _blood = default!;
|
||||
[Dependency] private readonly ReactiveSystem _reactiveSystem = default!;
|
||||
|
||||
|
|
@ -31,6 +37,20 @@ public sealed class InjectorSystem : SharedInjectorSystem
|
|||
|
||||
private bool TryUseInjector(Entity<InjectorComponent> injector, EntityUid target, EntityUid user)
|
||||
{
|
||||
if (_inventorySystem.TryGetSlotEntity(target, "outerClothing", out var suit))
|
||||
{
|
||||
if (TryComp<TagComponent>(suit, out var tag) && tag.Tags.Contains("Hardsuit"))
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("injector-component-failure-hardsuit"), target, user, PopupType.MediumCaution);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (TryComp<TagComponent>(target, out var tag) && tag.Tags.Contains("NoInjectable"))
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("injector-component-failure-hardsuit"), target, user, PopupType.MediumCaution);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Handle injecting/drawing for solutions
|
||||
if (injector.Comp.ToggleState == InjectorToggleMode.Inject)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -11,6 +11,9 @@ using Content.Shared.Interaction;
|
|||
using Content.Shared.Mech;
|
||||
using Content.Shared.Mech.Components;
|
||||
using Content.Shared.Mech.EntitySystems;
|
||||
using Content.Shared.Mobs;
|
||||
using Content.Shared.Mobs.Systems;
|
||||
using Content.Shared.Mobs.Components;
|
||||
using Content.Shared.Movement.Events;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Tools.Components;
|
||||
|
|
@ -20,7 +23,11 @@ using Content.Server.Body.Systems;
|
|||
using Content.Shared.Tools.Systems;
|
||||
using Content.Shared.Hands.Components;
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.NPC.Components;
|
||||
using Content.Shared.NPC.Systems;
|
||||
using Content.Shared.Tag;
|
||||
using Robust.Server.Audio;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Server.Containers;
|
||||
using Robust.Server.GameObjects;
|
||||
using Robust.Shared.Containers;
|
||||
|
|
@ -32,6 +39,8 @@ namespace Content.Server.Mech.Systems;
|
|||
/// <inheritdoc/>
|
||||
public sealed partial class MechSystem : SharedMechSystem
|
||||
{
|
||||
[Dependency] private readonly AudioSystem _audioSystem = default!;
|
||||
[Dependency] private readonly NpcFactionSystem _factionSystem = default!;
|
||||
[Dependency] private readonly ActionBlockerSystem _actionBlocker = default!;
|
||||
[Dependency] private readonly AtmosphereSystem _atmosphere = default!;
|
||||
[Dependency] private readonly BatterySystem _battery = default!;
|
||||
|
|
@ -44,6 +53,7 @@ public sealed partial class MechSystem : SharedMechSystem
|
|||
[Dependency] private readonly SharedToolSystem _toolSystem = default!;
|
||||
[Dependency] private readonly SharedHandsSystem _hands = default!;
|
||||
[Dependency] private readonly TagSystem _tag = default!;
|
||||
[Dependency] private readonly MobThresholdSystem _mobThresholdSystem = default!;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override void Initialize()
|
||||
|
|
@ -240,14 +250,11 @@ public sealed partial class MechSystem : SharedMechSystem
|
|||
return;
|
||||
}
|
||||
|
||||
if (!TryComp<HandsComponent>(args.Args.User, out var handsComponent))
|
||||
return;
|
||||
|
||||
foreach (var hand in _hands.EnumerateHands(args.Args.User, handsComponent))
|
||||
{
|
||||
_hands.DoDrop(args.Args.User, hand, true, handsComponent);
|
||||
}
|
||||
if (TryComp<HandsComponent>(args.Args.User, out var handsComponent))
|
||||
foreach (var hand in _hands.EnumerateHands(args.Args.User, handsComponent))
|
||||
_hands.DoDrop(args.Args.User, hand, true, handsComponent);
|
||||
|
||||
_factionSystem.Up(args.Args.User, uid);
|
||||
TryInsert(uid, args.Args.User, component);
|
||||
_actionBlocker.UpdateCanMove(uid);
|
||||
|
||||
|
|
@ -259,6 +266,7 @@ public sealed partial class MechSystem : SharedMechSystem
|
|||
if (args.Cancelled || args.Handled)
|
||||
return;
|
||||
|
||||
RemComp<NpcFactionMemberComponent>(component.Owner);
|
||||
TryEject(uid, component);
|
||||
|
||||
args.Handled = true;
|
||||
|
|
@ -266,17 +274,40 @@ public sealed partial class MechSystem : SharedMechSystem
|
|||
|
||||
private void OnDamageChanged(EntityUid uid, MechComponent component, DamageChangedEvent args)
|
||||
{
|
||||
var integrity = component.MaxIntegrity - args.Damageable.TotalDamage;
|
||||
SetIntegrity(uid, integrity, component);
|
||||
|
||||
/*
|
||||
if (TryComp<DamageableComponent>(uid, out var damage))
|
||||
{
|
||||
PlayCritSound(uid, component, damage);
|
||||
}
|
||||
*/
|
||||
if (args.DamageIncreased &&
|
||||
args.DamageDelta != null &&
|
||||
component.PilotSlot.ContainedEntity != null)
|
||||
{
|
||||
var damage = args.DamageDelta * component.MechToPilotDamageMultiplier;
|
||||
_damageable.TryChangeDamage(component.PilotSlot.ContainedEntity, damage);
|
||||
var damagetoplayer = args.DamageDelta * component.MechToPilotDamageMultiplier;
|
||||
_damageable.TryChangeDamage(component.PilotSlot.ContainedEntity, damagetoplayer);
|
||||
}
|
||||
}
|
||||
|
||||
private void PlayCritSound(EntityUid uid, MechComponent component, DamageableComponent damage )
|
||||
{
|
||||
var total = damage.TotalDamage;
|
||||
if (_mobThresholdSystem.TryGetThresholdForState(uid, MobState.Critical, out var critThreshold))
|
||||
{
|
||||
var damagePercentage = (total / critThreshold) * 100;
|
||||
if (component.PilotSlot.ContainedEntity != null)
|
||||
{
|
||||
if (damagePercentage >= 95)
|
||||
_audioSystem.PlayPvs(_audioSystem.GetSound(component.Alert5), component.PilotSlot.ContainedEntity.Value);
|
||||
else if (damagePercentage >= 75)
|
||||
_audioSystem.PlayPvs(_audioSystem.GetSound(component.Alert25), component.PilotSlot.ContainedEntity.Value);
|
||||
else if (damagePercentage >= 50)
|
||||
_audioSystem.PlayPvs(_audioSystem.GetSound(component.Alert50), component.PilotSlot.ContainedEntity.Value);
|
||||
Dirty(uid ,component);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void ToggleMechUi(EntityUid uid, MechComponent? component = null, EntityUid? user = null)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ public sealed class HealingSystem : EntitySystem
|
|||
var healingDict = healing.Damage.DamageDict;
|
||||
foreach (var type in healingDict)
|
||||
{
|
||||
if (damageableDict[type.Key].Value > 0)
|
||||
if (damageableDict.TryGetValue(type.Key, out var damageValue) && damageValue.Value > 0) //Sunrise-edit: fix server crashes
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ using Robust.Shared.Audio;
|
|||
using Robust.Shared.Audio.Systems;
|
||||
using Robust.Shared.Player;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Containers;
|
||||
|
||||
namespace Content.Server._Sunrise.Execution;
|
||||
|
||||
|
|
@ -29,6 +30,7 @@ namespace Content.Server._Sunrise.Execution;
|
|||
/// </summary>
|
||||
public sealed class ExecutionSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SharedContainerSystem _containerSystem = default!;
|
||||
[Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popupSystem = default!;
|
||||
[Dependency] private readonly MobStateSystem _mobStateSystem = default!;
|
||||
|
|
@ -168,6 +170,15 @@ public sealed class ExecutionSystem : EntitySystem
|
|||
// We must be able to actually fire the gun
|
||||
if (!TryComp<GunComponent>(weapon, out var gun) && _gunSystem.CanShoot(gun!))
|
||||
return false;
|
||||
|
||||
if (_containerSystem.TryGetContainer(weapon, "gun_chamber", out var chamberContainer))
|
||||
{
|
||||
foreach (var contained in chamberContainer.ContainedEntities)
|
||||
{
|
||||
if (TryComp<CartridgeAmmoComponent>(contained, out var cartridge) && cartridge.Spent)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
92
Content.Server/_Sunrise/Paint/MechPaintSystem.cs
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
using Content.Server.Chemistry.Containers.EntitySystems;
|
||||
using Content.Shared._Sunrise.Paint;
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.Humanoid;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Nutrition.EntitySystems;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Sprite;
|
||||
using Content.Shared.SubFloor;
|
||||
using Content.Shared.Verbs;
|
||||
using Content.Shared.Mech.Components;
|
||||
using Robust.Shared.Audio.Systems;
|
||||
using Robust.Shared.Utility;
|
||||
using PaintComponent = Content.Shared._Sunrise.Paint.PaintComponent;
|
||||
using PaintDoAfterEvent = Content.Shared._Sunrise.Paint.PaintDoAfterEvent;
|
||||
using PaintedComponent = Content.Shared._Sunrise.Paint.PaintedComponent;
|
||||
|
||||
namespace Content.Server._Sunrise.Paint;
|
||||
|
||||
/// <summary>
|
||||
/// Colors target and consumes reagent on each color success.
|
||||
/// </summary>
|
||||
public sealed class MechPaintSystem : SharedMechPaintSystem
|
||||
{
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||
[Dependency] private readonly SolutionContainerSystem _solutionContainer = default!;
|
||||
[Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!;
|
||||
[Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!;
|
||||
[Dependency] private readonly InventorySystem _inventory = default!;
|
||||
[Dependency] private readonly OpenableSystem _openable = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<MechPaintComponent, AfterInteractEvent>(OnInteract);
|
||||
SubscribeLocalEvent<MechPaintComponent, GetVerbsEvent<UtilityVerb>>(OnPaintVerb);
|
||||
}
|
||||
|
||||
private void OnInteract(EntityUid uid, MechPaintComponent component, AfterInteractEvent args)
|
||||
{
|
||||
if (!args.CanReach)
|
||||
return;
|
||||
|
||||
if (args.Target is not { Valid: true } target)
|
||||
return;
|
||||
|
||||
if (!HasComp<MechComponent>(args.Target))
|
||||
return;
|
||||
|
||||
PrepPaint(uid, component, target, args.User);
|
||||
}
|
||||
|
||||
private void OnPaintVerb(EntityUid uid, MechPaintComponent component, GetVerbsEvent<UtilityVerb> args)
|
||||
{
|
||||
if (!args.CanInteract || !args.CanAccess)
|
||||
return;
|
||||
|
||||
if (!HasComp<MechComponent>(args.Target))
|
||||
return;
|
||||
|
||||
var paintText = Loc.GetString("paint-verb");
|
||||
|
||||
var verb = new UtilityVerb()
|
||||
{
|
||||
Act = () =>
|
||||
{
|
||||
PrepPaint(uid, component, args.Target, args.User);
|
||||
},
|
||||
|
||||
Text = paintText,
|
||||
Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/paint.svg.192dpi.png"))
|
||||
};
|
||||
args.Verbs.Add(verb);
|
||||
}
|
||||
private void PrepPaint(EntityUid uid, MechPaintComponent component, EntityUid target, EntityUid user)
|
||||
{
|
||||
|
||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, user, component.Delay, new PaintDoAfterEvent(), uid, target: target, used: uid)
|
||||
{
|
||||
BreakOnMove = true,
|
||||
BreakOnDamage = true,
|
||||
NeedHand = true,
|
||||
BreakOnHandChange = true
|
||||
};
|
||||
|
||||
if (!_doAfterSystem.TryStartDoAfter(doAfterEventArgs))
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
@ -37,4 +37,11 @@ public sealed partial class HyposprayComponent : Component
|
|||
/// </summary>
|
||||
[DataField]
|
||||
public bool InjectOnly = false;
|
||||
|
||||
/// <summary>
|
||||
/// Whether the hypospray uses a needle (i.e. medipens)
|
||||
/// or sci fi bullshit that sprays into the bloodstream directly (i.e. hypos)
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public bool PierceArmor = false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using Content.Shared.Actions;
|
||||
using Content.Shared.Mind;
|
||||
using Content.Shared.MouseRotator;
|
||||
using Content.Shared.Mech.Components;
|
||||
using Content.Shared.Movement.Components;
|
||||
using Content.Shared.Popups;
|
||||
using Robust.Shared.Network;
|
||||
|
|
@ -94,11 +95,21 @@ public abstract class SharedCombatModeSystem : EntitySystem
|
|||
{
|
||||
if (value)
|
||||
{
|
||||
if (TryComp<MechPilotComponent>(uid, out var mechPilot) && !HasComp<NoRotateOnMoveComponent>(mechPilot.Mech))
|
||||
{
|
||||
EnsureComp<NoRotateOnMoveComponent>(mechPilot.Mech);
|
||||
}
|
||||
|
||||
EnsureComp<MouseRotatorComponent>(uid);
|
||||
EnsureComp<NoRotateOnMoveComponent>(uid);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (TryComp<MechPilotComponent>(uid, out var mechPilot) && HasComp<NoRotateOnMoveComponent>(mechPilot.Mech))
|
||||
{
|
||||
RemComp<NoRotateOnMoveComponent>(mechPilot.Mech);
|
||||
}
|
||||
|
||||
RemComp<MouseRotatorComponent>(uid);
|
||||
RemComp<NoRotateOnMoveComponent>(uid);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
using Content.Shared.FixedPoint;
|
||||
using Content.Shared.Whitelist;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Containers;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Serialization;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared.Mech.Components;
|
||||
|
|
@ -67,6 +69,12 @@ public sealed partial class MechComponent : Component
|
|||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
||||
public bool Broken = false;
|
||||
|
||||
/// <summary>
|
||||
/// Whether the mech has toggled lights.
|
||||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
||||
public bool Lights = false;
|
||||
|
||||
/// <summary>
|
||||
/// The slot the pilot is stored in.
|
||||
|
|
@ -119,7 +127,7 @@ public sealed partial class MechComponent : Component
|
|||
/// outside of the mech. You can exit instantly yourself.
|
||||
/// </summary>
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||
public float ExitDelay = 3;
|
||||
public float ExitDelay = 6;
|
||||
|
||||
/// <summary>
|
||||
/// How long it takes to pull out the battery.
|
||||
|
|
@ -143,6 +151,21 @@ public sealed partial class MechComponent : Component
|
|||
/// </summary>
|
||||
[DataField]
|
||||
public List<EntProtoId> StartingEquipment = new();
|
||||
|
||||
#region Sounds
|
||||
[DataField]
|
||||
public SoundSpecifier EnableLightSound = new SoundPathSpecifier("/Audio/_Sunrise/Mechs/mech_lights_enabled.ogg");
|
||||
[DataField]
|
||||
public SoundSpecifier DisableLightSound = new SoundPathSpecifier("/Audio/_Sunrise/Mechs/mech_lights_disabled.ogg");
|
||||
[DataField]
|
||||
public SoundSpecifier HelloSound = new SoundPathSpecifier("/Audio/_Sunrise/Mechs/mech_hello.ogg");
|
||||
[DataField]
|
||||
public SoundSpecifier Alert50 = new SoundPathSpecifier("/Audio/_Sunrise/Mechs/mech_alert_50.ogg");
|
||||
[DataField]
|
||||
public SoundSpecifier Alert25 = new SoundPathSpecifier("/Audio/_Sunrise/Mechs/mech_alert_25.ogg");
|
||||
[DataField]
|
||||
public SoundSpecifier Alert5 = new SoundPathSpecifier("/Audio/_Sunrise/Mechs/mech_alert_5.ogg");
|
||||
#endregion
|
||||
|
||||
#region Action Prototypes
|
||||
[DataField]
|
||||
|
|
@ -151,18 +174,21 @@ public sealed partial class MechComponent : Component
|
|||
public EntProtoId MechUiAction = "ActionMechOpenUI";
|
||||
[DataField]
|
||||
public EntProtoId MechEjectAction = "ActionMechEject";
|
||||
[DataField]
|
||||
public EntProtoId MechLightsAction = "ActionMechLights";
|
||||
#endregion
|
||||
|
||||
#region Visualizer States
|
||||
[DataField]
|
||||
[DataField, AutoNetworkedField]
|
||||
public string? BaseState;
|
||||
[DataField]
|
||||
[DataField, AutoNetworkedField]
|
||||
public string? OpenState;
|
||||
[DataField]
|
||||
[DataField, AutoNetworkedField]
|
||||
public string? BrokenState;
|
||||
#endregion
|
||||
|
||||
[DataField] public EntityUid? MechCycleActionEntity;
|
||||
[DataField] public EntityUid? MechUiActionEntity;
|
||||
[DataField] public EntityUid? MechEjectActionEntity;
|
||||
[DataField] public EntityUid? MechLightsActionEntity;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ using Content.Shared.ActionBlocker;
|
|||
using Content.Shared.Actions;
|
||||
using Content.Shared.Destructible;
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.Mobs;
|
||||
using Content.Shared.DragDrop;
|
||||
using Content.Shared.Emag.Components;
|
||||
using Content.Shared.Emag.Systems;
|
||||
|
|
@ -19,10 +20,12 @@ using Content.Shared.Popups;
|
|||
using Content.Shared.Weapons.Melee;
|
||||
using Content.Shared.Weapons.Ranged.Events;
|
||||
using Content.Shared.Whitelist;
|
||||
using Robust.Shared.Audio.Systems;
|
||||
using Robust.Shared.Containers;
|
||||
using Robust.Shared.Network;
|
||||
using Robust.Shared.Serialization;
|
||||
using Robust.Shared.Timing;
|
||||
using DrawDepth = Content.Shared.DrawDepth.DrawDepth;
|
||||
|
||||
namespace Content.Shared.Mech.EntitySystems;
|
||||
|
||||
|
|
@ -33,12 +36,14 @@ public abstract class SharedMechSystem : EntitySystem
|
|||
{
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
[Dependency] private readonly INetManager _net = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audioSystem = default!;
|
||||
[Dependency] private readonly ActionBlockerSystem _actionBlocker = default!;
|
||||
[Dependency] private readonly SharedActionsSystem _actions = default!;
|
||||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||
[Dependency] private readonly SharedContainerSystem _container = default!;
|
||||
[Dependency] private readonly SharedInteractionSystem _interaction = default!;
|
||||
[Dependency] private readonly SharedMoverController _mover = default!;
|
||||
[Dependency] private readonly SharedPointLightSystem _pointLight = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||
[Dependency] private readonly SharedDoAfterSystem _doAfter = default!;
|
||||
[Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!;
|
||||
|
|
@ -48,9 +53,10 @@ public abstract class SharedMechSystem : EntitySystem
|
|||
{
|
||||
SubscribeLocalEvent<MechComponent, MechToggleEquipmentEvent>(OnToggleEquipmentAction);
|
||||
SubscribeLocalEvent<MechComponent, MechEjectPilotEvent>(OnEjectPilotEvent);
|
||||
SubscribeLocalEvent<MechComponent, MechToggleLightsEvent>(OnToggleLightsEvent);
|
||||
SubscribeLocalEvent<MechComponent, UserActivateInWorldEvent>(RelayInteractionEvent);
|
||||
SubscribeLocalEvent<MechComponent, ComponentStartup>(OnStartup);
|
||||
SubscribeLocalEvent<MechComponent, DestructionEventArgs>(OnDestruction);
|
||||
SubscribeLocalEvent<MechComponent, MobStateChangedEvent>(OnMobState);
|
||||
SubscribeLocalEvent<MechComponent, GetAdditionalAccessEvent>(OnGetAdditionalAccess);
|
||||
SubscribeLocalEvent<MechComponent, DragDropTargetEvent>(OnDragDrop);
|
||||
SubscribeLocalEvent<MechComponent, CanDropTargetEvent>(OnCanDragDrop);
|
||||
|
|
@ -76,7 +82,17 @@ public abstract class SharedMechSystem : EntitySystem
|
|||
args.Handled = true;
|
||||
TryEject(uid, component);
|
||||
}
|
||||
|
||||
private void OnToggleLightsEvent(EntityUid uid, MechComponent component, MechToggleLightsEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
ToggleLights(uid, component);
|
||||
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
private void RelayInteractionEvent(EntityUid uid, MechComponent component, UserActivateInWorldEvent args)
|
||||
{
|
||||
var pilot = component.PilotSlot.ContainedEntity;
|
||||
|
|
@ -101,9 +117,17 @@ public abstract class SharedMechSystem : EntitySystem
|
|||
UpdateAppearance(uid, component);
|
||||
}
|
||||
|
||||
private void OnDestruction(EntityUid uid, MechComponent component, DestructionEventArgs args)
|
||||
private void OnMobState(EntityUid uid, MechComponent component, MobStateChangedEvent args)
|
||||
{
|
||||
BreakMech(uid, component);
|
||||
if (args.NewMobState == MobState.Critical)
|
||||
{
|
||||
BreakMech(uid, component);
|
||||
}
|
||||
if (args.NewMobState == MobState.Alive)
|
||||
{
|
||||
component.Broken = false;
|
||||
UpdateAppearance(uid, component);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnGetAdditionalAccess(EntityUid uid, MechComponent component, ref GetAdditionalAccessEvent args)
|
||||
|
|
@ -135,6 +159,7 @@ public abstract class SharedMechSystem : EntitySystem
|
|||
|
||||
_actions.AddAction(pilot, ref component.MechCycleActionEntity, component.MechCycleAction, mech);
|
||||
_actions.AddAction(pilot, ref component.MechUiActionEntity, component.MechUiAction, mech);
|
||||
_actions.AddAction(pilot, ref component.MechLightsActionEntity, component.MechLightsAction, mech);
|
||||
_actions.AddAction(pilot, ref component.MechEjectActionEntity, component.MechEjectAction, mech);
|
||||
}
|
||||
|
||||
|
|
@ -147,6 +172,21 @@ public abstract class SharedMechSystem : EntitySystem
|
|||
|
||||
_actions.RemoveProvidedActions(pilot, mech);
|
||||
}
|
||||
|
||||
public void ToggleLights(EntityUid uid, MechComponent component)
|
||||
{
|
||||
if (_pointLight.TryGetLight(uid, out var pointLightComponent))
|
||||
{
|
||||
component.Lights = !component.Lights;
|
||||
_pointLight.SetEnabled(uid, component.Lights, pointLightComponent);
|
||||
_actions.SetToggled(component.MechLightsActionEntity, component.Lights);
|
||||
if(component.Lights)
|
||||
_audioSystem.PlayPredicted(component.EnableLightSound, component.Owner, component.PilotSlot.ContainedEntity);
|
||||
else
|
||||
_audioSystem.PlayPredicted(component.DisableLightSound, component.Owner, component.PilotSlot.ContainedEntity);
|
||||
Dirty(uid ,component);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Destroys the mech, removing the user and ejecting all installed equipment.
|
||||
|
|
@ -370,6 +410,7 @@ public abstract class SharedMechSystem : EntitySystem
|
|||
return false;
|
||||
|
||||
SetupUser(uid, toInsert.Value);
|
||||
_audioSystem.PlayPredicted(component.HelloSound, component.Owner, toInsert.Value);
|
||||
_container.Insert(toInsert.Value, component.PilotSlot);
|
||||
UpdateAppearance(uid, component);
|
||||
return true;
|
||||
|
|
@ -389,6 +430,11 @@ public abstract class SharedMechSystem : EntitySystem
|
|||
if (component.PilotSlot.ContainedEntity == null)
|
||||
return false;
|
||||
|
||||
if (HasComp<NoRotateOnMoveComponent>(uid))
|
||||
{
|
||||
RemComp<NoRotateOnMoveComponent>(uid);
|
||||
}
|
||||
|
||||
var pilot = component.PilotSlot.ContainedEntity.Value;
|
||||
|
||||
RemoveUser(uid, pilot);
|
||||
|
|
@ -421,7 +467,7 @@ public abstract class SharedMechSystem : EntitySystem
|
|||
args.Cancel();
|
||||
}
|
||||
|
||||
private void UpdateAppearance(EntityUid uid, MechComponent? component = null,
|
||||
public void UpdateAppearance(EntityUid uid, MechComponent? component = null,
|
||||
AppearanceComponent? appearance = null)
|
||||
{
|
||||
if (!Resolve(uid, ref component, ref appearance, false))
|
||||
|
|
@ -429,6 +475,9 @@ public abstract class SharedMechSystem : EntitySystem
|
|||
|
||||
_appearance.SetData(uid, MechVisuals.Open, IsEmpty(component), appearance);
|
||||
_appearance.SetData(uid, MechVisuals.Broken, component.Broken, appearance);
|
||||
|
||||
var ev = new UpdateAppearanceEvent();
|
||||
RaiseLocalEvent(uid, ev);
|
||||
}
|
||||
|
||||
private void OnDragDrop(EntityUid uid, MechComponent component, ref DragDropTargetEvent args)
|
||||
|
|
@ -488,3 +537,8 @@ public sealed partial class MechExitEvent : SimpleDoAfterEvent
|
|||
public sealed partial class MechEntryEvent : SimpleDoAfterEvent
|
||||
{
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed partial class UpdateAppearanceEvent : EntityEventArgs
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,3 +60,7 @@ public sealed partial class MechOpenUiEvent : InstantActionEvent
|
|||
public sealed partial class MechEjectPilotEvent : InstantActionEvent
|
||||
{
|
||||
}
|
||||
|
||||
public sealed partial class MechToggleLightsEvent : InstantActionEvent
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using Content.Shared.ActionBlocker;
|
||||
using Content.Shared.Administration.Logs;
|
||||
using Content.Shared.Mobs.Components;
|
||||
using Content.Shared.Mech.Components;
|
||||
using Content.Shared.Standing;
|
||||
using Robust.Shared.Physics.Systems;
|
||||
using Robust.Shared.Timing;
|
||||
|
|
@ -38,6 +39,8 @@ public partial class MobStateSystem : EntitySystem
|
|||
/// <returns>If the entity is alive</returns>
|
||||
public bool IsAlive(EntityUid target, MobStateComponent? component = null)
|
||||
{
|
||||
if (TryComp<MechComponent>(target, out var mech))
|
||||
return !mech.Broken;
|
||||
if (!_mobStateQuery.Resolve(target, ref component, false))
|
||||
return false;
|
||||
return component.CurrentState == MobState.Alive;
|
||||
|
|
|
|||
|
|
@ -168,7 +168,7 @@ public sealed class MobThresholdSystem : EntitySystem
|
|||
MobThresholdsComponent? thresholdComponent = null)
|
||||
{
|
||||
threshold = null;
|
||||
if (!Resolve(target, ref thresholdComponent))
|
||||
if (!Resolve(target, ref thresholdComponent, false))
|
||||
return false;
|
||||
|
||||
return TryGetThresholdForState(target, MobState.Critical, out threshold, thresholdComponent)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Mech.Components;
|
||||
|
||||
namespace Content.Shared.MouseRotator;
|
||||
|
||||
|
|
@ -9,6 +10,7 @@ namespace Content.Shared.MouseRotator;
|
|||
public abstract class SharedMouseRotatorSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly RotateToFaceSystem _rotate = default!;
|
||||
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
|
|
@ -29,9 +31,17 @@ public abstract class SharedMouseRotatorSystem : EntitySystem
|
|||
{
|
||||
if (rotator.GoalRotation == null)
|
||||
continue;
|
||||
|
||||
var target = uid;
|
||||
|
||||
if (TryComp<MechPilotComponent>(uid, out var mechPilot))
|
||||
{
|
||||
target = mechPilot.Mech;
|
||||
xform = Transform(mechPilot.Mech);
|
||||
}
|
||||
|
||||
if (_rotate.TryRotateTo(
|
||||
uid,
|
||||
target,
|
||||
rotator.GoalRotation.Value,
|
||||
frameTime,
|
||||
rotator.AngleTolerance,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using Content.Shared.NPC.Components;
|
||||
using Content.Shared.NPC.Prototypes;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization.Manager;
|
||||
using System.Collections.Frozen;
|
||||
using System.Linq;
|
||||
|
||||
|
|
@ -13,6 +14,7 @@ public sealed partial class NpcFactionSystem : EntitySystem
|
|||
{
|
||||
[Dependency] private readonly EntityLookupSystem _lookup = default!;
|
||||
[Dependency] private readonly IPrototypeManager _proto = default!;
|
||||
[Dependency] private readonly ISerializationManager _serialization = default!;
|
||||
[Dependency] private readonly SharedTransformSystem _xform = default!;
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -80,6 +82,23 @@ public sealed partial class NpcFactionSystem : EntitySystem
|
|||
|
||||
return ent.Comp.Factions.Contains(faction);
|
||||
}
|
||||
|
||||
public void Up(EntityUid from, EntityUid to)
|
||||
{
|
||||
if (TryComp<NpcFactionMemberComponent>(from, out var fromFaction))
|
||||
{
|
||||
if (TryComp<NpcFactionMemberComponent>(to, out var toFaction))
|
||||
{
|
||||
_serialization.CopyTo(fromFaction, ref toFaction, notNullableOverride: true);
|
||||
}
|
||||
else
|
||||
{
|
||||
var newComp = new NpcFactionMemberComponent();
|
||||
_serialization.CopyTo(fromFaction, ref newComp, notNullableOverride: true);
|
||||
AddComp<NpcFactionMemberComponent>(to, newComp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds this entity to the particular faction.
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ namespace Content.Shared.Tag;
|
|||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(TagSystem))]
|
||||
public sealed partial class TagComponent : Component
|
||||
{
|
||||
[DataField, ViewVariables, AutoNetworkedField]
|
||||
[DataField, AutoNetworkedField]
|
||||
[Access(typeof(TagSystem), Other = AccessPermissions.ReadExecute)]
|
||||
public HashSet<ProtoId<TagPrototype>> Tags = new();
|
||||
}
|
||||
|
|
|
|||
53
Content.Shared/_Sunrise/Paint/MechPaintComponent.cs
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
using Content.Shared.Chemistry.Reagent;
|
||||
using Content.Shared.FixedPoint;
|
||||
using Content.Shared.Whitelist;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Shared._Sunrise.Paint;
|
||||
|
||||
/// <summary>
|
||||
/// Entity when used on another entity will paint target entity.
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
[Access(typeof(SharedMechPaintSystem))]
|
||||
public sealed partial class MechPaintComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// Noise made when paint applied.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public SoundSpecifier Spray = new SoundPathSpecifier("/Audio/Effects/spray2.ogg");
|
||||
|
||||
/// <summary>
|
||||
/// This paint was used?
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public bool Used = false;
|
||||
|
||||
/// <summary>
|
||||
/// How long the doafter will take.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public int Delay = 2;
|
||||
|
||||
/// <summary>
|
||||
/// What mech are paint?
|
||||
/// </summary>
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||
public EntityWhitelist? Whitelist;
|
||||
|
||||
/// <summary>
|
||||
/// Paint states
|
||||
/// </summary>
|
||||
#region Visualizer States
|
||||
[DataField]
|
||||
public string BaseState;
|
||||
[DataField]
|
||||
public string OpenState;
|
||||
[DataField]
|
||||
public string BrokenState;
|
||||
#endregion
|
||||
}
|
||||
92
Content.Shared/_Sunrise/Paint/SharedMechPaintSystem.cs
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.Humanoid;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Mech.Components;
|
||||
using Content.Shared.Mech.EntitySystems;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.SubFloor;
|
||||
using Robust.Shared.Audio.Systems;
|
||||
using Content.Shared.Nutrition.EntitySystems;
|
||||
using Content.Shared.Whitelist;
|
||||
|
||||
namespace Content.Shared._Sunrise.Paint;
|
||||
|
||||
/// <summary>
|
||||
/// Colors target and consumes reagent on each color success.
|
||||
/// </summary>
|
||||
public abstract class SharedMechPaintSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||
[Dependency] private readonly OpenableSystem _openable = default!;
|
||||
[Dependency] private readonly SharedMechSystem _mechSystem = default!;
|
||||
[Dependency] private readonly EntityWhitelistSystem _whitelist = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<MechPaintComponent, PaintDoAfterEvent>(OnPaint);
|
||||
}
|
||||
|
||||
private void OnPaint(Entity<MechPaintComponent> entity, ref PaintDoAfterEvent args)
|
||||
{
|
||||
if (args.Target == null || args.Used == null || !HasComp<MechComponent>(args.Target))
|
||||
return;
|
||||
|
||||
if (args.Handled || args.Cancelled)
|
||||
return;
|
||||
|
||||
if (args.Target is not { Valid: true } target)
|
||||
return;
|
||||
|
||||
if (!_openable.IsOpen(entity))
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("paint-closed", ("used", args.Used)), args.User, args.User, PopupType.Medium);
|
||||
return;
|
||||
}
|
||||
|
||||
if (entity.Comp.Whitelist != null && !_whitelist.IsValid(entity.Comp.Whitelist, target) || HasComp<HumanoidAppearanceComponent>(target) || HasComp<SubFloorHideComponent>(target))
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("paint-failure", ("target", args.Target)), args.User, args.User, PopupType.Medium);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (TryPaint(entity, target))
|
||||
{
|
||||
EnsureComp<MechComponent>(target, out MechComponent? mech);
|
||||
EnsureComp<AppearanceComponent>(target, out AppearanceComponent? appearance);
|
||||
|
||||
_audio.PlayPvs(entity.Comp.Spray, entity);
|
||||
|
||||
_popup.PopupEntity(Loc.GetString("paint-success", ("target", args.Target)), args.User, args.User, PopupType.Medium);
|
||||
mech.BaseState = entity.Comp.BaseState;
|
||||
mech.OpenState = entity.Comp.OpenState;
|
||||
mech.BrokenState = entity.Comp.BrokenState;
|
||||
entity.Comp.Used = true;
|
||||
Dirty(target, mech);
|
||||
args.Handled = true;
|
||||
_mechSystem.UpdateAppearance(target, mech, appearance);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!TryPaint(entity, target))
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("paint-empty", ("used", args.Used)), args.User, args.User, PopupType.Medium);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private bool TryPaint(Entity<MechPaintComponent> entity, EntityUid target)
|
||||
{
|
||||
if (HasComp<HumanoidAppearanceComponent>(target) || HasComp<SubFloorHideComponent>(target) || entity.Comp.Used)
|
||||
return false;
|
||||
|
||||
if (HasComp<MechComponent>(target))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
BIN
Resources/Audio/_Sunrise/Mechs/mech_alert_25.ogg
Normal file
BIN
Resources/Audio/_Sunrise/Mechs/mech_alert_5.ogg
Normal file
BIN
Resources/Audio/_Sunrise/Mechs/mech_alert_50.ogg
Normal file
BIN
Resources/Audio/_Sunrise/Mechs/mech_hello.ogg
Normal file
BIN
Resources/Audio/_Sunrise/Mechs/mech_lights_disabled.ogg
Normal file
BIN
Resources/Audio/_Sunrise/Mechs/mech_lights_enabled.ogg
Normal file
|
|
@ -19,3 +19,6 @@ hypospray-cant-inject = Can't inject into {$target}!
|
|||
hypospray-verb-mode-label = Toggle Container Draw
|
||||
hypospray-verb-mode-inject-all = You cannot draw from containers anymore.
|
||||
hypospray-verb-mode-inject-mobs-only = You can now draw from containers.
|
||||
|
||||
## failure
|
||||
hypospay-component-failure-hardsuit = You cant get the needle to go through the thick plating!
|
||||
|
|
@ -27,3 +27,6 @@ injector-component-drawing-user = You start drawing the needle.
|
|||
injector-component-injecting-user = You start injecting the needle.
|
||||
injector-component-drawing-target = {CAPITALIZE(THE($user))} is trying to use a needle to draw from you!
|
||||
injector-component-injecting-target = {CAPITALIZE(THE($user))} is trying to inject a needle into you!
|
||||
|
||||
## failure
|
||||
injector-component-failure-hardsuit = You can't get the needle to go through the thick plating!
|
||||
|
|
@ -31,6 +31,17 @@ ent-HandheldRoboAnalyzerEmpty = { ent-HandheldRoboAnalyzer }
|
|||
ent-HandheldRoboAnalyzerUnpowered = { ent-BaseHandheldRoboAnalyzer }
|
||||
.desc = { ent-BaseHandheldRoboAnalyzer.desc }
|
||||
.suffix = Переносной, Не требует энергии
|
||||
ent-BaseHandheldMechAnalyzer = анализатор механоидов
|
||||
.desc = Портативный анализатор механоидов.
|
||||
ent-HandheldMechAnalyzer = { ent-BaseHandheldMechAnalyzer }
|
||||
.desc = { ent-BaseHandheldMechAnalyzer.desc }
|
||||
.suffix = Переносной, Требует энергию
|
||||
ent-HandheldMechAnalyzerEmpty = { ent-HandheldMechAnalyzer }
|
||||
.desc = { ent-HandheldMechAnalyzer.desc }
|
||||
.suffix = Переносной, Пустой
|
||||
ent-HandheldMechAnalyzerUnpowered = { ent-BaseHandheldMechAnalyzer }
|
||||
.desc = { ent-BaseHandheldMechAnalyzer.desc }
|
||||
.suffix = Переносной, Не требует энергии
|
||||
ent-BaseHandheldCamera = бодикамера
|
||||
.desc = Оно наблюдает за вами... И пикает..
|
||||
ent-HandheldCamera = { ent-BaseHandheldCamera }
|
||||
|
|
|
|||
|
|
@ -4,3 +4,5 @@ ent-ActionMechOpenUI = Панель управления
|
|||
.desc = Открывает панель управления меха.
|
||||
ent-ActionMechEject = Покинуть
|
||||
.desc = Высаживает пилота из меха.
|
||||
ent-ActionMechLights = Свет
|
||||
.desc = Переключает освещение меха.
|
||||
|
|
|
|||
|
|
@ -8,6 +8,9 @@ ent-CrateSyndicateSuperSurplusBundle = ящик суперприпасов си
|
|||
ent-CrateCybersunDarkGygaxBundle = набор Cybersun "Гигакс"
|
||||
.desc = Содержит набор легкобронированных мехов от компании Cybersun.
|
||||
.suffix = Заполненный
|
||||
ent-CrateCybersunRoverBundle = набор Cybersun "Ровер"
|
||||
.desc = Содержит набор среднебронированных мехов от компании Cybersun.
|
||||
.suffix = Заполненный
|
||||
ent-CrateCybersunMaulerBundle = набор Cybersun "Маулер"
|
||||
.desc = Содержит набор тяжелых бронированных мехов от компании Cybersun.
|
||||
.suffix = Заполненный
|
||||
|
|
|
|||
|
|
@ -4,9 +4,13 @@ ent-DurandArmorPlate = бронепластины Дюранда
|
|||
.desc = Броневые пластины из пластали для экзокостюма Дюранд.
|
||||
ent-GygaxArmorPlate = бронепластины Гигакса
|
||||
.desc = Броневые пластины из стали для экзокостюма Гигакс.
|
||||
ent-PhazonArmorPlate = бронепластины Фазона
|
||||
.desc = Броневые пластины из стали для экзокостюма Фазон.
|
||||
ent-RipleyUpgradeKit = комплект модернизации экзокостюма
|
||||
.desc = Этот комплект позволяет собрать экзокостюм Рипли MK-II.
|
||||
ent-MechAirTank = воздушный баллон экзокостюма
|
||||
.desc = Специальный воздушный баллон, способный вместить большое количество воздуха.
|
||||
ent-MechThruster = ускоритель экзокостюма
|
||||
.desc = Ускоритель, который позволяет экзокостюму безопасно двигаться при отсутствии гравитации.
|
||||
ent-MechPhasicScanningModule = фазовый сканирующий модуль
|
||||
.desc = Высокотехнологичный сканирующий модуль, позволяющий прорывать пространство и проходить сквозь твердые объекты.
|
||||
|
|
@ -28,3 +28,9 @@ ent-DurandPeripheralsElectronics = модуль управления периф
|
|||
.desc = Система управления электрическими периферийными устройствами меха Дюранд.
|
||||
ent-DurandTargetingElectronics = модуль управления огнём Дюранд
|
||||
.desc = Электрическая система управления огнём меха Дюранд.
|
||||
ent-PhazonCentralElectronics = центральный модуль управления Фазон
|
||||
.desc = Центр управления электрооборудованием меха Фазон.
|
||||
ent-PhazonPeripheralsElectronics = модуль управления периферией Фазон
|
||||
.desc = Система управления электрическими периферийными устройствами меха Фазон.
|
||||
ent-PhazonTargetingElectronics = модуль управления огнём Фазон
|
||||
.desc = Электрическая система управления огнём меха Фазон.
|
||||
|
|
|
|||
|
|
@ -114,3 +114,17 @@ ent-VimHarness = каркас ВИМ
|
|||
.desc = Небольшой кронштейн для крепления частей ВИМ.
|
||||
ent-VimChassis = шасси ВИМ
|
||||
.desc = Незавершённое шасси меха ВИМ.
|
||||
ent-PhazonHarness = каркас Фазона
|
||||
.desc = Ядро меха Фазон.
|
||||
ent-PhazonHead = голова Фазона
|
||||
.desc = Голова меха Фазон. Устанавливается на шасси меха.
|
||||
ent-PhazonLArm = левая рука Фазона
|
||||
.desc = Левая рука меха Фазон. Устанавливается на шасси меха.
|
||||
ent-PhazonLLeg = левая нога Фазона
|
||||
.desc = Левая нога меха Фазон. Устанавливается на шасси меха.
|
||||
ent-PhazonRLeg = правая нога Фазона
|
||||
.desc = Правая нога меха Фазон. Устанавливается на шасси меха.
|
||||
ent-PhazonRArm = правая рука Фазона
|
||||
.desc = Правая рука меха Фазон. Устанавливается на шасси меха.
|
||||
ent-PhazonChassis = шасси Фазона
|
||||
.desc = Незавершённое шасси меха Фазон.
|
||||
|
|
|
|||
|
|
@ -51,6 +51,19 @@ ent-MechDurand = Дюранд
|
|||
ent-MechDurandBattery = { ent-MechDurand }
|
||||
.suffix = Батарея
|
||||
.desc = { ent-MechDurand.desc }
|
||||
ent-MechPhazon = Фазон
|
||||
.desc = Самый продвинутый мех на рынке, вершина технологического развития, крайне мобильная и смертоносная.
|
||||
ent-MechPhazonBattery = { ent-MechPhazon }
|
||||
.suffix = Батарея
|
||||
.desc = { ent-MechPhazon.desc }
|
||||
ent-MechNTGygax = Особый гигакс NanoTrasen
|
||||
.desc = Козырь Nanotrasen при решении проблем. Высокая прочность, повышенная защита от ударов, взрывов, температуры, выстрелов: обычных, лазерных и энергетических, а также расширенные слоты под оборудование позволяют перевернуть ситуацию на станции. Ускорители потребляют колоссальное количество энергии.
|
||||
ent-MechNTGygaxBattery = { ent-MechNTGygax }
|
||||
.desc = { ent-MechNTGygax.desc }
|
||||
.suffix = Батарея
|
||||
ent-MechNTGygaxFilled = { ent-MechNTGygaxBattery }
|
||||
.desc = { ent-MechNTGygaxBattery.desc }
|
||||
.suffix = Батарея, Заполненный
|
||||
ent-MechMarauder = Мародёр
|
||||
.desc = Похоже, мы все спасены.
|
||||
ent-MechMarauderBattery = { ent-MechMarauder }
|
||||
|
|
@ -75,6 +88,14 @@ ent-MechGygaxSyndieBattery = { ent-MechGygaxSyndie }
|
|||
ent-MechGygaxSyndieFilled = { ent-MechGygaxSyndieBattery }
|
||||
.suffix = Батарея, Заполненный
|
||||
.desc = { ent-MechGygaxSyndieBattery.desc }
|
||||
ent-MechRoverSyndie = Ровер
|
||||
.desc = Модифицированный Дюранд, используемый в неблаговидных целях. На задней стороне бронепластины имеется надпись "Cybersun Inc.".
|
||||
ent-MechRoverSyndieBattery = { ent-MechRoverSyndie }
|
||||
.suffix = Батарея
|
||||
.desc = { ent-MechRoverSyndie.desc }
|
||||
ent-MechRoverSyndieFilled = { ent-MechRoverSyndieBattery }
|
||||
.suffix = Батарея, Заполненный
|
||||
.desc = { ent-MechRoverSyndieBattery.desc }
|
||||
ent-MechMaulerSyndie = Маулер
|
||||
.desc = Модифицированный Мародёр, используемый Синдикатом, не такой маневренный, как Тёмный гигакс, но он компенсирует это броней и мощной огневой мощью. На задней стороне бронепластины имеется надпись "Cybersun Inc.".
|
||||
ent-MechMaulerSyndieBattery = { ent-MechMaulerSyndie }
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ ent-WeaponMechCombatShotgun = LBX AC 10 "Залп"
|
|||
.suffix = Оружие мехов, Стрелковое, Боевое, Дробовик
|
||||
ent-WeaponMechCombatShotgunIncendiary = карабин FNX-99 "Аид"
|
||||
.desc = Навесной карабин, стреляющий зажигательными патронами.
|
||||
.suffix = Оружие мехов, Стрелковое, Боевое, Дробовик, Incendiary
|
||||
.suffix = Оружие мехов, Стрелковое, Боевое, Дробовик, Зажигательный
|
||||
ent-WeaponMechCombatUltraRifle = AC-2 "Ультра"
|
||||
.desc = Навесной карабин, стреляющий зажигательными патронами.
|
||||
.suffix = Оружие мехов, Стрелковое, Боевое, Автомат
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ step-wallmount-generator-circuit-board-name = микросхему настен
|
|||
step-freezer-electronics-name = микросхему морозильника
|
||||
step-multitool-name = мультитул
|
||||
step-capacitor-name = конденсатор
|
||||
step-powercage-name = любую энерго ячейку
|
||||
step-powercell-name = любую батарею
|
||||
step-powercell-small-name = маленькую батарею
|
||||
step-signal-trigger-name = сигнальный триггер
|
||||
|
|
|
|||
|
|
@ -2,4 +2,5 @@ research-technology-handcraft-nvd = Кустарные ПНВ
|
|||
research-technology-basic-nvd = Продвинутое ПНВ
|
||||
research-technology-combat-equipment = Боевое снаряжение
|
||||
research-technology-extended-amunitions = Расширенные магазины
|
||||
research-technology-phazon = Фазон
|
||||
research-technology-cargo-bluespace-equipment = Блюспейс экипировка карго
|
||||
|
|
|
|||
|
|
@ -24,3 +24,4 @@ shop-disease-category-symptoms = Симптомы
|
|||
shop-disease-category-evolution = Улучшение
|
||||
# Uplink
|
||||
store-category-objectives = Цели
|
||||
store-category-mechs = Мехи
|
||||
|
|
|
|||
|
|
@ -62,3 +62,26 @@ uplink-hypo-name = Горлекс гипоспрей
|
|||
uplink-hypo-desc = Химический гипоспрей, произвёденный синдикатом, способный мгновенно впрыснуть до 20 ед. реагентов. Изначально пуст.
|
||||
uplink-polytrinic-acid-chemistry-bottle-name = Политриновая кислота
|
||||
uplink-polytrinic-acid-chemistry-bottle-desc = Чрезвычайно едкое химическое вещество. Сильно обжигает всех, кто вступит с ней в непосредственный контакт.
|
||||
|
||||
## Mechs equipment
|
||||
|
||||
uplink-mech-equipment-immolation-gun-name = пушка-испепелитель ZFI
|
||||
uplink-mech-equipment-immolation-gun-desc = Оружие для боевых мехов, стреляющее высокотемпературными лучами.
|
||||
uplink-mech-equipment-tesla-cannon-name = тесла-пушка P-X
|
||||
uplink-mech-equipment-tesla-cannon-desc = Оружие для боевых мехов, стреляющее энергетическими шарами, основанное на принципе экспериментального двигателя Теслы.
|
||||
uplink-mech-equipment-shotgun-name = LBX AC 10 "Залп"
|
||||
uplink-mech-equipment-shotgun-desc = Навесной нелетальный электрошокер, позволяющий оглушить злоумышленников.
|
||||
uplink-mech-equipment-shotgun-incendiary-name = карабин FNX-99 "Аид"
|
||||
uplink-mech-equipment-shotgun-incendiary-desc = Навесной карабин, стреляющий зажигательными патронами.
|
||||
uplink-mech-equipment-ultra-rifle-name = AC-2 "Ультра"
|
||||
uplink-mech-equipment-ultra-rifle-desc = Навесной карабин, стреляющий зажигательными патронами.
|
||||
uplink-mech-equipment-ion-name = ионная тяжёлая пушка М-4
|
||||
uplink-mech-equipment-ion-desc = Навесное ионное орудие, действующее по тому же принципу, что и ручной ионный карабин. Чрезвычайно эффективно против синтетиков, роботов и других мехов.
|
||||
uplink-mech-equipment-amlg90-name = AMLG-90
|
||||
uplink-mech-equipment-amlg90-desc = Лазерный навесной пулемёт.
|
||||
uplink-mech-equipment-vindictor-name = Устанавливаемый MG-100 Vindicator Minigun
|
||||
uplink-mech-equipment-vindictor-desc = Тяжёлое оружие массового поражения.
|
||||
uplink-mech-equipment-uvm31-name = UVM-31 "Дрейк"
|
||||
uplink-mech-equipment-uvm31-desc = Тяжёлое оружие массового поражения разработанное Cybersun на основе минигана. теперь на прочном штативе позволяющем вести огонь прямо из МЕХа!
|
||||
uplink-mech-teleporter-medium-name = Телепорт среднего меха
|
||||
uplink-mech-teleporter-medium-desc = Содержит среднебронированный мех Cybersan с интегрированными цепным мечом и ракетной установкой BRM-8.
|
||||
|
|
|
|||
|
|
@ -19,3 +19,7 @@ hypospray-verb-mode-label = Переключить на набор из конт
|
|||
hypospray-verb-mode-inject-all = Вы больше не можете набирать из контейнеров.
|
||||
hypospray-verb-mode-inject-mobs-only = Теперь вы можете набирать из контейнеров.
|
||||
hypospray-cant-inject = Нельзя сделать инъекцию в { $target }!
|
||||
|
||||
## failure
|
||||
|
||||
hypospay-component-failure-hardsuit = Вы не сможете провести иглу через толстое покрытие!
|
||||
|
|
@ -28,3 +28,7 @@ injector-component-drawing-user = Вы начинаете набирать шп
|
|||
injector-component-injecting-user = Вы начинаете вводить содержимое шприца.
|
||||
injector-component-drawing-target = { CAPITALIZE($user) } начинает набирать шприц из вас!
|
||||
injector-component-injecting-target = { CAPITALIZE($user) } начинает вводить содержимое шприца в вас!
|
||||
|
||||
## failure
|
||||
|
||||
injector-component-failure-hardsuit = Вы не сможете провести иглу через толстое покрытие!
|
||||
|
|
@ -16,5 +16,6 @@ lathe-category-mechs-ripleymkii = Рипли MK-II
|
|||
lathe-category-mechs-clarke = Кларк
|
||||
lathe-category-mechs-gygax = Гигакс
|
||||
lathe-category-mechs-durand = Дюранд
|
||||
lathe-category-mechs-phazon = Фазон
|
||||
lathe-category-mechs-equipment = Оборудование механоидов
|
||||
lathe-category-mechs-weapons = Вооружение механоидов
|
||||
|
|
|
|||
|
|
@ -93,9 +93,9 @@ uplink-reinforcement-radio-nukeops-desc = Телепортирует в каче
|
|||
uplink-reinforcement-radio-cyborg-assault-name = Телепорт штурмового киборга Синдиката
|
||||
uplink-reinforcement-radio-cyborg-assault-desc = Машина для убийств с доступом к энергомечу, пулемёту, криптографическому секвенсору и пинпоинтеру.
|
||||
uplink-mech-teleporter-heavy-name = Телепорт тяжелого меха
|
||||
uplink-mech-teleporter-heavy-desc = Содержит тяжелобронированный мех Cybersan с интегрированными цепным мечом, Ultra AC-2, LBX AC 10 "Картечь", ракетной установкой BRM-6 и пушкой P-X Tesla.
|
||||
uplink-mech-teleporter-heavy-desc = Содержит тяжелобронированный мех Cybersan с интегрированными цепным мечом и ракетной установкой BRM-6.
|
||||
uplink-mech-teleporter-assault-name = Телепорт штурмового меха
|
||||
uplink-mech-teleporter-assault-desc = Содержит легкобронированный мех Cybersan с интегрированными цепным мечом, LBX AC 10 "Картечь", легкой ракетной установкой SRM-8 и пушкой P-X Tesla.
|
||||
uplink-mech-teleporter-assault-desc = Содержит легкобронированный мех Cybersan с интегрированными цепным мечом и легкой ракетной установкой SRM-8.
|
||||
uplink-stealth-box-name = Стелс-коробка
|
||||
uplink-stealth-box-desc = Ящик, оснащённый технологией невидимости, проникните везде и не двигайтесь слишком быстро!
|
||||
uplink-headset-name = Полноразмерная гарнитура Синдиката
|
||||
|
|
|
|||
|
|
@ -35,3 +35,15 @@
|
|||
sprite: Interface/Actions/actions_mecha.rsi
|
||||
state: mech_eject
|
||||
event: !type:MechEjectPilotEvent
|
||||
|
||||
- type: entity
|
||||
id: ActionMechLights
|
||||
name: Lights
|
||||
description: Turns mech lights.
|
||||
components:
|
||||
- type: InstantAction
|
||||
useDelay: 5
|
||||
itemIconStyle: NoItem
|
||||
icon: { sprite: Interface/Actions/actions_mecha.rsi, state: mech_lights_off }
|
||||
iconOn: { sprite: Interface/Actions/actions_mecha.rsi, state: mech_lights_on }
|
||||
event: !type:MechToggleLightsEvent
|
||||
|
|
|
|||
|
|
@ -45,6 +45,21 @@
|
|||
- id: DoubleEmergencyNitrogenTankFilled
|
||||
- id: ToolboxSyndicateFilled
|
||||
- id: PlushieNuke
|
||||
|
||||
- type: entity
|
||||
id: CrateCybersunRoverBundle
|
||||
suffix: Filled
|
||||
parent: CrateSyndicate
|
||||
name: Cybersun rover bundle
|
||||
description: Contains a set of Cybersan medium armored mechs.
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: MechRoverSyndieFilled
|
||||
- id: DoubleEmergencyOxygenTankFilled
|
||||
- id: DoubleEmergencyNitrogenTankFilled
|
||||
- id: ToolboxSyndicateFilled
|
||||
- id: PlushieNuke
|
||||
|
||||
- type: entity
|
||||
id: CrateCybersunMaulerBundle
|
||||
|
|
|
|||
|
|
@ -1424,38 +1424,6 @@
|
|||
- !type:ListingLimitedStockCondition
|
||||
stock: 1
|
||||
|
||||
- type: listing
|
||||
id: UplinkDarkGygax
|
||||
name: uplink-mech-teleporter-assault-name
|
||||
description: uplink-mech-teleporter-assault-desc
|
||||
icon: { sprite: /Textures/Objects/Specific/Mech/mecha.rsi, state: darkgygax }
|
||||
productEntity: CrateCybersunDarkGygaxBundle
|
||||
cost:
|
||||
Telecrystal: 100
|
||||
categories:
|
||||
- UplinkAllies
|
||||
conditions:
|
||||
- !type:StoreWhitelistCondition
|
||||
whitelist:
|
||||
tags:
|
||||
- NukeOpsUplink
|
||||
|
||||
- type: listing
|
||||
id: UplinkMauler
|
||||
name: uplink-mech-teleporter-heavy-name
|
||||
description: uplink-mech-teleporter-heavy-desc
|
||||
icon: { sprite: /Textures/Objects/Specific/Mech/mecha.rsi, state: mauler }
|
||||
productEntity: CrateCybersunMaulerBundle
|
||||
cost:
|
||||
Telecrystal: 150
|
||||
categories:
|
||||
- UplinkAllies
|
||||
conditions:
|
||||
- !type:StoreWhitelistCondition
|
||||
whitelist:
|
||||
tags:
|
||||
- NukeOpsUplink
|
||||
|
||||
# Implants
|
||||
|
||||
- type: listing
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
damageContainers:
|
||||
- Inorganic
|
||||
- Silicon
|
||||
- Mech # Sunrise-edit
|
||||
|
||||
- type: entity
|
||||
parent: [ClothingEyesBase, ShowMedicalIcons]
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
# Basic
|
||||
|
||||
- type: entity
|
||||
id: EnergyDomeBase
|
||||
abstract: true
|
||||
|
|
@ -32,40 +34,8 @@
|
|||
tags:
|
||||
- HideContextMenu
|
||||
- IgnoreMelee
|
||||
|
||||
- type: entity
|
||||
id: EnergyDomeSmallPink
|
||||
categories: [ HideSpawnMenu ]
|
||||
parent: EnergyDomeBase
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Effects/EnergyDome/energydome_small.rsi
|
||||
layers:
|
||||
- state: small
|
||||
color: "#f5166b"
|
||||
- type: PointLight
|
||||
enabled: true
|
||||
radius: 5
|
||||
power: 2
|
||||
color: "#f5166b"
|
||||
|
||||
- type: entity
|
||||
id: EnergyDomeSmallBlue
|
||||
categories: [ HideSpawnMenu ]
|
||||
parent: EnergyDomeBase
|
||||
components:
|
||||
- type: Sprite
|
||||
drawdepth: Effects
|
||||
noRot: true
|
||||
sprite: Effects/EnergyDome/energydome_small.rsi
|
||||
layers:
|
||||
- state: small
|
||||
color: "#64b9de"
|
||||
- type: PointLight
|
||||
enabled: true
|
||||
radius: 5
|
||||
power: 2
|
||||
color: "#64b9de"
|
||||
|
||||
# Nukeops
|
||||
|
||||
- type: entity
|
||||
id: EnergyDomeSmallRed
|
||||
|
|
@ -84,34 +54,6 @@
|
|||
radius: 5
|
||||
power: 2
|
||||
color: "#b00000"
|
||||
|
||||
- type: entity
|
||||
id: EnergyDomeMediumBlue
|
||||
categories: [ HideSpawnMenu ]
|
||||
parent: EnergyDomeBase
|
||||
components:
|
||||
- type: Fixtures
|
||||
fixtures:
|
||||
fix1:
|
||||
shape:
|
||||
!type:PhysShapeCircle
|
||||
radius: 1.8
|
||||
density: 0
|
||||
mask:
|
||||
- None
|
||||
layer:
|
||||
- BulletImpassable
|
||||
- Opaque
|
||||
- type: Sprite
|
||||
sprite: Effects/EnergyDome/energydome_medium.rsi
|
||||
layers:
|
||||
- state: medium
|
||||
color: "#64b9de"
|
||||
- type: PointLight
|
||||
enabled: true
|
||||
radius: 5
|
||||
power: 10
|
||||
color: "#64b9de"
|
||||
|
||||
- type: entity
|
||||
id: EnergyDomeMediumRed
|
||||
|
|
@ -141,6 +83,72 @@
|
|||
power: 10
|
||||
color: "#b00000"
|
||||
|
||||
# NanoTrasen
|
||||
|
||||
- type: entity
|
||||
id: EnergyDomeSmallBlue
|
||||
categories: [ HideSpawnMenu ]
|
||||
parent: EnergyDomeBase
|
||||
components:
|
||||
- type: Sprite
|
||||
drawdepth: Effects
|
||||
noRot: true
|
||||
sprite: Effects/EnergyDome/energydome_small.rsi
|
||||
layers:
|
||||
- state: small
|
||||
color: "#64b9de"
|
||||
- type: PointLight
|
||||
enabled: true
|
||||
radius: 5
|
||||
power: 2
|
||||
color: "#64b9de"
|
||||
|
||||
- type: entity
|
||||
id: EnergyDomeMediumBlue
|
||||
categories: [ HideSpawnMenu ]
|
||||
parent: EnergyDomeBase
|
||||
components:
|
||||
- type: Fixtures
|
||||
fixtures:
|
||||
fix1:
|
||||
shape:
|
||||
!type:PhysShapeCircle
|
||||
radius: 1.8
|
||||
density: 0
|
||||
mask:
|
||||
- None
|
||||
layer:
|
||||
- BulletImpassable
|
||||
- Opaque
|
||||
- type: Sprite
|
||||
sprite: Effects/EnergyDome/energydome_medium.rsi
|
||||
layers:
|
||||
- state: medium
|
||||
color: "#64b9de"
|
||||
- type: PointLight
|
||||
enabled: true
|
||||
radius: 5
|
||||
power: 10
|
||||
color: "#64b9de"
|
||||
|
||||
# Misc
|
||||
|
||||
- type: entity
|
||||
id: EnergyDomeSmallPink
|
||||
categories: [ HideSpawnMenu ]
|
||||
parent: EnergyDomeBase
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Effects/EnergyDome/energydome_small.rsi
|
||||
layers:
|
||||
- state: small
|
||||
color: "#f5166b"
|
||||
- type: PointLight
|
||||
enabled: true
|
||||
radius: 5
|
||||
power: 2
|
||||
color: "#f5166b"
|
||||
|
||||
- type: entity
|
||||
id: EnergyDomeSlowing
|
||||
categories: [ HideSpawnMenu ]
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
- type: Sprite
|
||||
layers:
|
||||
- state: green
|
||||
- sprite: Objects/Specific/Mech/mecha.rsi
|
||||
- sprite: Objects/Specific/Mech/ripley.rsi
|
||||
state: ripley
|
||||
- type: ConditionalSpawner
|
||||
prototypes:
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
- type: Sprite
|
||||
layers:
|
||||
- state: green
|
||||
- sprite: Objects/Specific/Mech/mecha.rsi
|
||||
- sprite: Objects/Specific/Mech/ripley.rsi
|
||||
state: ripleymkii
|
||||
- type: ConditionalSpawner
|
||||
prototypes:
|
||||
|
|
@ -63,7 +63,7 @@
|
|||
- type: Sprite
|
||||
layers:
|
||||
- state: green
|
||||
- sprite: Objects/Specific/Mech/mecha.rsi
|
||||
- sprite: Objects/Specific/Mech/clarke.rsi
|
||||
state: clarke
|
||||
- type: ConditionalSpawner
|
||||
prototypes:
|
||||
|
|
@ -77,7 +77,7 @@
|
|||
- type: Sprite
|
||||
layers:
|
||||
- state: green
|
||||
- sprite: Objects/Specific/Mech/mecha.rsi
|
||||
- sprite: Objects/Specific/Mech/gygax.rsi
|
||||
state: gygax
|
||||
- type: ConditionalSpawner
|
||||
prototypes:
|
||||
|
|
@ -91,7 +91,7 @@
|
|||
- type: Sprite
|
||||
layers:
|
||||
- state: green
|
||||
- sprite: Objects/Specific/Mech/mecha.rsi
|
||||
- sprite: Objects/Specific/Mech/durand.rsi
|
||||
state: durand
|
||||
- type: ConditionalSpawner
|
||||
prototypes:
|
||||
|
|
@ -163,7 +163,7 @@
|
|||
- type: Sprite
|
||||
layers:
|
||||
- state: green
|
||||
- sprite: Objects/Specific/Mech/mecha.rsi
|
||||
- sprite: Objects/Specific/Mech/gygax.rsi
|
||||
state: darkgygax
|
||||
- type: ConditionalSpawner
|
||||
prototypes:
|
||||
|
|
@ -178,7 +178,7 @@
|
|||
- type: Sprite
|
||||
layers:
|
||||
- state: green
|
||||
- sprite: Objects/Specific/Mech/mecha.rsi
|
||||
- sprite: Objects/Specific/Mech/gygax.rsi
|
||||
state: darkgygax
|
||||
- type: ConditionalSpawner
|
||||
prototypes:
|
||||
|
|
|
|||
|
|
@ -66,6 +66,15 @@
|
|||
295: 0.6
|
||||
285: 0.4
|
||||
- type: Wagging
|
||||
# Sunrise-start
|
||||
- type: Tag
|
||||
tags:
|
||||
- CanPilot
|
||||
- FootstepSound
|
||||
- DoorBumpOpener
|
||||
- AnomalyHost
|
||||
- NoInjectable
|
||||
#Sunrise-end
|
||||
- type: Inventory
|
||||
speciesId: reptilian
|
||||
femaleDisplacements:
|
||||
|
|
|
|||
|
|
@ -51,6 +51,24 @@
|
|||
- type: GuideHelp
|
||||
guides:
|
||||
- Robotics
|
||||
|
||||
- type: entity
|
||||
id: PhazonArmorPlate
|
||||
parent: BaseExosuitParts
|
||||
name: phazon armor plates
|
||||
description: Armor plates made of steel for Phazon exosuit.
|
||||
components:
|
||||
- type: Item
|
||||
storedRotation: 0
|
||||
- type: Sprite
|
||||
sprite: Objects/Specific/Mech/phazon_construction.rsi
|
||||
state: phazon_armor
|
||||
- type: Tag
|
||||
tags:
|
||||
- PhazonArmor
|
||||
- type: GuideHelp
|
||||
guides:
|
||||
- Robotics
|
||||
|
||||
- type: entity
|
||||
id: RipleyUpgradeKit
|
||||
|
|
@ -99,6 +117,23 @@
|
|||
- type: Tag
|
||||
tags:
|
||||
- MechThruster
|
||||
- type: GuideHelp
|
||||
guides:
|
||||
- Robotics
|
||||
|
||||
- type: entity
|
||||
id: MechPhasicScanningModule
|
||||
parent: BaseExosuitParts
|
||||
name: phasic scanning module
|
||||
description: An application part used in the construction of various devices.
|
||||
components:
|
||||
- type: Item
|
||||
storedRotation: 0
|
||||
- type: Sprite
|
||||
state: triphasic_scan_module
|
||||
- type: Tag
|
||||
tags:
|
||||
- MechPhasicScanningModule
|
||||
- type: GuideHelp
|
||||
guides:
|
||||
- Robotics
|
||||
|
|
@ -258,6 +258,58 @@
|
|||
- type: Tag
|
||||
tags:
|
||||
- DurandTargetingControlModule
|
||||
- type: GuideHelp
|
||||
guides:
|
||||
- Robotics
|
||||
|
||||
# Phazon
|
||||
|
||||
- type: entity
|
||||
id: PhazonCentralElectronics
|
||||
parent: BaseElectronics
|
||||
name: phazon central control module
|
||||
description: The electrical control center for the Phazon mech.
|
||||
components:
|
||||
- type: Item
|
||||
storedRotation: 0
|
||||
- type: Sprite
|
||||
sprite: Objects/Misc/module.rsi
|
||||
state: mainboard
|
||||
- type: Tag
|
||||
tags:
|
||||
- PhazonCentralControlModule
|
||||
- type: GuideHelp
|
||||
guides:
|
||||
- Robotics
|
||||
|
||||
- type: entity
|
||||
id: PhazonPeripheralsElectronics
|
||||
parent: BaseElectronics
|
||||
name: phazon peripherals control module
|
||||
description: The electrical peripherals control for the Phazon mech.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Misc/module.rsi
|
||||
state: id_mod
|
||||
- type: Tag
|
||||
tags:
|
||||
- PhazonPeripheralsControlModule
|
||||
- type: GuideHelp
|
||||
guides:
|
||||
- Robotics
|
||||
|
||||
- type: entity
|
||||
id: PhazonTargetingElectronics
|
||||
parent: BaseElectronics
|
||||
name: phazon weapon control and targeting module
|
||||
description: The electrical targeting control for the Phazon mech.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Misc/module.rsi
|
||||
state: mcontroller
|
||||
- type: Tag
|
||||
tags:
|
||||
- PhazonTargetingControlModule
|
||||
- type: GuideHelp
|
||||
guides:
|
||||
- Robotics
|
||||
|
|
@ -30,7 +30,7 @@
|
|||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Specific/Mech/mecha_equipment.rsi
|
||||
state: mecha_laser
|
||||
state: mecha_immolator
|
||||
- type: Gun
|
||||
fireRate: 0.6
|
||||
selectedMode: SemiAuto
|
||||
|
|
@ -53,7 +53,7 @@
|
|||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Specific/Mech/mecha_equipment.rsi
|
||||
state: mecha_laser
|
||||
state: mecha_solaris
|
||||
- type: Gun
|
||||
fireRate: 1
|
||||
selectedMode: SemiAuto
|
||||
|
|
@ -76,7 +76,7 @@
|
|||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Specific/Mech/mecha_equipment.rsi
|
||||
state: mecha_laser
|
||||
state: mecha_firedart
|
||||
- type: Gun
|
||||
fireRate: 0.8
|
||||
selectedMode: SemiAuto
|
||||
|
|
@ -220,7 +220,7 @@
|
|||
sprite: Objects/Specific/Mech/mecha_equipment.rsi
|
||||
state: mecha_uac2
|
||||
- type: Gun
|
||||
fireRate: 2
|
||||
fireRate: 5
|
||||
shotsPerBurst: 3
|
||||
burstCooldown: 1.2
|
||||
selectedMode: Burst
|
||||
|
|
@ -273,7 +273,7 @@
|
|||
sprite: Objects/Specific/Mech/mecha_equipment.rsi
|
||||
state: mecha_amlg90
|
||||
- type: Gun
|
||||
fireRate: 2
|
||||
fireRate: 4
|
||||
shotsPerBurst: 3
|
||||
burstCooldown: 1.2
|
||||
selectedMode: Burst
|
||||
|
|
@ -285,7 +285,7 @@
|
|||
path: /Audio/Weapons/Guns/Empty/empty.ogg
|
||||
- type: ProjectileBatteryAmmoProvider
|
||||
proto: BulletSyndiPlasma
|
||||
fireCost: 75
|
||||
fireCost: 20
|
||||
- type: Appearance
|
||||
- type: AmmoCounter
|
||||
|
||||
|
|
|
|||
|
|
@ -978,3 +978,149 @@
|
|||
graph: Vim
|
||||
node: start
|
||||
defaultTarget: vim
|
||||
|
||||
|
||||
# Phazon
|
||||
|
||||
- type: entity
|
||||
id: BasePhazonPart
|
||||
parent: BaseMechPart
|
||||
abstract: true
|
||||
components:
|
||||
- type: Sprite
|
||||
drawdepth: Items
|
||||
noRot: false
|
||||
sprite: Objects/Specific/Mech/phazon_construction.rsi
|
||||
|
||||
- type: entity
|
||||
id: BasePhazonPartItem
|
||||
parent: BasePhazonPart
|
||||
abstract: true
|
||||
components:
|
||||
- type: Item
|
||||
size: Ginormous
|
||||
|
||||
- type: entity
|
||||
parent: BasePhazonPart
|
||||
id: PhazonHarness
|
||||
name: phazon harness
|
||||
description: The core of the Phazon.
|
||||
components:
|
||||
- type: Appearance
|
||||
- type: ItemMapper
|
||||
mapLayers:
|
||||
phazon_head+o:
|
||||
whitelist:
|
||||
tags:
|
||||
- PhazonHead
|
||||
phazon_l_arm+o:
|
||||
whitelist:
|
||||
tags:
|
||||
- PhazonLArm
|
||||
phazon_r_arm+o:
|
||||
whitelist:
|
||||
tags:
|
||||
- PhazonRArm
|
||||
phazon_l_leg+o:
|
||||
whitelist:
|
||||
tags:
|
||||
- PhazonLLeg
|
||||
phazon_r_leg+o:
|
||||
whitelist:
|
||||
tags:
|
||||
- PhazonRLeg
|
||||
sprite: Objects/Specific/Mech/phazon_construction.rsi
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
mech-assembly-container: !type:Container
|
||||
- type: MechAssembly
|
||||
finishedPrototype: PhazonChassis
|
||||
requiredParts:
|
||||
PhazonHead: false
|
||||
PhazonLArm: false
|
||||
PhazonRArm: false
|
||||
PhazonLLeg: false
|
||||
PhazonRLeg: false
|
||||
- type: Sprite
|
||||
state: phazon_harness+o
|
||||
noRot: true
|
||||
|
||||
- type: entity
|
||||
parent: BasePhazonPartItem
|
||||
id: PhazonHead
|
||||
name: phazon head
|
||||
description: The head of the Phazon. It belongs on the chassis of the mech.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: phazon_head
|
||||
- type: Tag
|
||||
tags:
|
||||
- PhazonHead
|
||||
|
||||
- type: entity
|
||||
parent: BasePhazonPartItem
|
||||
id: PhazonLArm
|
||||
name: phazon left arm
|
||||
description: The left arm of the Phazon. It belongs on the chassis of the mech.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: phazon_l_arm
|
||||
- type: Tag
|
||||
tags:
|
||||
- PhazonLArm
|
||||
|
||||
- type: entity
|
||||
parent: BasePhazonPartItem
|
||||
id: PhazonLLeg
|
||||
name: phazon left leg
|
||||
description: The left leg of the Phazon. It belongs on the chassis of the mech.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: phazon_l_leg
|
||||
- type: Tag
|
||||
tags:
|
||||
- PhazonLLeg
|
||||
|
||||
- type: entity
|
||||
parent: BasePhazonPartItem
|
||||
id: PhazonRLeg
|
||||
name: phazon right leg
|
||||
description: The right leg of the Phazon. It belongs on the chassis of the mech.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: phazon_r_leg
|
||||
- type: Tag
|
||||
tags:
|
||||
- PhazonRLeg
|
||||
|
||||
- type: entity
|
||||
parent: BasePhazonPartItem
|
||||
id: PhazonRArm
|
||||
name: phazon right arm
|
||||
description: The right arm of the Phazon. It belongs on the chassis of the mech.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: phazon_r_arm
|
||||
- type: Tag
|
||||
tags:
|
||||
- PhazonRArm
|
||||
|
||||
- type: entity
|
||||
id: PhazonChassis
|
||||
parent: BasePhazonPart
|
||||
name: phazon chassis
|
||||
description: An in-progress construction of the Phazon mech.
|
||||
components:
|
||||
- type: Appearance
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
battery-container: !type:Container
|
||||
- type: MechAssemblyVisuals
|
||||
statePrefix: phazon
|
||||
- type: Sprite
|
||||
noRot: true
|
||||
state: phazon0
|
||||
- type: Construction
|
||||
graph: Phazon
|
||||
node: start
|
||||
defaultTarget: phazon
|
||||
|
|
@ -77,7 +77,12 @@
|
|||
- type: DoAfter
|
||||
- type: Repairable
|
||||
fuelCost: 25
|
||||
doAfterDelay: 10
|
||||
doAfterDelay: 3
|
||||
damage:
|
||||
types:
|
||||
Blunt: -15
|
||||
Slash: -15
|
||||
Piercing: -15
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
enum.MechUiKey.Key:
|
||||
|
|
@ -118,6 +123,25 @@
|
|||
- MobMask
|
||||
layer:
|
||||
- MobLayer
|
||||
- type: MobState
|
||||
allowedStates:
|
||||
- Alive
|
||||
- Critical
|
||||
- type: MobThresholds
|
||||
currentThresholdState : Alive
|
||||
thresholds:
|
||||
0: Alive
|
||||
500: Critical
|
||||
showOverlays: false
|
||||
allowRevives: true
|
||||
- type: HealthExaminable
|
||||
examinableTypes:
|
||||
- Blunt
|
||||
- Slash
|
||||
- Piercing
|
||||
- Heat
|
||||
- Shock
|
||||
locPrefix: mech
|
||||
- type: Appearance
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
|
|
@ -125,7 +149,7 @@
|
|||
mech-equipment-container: !type:Container
|
||||
mech-battery-slot: !type:ContainerSlot
|
||||
- type: Damageable
|
||||
damageContainer: Inorganic
|
||||
damageContainer: Mech
|
||||
damageModifierSet: LightArmor
|
||||
- type: FootstepModifier
|
||||
footstepSoundCollection:
|
||||
|
|
@ -137,7 +161,7 @@
|
|||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 1000
|
||||
damage: 700
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
|
|
@ -147,6 +171,14 @@
|
|||
- !type:DoActsBehavior
|
||||
acts: ["Destruction"]
|
||||
- type: Prying
|
||||
- type: StatusIcon
|
||||
bounds: "-0.6,-0.6, 0.6, 0.6"
|
||||
- type: PointLight
|
||||
enabled: false
|
||||
mask: /Textures/Effects/LightMasks/cone.png
|
||||
autoRot: true
|
||||
radius: 4
|
||||
netsync: false
|
||||
|
||||
# Ripley MK-I
|
||||
- type: entity
|
||||
|
|
@ -158,7 +190,7 @@
|
|||
- type: Sprite
|
||||
drawdepth: Mobs
|
||||
noRot: true
|
||||
sprite: Objects/Specific/Mech/mecha.rsi
|
||||
sprite: Objects/Specific/Mech/ripley.rsi
|
||||
scale: 1.08, 1.08
|
||||
layers:
|
||||
- map: [ "enum.MechVisualLayers.Base" ]
|
||||
|
|
@ -184,9 +216,23 @@
|
|||
baseWalkSpeed: 2.25
|
||||
baseSprintSpeed: 3.6
|
||||
- type: Reflect
|
||||
reflectProb: 0.05
|
||||
reflectProb: 0.15
|
||||
spread: 180
|
||||
soundOnReflect: /Audio/Weapons/block_metal1.ogg
|
||||
reflects:
|
||||
- NonEnergy
|
||||
- type: Tag
|
||||
tags:
|
||||
- DoorBumpOpener
|
||||
- FootstepSound
|
||||
- Ripley
|
||||
- type: MobThresholds
|
||||
currentThresholdState : Alive
|
||||
thresholds:
|
||||
0: Alive
|
||||
200: Critical
|
||||
showOverlays: false
|
||||
allowRevives: true
|
||||
|
||||
- type: entity
|
||||
id: MechRipleyBattery
|
||||
|
|
@ -208,7 +254,7 @@
|
|||
- type: Sprite
|
||||
drawdepth: Mobs
|
||||
noRot: true
|
||||
sprite: Objects/Specific/Mech/mecha.rsi
|
||||
sprite: Objects/Specific/Mech/ripley.rsi
|
||||
scale: 1.08, 1.08
|
||||
layers:
|
||||
- map: [ "enum.MechVisualLayers.Base" ]
|
||||
|
|
@ -237,9 +283,18 @@
|
|||
- type: Damageable
|
||||
damageModifierSet: MediumArmorNT
|
||||
- type: Reflect
|
||||
reflectProb: 0.15
|
||||
reflectProb: 0.25
|
||||
spread: 180
|
||||
soundOnReflect: /Audio/Weapons/block_metal1.ogg
|
||||
reflects:
|
||||
- NonEnergy
|
||||
- type: MobThresholds
|
||||
currentThresholdState : Alive
|
||||
thresholds:
|
||||
0: Alive
|
||||
250: Critical
|
||||
showOverlays: false
|
||||
allowRevives: true
|
||||
|
||||
- type: entity
|
||||
id: MechRipley2Battery
|
||||
|
|
@ -261,7 +316,7 @@
|
|||
- type: Sprite
|
||||
drawdepth: Mobs
|
||||
noRot: true
|
||||
sprite: Objects/Specific/Mech/mecha.rsi
|
||||
sprite: Objects/Specific/Mech/clarke.rsi
|
||||
scale: 1.08, 1.08
|
||||
layers:
|
||||
- map: [ "enum.MechVisualLayers.Base" ]
|
||||
|
|
@ -290,9 +345,29 @@
|
|||
- type: CanMoveInAir
|
||||
- type: MovementAlwaysTouching
|
||||
- type: Reflect
|
||||
reflectProb: 0.15
|
||||
reflectProb: 0.25
|
||||
spread: 180
|
||||
soundOnReflect: /Audio/Weapons/block_metal1.ogg
|
||||
reflects:
|
||||
- NonEnergy
|
||||
- type: MobThresholds
|
||||
currentThresholdState : Alive
|
||||
thresholds:
|
||||
0: Alive
|
||||
250: Critical
|
||||
showOverlays: false
|
||||
allowRevives: true
|
||||
- type: PointLight
|
||||
enabled: false
|
||||
mask: /Textures/Effects/LightMasks/cone.png
|
||||
autoRot: true
|
||||
radius: 8
|
||||
netsync: false
|
||||
- type: Tag
|
||||
tags:
|
||||
- DoorBumpOpener
|
||||
- FootstepSound
|
||||
- Clarke
|
||||
|
||||
- type: entity
|
||||
id: MechClarkeBattery
|
||||
|
|
@ -332,9 +407,18 @@
|
|||
components:
|
||||
- HumanoidAppearance
|
||||
- type: Reflect
|
||||
reflectProb: 0.05
|
||||
reflectProb: 0.15
|
||||
spread: 180
|
||||
soundOnReflect: /Audio/Weapons/block_metal1.ogg
|
||||
reflects:
|
||||
- NonEnergy
|
||||
- type: MobThresholds
|
||||
currentThresholdState : Alive
|
||||
thresholds:
|
||||
0: Alive
|
||||
150: Critical
|
||||
showOverlays: false
|
||||
allowRevives: true
|
||||
|
||||
- type: entity
|
||||
parent: MechHonker
|
||||
|
|
@ -396,10 +480,19 @@
|
|||
baseWalkSpeed: 2.4
|
||||
baseSprintSpeed: 3.7
|
||||
- type: Reflect
|
||||
reflectProb: 0.05
|
||||
reflectProb: 0.15
|
||||
spread: 180
|
||||
soundOnReflect: /Audio/Weapons/block_metal1.ogg
|
||||
reflects:
|
||||
- NonEnergy
|
||||
|
||||
- type: MobThresholds
|
||||
currentThresholdState : Alive
|
||||
thresholds:
|
||||
0: Alive
|
||||
150: Critical
|
||||
showOverlays: false
|
||||
allowRevives: true
|
||||
|
||||
- type: entity
|
||||
parent: MechHamtr
|
||||
id: MechHamtrBattery
|
||||
|
|
@ -467,9 +560,18 @@
|
|||
tags:
|
||||
- Maintenance
|
||||
- type: Reflect
|
||||
reflectProb: 0.05
|
||||
reflectProb: 0.15
|
||||
spread: 180
|
||||
soundOnReflect: /Audio/Weapons/block_metal1.ogg
|
||||
reflects:
|
||||
- NonEnergy
|
||||
- type: MobThresholds
|
||||
currentThresholdState : Alive
|
||||
thresholds:
|
||||
0: Alive
|
||||
150: Critical
|
||||
showOverlays: false
|
||||
allowRevives: true
|
||||
# TOOD: buzz / chime actions
|
||||
# TODO: builtin flashlight
|
||||
|
||||
|
|
@ -495,7 +597,7 @@
|
|||
- type: Sprite
|
||||
drawdepth: Mobs
|
||||
noRot: true
|
||||
sprite: Objects/Specific/Mech/mecha.rsi
|
||||
sprite: Objects/Specific/Mech/gygax.rsi
|
||||
scale: 1.08, 1.08
|
||||
layers:
|
||||
- map: [ "enum.MechVisualLayers.Base" ]
|
||||
|
|
@ -523,9 +625,23 @@
|
|||
baseWalkSpeed: 2
|
||||
baseSprintSpeed: 2.6
|
||||
- type: Reflect
|
||||
reflectProb: 0.15
|
||||
reflectProb: 0.25
|
||||
spread: 180
|
||||
soundOnReflect: /Audio/Weapons/block_metal1.ogg
|
||||
reflects:
|
||||
- NonEnergy
|
||||
- type: MobThresholds
|
||||
currentThresholdState : Alive
|
||||
thresholds:
|
||||
0: Alive
|
||||
300: Critical
|
||||
showOverlays: false
|
||||
allowRevives: true
|
||||
- type: Tag
|
||||
tags:
|
||||
- DoorBumpOpener
|
||||
- FootstepSound
|
||||
- Gygax
|
||||
|
||||
- type: entity
|
||||
id: MechGygaxBattery
|
||||
|
|
@ -547,7 +663,7 @@
|
|||
- type: Sprite
|
||||
drawdepth: Mobs
|
||||
noRot: true
|
||||
sprite: Objects/Specific/Mech/mecha.rsi
|
||||
sprite: Objects/Specific/Mech/durand.rsi
|
||||
scale: 1.08, 1.08
|
||||
layers:
|
||||
- map: [ "enum.MechVisualLayers.Base" ]
|
||||
|
|
@ -561,7 +677,6 @@
|
|||
brokenState: durand-broken
|
||||
mechToPilotDamageMultiplier: 0.25
|
||||
airtight: true
|
||||
maxIntegrity: 400
|
||||
pilotWhitelist:
|
||||
components:
|
||||
- HumanoidAppearance
|
||||
|
|
@ -583,9 +698,23 @@
|
|||
fuelCost: 30
|
||||
doAfterDelay: 15
|
||||
- type: Reflect
|
||||
reflectProb: 0.15
|
||||
reflectProb: 0.25
|
||||
spread: 180
|
||||
soundOnReflect: /Audio/Weapons/block_metal1.ogg
|
||||
reflects:
|
||||
- NonEnergy
|
||||
- type: MobThresholds
|
||||
currentThresholdState : Alive
|
||||
thresholds:
|
||||
0: Alive
|
||||
450: Critical
|
||||
showOverlays: false
|
||||
allowRevives: true
|
||||
- type: Tag
|
||||
tags:
|
||||
- DoorBumpOpener
|
||||
- FootstepSound
|
||||
- Durand
|
||||
|
||||
- type: entity
|
||||
id: MechDurandBattery
|
||||
|
|
@ -596,9 +725,154 @@
|
|||
containers:
|
||||
mech-battery-slot:
|
||||
- PowerCageHigh
|
||||
|
||||
# Phazon
|
||||
|
||||
- type: entity
|
||||
id: MechPhazon
|
||||
parent: [ BaseMech, CombatMech, BaseRestrictedContraband ]
|
||||
name: Phazon
|
||||
description: The most advanced mech on the market, the pinnacle of technological development, extremely mobile and deadly.
|
||||
components:
|
||||
- type: Sprite
|
||||
drawdepth: Mobs
|
||||
noRot: true
|
||||
sprite: Objects/Specific/Mech/mecha.rsi
|
||||
scale: 1.08, 1.08
|
||||
layers:
|
||||
- map: [ "enum.MechVisualLayers.Base" ]
|
||||
state: phazon
|
||||
- type: FootstepModifier
|
||||
footstepSoundCollection:
|
||||
path: /Audio/Mecha/sound_mecha_powerloader_step.ogg
|
||||
- type: Mech
|
||||
baseState: phazon
|
||||
openState: phazon-open
|
||||
brokenState: phazon-broken
|
||||
mechToPilotDamageMultiplier: 0.4
|
||||
maxEquipmentAmount: 6
|
||||
airtight: true
|
||||
pilotWhitelist:
|
||||
components:
|
||||
- HumanoidAppearance
|
||||
- type: MeleeWeapon
|
||||
hidden: true
|
||||
attackRate: 1
|
||||
damage:
|
||||
types:
|
||||
Blunt: 20
|
||||
Structural: 130
|
||||
- type: MovementSpeedModifier
|
||||
baseWalkSpeed: 3.2
|
||||
baseSprintSpeed: 4
|
||||
- type: Reflect
|
||||
reflectProb: 0.65
|
||||
spread: 180
|
||||
soundOnReflect: /Audio/Weapons/block_metal1.ogg
|
||||
reflects:
|
||||
- NonEnergy
|
||||
- Energy
|
||||
- type: MobThresholds
|
||||
currentThresholdState : Alive
|
||||
thresholds:
|
||||
0: Alive
|
||||
200: Critical
|
||||
showOverlays: false
|
||||
allowRevives: true
|
||||
- type: Tag
|
||||
tags:
|
||||
- DoorBumpOpener
|
||||
- FootstepSound
|
||||
- Phazon
|
||||
|
||||
- type: entity
|
||||
id: MechPhazonBattery
|
||||
parent: MechPhazon
|
||||
suffix: Battery
|
||||
components:
|
||||
- type: ContainerFill
|
||||
containers:
|
||||
mech-battery-slot:
|
||||
- PowerCageHigh
|
||||
|
||||
# Nanotrasen Combat Mechs
|
||||
|
||||
# NT Gygax
|
||||
- type: entity
|
||||
id: MechNTGygax
|
||||
parent: [ BaseMech, CombatMech, BaseRestrictedContraband ]
|
||||
name: Nanotrasen Special Gygax
|
||||
description: "Nanotrasen's trump card when solving problems. High durability, increased protection against shock, explosions, temperature, shots: conventional, laser and energy, as well as expanded equipment slots allow to turn the situation on the station upside down. Gas pedals consume a colossal amount of energy."
|
||||
components:
|
||||
- type: Sprite
|
||||
drawdepth: Mobs
|
||||
noRot: true
|
||||
sprite: Objects/Specific/Mech/gygax.rsi
|
||||
scale: 1.08, 1.08
|
||||
layers:
|
||||
- map: [ "enum.MechVisualLayers.Base" ]
|
||||
state: ntgygax
|
||||
- type: FootstepModifier
|
||||
footstepSoundCollection:
|
||||
path: /Audio/Mecha/sound_mecha_powerloader_step.ogg
|
||||
- type: Mech
|
||||
baseState: ntgygax
|
||||
openState: ntgygax-open
|
||||
brokenState: ntgygax-broken
|
||||
mechToPilotDamageMultiplier: 0.2
|
||||
airtight: true
|
||||
maxEquipmentAmount: 4
|
||||
pilotWhitelist:
|
||||
components:
|
||||
- HumanoidAppearance
|
||||
- type: MeleeWeapon
|
||||
hidden: true
|
||||
attackRate: 1
|
||||
damage:
|
||||
types:
|
||||
Blunt: 30
|
||||
Structural: 180
|
||||
- type: MovementSpeedModifier
|
||||
baseWalkSpeed: 2.4
|
||||
baseSprintSpeed: 3
|
||||
- type: Reflect
|
||||
reflectProb: 0.30
|
||||
spread: 180
|
||||
soundOnReflect: /Audio/Weapons/block_metal1.ogg
|
||||
reflects:
|
||||
- NonEnergy
|
||||
- type: Damageable
|
||||
damageModifierSet: MediumArmorNT
|
||||
- type: MobThresholds
|
||||
currentThresholdState : Alive
|
||||
thresholds:
|
||||
0: Alive
|
||||
400: Critical
|
||||
showOverlays: false
|
||||
allowRevives: true
|
||||
|
||||
- type: entity
|
||||
id: MechNTGygaxBattery
|
||||
parent: MechNTGygax
|
||||
suffix: Battery
|
||||
components:
|
||||
- type: ContainerFill
|
||||
containers:
|
||||
mech-battery-slot:
|
||||
- PowerCageHigh
|
||||
|
||||
- type: entity
|
||||
id: MechNTGygaxFilled
|
||||
parent: MechNTGygaxBattery
|
||||
suffix: Battery, Filled
|
||||
components:
|
||||
- type: Mech
|
||||
startingEquipment:
|
||||
- WeaponMechChainSword
|
||||
- WeaponMechCombatPulseRifle
|
||||
- WeaponMechCombatXray
|
||||
- WeaponMechCombatMissileRack6
|
||||
|
||||
# Marauder
|
||||
- type: entity
|
||||
id: MechMarauder
|
||||
|
|
@ -623,7 +897,6 @@
|
|||
brokenState: marauder-broken
|
||||
mechToPilotDamageMultiplier: 0.1
|
||||
airtight: true
|
||||
maxIntegrity: 500
|
||||
maxEquipmentAmount: 4
|
||||
pilotWhitelist:
|
||||
components:
|
||||
|
|
@ -646,9 +919,18 @@
|
|||
fuelCost: 30
|
||||
doAfterDelay: 15
|
||||
- type: Reflect
|
||||
reflectProb: 0.3
|
||||
reflectProb: 0.4
|
||||
spread: 180
|
||||
soundOnReflect: /Audio/Weapons/block_metal1.ogg
|
||||
reflects:
|
||||
- NonEnergy
|
||||
- type: MobThresholds
|
||||
currentThresholdState : Alive
|
||||
thresholds:
|
||||
0: Alive
|
||||
500: Critical
|
||||
showOverlays: false
|
||||
allowRevives: true
|
||||
|
||||
- type: entity
|
||||
id: MechMarauderBattery
|
||||
|
|
@ -677,7 +959,7 @@
|
|||
id: MechSeraph
|
||||
parent: [ BaseMech, CombatMech, BaseCentcommContraband ]
|
||||
name: Seraph
|
||||
description: That's the last thing you'll see. # Death Squad mech
|
||||
description: That's the last thing you'll see.
|
||||
components:
|
||||
- type: Sprite
|
||||
drawdepth: Mobs
|
||||
|
|
@ -696,7 +978,6 @@
|
|||
brokenState: seraph-broken
|
||||
mechToPilotDamageMultiplier: 0.05
|
||||
airtight: true
|
||||
maxIntegrity: 550
|
||||
maxEquipmentAmount: 5
|
||||
pilotWhitelist:
|
||||
components:
|
||||
|
|
@ -719,9 +1000,18 @@
|
|||
fuelCost: 30
|
||||
doAfterDelay: 20
|
||||
- type: Reflect
|
||||
reflectProb: 0.3
|
||||
reflectProb: 0.4
|
||||
spread: 180
|
||||
soundOnReflect: /Audio/Weapons/block_metal1.ogg
|
||||
reflects:
|
||||
- NonEnergy
|
||||
- type: MobThresholds
|
||||
currentThresholdState : Alive
|
||||
thresholds:
|
||||
0: Alive
|
||||
550: Critical
|
||||
showOverlays: false
|
||||
allowRevives: true
|
||||
|
||||
- type: entity
|
||||
id: MechSeraphBattery
|
||||
|
|
@ -758,7 +1048,7 @@
|
|||
- type: Sprite
|
||||
drawdepth: Mobs
|
||||
noRot: true
|
||||
sprite: Objects/Specific/Mech/mecha.rsi
|
||||
sprite: Objects/Specific/Mech/gygax.rsi
|
||||
scale: 1.08, 1.08
|
||||
layers:
|
||||
- map: [ "enum.MechVisualLayers.Base" ]
|
||||
|
|
@ -770,9 +1060,8 @@
|
|||
baseState: darkgygax
|
||||
openState: darkgygax-open
|
||||
brokenState: darkgygax-broken
|
||||
mechToPilotDamageMultiplier: 0.15
|
||||
mechToPilotDamageMultiplier: 0.2
|
||||
airtight: true
|
||||
maxIntegrity: 300
|
||||
maxEquipmentAmount: 4
|
||||
pilotWhitelist:
|
||||
components:
|
||||
|
|
@ -795,9 +1084,18 @@
|
|||
fuelCost: 40
|
||||
doAfterDelay: 20
|
||||
- type: Reflect
|
||||
reflectProb: 0.25
|
||||
reflectProb: 0.30
|
||||
spread: 180
|
||||
soundOnReflect: /Audio/Weapons/block_metal1.ogg
|
||||
reflects:
|
||||
- NonEnergy
|
||||
- type: MobThresholds
|
||||
currentThresholdState : Alive
|
||||
thresholds:
|
||||
0: Alive
|
||||
350: Critical
|
||||
showOverlays: false
|
||||
allowRevives: true
|
||||
|
||||
- type: entity
|
||||
id: MechGygaxSyndieBattery
|
||||
|
|
@ -817,9 +1115,86 @@
|
|||
- type: Mech
|
||||
startingEquipment:
|
||||
- WeaponMechChainSword
|
||||
- WeaponMechCombatShotgun
|
||||
- WeaponMechCombatMissileRack8
|
||||
- WeaponMechCombatTeslaCannon
|
||||
|
||||
# Rover
|
||||
- type: entity
|
||||
id: MechRoverSyndie
|
||||
parent: [ BaseMech, CombatMech, BaseSyndicateContraband ]
|
||||
name: Rover
|
||||
description: A modified Durand used for nefarious purposes. On the back of the armor plate there is an inscription "Cybersun Inc."
|
||||
components:
|
||||
- type: Sprite
|
||||
drawdepth: Mobs
|
||||
noRot: true
|
||||
sprite: Objects/Specific/Mech/durand.rsi
|
||||
scale: 1.08, 1.08
|
||||
layers:
|
||||
- map: [ "enum.MechVisualLayers.Base" ]
|
||||
state: darkdurand
|
||||
- type: FootstepModifier
|
||||
footstepSoundCollection:
|
||||
path: /Audio/Mecha/sound_mecha_powerloader_step.ogg
|
||||
- type: Mech
|
||||
baseState: darkdurand
|
||||
openState: darkdurand-open
|
||||
brokenState: darkdurand-broken
|
||||
mechToPilotDamageMultiplier: 0.15
|
||||
airtight: true
|
||||
maxEquipmentAmount: 5
|
||||
pilotWhitelist:
|
||||
components:
|
||||
- HumanoidAppearance
|
||||
- type: MeleeWeapon
|
||||
hidden: true
|
||||
attackRate: 1
|
||||
damage:
|
||||
types:
|
||||
Blunt: 30
|
||||
Structural: 200
|
||||
- type: MovementSpeedModifier
|
||||
baseWalkSpeed: 2
|
||||
baseSprintSpeed: 3
|
||||
- type: Damageable
|
||||
damageModifierSet: MediumArmorSyndi
|
||||
- type: CanMoveInAir
|
||||
- type: MovementAlwaysTouching
|
||||
- type: Repairable
|
||||
fuelCost: 30
|
||||
doAfterDelay: 20
|
||||
- type: Reflect
|
||||
reflectProb: 0.35
|
||||
spread: 180
|
||||
soundOnReflect: /Audio/Weapons/block_metal1.ogg
|
||||
reflects:
|
||||
- NonEnergy
|
||||
- type: MobThresholds
|
||||
currentThresholdState : Alive
|
||||
thresholds:
|
||||
0: Alive
|
||||
450: Critical
|
||||
showOverlays: false
|
||||
allowRevives: true
|
||||
|
||||
- type: entity
|
||||
id: MechRoverSyndieBattery
|
||||
parent: MechRoverSyndie
|
||||
suffix: Battery
|
||||
components:
|
||||
- type: ContainerFill
|
||||
containers:
|
||||
mech-battery-slot:
|
||||
- PowerCageHigh
|
||||
|
||||
- type: entity
|
||||
id: MechRoverSyndieFilled
|
||||
parent: MechRoverSyndieBattery
|
||||
suffix: Battery, Filled
|
||||
components:
|
||||
- type: Mech
|
||||
startingEquipment:
|
||||
- WeaponMechChainSword
|
||||
- WeaponMechCombatMissileRack8
|
||||
|
||||
# Mauler
|
||||
- type: entity
|
||||
|
|
@ -845,7 +1220,6 @@
|
|||
brokenState: mauler-broken
|
||||
mechToPilotDamageMultiplier: 0.1
|
||||
airtight: true
|
||||
maxIntegrity: 500
|
||||
maxEquipmentAmount: 5
|
||||
pilotWhitelist:
|
||||
components:
|
||||
|
|
@ -868,9 +1242,18 @@
|
|||
fuelCost: 50
|
||||
doAfterDelay: 25
|
||||
- type: Reflect
|
||||
reflectProb: 0.35
|
||||
reflectProb: 0.45
|
||||
spread: 180
|
||||
soundOnReflect: /Audio/Weapons/block_metal1.ogg
|
||||
reflects:
|
||||
- NonEnergy
|
||||
- type: MobThresholds
|
||||
currentThresholdState : Alive
|
||||
thresholds:
|
||||
0: Alive
|
||||
500: Critical
|
||||
showOverlays: false
|
||||
allowRevives: true
|
||||
|
||||
- type: entity
|
||||
id: MechMaulerSyndieBattery
|
||||
|
|
@ -890,7 +1273,4 @@
|
|||
- type: Mech
|
||||
startingEquipment:
|
||||
- WeaponMechChainSword
|
||||
- WeaponMechCombatUltraRifle
|
||||
- WeaponMechCombatShotgun
|
||||
- WeaponMechCombatMissileRack6
|
||||
- WeaponMechCombatTeslaCannon
|
||||
- WeaponMechCombatMissileRack6
|
||||
|
|
@ -88,6 +88,9 @@
|
|||
solutions:
|
||||
hypospray:
|
||||
maxVol: 3000
|
||||
- type: Hypospray
|
||||
onlyAffectsMobs: false
|
||||
pierceArmor: true
|
||||
- type: UseDelay
|
||||
delay: 0.0
|
||||
|
||||
|
|
@ -116,6 +119,7 @@
|
|||
transferAmount: 15
|
||||
onlyAffectsMobs: false
|
||||
injectOnly: true
|
||||
pierceArmor: true
|
||||
- type: Appearance
|
||||
- type: SolutionContainerVisuals
|
||||
maxFillLevels: 1
|
||||
|
|
|
|||
|
|
@ -199,8 +199,9 @@
|
|||
- type: Healing
|
||||
delay: 1
|
||||
damageContainers:
|
||||
- Synth
|
||||
- Synth #Sunrise-edit
|
||||
- Silicon
|
||||
- Mech #Sunrise-edit
|
||||
damage:
|
||||
types:
|
||||
Heat: -5
|
||||
|
|
|
|||
|
|
@ -361,6 +361,7 @@
|
|||
- DeviceQuantumSpinInverter
|
||||
- EnergyDomeDirectionalTurtle
|
||||
# Sunrise-start
|
||||
- MechPhasicScanningModule
|
||||
- HandCraftedNVD
|
||||
- BasicNVD
|
||||
- PowerCageHigh
|
||||
|
|
@ -527,6 +528,9 @@
|
|||
- GygaxCentralElectronics
|
||||
- GygaxPeripheralsElectronics
|
||||
- GygaxTargetingElectronics
|
||||
- PhazonCentralElectronics
|
||||
- PhazonPeripheralsElectronics
|
||||
- PhazonTargetingElectronics
|
||||
- DurandCentralElectronics
|
||||
- DurandPeripheralsElectronics
|
||||
- DurandTargetingElectronics
|
||||
|
|
@ -721,6 +725,13 @@
|
|||
- GygaxLLeg
|
||||
- GygaxRArm
|
||||
- GygaxRLeg
|
||||
- PhazonHarness
|
||||
- PhazonArmor
|
||||
- PhazonHead
|
||||
- PhazonLArm
|
||||
- PhazonLLeg
|
||||
- PhazonRArm
|
||||
- PhazonRLeg
|
||||
- MechEquipmentDrill
|
||||
- MechEquipmentDrillDiamond
|
||||
- MechEquipmentKineticAccelerator
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
- type: Tag
|
||||
tags:
|
||||
- ForceableFollow
|
||||
- AnomalyCore #Sunrise-edit
|
||||
- type: AnomalyCore
|
||||
timeToDecay: 600
|
||||
startPrice: 10000
|
||||
|
|
|
|||
|
|
@ -84,11 +84,11 @@
|
|||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 10
|
||||
|
||||
- component: PowerCell
|
||||
name: power cell
|
||||
- tag: PowerCage
|
||||
name: power cage
|
||||
store: battery-container
|
||||
icon:
|
||||
sprite: Objects/Power/power_cells.rsi
|
||||
sprite: Objects/Power/power_cages.rsi
|
||||
state: small
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
|
|
|
|||
|
|
@ -97,11 +97,11 @@
|
|||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 11
|
||||
|
||||
- component: PowerCell
|
||||
name: step-powercell-name
|
||||
- tag: PowerCage
|
||||
name: step-powercage-name
|
||||
store: battery-container
|
||||
icon:
|
||||
sprite: Objects/Power/power_cells.rsi
|
||||
sprite: Objects/Power/power_cages.rsi
|
||||
state: small
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
|
|
|
|||
|
|
@ -97,11 +97,11 @@
|
|||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 11
|
||||
|
||||
- component: PowerCell
|
||||
name: step-powercell-name
|
||||
- tag: PowerCage
|
||||
name: step-powercage-name
|
||||
store: battery-container
|
||||
icon:
|
||||
sprite: Objects/Power/power_cells.rsi
|
||||
sprite: Objects/Power/power_cages.rsi
|
||||
state: small
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
|
|
|
|||
|
|
@ -70,11 +70,11 @@
|
|||
#i omitted the steps involving inserting machine parts because
|
||||
#currently mechs don't support upgrading. add them back in once that's squared away.
|
||||
|
||||
- component: PowerCell
|
||||
name: step-powercell-name
|
||||
- tag: PowerCage
|
||||
name: step-powercage-name
|
||||
store: battery-container
|
||||
icon:
|
||||
sprite: Objects/Power/power_cells.rsi
|
||||
sprite: Objects/Power/power_cages.rsi
|
||||
state: small
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
|
|
|
|||
|
|
@ -67,11 +67,11 @@
|
|||
#i omitted the steps involving inserting machine parts because
|
||||
#currently mechs don't support upgrading. add them back in once that's squared away.
|
||||
|
||||
- component: PowerCell
|
||||
name: step-powercell-name
|
||||
- tag: PowerCage
|
||||
name: step-powercage-name
|
||||
store: battery-container
|
||||
icon:
|
||||
sprite: Objects/Power/power_cells.rsi
|
||||
sprite: Objects/Power/power_cages.rsi
|
||||
state: small
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
|
|
|
|||
|
|
@ -0,0 +1,215 @@
|
|||
- type: constructionGraph
|
||||
id: Phazon
|
||||
start: start
|
||||
graph:
|
||||
- node: start
|
||||
edges:
|
||||
- to: phazon
|
||||
steps:
|
||||
- tool: Anchoring
|
||||
doAfter: 1
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 1
|
||||
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 2
|
||||
|
||||
- material: Cable
|
||||
amount: 4
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 3
|
||||
|
||||
- tool: Cutting
|
||||
doAfter: 1
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 4
|
||||
|
||||
- tag: PhazonCentralControlModule
|
||||
name: phazon central control module
|
||||
icon:
|
||||
sprite: "Objects/Misc/module.rsi"
|
||||
state: "mainboard"
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 5
|
||||
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 6
|
||||
|
||||
- tag: PhazonPeripheralsControlModule
|
||||
name: phazon peripherals control module
|
||||
icon:
|
||||
sprite: "Objects/Misc/module.rsi"
|
||||
state: id_mod
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 7
|
||||
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 8
|
||||
|
||||
- tag: PhazonTargetingControlModule
|
||||
name: phazon weapon control and targeting module
|
||||
icon:
|
||||
sprite: "Objects/Misc/module.rsi"
|
||||
state: mcontroller
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 9
|
||||
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 10
|
||||
|
||||
- tag: MechPhasicScanningModule
|
||||
name: phasic scanning module
|
||||
icon:
|
||||
sprite: "Objects/Specific/Mech/mecha_equipment.rsi"
|
||||
state: triphasic_scan_module
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 11
|
||||
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 12
|
||||
|
||||
- tag: CapacitorStockPart
|
||||
name: capacitor
|
||||
icon:
|
||||
sprite: Objects/Misc/stock_parts.rsi
|
||||
state: capacitor
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 13
|
||||
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 14
|
||||
|
||||
- tag: AnomalyCore
|
||||
name: any anomaly core
|
||||
icon:
|
||||
sprite: "Structures/Specific/Anomalies/Cores/gravity_core.rsi"
|
||||
state: core
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 15
|
||||
|
||||
- tag: PowerCage
|
||||
name: power cage
|
||||
store: battery-container
|
||||
icon:
|
||||
sprite: Objects/Power/power_cages.rsi
|
||||
state: small
|
||||
|
||||
- material: Cable
|
||||
amount: 4
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 16
|
||||
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 17
|
||||
|
||||
- material: Plasteel
|
||||
amount: 5
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 18
|
||||
|
||||
- tool: Anchoring
|
||||
doAfter: 1
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 19
|
||||
|
||||
- tool: Welding
|
||||
doAfter: 1
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 20
|
||||
|
||||
- tag: MechAirTank
|
||||
name: exosuit air tank
|
||||
icon:
|
||||
sprite: Objects/Specific/Mech/mecha_equipment.rsi
|
||||
state: mecha_air_tank
|
||||
|
||||
- tool: Anchoring
|
||||
doAfter: 1
|
||||
|
||||
- tag: MechThruster
|
||||
name: exosuit thruster
|
||||
icon:
|
||||
sprite: Objects/Specific/Mech/mecha_equipment.rsi
|
||||
state: mecha_bin
|
||||
|
||||
- tool: Anchoring
|
||||
doAfter: 1
|
||||
|
||||
- tag: PhazonArmor
|
||||
name: phazon armor plates
|
||||
icon:
|
||||
sprite: "Objects/Specific/Mech/phazon_construction.rsi"
|
||||
state: phazon_armor
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 21
|
||||
|
||||
- tool: Anchoring
|
||||
doAfter: 2
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 22
|
||||
|
||||
- tool: Welding
|
||||
doAfter: 1
|
||||
|
||||
- node: phazon
|
||||
actions:
|
||||
- !type:BuildMech
|
||||
mechPrototype: MechPhazon
|
||||
|
|
@ -70,11 +70,11 @@
|
|||
#i omitted the steps involving inserting machine parts because
|
||||
#currently mechs don't support upgrading. add them back in once that's squared away.
|
||||
|
||||
- component: PowerCell
|
||||
name: step-powercell-name
|
||||
- tag: PowerCage
|
||||
name: step-powercage-name
|
||||
store: battery-container
|
||||
icon:
|
||||
sprite: Objects/Power/power_cells.rsi
|
||||
sprite: Objects/Power/power_cages.rsi
|
||||
state: small
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
|
|
|
|||
|
|
@ -67,11 +67,11 @@
|
|||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 8
|
||||
|
||||
- component: PowerCell
|
||||
name: step-powercell-name
|
||||
- tag: PowerCage
|
||||
name: step-powercage-name
|
||||
store: battery-container
|
||||
icon:
|
||||
sprite: Objects/Power/power_cells.rsi
|
||||
sprite: Objects/Power/power_cages.rsi
|
||||
state: small
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
|
|
|
|||
|
|
@ -15,11 +15,11 @@
|
|||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 1
|
||||
- component: PowerCell
|
||||
name: step-powercell-name
|
||||
- tag: PowerCage
|
||||
name: step-powercage-name
|
||||
store: battery-container
|
||||
icon:
|
||||
sprite: Objects/Power/power_cells.rsi
|
||||
sprite: Objects/Power/power_cages.rsi
|
||||
state: small
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
|
|
|
|||
|
|
@ -72,6 +72,10 @@
|
|||
- type: latheCategory
|
||||
id: Durand
|
||||
name: lathe-category-mechs-durand
|
||||
|
||||
- type: latheCategory
|
||||
id: Phazon
|
||||
name: lathe-category-mechs-phazon
|
||||
|
||||
- type: latheCategory
|
||||
id: MechEquipment
|
||||
|
|
|
|||
|
|
@ -377,6 +377,21 @@
|
|||
parent: BaseGoldCircuitboardRecipe
|
||||
id: GygaxTargetingElectronics
|
||||
result: GygaxTargetingElectronics
|
||||
|
||||
- type: latheRecipe
|
||||
parent: BaseGoldCircuitboardRecipe
|
||||
id: PhazonCentralElectronics
|
||||
result: PhazonCentralElectronics
|
||||
|
||||
- type: latheRecipe
|
||||
parent: BaseGoldCircuitboardRecipe
|
||||
id: PhazonPeripheralsElectronics
|
||||
result: PhazonPeripheralsElectronics
|
||||
|
||||
- type: latheRecipe
|
||||
parent: BaseGoldCircuitboardRecipe
|
||||
id: PhazonTargetingElectronics
|
||||
result: PhazonTargetingElectronics
|
||||
|
||||
- type: latheRecipe
|
||||
parent: BaseSilverCircuitboardRecipe
|
||||
|
|
|
|||
|
|
@ -340,6 +340,72 @@
|
|||
materials:
|
||||
Steel: 500
|
||||
Glass: 200
|
||||
|
||||
#Phazon
|
||||
|
||||
- type: latheRecipe
|
||||
id: PhazonHarness
|
||||
result: PhazonHarness
|
||||
category: Phazon
|
||||
completetime: 10
|
||||
materials:
|
||||
Steel: 2500
|
||||
Glass: 2000
|
||||
|
||||
- type: latheRecipe
|
||||
id: PhazonArmor
|
||||
result: PhazonArmorPlate
|
||||
category: Phazon
|
||||
completetime: 10
|
||||
materials:
|
||||
Steel: 3000
|
||||
Plasma: 1000
|
||||
|
||||
- type: latheRecipe
|
||||
id: PhazonHead
|
||||
result: PhazonHead
|
||||
category: Phazon
|
||||
completetime: 10
|
||||
materials:
|
||||
Steel: 1500
|
||||
Glass: 250
|
||||
Plasma: 500
|
||||
|
||||
- type: latheRecipe
|
||||
id: PhazonLArm
|
||||
result: PhazonLArm
|
||||
category: Phazon
|
||||
completetime: 10
|
||||
materials:
|
||||
Steel: 1100
|
||||
Plasma: 250
|
||||
|
||||
- type: latheRecipe
|
||||
id: PhazonLLeg
|
||||
result: PhazonLLeg
|
||||
category: Phazon
|
||||
completetime: 10
|
||||
materials:
|
||||
Steel: 1100
|
||||
Plasma: 250
|
||||
|
||||
- type: latheRecipe
|
||||
id: PhazonRLeg
|
||||
result: PhazonRLeg
|
||||
category: Phazon
|
||||
completetime: 10
|
||||
materials:
|
||||
Steel: 1100
|
||||
Plasma: 250
|
||||
|
||||
- type: latheRecipe
|
||||
id: PhazonRArm
|
||||
result: PhazonRArm
|
||||
category: Phazon
|
||||
completetime: 10
|
||||
materials:
|
||||
Steel: 1100
|
||||
Plasma: 250
|
||||
|
||||
|
||||
# Equipment
|
||||
|
|
@ -409,6 +475,16 @@
|
|||
Bananium: 300
|
||||
|
||||
# Misc
|
||||
- type: latheRecipe
|
||||
id: MechPhasicScanningModule
|
||||
result: MechPhasicScanningModule
|
||||
category: MechEquipment
|
||||
completetime: 10
|
||||
materials:
|
||||
Steel: 2000
|
||||
Glass: 500
|
||||
Silver: 100
|
||||
|
||||
- type: latheRecipe
|
||||
id: MechAirTank
|
||||
result: MechAirTank
|
||||
|
|
|
|||
|
|
@ -127,6 +127,30 @@
|
|||
|
||||
# Tier 3
|
||||
|
||||
- type: technology
|
||||
id: Phazon
|
||||
name: research-technology-phazon
|
||||
icon:
|
||||
sprite: Objects/Specific/Mech/mecha.rsi
|
||||
state: phazon
|
||||
discipline: Experimental
|
||||
tier: 3
|
||||
cost: 20000
|
||||
recipeUnlocks:
|
||||
- MechPhasicScanningModule
|
||||
- PhazonHarness
|
||||
- PhazonArmor
|
||||
- PhazonHead
|
||||
- PhazonLArm
|
||||
- PhazonLLeg
|
||||
- PhazonRArm
|
||||
- PhazonRLeg
|
||||
- PhazonCentralElectronics
|
||||
- PhazonPeripheralsElectronics
|
||||
- PhazonTargetingElectronics
|
||||
technologyPrerequisites:
|
||||
- Ripley2
|
||||
|
||||
- type: technology
|
||||
id: GravityManipulation
|
||||
name: research-technology-gravity-manipulation
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@
|
|||
id: RipleyAPLU
|
||||
name: research-technology-ripley-aplu
|
||||
icon:
|
||||
sprite: Objects/Specific/Mech/mecha.rsi
|
||||
sprite: Objects/Specific/Mech/ripley.rsi
|
||||
state: ripley
|
||||
discipline: Industrial
|
||||
tier: 1
|
||||
|
|
@ -190,7 +190,7 @@
|
|||
id: Ripley2
|
||||
name: research-technology-ripley-mkii
|
||||
icon:
|
||||
sprite: Objects/Specific/Mech/mecha.rsi
|
||||
sprite: Objects/Specific/Mech/ripley.rsi
|
||||
state: ripleymkii
|
||||
discipline: Industrial
|
||||
tier: 2
|
||||
|
|
@ -205,7 +205,7 @@
|
|||
id: Clarke
|
||||
name: research-technology-clarke
|
||||
icon:
|
||||
sprite: Objects/Specific/Mech/mecha.rsi
|
||||
sprite: Objects/Specific/Mech/clarke.rsi
|
||||
state: clarke
|
||||
discipline: Industrial
|
||||
tier: 2
|
||||
|
|
|
|||
|
|
@ -77,22 +77,22 @@
|
|||
- type: storeCategory
|
||||
id: UplinkAllies
|
||||
name: store-category-allies
|
||||
priority: 8
|
||||
priority: 9 #Sunrise-mechs
|
||||
|
||||
- type: storeCategory
|
||||
id: UplinkJob
|
||||
name: store-category-job
|
||||
priority: 9
|
||||
priority: 10 #Sunrise-mechs
|
||||
|
||||
- type: storeCategory
|
||||
id: UplinkPointless
|
||||
name: store-category-pointless
|
||||
priority: 10
|
||||
priority: 11 #Sunrise-mechs
|
||||
|
||||
- type: storeCategory
|
||||
id: UplinkObjectives
|
||||
name: store-category-objectives
|
||||
priority: 11
|
||||
priority: 12 #Sunrise-mechs
|
||||
|
||||
#revenant
|
||||
- type: storeCategory
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
- UplinkJob
|
||||
- UplinkPointless
|
||||
- UplinkObjectives
|
||||
- UplinkMechs #Sunrise-mechs
|
||||
currencyWhitelist:
|
||||
- Telecrystal
|
||||
balance:
|
||||
|
|
|
|||
|
|
@ -389,4 +389,200 @@
|
|||
cost:
|
||||
Telecrystal: 8
|
||||
categories:
|
||||
- UplinkChemicals
|
||||
- UplinkChemicals
|
||||
|
||||
# Mechs
|
||||
|
||||
- type: listing
|
||||
id: UplinkDarkGygax
|
||||
name: uplink-mech-teleporter-assault-name
|
||||
description: uplink-mech-teleporter-assault-desc
|
||||
icon: { sprite: /Textures/Objects/Specific/Mech/mecha.rsi, state: darkgygax }
|
||||
productEntity: CrateCybersunDarkGygaxBundle
|
||||
cost:
|
||||
Telecrystal: 65
|
||||
categories:
|
||||
- UplinkMechs
|
||||
conditions:
|
||||
- !type:StoreWhitelistCondition
|
||||
whitelist:
|
||||
tags:
|
||||
- NukeOpsUplink
|
||||
|
||||
- type: listing
|
||||
id: UplinkRover
|
||||
name: uplink-mech-teleporter-medium-name
|
||||
description: uplink-mech-teleporter-medium-desc
|
||||
icon: { sprite: /Textures/Objects/Specific/Mech/mecha.rsi, state: rover }
|
||||
productEntity: CrateCybersunRoverBundle
|
||||
cost:
|
||||
Telecrystal: 75
|
||||
categories:
|
||||
- UplinkMechs
|
||||
conditions:
|
||||
- !type:StoreWhitelistCondition
|
||||
whitelist:
|
||||
tags:
|
||||
- NukeOpsUplink
|
||||
|
||||
- type: listing
|
||||
id: UplinkMauler
|
||||
name: uplink-mech-teleporter-heavy-name
|
||||
description: uplink-mech-teleporter-heavy-desc
|
||||
icon: { sprite: /Textures/Objects/Specific/Mech/mecha.rsi, state: mauler }
|
||||
productEntity: CrateCybersunMaulerBundle
|
||||
cost:
|
||||
Telecrystal: 90
|
||||
categories:
|
||||
- UplinkMechs
|
||||
conditions:
|
||||
- !type:StoreWhitelistCondition
|
||||
whitelist:
|
||||
tags:
|
||||
- NukeOpsUplink
|
||||
|
||||
# Mechs equipment
|
||||
|
||||
- type: listing
|
||||
id: UplinkMechImmolationGun
|
||||
name: uplink-mech-equipment-immolation-gun-name
|
||||
description: uplink-mech-equipment-immolation-gun-desc
|
||||
icon: { sprite: /Textures/Objects/Specific/Mech/mecha_equipment.rsi, state: mecha_laser }
|
||||
productEntity: WeaponMechCombatImmolationGun
|
||||
cost:
|
||||
Telecrystal: 7
|
||||
categories:
|
||||
- UplinkMechs
|
||||
conditions:
|
||||
- !type:StoreWhitelistCondition
|
||||
whitelist:
|
||||
tags:
|
||||
- NukeOpsUplink
|
||||
|
||||
- type: listing
|
||||
id: UplinkMechTeslaCannon
|
||||
name: uplink-mech-equipment-tesla-cannon-name
|
||||
description: uplink-mech-equipment-tesla-cannon-desc
|
||||
icon: { sprite: /Textures/Objects/Specific/Mech/mecha_equipment.rsi, state: mecha_wholegen }
|
||||
productEntity: WeaponMechCombatTeslaCannon
|
||||
cost:
|
||||
Telecrystal: 15
|
||||
categories:
|
||||
- UplinkMechs
|
||||
conditions:
|
||||
- !type:StoreWhitelistCondition
|
||||
whitelist:
|
||||
tags:
|
||||
- NukeOpsUplink
|
||||
|
||||
- type: listing
|
||||
id: UplinkMechShotgun
|
||||
name: uplink-mech-equipment-shotgun-name
|
||||
description: uplink-mech-equipment-shotgun-desc
|
||||
icon: { sprite: /Textures/Objects/Specific/Mech/mecha_equipment.rsi, state: mecha_scatter }
|
||||
productEntity: WeaponMechCombatShotgun
|
||||
cost:
|
||||
Telecrystal: 7
|
||||
categories:
|
||||
- UplinkMechs
|
||||
conditions:
|
||||
- !type:StoreWhitelistCondition
|
||||
whitelist:
|
||||
tags:
|
||||
- NukeOpsUplink
|
||||
|
||||
- type: listing
|
||||
id: UplinkMechShotgunIncendiary
|
||||
name: uplink-mech-equipment-shotgun-incendiary-name
|
||||
description: uplink-mech-equipment-shotgun-incendiary-desc
|
||||
icon: { sprite: /Textures/Objects/Specific/Mech/mecha_equipment.rsi, state: mecha_carbine }
|
||||
productEntity: WeaponMechCombatShotgunIncendiary
|
||||
cost:
|
||||
Telecrystal: 12
|
||||
categories:
|
||||
- UplinkMechs
|
||||
conditions:
|
||||
- !type:StoreWhitelistCondition
|
||||
whitelist:
|
||||
tags:
|
||||
- NukeOpsUplink
|
||||
|
||||
- type: listing
|
||||
id: UplinkMechUltraRifle
|
||||
name: uplink-mech-equipment-ultra-rifle-name
|
||||
description: uplink-mech-equipment-ultra-rifle-desc
|
||||
icon: { sprite: /Textures/Objects/Specific/Mech/mecha_equipment.rsi, state: mecha_uac2 }
|
||||
productEntity: WeaponMechCombatUltraRifle
|
||||
cost:
|
||||
Telecrystal: 10
|
||||
categories:
|
||||
- UplinkMechs
|
||||
conditions:
|
||||
- !type:StoreWhitelistCondition
|
||||
whitelist:
|
||||
tags:
|
||||
- NukeOpsUplink
|
||||
|
||||
- type: listing
|
||||
id: UplinkMechIon
|
||||
name: uplink-mech-equipment-ion-name
|
||||
description: uplink-mech-equipment-ion-desc
|
||||
icon: { sprite: /Textures/Objects/Specific/Mech/mecha_equipment.rsi, state: mecha_ion }
|
||||
productEntity: WeaponMechCombatIon
|
||||
cost:
|
||||
Telecrystal: 12
|
||||
categories:
|
||||
- UplinkMechs
|
||||
conditions:
|
||||
- !type:StoreWhitelistCondition
|
||||
whitelist:
|
||||
tags:
|
||||
- NukeOpsUplink
|
||||
|
||||
- type: listing
|
||||
id: UplinkMechAMLG90
|
||||
name: uplink-mech-equipment-amlg90-name
|
||||
description: uplink-mech-equipment-amlg90-desc
|
||||
icon: { sprite: /Textures/Objects/Specific/Mech/mecha_equipment.rsi, state: mecha_amlg90 }
|
||||
productEntity: WeaponMechCombatAMLG90
|
||||
cost:
|
||||
Telecrystal: 15
|
||||
categories:
|
||||
- UplinkMechs
|
||||
conditions:
|
||||
- !type:StoreWhitelistCondition
|
||||
whitelist:
|
||||
tags:
|
||||
- NukeOpsUplink
|
||||
|
||||
- type: listing
|
||||
id: UplinkMechVindictor
|
||||
name: uplink-mech-equipment-vindictor-name
|
||||
description: uplink-mech-equipment-vindictor-desc
|
||||
icon: { sprite: /Textures/_Sunrise/Objects/Specific/Mech/mecha_vindictor.rsi, state: mecha_vindictor }
|
||||
productEntity: WeaponMechCombatVindictor
|
||||
cost:
|
||||
Telecrystal: 30
|
||||
categories:
|
||||
- UplinkMechs
|
||||
conditions:
|
||||
- !type:StoreWhitelistCondition
|
||||
whitelist:
|
||||
tags:
|
||||
- NukeOpsUplink
|
||||
|
||||
- type: listing
|
||||
id: UplinkMechUVM31
|
||||
name: uplink-mech-equipment-uvm31-name
|
||||
description: uplink-mech-equipment-uvm31-desc
|
||||
icon: { sprite: /Textures/_Sunrise/Objects/Specific/Mech/mecha_uvm31.rsi, state: mecha_uvm31 }
|
||||
productEntity: WeaponMechCombatUVM31
|
||||
cost:
|
||||
Telecrystal: 20
|
||||
categories:
|
||||
- UplinkMechs
|
||||
conditions:
|
||||
- !type:StoreWhitelistCondition
|
||||
whitelist:
|
||||
tags:
|
||||
- NukeOpsUplink
|
||||
|
|
|
|||
|
|
@ -6,3 +6,12 @@
|
|||
- Heat
|
||||
- Shock
|
||||
- Caustic
|
||||
|
||||
- type: damageContainer
|
||||
id: Mech
|
||||
supportedGroups:
|
||||
- Brute
|
||||
supportedTypes:
|
||||
- Heat
|
||||
- Shock
|
||||
- Caustic
|
||||
|
|
|
|||
|
|
@ -126,6 +126,7 @@
|
|||
- CanPilot
|
||||
- FootstepSound
|
||||
- DoorBumpOpener
|
||||
- NoInjectable
|
||||
- type: CollectiveMind
|
||||
minds:
|
||||
- Xeno
|
||||
|
|
|
|||
|
|
@ -226,6 +226,82 @@
|
|||
id: HandheldRoboAnalyzerUnpowered
|
||||
parent: BaseHandheldRoboAnalyzer
|
||||
suffix: Handheld, Unpowered
|
||||
|
||||
# Handheld Mech Analyzer
|
||||
|
||||
- type: entity
|
||||
id: BaseHandheldMechAnalyzer
|
||||
parent: BaseItem
|
||||
name: mech analyzer
|
||||
description: A hand-held mech scaner.
|
||||
abstract: true
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Specific/Mech/mecha_equipment.rsi
|
||||
state: mecha_analyzer
|
||||
layers:
|
||||
- state: mecha_analyzer
|
||||
- state: mecha_analyzer_anim
|
||||
shader: unshaded
|
||||
visible: true
|
||||
map: [ "enum.PowerDeviceVisualLayers.Powered" ]
|
||||
- type: Item
|
||||
storedRotation: -90
|
||||
- type: ActivatableUI
|
||||
key: enum.HealthAnalyzerUiKey.Key
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
enum.HealthAnalyzerUiKey.Key:
|
||||
type: HealthAnalyzerBoundUserInterface
|
||||
- type: HealthAnalyzer
|
||||
scanningEndSound:
|
||||
path: "/Audio/Items/Medical/healthscanner.ogg"
|
||||
damageContainers:
|
||||
- Mech
|
||||
- type: Tag
|
||||
tags:
|
||||
- DiscreteHealthAnalyzer
|
||||
- type: Appearance
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.PowerCellSlotVisuals.Enabled:
|
||||
enum.PowerDeviceVisualLayers.Powered:
|
||||
True: { visible: true }
|
||||
False: { visible: false }
|
||||
- type: GuideHelp
|
||||
guides:
|
||||
- Robotics
|
||||
|
||||
- type: entity
|
||||
id: HandheldMechAnalyzer
|
||||
parent:
|
||||
- BaseHandheldMechAnalyzer
|
||||
- BaseHandheldComputer
|
||||
suffix: HandHeld, Powered
|
||||
|
||||
- type: entity
|
||||
id: HandheldMechAnalyzerEmpty
|
||||
parent: HandheldMechAnalyzer
|
||||
suffix: HandHeld, Empty
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Specific/Mech/mecha_equipment.rsi
|
||||
state: mecha_analyzer
|
||||
layers:
|
||||
- state: mecha_analyzer
|
||||
- state: mecha_analyzer_anim
|
||||
shader: unshaded
|
||||
visible: false
|
||||
map: [ "enum.PowerDeviceVisualLayers.Powered" ]
|
||||
- type: ItemSlots
|
||||
slots:
|
||||
cell_slot:
|
||||
name: power-cell-slot-component-slot-name-default
|
||||
|
||||
- type: entity
|
||||
id: HandheldMechAnalyzerUnpowered
|
||||
parent: BaseHandheldMechAnalyzer
|
||||
suffix: Handheld, Unpowered
|
||||
|
||||
# Handheld Camera
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,434 @@
|
|||
# Base Paints
|
||||
- type: entity
|
||||
parent: BaseItem
|
||||
id: MechPaintBase
|
||||
name: mech spray paint
|
||||
description: A tin of mech spray paint.
|
||||
categories: [ HideSpawnMenu ]
|
||||
components:
|
||||
- type: Appearance
|
||||
- type: Sprite
|
||||
sprite: Objects/Fun/spraycans.rsi
|
||||
state: clown_cap
|
||||
layers:
|
||||
- state: clown_cap
|
||||
map: ["enum.OpenableVisuals.Layer"]
|
||||
- type: MechPaint
|
||||
used: false
|
||||
whitelist:
|
||||
tags:
|
||||
- Gygax
|
||||
baseState: gygax
|
||||
openState: gygax-open
|
||||
brokenState: gygax-broken
|
||||
- type: Item
|
||||
sprite: Objects/Fun/spraycans.rsi
|
||||
heldPrefix: spray
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
maxVol: 50
|
||||
reagents:
|
||||
- ReagentId: SpaceGlue
|
||||
Quantity: 50
|
||||
- type: TrashOnSolutionEmpty
|
||||
solution: drink
|
||||
- type: Sealable
|
||||
- type: Openable
|
||||
sound:
|
||||
path: /Audio/Effects/pop_high.ogg
|
||||
closeable: true
|
||||
closeSound:
|
||||
path: /Audio/Effects/pop_high.ogg
|
||||
|
||||
# Paints
|
||||
|
||||
# Ripley-Aluminizer
|
||||
- type: entity
|
||||
parent: MechPaintBase
|
||||
suffix: DEBUG, Ripley, Aluminizer
|
||||
id: MechPaintClarkeOrangey
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi
|
||||
state: aluminizer-cap
|
||||
layers:
|
||||
- state: aluminizer-cap
|
||||
map: ["enum.OpenableVisuals.Layer"]
|
||||
- type: Item
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi
|
||||
heldPrefix: aluminizer
|
||||
- type: MechPaint
|
||||
used: false
|
||||
whitelist:
|
||||
tags:
|
||||
- Ripley
|
||||
baseState: aluminizer
|
||||
openState: aluminizer-open
|
||||
brokenState: aluminizer-broken
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.OpenableVisuals.Opened:
|
||||
enum.OpenableVisuals.Layer:
|
||||
True: {state: "aluminizer"}
|
||||
False: {state: "aluminizer-cap"}
|
||||
|
||||
# Ripley-Combat Ripley
|
||||
- type: entity
|
||||
parent: MechPaintBase
|
||||
suffix: DEBUG, Ripley, Combat Ripley
|
||||
id: MechPaintRipleyCombatRipley
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi
|
||||
state: combat-ripley-cap
|
||||
layers:
|
||||
- state: combat-ripley-cap
|
||||
map: ["enum.OpenableVisuals.Layer"]
|
||||
- type: Item
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi
|
||||
heldPrefix: combat-ripley
|
||||
- type: MechPaint
|
||||
used: false
|
||||
whitelist:
|
||||
tags:
|
||||
- Ripley
|
||||
baseState: combatripley
|
||||
openState: combatripley-open
|
||||
brokenState: combatripley-broken
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.OpenableVisuals.Opened:
|
||||
enum.OpenableVisuals.Layer:
|
||||
True: {state: "combat-ripley"}
|
||||
False: {state: "combat-ripley-cap"}
|
||||
|
||||
# Ripley-Firestarter
|
||||
- type: entity
|
||||
parent: MechPaintBase
|
||||
suffix: DEBUG, Ripley, Firestarter
|
||||
id: MechPaintRipleyFirestarter
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi
|
||||
state: firestarter-cap
|
||||
layers:
|
||||
- state: firestarter-cap
|
||||
map: ["enum.OpenableVisuals.Layer"]
|
||||
- type: Item
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi
|
||||
heldPrefix: firestarter
|
||||
- type: MechPaint
|
||||
used: false
|
||||
whitelist:
|
||||
tags:
|
||||
- Ripley
|
||||
baseState: ripley_flames_red
|
||||
openState: ripley_flames_red-open
|
||||
brokenState: ripley_flames_red-broken
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.OpenableVisuals.Opened:
|
||||
enum.OpenableVisuals.Layer:
|
||||
True: {state: "firestarter"}
|
||||
False: {state: "firestarter-cap"}
|
||||
|
||||
# Ripley-Hauler
|
||||
- type: entity
|
||||
parent: MechPaintBase
|
||||
suffix: DEBUG, Ripley, Hauler
|
||||
id: MechPaintRipleyHauler
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi
|
||||
state: hauler-cap
|
||||
layers:
|
||||
- state: hauler-cap
|
||||
map: ["enum.OpenableVisuals.Layer"]
|
||||
- type: Item
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi
|
||||
heldPrefix: hauler
|
||||
- type: MechPaint
|
||||
used: false
|
||||
whitelist:
|
||||
tags:
|
||||
- Ripley
|
||||
baseState: hauler
|
||||
openState: hauler-open
|
||||
brokenState: hauler-broken
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.OpenableVisuals.Opened:
|
||||
enum.OpenableVisuals.Layer:
|
||||
True: {state: "hauler"}
|
||||
False: {state: "hauler-cap"}
|
||||
|
||||
# Ripley-Reaper
|
||||
- type: entity
|
||||
parent: MechPaintBase
|
||||
suffix: DEBUG, Ripley, Reaper
|
||||
id: MechPaintRipleyReaper
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi
|
||||
state: reaper-cap
|
||||
layers:
|
||||
- state: reaper-cap
|
||||
map: ["enum.OpenableVisuals.Layer"]
|
||||
- type: Item
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi
|
||||
heldPrefix: reaper
|
||||
- type: MechPaint
|
||||
used: false
|
||||
whitelist:
|
||||
tags:
|
||||
- Ripley
|
||||
baseState: deathripley
|
||||
openState: deathripley-open
|
||||
brokenState: deathripley-broken
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.OpenableVisuals.Opened:
|
||||
enum.OpenableVisuals.Layer:
|
||||
True: {state: "reaper"}
|
||||
False: {state: "reaper-cap"}
|
||||
|
||||
# Ripley-Zairjah
|
||||
- type: entity
|
||||
parent: MechPaintBase
|
||||
suffix: DEBUG, Ripley, Zairjah
|
||||
id: MechPaintRipleyZairjah
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi
|
||||
state: zairjah-cap
|
||||
layers:
|
||||
- state: zairjah-cap
|
||||
map: ["enum.OpenableVisuals.Layer"]
|
||||
- type: Item
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/ripley.rsi
|
||||
heldPrefix: zairjah
|
||||
- type: MechPaint
|
||||
used: false
|
||||
whitelist:
|
||||
tags:
|
||||
- Ripley
|
||||
baseState: ripley_zairjah
|
||||
openState: ripley_zairjah-open
|
||||
brokenState: ripley_zairjah-broken
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.OpenableVisuals.Opened:
|
||||
enum.OpenableVisuals.Layer:
|
||||
True: {state: "zairjah"}
|
||||
False: {state: "zairjah-cap"}
|
||||
|
||||
# Clarke-Orangey
|
||||
- type: entity
|
||||
parent: MechPaintBase
|
||||
suffix: DEBUG, Clarke, Orangey
|
||||
id: MechPaintClarkeOrangey
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/clarke.rsi
|
||||
state: orangey-cap
|
||||
layers:
|
||||
- state: orangey-cap
|
||||
map: ["enum.OpenableVisuals.Layer"]
|
||||
- type: Item
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/clarke.rsi
|
||||
heldPrefix: orangey
|
||||
- type: MechPaint
|
||||
used: false
|
||||
whitelist:
|
||||
tags:
|
||||
- Clarke
|
||||
baseState: orangey
|
||||
openState: orangey-open
|
||||
brokenState: orangey-broken
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.OpenableVisuals.Opened:
|
||||
enum.OpenableVisuals.Layer:
|
||||
True: {state: "orangey"}
|
||||
False: {state: "orangey-cap"}
|
||||
|
||||
# Gygax-Molot
|
||||
- type: entity
|
||||
parent: MechPaintBase
|
||||
suffix: DEBUG, Gygax, Molot
|
||||
id: MechPaintGygaxMolot
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/gygax.rsi
|
||||
state: pobeda-cap
|
||||
layers:
|
||||
- state: pobeda-cap
|
||||
map: ["enum.OpenableVisuals.Layer"]
|
||||
- type: Item
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/gygax.rsi
|
||||
heldPrefix: pobeda
|
||||
- type: MechPaint
|
||||
used: false
|
||||
whitelist:
|
||||
tags:
|
||||
- Gygax
|
||||
baseState: molot
|
||||
openState: molot-open
|
||||
brokenState: molot-broken
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.OpenableVisuals.Opened:
|
||||
enum.OpenableVisuals.Layer:
|
||||
True: {state: "pobeda"}
|
||||
False: {state: "pobeda-cap"}
|
||||
|
||||
#Gygax-Old
|
||||
|
||||
- type: entity
|
||||
parent: MechPaintBase
|
||||
suffix: DEBUG, Gygax, Old
|
||||
id: MechPaintGygaxOld
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Fun/spraycans.rsi
|
||||
layers:
|
||||
- state: spray
|
||||
map: ["Base"]
|
||||
- state: spray_cap_colors
|
||||
map: ["enum.OpenableVisuals.Layer"]
|
||||
color: "#ed5f3b"
|
||||
- type: MechPaint
|
||||
used: false
|
||||
whitelist:
|
||||
tags:
|
||||
- Gygax
|
||||
baseState: gygax_alt
|
||||
openState: gygax_alt-open
|
||||
brokenState: gygax_alt-broken
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.OpenableVisuals.Opened:
|
||||
enum.OpenableVisuals.Layer:
|
||||
True: {state: "spray_colors" , color: "#ed5f3b"}
|
||||
False: {state: "spray_cap_colors" , color: "#ed5f3b"}
|
||||
|
||||
#Durand-Unathi
|
||||
|
||||
- type: entity
|
||||
parent: MechPaintBase
|
||||
suffix: DEBUG, Durand, Unathi
|
||||
id: MechPaintDurandUnathi
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi
|
||||
layers:
|
||||
- state: kharn-cap
|
||||
map: ["enum.OpenableVisuals.Layer"]
|
||||
- type: Item
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi
|
||||
heldPrefix: kharn
|
||||
- type: MechPaint
|
||||
used: false
|
||||
whitelist:
|
||||
tags:
|
||||
- Durand
|
||||
baseState: unathi
|
||||
openState: unathi-open
|
||||
brokenState: unathi-broken
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.OpenableVisuals.Opened:
|
||||
enum.OpenableVisuals.Layer:
|
||||
True: {state: "kharn"}
|
||||
False: {state: "kharn-cap"}
|
||||
|
||||
#Durand-Shire
|
||||
|
||||
- type: entity
|
||||
parent: MechPaintBase
|
||||
suffix: DEBUG, Durand , Shire
|
||||
id: MechPaintDurandShire
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi
|
||||
layers:
|
||||
- state: shire-cap
|
||||
map: ["enum.OpenableVisuals.Layer"]
|
||||
- type: Item
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi
|
||||
heldPrefix: shire
|
||||
- type: MechPaint
|
||||
used: false
|
||||
whitelist:
|
||||
tags:
|
||||
- Durand
|
||||
baseState: shire
|
||||
openState: shire-open
|
||||
brokenState: shire-broken
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.OpenableVisuals.Opened:
|
||||
enum.OpenableVisuals.Layer:
|
||||
True: {state: "shire"}
|
||||
False: {state: "shire-cap"}
|
||||
|
||||
#Durand-Dollhouse
|
||||
|
||||
- type: entity
|
||||
parent: MechPaintBase
|
||||
suffix: DEBUG, Durand , Dollhouse
|
||||
id: MechPaintDurandDollhouse
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi
|
||||
layers:
|
||||
- state: dollhouse-cap
|
||||
map: ["enum.OpenableVisuals.Layer"]
|
||||
- type: Item
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi
|
||||
heldPrefix: dollhouse
|
||||
- type: MechPaint
|
||||
used: false
|
||||
whitelist:
|
||||
tags:
|
||||
- Durand
|
||||
baseState: dollhouse
|
||||
openState: dollhouse-open
|
||||
brokenState: dollhouse-broken
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.OpenableVisuals.Opened:
|
||||
enum.OpenableVisuals.Layer:
|
||||
True: {state: "dollhouse"}
|
||||
False: {state: "dollhouse-cap"}
|
||||
|
||||
#Durand-Executor
|
||||
|
||||
- type: entity
|
||||
parent: MechPaintBase
|
||||
suffix: DEBUG, Durand , Executor
|
||||
id: MechPaintDurandExecutor
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi
|
||||
layers:
|
||||
- state: executioner-cap
|
||||
map: ["enum.OpenableVisuals.Layer"]
|
||||
- type: Item
|
||||
sprite: _Sunrise/Objects/Fun/mech_spraycans/durand.rsi
|
||||
heldPrefix: executioner
|
||||
- type: MechPaint
|
||||
used: false
|
||||
whitelist:
|
||||
tags:
|
||||
- Durand
|
||||
baseState: executor
|
||||
openState: executor-open
|
||||
brokenState: executor-broken
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.OpenableVisuals.Opened:
|
||||
enum.OpenableVisuals.Layer:
|
||||
True: {state: "executioner"}
|
||||
False: {state: "executioner-cap"}
|
||||
|
|
@ -122,6 +122,7 @@
|
|||
solutionName: hypospray
|
||||
transferAmount: 10
|
||||
onlyAffectsMobs: false
|
||||
injectOnly: true
|
||||
- type: UseDelay
|
||||
delay: 0.5
|
||||
# - type: HiddenDescription
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
- type: Gun
|
||||
minAngle: -25
|
||||
maxAngle: 25
|
||||
fireRate: 8
|
||||
fireRate: 6
|
||||
selectedMode: FullAuto
|
||||
availableModes:
|
||||
- FullAuto
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
path: /Audio/_Sunrise/Weapons/Guns/HMGs/minigun_shot.ogg
|
||||
- type: ProjectileBatteryAmmoProvider
|
||||
proto: CartridgeLightRifle
|
||||
fireCost: 50
|
||||
fireCost: 30
|
||||
- type: Appearance
|
||||
- type: AmmoCounter
|
||||
|
||||
|
|
@ -44,7 +44,7 @@
|
|||
soundGunshot:
|
||||
path: /Audio/Weapons/Guns/Gunshots/laser.ogg
|
||||
- type: ProjectileBatteryAmmoProvider
|
||||
proto: BulletEnergyGunLaser
|
||||
fireCost: 20
|
||||
proto: BulletSyndiPlasma2
|
||||
fireCost: 25
|
||||
- type: Appearance
|
||||
- type: AmmoCounter
|
||||
|
|
@ -1,27 +1,26 @@
|
|||
- type: entity
|
||||
id: MechMolot
|
||||
parent: [ BaseMech, CombatMech ]
|
||||
name: Molot M-1
|
||||
description: A heavy mech designed by the SSSP to operate in aggressive, unaccepted environments. It has 4 weapon mounts on board, oxygen maintenance in the cockpit.
|
||||
id: MechSecPod
|
||||
parent: [ BaseMech, CombatMech, BaseRestrictedContraband ]
|
||||
name: Security Pod
|
||||
description: While lightly armored, the Gygax has incredible mobility thanks to its ability that lets it smash through walls at high speeds.
|
||||
components:
|
||||
- type: Sprite
|
||||
drawdepth: Mobs
|
||||
noRot: true
|
||||
sprite: _Sunrise/Objects/Specific/Mech/mecha.rsi
|
||||
sprite: _Sunrise/Objects/Specific/Mech/sec_pod.rsi
|
||||
scale: 1.08, 1.08
|
||||
layers:
|
||||
- map: [ "enum.MechVisualLayers.Base" ]
|
||||
state: molot
|
||||
state: sec_pod
|
||||
- type: FootstepModifier
|
||||
footstepSoundCollection:
|
||||
path: /Audio/Mecha/sound_mecha_powerloader_step.ogg
|
||||
- type: Mech
|
||||
baseState: molot
|
||||
openState: molot-open
|
||||
brokenState: molot-broken
|
||||
mechToPilotDamageMultiplier: 0.1
|
||||
baseState: sec_pod
|
||||
openState: sec_pod
|
||||
brokenState: sec_pod
|
||||
mechToPilotDamageMultiplier: 0.3
|
||||
airtight: true
|
||||
maxIntegrity: 700
|
||||
maxEquipmentAmount: 4
|
||||
pilotWhitelist:
|
||||
components:
|
||||
- HumanoidAppearance
|
||||
|
|
@ -30,41 +29,22 @@
|
|||
attackRate: 1
|
||||
damage:
|
||||
types:
|
||||
Blunt: 40
|
||||
Structural: 200
|
||||
Blunt: 0
|
||||
Structural: 0
|
||||
- type: MovementSpeedModifier
|
||||
baseWalkSpeed: 2
|
||||
baseSprintSpeed: 2.5
|
||||
- type: Damageable
|
||||
damageModifierSet: HeavyArmorNT
|
||||
- type: CanMoveInAir
|
||||
- type: MovementAlwaysTouching
|
||||
- type: Repairable
|
||||
fuelCost: 30
|
||||
doAfterDelay: 15
|
||||
baseWalkSpeed: 2.5
|
||||
baseSprintSpeed: 3
|
||||
- type: Reflect
|
||||
reflectProb: 0.3
|
||||
reflectProb: 0.25
|
||||
spread: 180
|
||||
soundOnReflect: /Audio/Weapons/block_metal1.ogg
|
||||
reflects:
|
||||
- NonEnergy
|
||||
|
||||
- type: entity
|
||||
id: MechMolotBattery
|
||||
parent: MechMolot
|
||||
suffix: Battery
|
||||
components:
|
||||
- type: ContainerFill
|
||||
containers:
|
||||
mech-battery-slot:
|
||||
- PowerCageHigh
|
||||
|
||||
- type: entity
|
||||
id: MechMolotFilled
|
||||
parent: MechMolotBattery
|
||||
suffix: Battery, Filled
|
||||
components:
|
||||
- type: Mech
|
||||
startingEquipment:
|
||||
- WeaponMechChainSword
|
||||
- WeaponMechCombatPulseRifle
|
||||
- WeaponMechCombatUltraRifle
|
||||
- WeaponMechCombatMissileRack8
|
||||
- type: MobThresholds
|
||||
currentThresholdState : Alive
|
||||
thresholds:
|
||||
0: Alive
|
||||
300: Critical
|
||||
showOverlays: false
|
||||
allowRevives: true
|
||||
- type: Tag
|
||||
|
|
@ -42,7 +42,6 @@
|
|||
- type: Sprite
|
||||
sprite: _Sunrise/Structures/Doors/Airlocks/Glass/double_glass_airlock.rsi
|
||||
snapCardinals: false
|
||||
scale: 1.5,1
|
||||
offset: 0,0
|
||||
- type: Fixtures
|
||||
fixtures:
|
||||
|
|
|
|||
|
|
@ -113,4 +113,11 @@
|
|||
- type: currency
|
||||
id: DiseasePoints
|
||||
displayName: shop-disease-currency
|
||||
canWithdraw: false
|
||||
canWithdraw: false
|
||||
|
||||
#uplink categoires
|
||||
|
||||
- type: storeCategory
|
||||
id: UplinkMechs
|
||||
name: store-category-mechs
|
||||
priority: 8
|
||||
|
|
|
|||
|
|
@ -5,18 +5,19 @@
|
|||
- type: Store
|
||||
name: store-preset-name-uplink
|
||||
categories:
|
||||
- UplinkWeaponrySilent
|
||||
- UplinkWeaponry
|
||||
- UplinkAmmoSilent
|
||||
- UplinkExplosivesSilent
|
||||
- UplinkExplosives
|
||||
- UplinkChemicals
|
||||
- UplinkDeception
|
||||
- UplinkDisruptionSilent
|
||||
- UplinkDisruption
|
||||
- UplinkImplants
|
||||
- UplinkAllies
|
||||
- UplinkWearablesSilent
|
||||
- UplinkWearables
|
||||
- UplinkJob
|
||||
- UplinkPointless
|
||||
- UplinkObjectives
|
||||
- UplinkMechs #Sunrise-mechs
|
||||
currencyWhitelist:
|
||||
- Telecrystal
|
||||
balance:
|
||||
|
|
|
|||
|
|
@ -3,6 +3,9 @@
|
|||
|
||||
- type: Tag
|
||||
id: IgnoreMelee
|
||||
|
||||
- type: Tag
|
||||
id: NoInjectable
|
||||
|
||||
- type: Tag
|
||||
id: Nanopaste
|
||||
|
|
@ -33,6 +36,9 @@
|
|||
|
||||
- type: Tag
|
||||
id: SyndieAgentUplink
|
||||
|
||||
- type: Tag
|
||||
id: AnomalyCore
|
||||
|
||||
# Catridges:
|
||||
|
||||
|
|
@ -158,3 +164,20 @@
|
|||
|
||||
- type: Tag
|
||||
id: Board
|
||||
|
||||
# Mechs
|
||||
|
||||
- type: Tag
|
||||
id: Ripley
|
||||
|
||||
- type: Tag
|
||||
id: Clarke
|
||||
|
||||
- type: Tag
|
||||
id: Gygax
|
||||
|
||||
- type: Tag
|
||||
id: Durand
|
||||
|
||||
- type: Tag
|
||||
id: Phazon
|
||||
|
|
|
|||
|
|
@ -808,6 +808,33 @@
|
|||
|
||||
- type: Tag
|
||||
id: GygaxRLeg
|
||||
|
||||
- type: Tag
|
||||
id: PhazonArmor
|
||||
|
||||
- type: Tag
|
||||
id: PhazonCentralControlModule
|
||||
|
||||
- type: Tag
|
||||
id: PhazonPeripheralsControlModule
|
||||
|
||||
- type: Tag
|
||||
id: PhazonTargetingControlModule
|
||||
|
||||
- type: Tag
|
||||
id: PhazonHead
|
||||
|
||||
- type: Tag
|
||||
id: PhazonLArm
|
||||
|
||||
- type: Tag
|
||||
id: PhazonLLeg
|
||||
|
||||
- type: Tag
|
||||
id: PhazonRArm
|
||||
|
||||
- type: Tag
|
||||
id: PhazonRLeg
|
||||
|
||||
- type: Tag
|
||||
id: HudMedical
|
||||
|
|
@ -1049,6 +1076,9 @@
|
|||
|
||||
- type: Tag
|
||||
id: MechThruster
|
||||
|
||||
- type: Tag
|
||||
id: MechPhasicScanningModule
|
||||
|
||||
- type: Tag
|
||||
id: Medal
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 6 KiB After Width: | Height: | Size: 6 KiB |
|
|
@ -0,0 +1,75 @@
|
|||
{
|
||||
"copyright" : "Taken from https://github.com/tgstation/tgstation at at https://github.com/tgstation/tgstation/commit/40d89d11ea4a5cb81d61dc1018b46f4e7d32c62a, hamtr made by brainfood1183 (github)",
|
||||
"license" : "CC-BY-SA-3.0",
|
||||
"version": 1,
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "clarke",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
0.1,
|
||||
0.05,
|
||||
0.05
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.05,
|
||||
0.05
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.05,
|
||||
0.05
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.05,
|
||||
0.05
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "clarke-open"
|
||||
},
|
||||
{
|
||||
"name": "clarke-broken"
|
||||
},
|
||||
{
|
||||
"name": "orangey",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
0.1,
|
||||
0.05,
|
||||
0.05
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.05,
|
||||
0.05
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.05,
|
||||
0.05
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.05,
|
||||
0.05
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "orangey-open"
|
||||
},
|
||||
{
|
||||
"name": "orangey-broken"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
BIN
Resources/Textures/Objects/Specific/Mech/clarke.rsi/orangey.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.5 KiB |