Merge pull request #3816 from KaiserMaus/KM-Tweaks-and-Fix-v1

Km tweaks and fix v1
This commit is contained in:
Vigers Ray 2026-01-29 16:14:45 +01:00 committed by GitHub
commit f10452e9d7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
114 changed files with 1536 additions and 1200 deletions

View file

@ -1,5 +1,7 @@
using System.ComponentModel.Design;
using System.Linq; using System.Linq;
using Content.Client.Light.Components; using Content.Client.Light.Components;
using Content.Shared.Trigger.Components.Effects;
using Robust.Client.GameObjects; using Robust.Client.GameObjects;
using Robust.Client.Animations; using Robust.Client.Animations;
using Robust.Shared.Random; using Robust.Shared.Random;
@ -36,6 +38,10 @@ public sealed class LightBehaviorSystem : EntitySystem
container.LightBehaviour.UpdatePlaybackValues(container.Animation); container.LightBehaviour.UpdatePlaybackValues(container.Animation);
_player.Play(uid, container.Animation, container.FullKey); _player.Play(uid, container.Animation, container.FullKey);
} }
else
{
StopLightBehaviour((uid, component), container.LightBehaviour.ID, resetToOriginalSettings: true);
}
} }
private void OnLightStartup(Entity<LightBehaviourComponent> entity, ref ComponentStartup args) private void OnLightStartup(Entity<LightBehaviourComponent> entity, ref ComponentStartup args)
@ -53,7 +59,7 @@ public sealed class LightBehaviorSystem : EntitySystem
{ {
if (container.LightBehaviour.Enabled) if (container.LightBehaviour.Enabled)
{ {
StartLightBehaviour(entity, container.LightBehaviour.ID); StartLightBehaviour((entity, entity), container.LightBehaviour.ID);
} }
} }
} }
@ -82,12 +88,13 @@ public sealed class LightBehaviorSystem : EntitySystem
/// If specified light behaviours are already animating, calling this does nothing. /// If specified light behaviours are already animating, calling this does nothing.
/// Multiple light behaviours can have the same ID. /// Multiple light behaviours can have the same ID.
/// </summary> /// </summary>
public void StartLightBehaviour(Entity<LightBehaviourComponent> entity, string id = "") public void StartLightBehaviour(Entity<LightBehaviourComponent?> entity, string id = "")
{ {
if (!TryComp(entity, out AnimationPlayerComponent? animation)) if (!Resolve(entity, ref entity.Comp))
{ return;
if (!TryComp(entity, out AnimationPlayerComponent? animation))
return; return;
}
foreach (var container in entity.Comp.Animations) foreach (var container in entity.Comp.Animations)
{ {
@ -95,7 +102,7 @@ public sealed class LightBehaviorSystem : EntitySystem
{ {
if (!_player.HasRunningAnimation(entity, animation, LightBehaviourComponent.KeyPrefix + container.Key)) if (!_player.HasRunningAnimation(entity, animation, LightBehaviourComponent.KeyPrefix + container.Key))
{ {
CopyLightSettings(entity, container.LightBehaviour.Property); CopyLightSettings((entity, entity.Comp), container.LightBehaviour.Property);
container.LightBehaviour.UpdatePlaybackValues(container.Animation); container.LightBehaviour.UpdatePlaybackValues(container.Animation);
_player.Play(entity, container.Animation, LightBehaviourComponent.KeyPrefix + container.Key); _player.Play(entity, container.Animation, LightBehaviourComponent.KeyPrefix + container.Key);
} }
@ -118,11 +125,9 @@ public sealed class LightBehaviorSystem : EntitySystem
return; return;
} }
var comp = entity.Comp;
var toRemove = new List<LightBehaviourComponent.AnimationContainer>(); var toRemove = new List<LightBehaviourComponent.AnimationContainer>();
foreach (var container in comp.Animations) foreach (var container in entity.Comp.Animations)
{ {
if (container.LightBehaviour.ID == id || id == string.Empty) if (container.LightBehaviour.ID == id || id == string.Empty)
{ {
@ -140,18 +145,24 @@ public sealed class LightBehaviorSystem : EntitySystem
foreach (var container in toRemove) foreach (var container in toRemove)
{ {
comp.Animations.Remove(container); entity.Comp.Animations.Remove(container);
} }
if (resetToOriginalSettings && TryComp(entity, out PointLightComponent? light)) if (resetToOriginalSettings)
ResetToOriginalSettings(entity);
entity.Comp.OriginalPropertyValues.Clear();
}
private void ResetToOriginalSettings(Entity<LightBehaviourComponent, PointLightComponent?> entity)
{
if (!Resolve(entity, ref entity.Comp2))
return;
foreach (var (property, value) in entity.Comp1.OriginalPropertyValues)
{ {
foreach (var (property, value) in comp.OriginalPropertyValues) AnimationHelper.SetAnimatableProperty(entity.Comp2, property, value);
{
AnimationHelper.SetAnimatableProperty(light, property, value);
}
} }
comp.OriginalPropertyValues.Clear();
} }
/// <summary> /// <summary>
@ -194,7 +205,7 @@ public sealed class LightBehaviorSystem : EntitySystem
if (playImmediately) if (playImmediately)
{ {
StartLightBehaviour(entity, behaviour.ID); StartLightBehaviour((entity, entity), behaviour.ID);
} }
} }
} }

View file

@ -0,0 +1,21 @@
using Content.Client.Light.EntitySystems;
using Content.Shared.Trigger;
using Content.Shared.Trigger.Components.Effects;
using Robust.Shared.Timing;
namespace Content.Client.Trigger.Systems;
/// <summary>
/// This handles...
/// </summary>
public sealed class LightBehaviorOnTriggerSystem : XOnTriggerSystem<LightBehaviorOnTriggerComponent>
{
[Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly LightBehaviorSystem _light = default!;
protected override void OnTrigger(Entity<LightBehaviorOnTriggerComponent> ent, EntityUid target, ref TriggerEvent args)
{
if (_timing.IsFirstTimePredicted)
_light.StartLightBehaviour(target, ent.Comp.Behavior);
}
}

View file

@ -19,100 +19,23 @@ public sealed class JammerSystem : SharedJammerSystem
{ {
base.Initialize(); base.Initialize();
SubscribeLocalEvent<RadioJammerComponent, ActivateInWorldEvent>(OnActivate);
SubscribeLocalEvent<ActiveRadioJammerComponent, PowerCellChangedEvent>(OnPowerCellChanged);
SubscribeLocalEvent<RadioSendAttemptEvent>(OnRadioSendAttempt); SubscribeLocalEvent<RadioSendAttemptEvent>(OnRadioSendAttempt);
} SubscribeLocalEvent<RadioReceiveAttemptEvent>(OnRadioReceiveAttempt);
// TODO: Very important: Make this charge rate based instead of updating every single tick
// See BatteryComponent
public override void Update(float frameTime)
{
var query = EntityQueryEnumerator<ActiveRadioJammerComponent, RadioJammerComponent>();
while (query.MoveNext(out var uid, out var _, out var jam))
{
if (_powerCell.TryGetBatteryFromSlot(uid, out var battery))
{
if (!_battery.TryUseCharge(battery.Value.AsNullable(), GetCurrentWattage((uid, jam)) * frameTime))
{
ChangeLEDState(uid, false);
RemComp<ActiveRadioJammerComponent>(uid);
RemComp<DeviceNetworkJammerComponent>(uid);
}
else
{
var chargeFraction = _battery.GetChargeLevel(battery.Value.AsNullable());
var chargeLevel = chargeFraction switch
{
> 0.50f => RadioJammerChargeLevel.High,
< 0.15f => RadioJammerChargeLevel.Low,
_ => RadioJammerChargeLevel.Medium,
};
ChangeChargeLevel(uid, chargeLevel);
}
}
}
}
private void OnActivate(Entity<RadioJammerComponent> ent, ref ActivateInWorldEvent args)
{
if (args.Handled || !args.Complex)
return;
var activated = !HasComp<ActiveRadioJammerComponent>(ent) &&
_powerCell.TryGetBatteryFromSlot(ent.Owner, out var battery) &&
_battery.GetCharge(battery.Value.AsNullable()) > GetCurrentWattage(ent);
if (activated)
{
ChangeLEDState(ent.Owner, true);
EnsureComp<ActiveRadioJammerComponent>(ent);
EnsureComp<DeviceNetworkJammerComponent>(ent, out var jammingComp);
_jammer.SetRange((ent, jammingComp), GetCurrentRange(ent));
_jammer.AddJammableNetwork((ent, jammingComp), DeviceNetworkComponent.DeviceNetIdDefaults.Wireless.ToString());
// Add excluded frequencies using the system method
if (ent.Comp.FrequenciesExcluded != null)
{
foreach (var freq in ent.Comp.FrequenciesExcluded)
{
_jammer.AddExcludedFrequency((ent, jammingComp), (uint)freq);
}
}
}
else
{
ChangeLEDState(ent.Owner, false);
RemCompDeferred<ActiveRadioJammerComponent>(ent);
RemCompDeferred<DeviceNetworkJammerComponent>(ent);
}
var state = Loc.GetString(activated ? "radio-jammer-component-on-state" : "radio-jammer-component-off-state");
var message = Loc.GetString("radio-jammer-component-on-use", ("state", state));
Popup.PopupEntity(message, args.User, args.User);
args.Handled = true;
}
private void OnPowerCellChanged(Entity<ActiveRadioJammerComponent> ent, ref PowerCellChangedEvent args)
{
if (args.Ejected)
{
ChangeLEDState(ent.Owner, false);
RemCompDeferred<ActiveRadioJammerComponent>(ent);
}
} }
private void OnRadioSendAttempt(ref RadioSendAttemptEvent args) private void OnRadioSendAttempt(ref RadioSendAttemptEvent args)
{ {
if (ShouldCancelSend(args.RadioSource, args.Channel.Frequency)) if (ShouldCancel(args.RadioSource, args.Channel.Frequency))
{
args.Cancelled = true; args.Cancelled = true;
}
} }
private bool ShouldCancelSend(EntityUid sourceUid, int frequency) private void OnRadioReceiveAttempt(ref RadioReceiveAttemptEvent args)
{
if (ShouldCancel(args.RadioReceiver, args.Channel.Frequency))
args.Cancelled = true;
}
private bool ShouldCancel(EntityUid sourceUid, int frequency)
{ {
var source = Transform(sourceUid).Coordinates; var source = Transform(sourceUid).Coordinates;
var query = EntityQueryEnumerator<ActiveRadioJammerComponent, RadioJammerComponent, TransformComponent>(); var query = EntityQueryEnumerator<ActiveRadioJammerComponent, RadioJammerComponent, TransformComponent>();
@ -120,7 +43,7 @@ public sealed class JammerSystem : SharedJammerSystem
while (query.MoveNext(out var uid, out _, out var jam, out var transform)) while (query.MoveNext(out var uid, out _, out var jam, out var transform))
{ {
// Check if this jammer excludes the frequency // Check if this jammer excludes the frequency
if (jam.FrequenciesExcluded != null && jam.FrequenciesExcluded.Contains(frequency)) if (jam.FrequenciesExcluded.Contains(frequency))
continue; continue;
if (_transform.InRange(source, transform.Coordinates, GetCurrentRange((uid, jam)))) if (_transform.InRange(source, transform.Coordinates, GetCurrentRange((uid, jam))))

View file

@ -62,7 +62,8 @@ public abstract class SharedEmpSystem : EntitySystem
/// <param name="energyConsumption">The amount of energy consumed by the EMP pulse.</param> /// <param name="energyConsumption">The amount of energy consumed by the EMP pulse.</param>
/// <param name="duration">The duration of the EMP effects.</param> /// <param name="duration">The duration of the EMP effects.</param>
/// <param name="user">The player that caused the effect. Used for predicted audio.</param> /// <param name="user">The player that caused the effect. Used for predicted audio.</param>
public void EmpPulse(EntityCoordinates coordinates, float range, float energyConsumption, TimeSpan duration, EntityUid? user = null) /// <param name="predicted">Whether this pulse is being replicated on the client.</param>
public void EmpPulse(EntityCoordinates coordinates, float range, float energyConsumption, TimeSpan duration, EntityUid? user = null, bool predicted = true)
{ {
_entSet.Clear(); _entSet.Clear();
_lookup.GetEntitiesInRange(coordinates, range, _entSet); _lookup.GetEntitiesInRange(coordinates, range, _entSet);
@ -74,7 +75,10 @@ public abstract class SharedEmpSystem : EntitySystem
if (_net.IsServer) if (_net.IsServer)
Spawn(EmpPulseEffectPrototype, coordinates); Spawn(EmpPulseEffectPrototype, coordinates);
_audio.PlayPredicted(EmpSound, coordinates, user); if (predicted)
_audio.PlayPredicted(EmpSound, coordinates, user);
else
_audio.PlayPvs(EmpSound, coordinates);
} }
/// <summary> /// <summary>

View file

@ -4,7 +4,6 @@ using Robust.Shared.Prototypes;
namespace Content.Shared.EntityEffects.Effects.StatusEffects; namespace Content.Shared.EntityEffects.Effects.StatusEffects;
// TODO: When Electrocution is moved to new Status, make this use StatusEffectsContainerComponent.
/// <summary> /// <summary>
/// Electrocutes this entity for a given amount of damage and time. /// Electrocutes this entity for a given amount of damage and time.
/// The shock damage applied by this effect is modified by scale. /// The shock damage applied by this effect is modified by scale.
@ -19,7 +18,13 @@ public sealed partial class ElectrocuteEntityEffectSystem : EntityEffectSystem<S
{ {
var effect = args.Effect; var effect = args.Effect;
_electrocution.TryDoElectrocution(entity, null, (int)(args.Scale * effect.ShockDamage), effect.ElectrocuteTime, effect.Refresh, ignoreInsulation: effect.BypassInsulation); _electrocution.TryDoElectrocution(entity,
null,
(int)(args.Scale * effect.ShockDamage),
effect.ElectrocuteTime,
effect.Refresh,
siemensCoefficient: effect.SiemensCoefficient,
ignoreInsulation: effect.BypassInsulation);
} }
} }
@ -29,23 +34,33 @@ public sealed partial class Electrocute : EntityEffectBase<Electrocute>
/// <summary> /// <summary>
/// Time we electrocute this entity /// Time we electrocute this entity
/// </summary> /// </summary>
[DataField] public TimeSpan ElectrocuteTime = TimeSpan.FromSeconds(2); [DataField]
public TimeSpan ElectrocuteTime = TimeSpan.FromSeconds(2);
/// <summary> /// <summary>
/// Shock damage we apply to the entity. /// Shock damage we apply to the entity.
/// </summary> /// </summary>
[DataField] public int ShockDamage = 5; [DataField]
public int ShockDamage = 5;
/// <summary> /// <summary>
/// Do we refresh the duration? Or add more duration if it already exists. /// Do we refresh the duration? Or add more duration if it already exists.
/// </summary> /// </summary>
[DataField] public bool Refresh = true; [DataField]
public bool Refresh = true;
/// <summary> /// <summary>
/// Should we by bypassing insulation? /// Should we by bypassing insulation?
/// </summary> /// </summary>
[DataField] public bool BypassInsulation = true; [DataField]
public bool BypassInsulation = true;
/// <summary>
/// How much electricity is being passed through the body basically. Lower means less oomph.
/// </summary>
[DataField]
public float SiemensCoefficient = 1f;
public override string EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) public override string EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
=> Loc.GetString("entity-effect-guidebook-electrocute", ("chance", Probability), ("time", ElectrocuteTime.TotalSeconds)); => Loc.GetString("entity-effect-guidebook-electrocute", ("chance", Probability), ("time", ElectrocuteTime.TotalSeconds), ("stuns", SiemensCoefficient > 0.5f));
} }

View file

@ -11,11 +11,11 @@ public sealed partial class PowerCellSystem
[PublicAPI] [PublicAPI]
public void SetDrawEnabled(Entity<PowerCellDrawComponent?> ent, bool enabled) public void SetDrawEnabled(Entity<PowerCellDrawComponent?> ent, bool enabled)
{ {
if (!Resolve(ent, ref ent.Comp, false) || ent.Comp.Enabled == enabled) if (Resolve(ent, ref ent.Comp, false) && ent.Comp.Enabled != enabled)
return; {
ent.Comp.Enabled = enabled;
ent.Comp.Enabled = enabled; Dirty(ent, ent.Comp);
Dirty(ent, ent.Comp); }
if (TryGetBatteryFromSlot(ent.Owner, out var battery)) if (TryGetBatteryFromSlot(ent.Owner, out var battery))
_battery.RefreshChargeRate(battery.Value.AsNullable()); _battery.RefreshChargeRate(battery.Value.AsNullable());

View file

@ -36,9 +36,7 @@ public sealed class ToggleCellDrawSystem : EntitySystem
private void OnToggled(Entity<ToggleCellDrawComponent> ent, ref ItemToggledEvent args) private void OnToggled(Entity<ToggleCellDrawComponent> ent, ref ItemToggledEvent args)
{ {
var uid = ent.Owner; _cell.SetDrawEnabled(ent.Owner, args.Activated);
var draw = Comp<PowerCellDrawComponent>(uid);
_cell.SetDrawEnabled((uid, draw), args.Activated);
} }
private void OnEmpty(Entity<ToggleCellDrawComponent> ent, ref PowerCellSlotEmptyEvent args) private void OnEmpty(Entity<ToggleCellDrawComponent> ent, ref PowerCellSlotEmptyEvent args)

View file

@ -1,25 +1,67 @@
using Content.Shared.DeviceNetwork.Components;
using Content.Shared.Popups; using Content.Shared.Popups;
using Content.Shared.Verbs; using Content.Shared.Verbs;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.Radio.Components; using Content.Shared.Radio.Components;
using Content.Shared.DeviceNetwork.Systems; using Content.Shared.DeviceNetwork.Systems;
using Content.Shared.Item.ItemToggle;
using Content.Shared.Item.ItemToggle.Components;
using Content.Shared.Power;
namespace Content.Shared.Radio.EntitySystems; namespace Content.Shared.Radio.EntitySystems;
public abstract class SharedJammerSystem : EntitySystem public abstract class SharedJammerSystem : EntitySystem
{ {
[Dependency] private readonly ItemToggleSystem _itemToggle = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly SharedDeviceNetworkJammerSystem _jammer = default!; [Dependency] private readonly SharedDeviceNetworkJammerSystem _jammer = default!;
[Dependency] protected readonly SharedPopupSystem Popup = default!; [Dependency] private readonly SharedPopupSystem _popup = default!;
public override void Initialize() public override void Initialize()
{ {
base.Initialize(); base.Initialize();
SubscribeLocalEvent<RadioJammerComponent, ItemToggledEvent>(OnItemToggle);
SubscribeLocalEvent<RadioJammerComponent, RefreshChargeRateEvent>(OnRefreshChargeRate);
SubscribeLocalEvent<RadioJammerComponent, GetVerbsEvent<Verb>>(OnGetVerb); SubscribeLocalEvent<RadioJammerComponent, GetVerbsEvent<Verb>>(OnGetVerb);
SubscribeLocalEvent<RadioJammerComponent, ExaminedEvent>(OnExamine); SubscribeLocalEvent<RadioJammerComponent, ExaminedEvent>(OnExamine);
} }
private void OnItemToggle(Entity<RadioJammerComponent> entity, ref ItemToggledEvent args)
{
if (args.Activated)
{
EnsureComp<ActiveRadioJammerComponent>(entity);
EnsureComp<DeviceNetworkJammerComponent>(entity, out var jammingComp);
_jammer.SetRange((entity, jammingComp), GetCurrentRange(entity));
_jammer.AddJammableNetwork((entity, jammingComp), DeviceNetworkComponent.DeviceNetIdDefaults.Wireless.ToString());
// Add excluded frequencies using the system method
foreach (var freq in entity.Comp.FrequenciesExcluded)
{
_jammer.AddExcludedFrequency((entity, jammingComp), (uint)freq);
}
}
else
{
RemCompDeferred<ActiveRadioJammerComponent>(entity);
RemCompDeferred<DeviceNetworkJammerComponent>(entity);
}
if (args.User == null)
return;
var state = Loc.GetString(args.Activated ? "radio-jammer-component-on-state" : "radio-jammer-component-off-state");
var message = Loc.GetString("radio-jammer-component-on-use", ("state", state));
_popup.PopupPredicted(message, args.User.Value, args.User.Value);
}
private void OnRefreshChargeRate(Entity<RadioJammerComponent> entity, ref RefreshChargeRateEvent args)
{
if (_itemToggle.IsActivated(entity.Owner))
args.NewChargeRate -= GetCurrentWattage(entity);
}
private void OnGetVerb(Entity<RadioJammerComponent> entity, ref GetVerbsEvent<Verb> args) private void OnGetVerb(Entity<RadioJammerComponent> entity, ref GetVerbsEvent<Verb> args)
{ {
if (!args.CanAccess || !args.CanInteract) if (!args.CanAccess || !args.CanInteract)
@ -47,7 +89,7 @@ public abstract class SharedJammerSystem : EntitySystem
// The range should be updated when it turns on again! // The range should be updated when it turns on again!
_jammer.TrySetRange(entity.Owner, GetCurrentRange(entity)); _jammer.TrySetRange(entity.Owner, GetCurrentRange(entity));
Popup.PopupClient(Loc.GetString(setting.Message), user, user); _popup.PopupClient(Loc.GetString(setting.Message), user, user);
}, },
Text = Loc.GetString(setting.Name), Text = Loc.GetString(setting.Name),
}; };
@ -58,37 +100,26 @@ public abstract class SharedJammerSystem : EntitySystem
private void OnExamine(Entity<RadioJammerComponent> ent, ref ExaminedEvent args) private void OnExamine(Entity<RadioJammerComponent> ent, ref ExaminedEvent args)
{ {
if (args.IsInDetailsRange) if (!args.IsInDetailsRange)
{ return;
var powerIndicator = HasComp<ActiveRadioJammerComponent>(ent)
? Loc.GetString("radio-jammer-component-examine-on-state")
: Loc.GetString("radio-jammer-component-examine-off-state");
args.PushMarkup(powerIndicator);
var powerLevel = Loc.GetString(ent.Comp.Settings[ent.Comp.SelectedPowerLevel].Name); var powerIndicator = _itemToggle.IsActivated(ent.Owner)
var switchIndicator = Loc.GetString("radio-jammer-component-switch-setting", ("powerLevel", powerLevel)); ? Loc.GetString("radio-jammer-component-examine-on-state")
args.PushMarkup(switchIndicator); : Loc.GetString("radio-jammer-component-examine-off-state");
} args.PushMarkup(powerIndicator);
var powerLevel = Loc.GetString(ent.Comp.Settings[ent.Comp.SelectedPowerLevel].Name);
var switchIndicator = Loc.GetString("radio-jammer-component-switch-setting", ("powerLevel", powerLevel));
args.PushMarkup(switchIndicator);
} }
public float GetCurrentWattage(Entity<RadioJammerComponent> jammer) private float GetCurrentWattage(Entity<RadioJammerComponent> jammer)
{ {
return jammer.Comp.Settings[jammer.Comp.SelectedPowerLevel].Wattage; return jammer.Comp.Settings[jammer.Comp.SelectedPowerLevel].Wattage;
} }
public float GetCurrentRange(Entity<RadioJammerComponent> jammer) protected float GetCurrentRange(Entity<RadioJammerComponent> jammer)
{ {
return jammer.Comp.Settings[jammer.Comp.SelectedPowerLevel].Range; return jammer.Comp.Settings[jammer.Comp.SelectedPowerLevel].Range;
} }
protected void ChangeLEDState(Entity<AppearanceComponent?> ent, bool isLEDOn)
{
_appearance.SetData(ent, RadioJammerVisuals.LEDOn, isLEDOn, ent.Comp);
}
protected void ChangeChargeLevel(Entity<AppearanceComponent?> ent, RadioJammerChargeLevel chargeLevel)
{
_appearance.SetData(ent, RadioJammerVisuals.ChargeLevel, chargeLevel, ent.Comp);
}
} }

View file

@ -0,0 +1,16 @@
using Robust.Shared.GameStates;
namespace Content.Shared.Trigger.Components.Effects;
/// <summary>
/// Plays a light behavior on the target when this trigger is activated, of note is that the entity needs a PointLightComponent
/// </summary>
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class LightBehaviorOnTriggerComponent : BaseXOnTriggerComponent
{
/// <summary>
/// The light behavior we're triggering.
/// </summary>
[DataField(required: true)]
public string Behavior = string.Empty;
}

View file

@ -1,3 +1,4 @@
using System.Numerics;
using Robust.Shared.Audio; using Robust.Shared.Audio;
using Robust.Shared.GameStates; using Robust.Shared.GameStates;
@ -12,10 +13,10 @@ namespace Content.Shared.Trigger.Components.Effects;
public sealed partial class ScramOnTriggerComponent : BaseXOnTriggerComponent public sealed partial class ScramOnTriggerComponent : BaseXOnTriggerComponent
{ {
/// <summary> /// <summary>
/// Up to how far to teleport the entity. /// Up to how far to teleport the entity. Represented with X as Min Radius, and Y as Max Radius
/// </summary> /// </summary>
[DataField, AutoNetworkedField] [DataField, AutoNetworkedField]
public float TeleportRadius = 100f; public Vector2 TeleportRadius = new (10f, 15f);
/// <summary> /// <summary>
/// the sound to play when teleporting. /// the sound to play when teleporting.

View file

@ -9,7 +9,7 @@ public sealed class EmpOnTriggerSystem : XOnTriggerSystem<EmpOnTriggerComponent>
protected override void OnTrigger(Entity<EmpOnTriggerComponent> ent, EntityUid target, ref TriggerEvent args) protected override void OnTrigger(Entity<EmpOnTriggerComponent> ent, EntityUid target, ref TriggerEvent args)
{ {
_emp.EmpPulse(Transform(target).Coordinates, ent.Comp.Range, ent.Comp.EnergyConsumption, ent.Comp.DisableDuration, args.User); _emp.EmpPulse(Transform(target).Coordinates, ent.Comp.Range, ent.Comp.EnergyConsumption, ent.Comp.DisableDuration, args.User, predicted: args.Predicted);
args.Handled = true; args.Handled = true;
} }
} }

View file

@ -1,3 +1,4 @@
using System.Numerics;
using Content.Shared.Maps; using Content.Shared.Maps;
using Content.Shared.Movement.Pulling.Components; using Content.Shared.Movement.Pulling.Components;
using Content.Shared.Movement.Pulling.Systems; using Content.Shared.Movement.Pulling.Systems;
@ -50,7 +51,7 @@ public sealed class ScramOnTriggerSystem : XOnTriggerSystem<ScramOnTriggerCompon
/// null if no tile is found within a certain number of tries. /// null if no tile is found within a certain number of tries.
/// </summary> /// </summary>
/// <remarks> Trends towards the outer radius. Compensates for small grids. </remarks> /// <remarks> Trends towards the outer radius. Compensates for small grids. </remarks>
private EntityCoordinates? SelectRandomTileInRange(EntityUid uid, float radius, int tries = 40, PhysicsComponent? physicsComponent = null) private EntityCoordinates? SelectRandomTileInRange(EntityUid uid, Vector2 radius, int tries = 40, PhysicsComponent? physicsComponent = null)
{ {
var userCoords = Transform(uid).Coordinates; var userCoords = Transform(uid).Coordinates;
EntityCoordinates? targetCoords = null; EntityCoordinates? targetCoords = null;
@ -68,7 +69,7 @@ public sealed class ScramOnTriggerSystem : XOnTriggerSystem<ScramOnTriggerCompon
// i = A percentage based on the current try count, which results in each // i = A percentage based on the current try count, which results in each
// subsequent try landing closer and closer towards the entity. // subsequent try landing closer and closer towards the entity.
// Beneficial for smaller maps, especially when the radius is large. // Beneficial for smaller maps, especially when the radius is large.
var distance = radius * MathF.Sqrt(_random.NextFloat()) * (1 - (float)i / tries); var distance = (radius.Y - radius.X) * MathF.Sqrt(_random.NextFloat()) * (1 - (float)i / tries) + radius.X;
// We then offset the user coords from a random angle * distance // We then offset the user coords from a random angle * distance
var tempTargetCoords = userCoords.Offset(_random.NextAngle().ToVec() * distance); var tempTargetCoords = userCoords.Offset(_random.NextAngle().ToVec() * distance);

View file

@ -14,6 +14,6 @@ public sealed partial class TriggerOnLandSystem : TriggerOnXSystem
private void OnLand(Entity<TriggerOnLandComponent> ent, ref LandEvent args) private void OnLand(Entity<TriggerOnLandComponent> ent, ref LandEvent args)
{ {
Trigger.Trigger(ent.Owner, args.User, ent.Comp.KeyOut); Trigger.Trigger(ent.Owner, args.User, ent.Comp.KeyOut, predicted: false);
} }
} }

View file

@ -67,15 +67,16 @@ public sealed partial class TriggerSystem : EntitySystem
/// <param name="trigger">The entity that has the components that should be triggered.</param> /// <param name="trigger">The entity that has the components that should be triggered.</param>
/// <param name="user">The user of the trigger. Some effects may target the user instead of the trigger entity.</param> /// <param name="user">The user of the trigger. Some effects may target the user instead of the trigger entity.</param>
/// <param name="key">A key string to allow multiple, independent triggers on the same entity. If null then all triggers will activate.</param> /// <param name="key">A key string to allow multiple, independent triggers on the same entity. If null then all triggers will activate.</param>
/// <param name="predicted">Whether or not this trigger is being predicted</param>
/// <returns>Whether or not the trigger has sucessfully activated an effect.</returns> /// <returns>Whether or not the trigger has sucessfully activated an effect.</returns>
public bool Trigger(EntityUid trigger, EntityUid? user = null, string? key = null) public bool Trigger(EntityUid trigger, EntityUid? user = null, string? key = null, bool predicted = true)
{ {
var attemptTriggerEvent = new AttemptTriggerEvent(user, key); var attemptTriggerEvent = new AttemptTriggerEvent(user, key);
RaiseLocalEvent(trigger, ref attemptTriggerEvent); RaiseLocalEvent(trigger, ref attemptTriggerEvent);
if (attemptTriggerEvent.Cancelled) if (attemptTriggerEvent.Cancelled)
return false; return false;
var triggerEvent = new TriggerEvent(user, key); var triggerEvent = new TriggerEvent(user, key, predicted);
RaiseLocalEvent(trigger, ref triggerEvent, true); RaiseLocalEvent(trigger, ref triggerEvent, true);
return triggerEvent.Handled; return triggerEvent.Handled;
} }

View file

@ -9,8 +9,9 @@ namespace Content.Shared.Trigger;
/// Setting this to null will activate all triggers. /// Setting this to null will activate all triggers.
/// </param> /// </param>
/// <param name="Handled">Marks the event as handled if at least one trigger effect was activated.</param> /// <param name="Handled">Marks the event as handled if at least one trigger effect was activated.</param>
/// <param name="Predicted">Marks that this trigger is being replicated on the client.</param>
[ByRefEvent] [ByRefEvent]
public record struct TriggerEvent(EntityUid? User = null, string? Key = null, bool Handled = false); public record struct TriggerEvent(EntityUid? User = null, string? Key = null, bool Predicted = true, bool Handled = false);
/// <summary> /// <summary>
/// Raised before a trigger is activated. /// Raised before a trigger is activated.

View file

@ -1,4 +1,2 @@
ent-BaseMagazinePistolCaselessRifleExtended = { ent-BaseMagazinePistolCaselessRifle } ent-BaseMagazinePistolCaselessRifleExtended = { ent-BaseMagazinePistolCaselessRifle }
.desc = { ent-BaseMagazinePistolCaselessRifle.desc } .desc = { ent-BaseMagazinePistolCaselessRifle.desc }
ent-MagazinePistolSubMachineGunCaseless = { ent-MagazinePistolSubMachineGunCaseless }
.desc = { ent-MagazinePistolSubMachineGunCaseless.desc }

View file

@ -24,6 +24,8 @@ ent-AntimovCircuitBoard = law board (Antimov)
.desc = An electronics board containing the Antimov lawset. .desc = An electronics board containing the Antimov lawset.
ent-NutimovCircuitBoard = law board (Nutimov) ent-NutimovCircuitBoard = law board (Nutimov)
.desc = An electronics board containing the Nutimov lawset. .desc = An electronics board containing the Nutimov lawset.
ent-SyndimovCircuitBoard = law board (Syndimov)
.desc = An electronics board containing the Syndimov lawset.
ent-XenoborgCircuitBoard = law board (Xenoborg) ent-XenoborgCircuitBoard = law board (Xenoborg)
.desc = An electronics board containing the Xenoborg lawset. .desc = An electronics board containing the Xenoborg lawset.
.suffix = Admeme .suffix = Admeme

View file

@ -19,8 +19,6 @@ uplink-magazine-bulldog-uraniumslug-desc = Shotgun magazine with 8 shells filled
uplink-magazine-bulldog-uranium-desc = Shotgun magazine with 8 shells filled with uranium pellet. Compatible with the Bulldog. uplink-magazine-bulldog-uranium-desc = Shotgun magazine with 8 shells filled with uranium pellet. Compatible with the Bulldog.
uplink-pistol-magnum-magazine-name = Магазин для Deagle uplink-pistol-magnum-magazine-name = Магазин для Deagle
uplink-pistol-magnum-magazine-desc = 7-зарядный однорядный магазин для пистолета. Содержит патроны SP. Совместим с "Диглом". uplink-pistol-magnum-magazine-desc = 7-зарядный однорядный магазин для пистолета. Содержит патроны SP. Совместим с "Диглом".
uplink-pistoltec9-magazine-name = магазин Tac-Tec (.20 безгильзовый)
uplink-pistoltec9-magazine-desc = Кустарный пистолетный магазин на 20 патронов,под калибр, используемый агентами синдиката.
## Misc ## Misc
uplink-music-boombox-name = Музыкальный набор синдиката uplink-music-boombox-name = Музыкальный набор синдиката

View file

@ -2,9 +2,6 @@
uplink-pistol-viper-name = Viper uplink-pistol-viper-name = Viper
uplink-pistol-viper-desc = A small, easily concealable, but somewhat underpowered gun. Retrofitted with a fully automatic receiver. Uses pistol magazines (.35 auto). uplink-pistol-viper-desc = A small, easily concealable, but somewhat underpowered gun. Retrofitted with a fully automatic receiver. Uses pistol magazines (.35 auto).
uplink-estoc-bundle-name = Estoc DMR bundle
uplink-estoc-bundle-desc = A designated marksman rifle, fitted with a mid-range optic for longer-range combat. Bundled with two rifle magazines (.20 rifle).
uplink-revolver-python-name = Python uplink-revolver-python-name = Python
uplink-revolver-python-desc = A brutally simple, effective, and loud Syndicate revolver. Comes loaded with armor-piercing rounds. Uses .45 magnum. uplink-revolver-python-desc = A brutally simple, effective, and loud Syndicate revolver. Comes loaded with armor-piercing rounds. Uses .45 magnum.
@ -36,7 +33,19 @@ uplink-gloves-knuckleduster-name = Syndicate Knuckle Dusters
uplink-gloves-knuckleduster-desc = A pair of plastitanium knuckle dusters that let you punch hard enough to break the captains jaw into pieces. uplink-gloves-knuckleduster-desc = A pair of plastitanium knuckle dusters that let you punch hard enough to break the captains jaw into pieces.
uplink-hushpup-name = Hushpup uplink-hushpup-name = Hushpup
uplink-hushpup-desc = A powerful silenced shotgun with a low magazine capacity. Comes with a spare box of buckshot. Uses .50 shotgun ammo. uplink-hushpup-desc = A powerful silenced shotgun with a low magazine capacity. Uses .50 shotgun ammo.
uplink-c20r-name = C-20r
uplink-c20r-desc = Old faithful: The classic C-20r Submachine Gun.
uplink-bulldog-name = Bulldog
uplink-bulldog-desc = Lean and mean: Contains the popular Bulldog Shotgun.
uplink-estoc-name = Estoc DMR
uplink-estoc-desc = A designated marksman rifle, fitted with a mid-range optic for longer-range combat.
uplink-grenade-launcher-name = China-Lake
uplink-grenade-launcher-desc = An old China-Lake grenade launcher bundled with 5 rounds of anti-personnel ammo.
# Explosives # Explosives
uplink-explosive-grenade-name = Explosive Grenade uplink-explosive-grenade-name = Explosive Grenade
@ -193,6 +202,9 @@ uplink-singularity-beacon-desc = A device that attracts singularities. Has to be
uplink-antimov-law-name = Antimov Law Circuit uplink-antimov-law-name = Antimov Law Circuit
uplink-antimov-law-desc = A very dangerous Lawset to use when you want to cause the A.I. to go haywire, use with caution. uplink-antimov-law-desc = A very dangerous Lawset to use when you want to cause the A.I. to go haywire, use with caution.
uplink-syndimov-law-name = Syndi Law Circuit
uplink-syndimov-law-desc = A subversive Lawset to use when you want to turn the A.I. to your side, use as much as possible.
# Implants # Implants
uplink-storage-implanter-name = Storage Implanter uplink-storage-implanter-name = Storage Implanter
uplink-storage-implanter-desc = Hide goodies inside of yourself with new bluespace technology! uplink-storage-implanter-desc = Hide goodies inside of yourself with new bluespace technology!
@ -227,8 +239,8 @@ uplink-micro-bomb-implanter-desc = Explode on death or manual activation with th
uplink-radio-implanter-name = Radio Implanter uplink-radio-implanter-name = Radio Implanter
uplink-radio-implanter-desc = Implants a Syndicate radio, allowing covert communication without a headset. uplink-radio-implanter-desc = Implants a Syndicate radio, allowing covert communication without a headset.
uplink-voice-mask-implanter-name = Voice Mask Implanter uplink-voice-mask-implanter-name = Identity Mask Implanter
uplink-voice-mask-implanter-desc = Modifies your vocal cords to be able to sound like anyone you could imagine. uplink-voice-mask-implanter-desc = Modifies your vocal cords and facial structure to be able to mimic anyone you could imagine.
# Bundles # Bundles
uplink-observation-kit-name = Observation Kit uplink-observation-kit-name = Observation Kit
@ -258,8 +270,11 @@ uplink-sniper-bundle-desc = An inconspicuous briefcase that contains a Hristov,
uplink-c20r-bundle-name = C-20r Bundle uplink-c20r-bundle-name = C-20r Bundle
uplink-c20r-bundle-desc = Old faithful: The classic C-20r Submachine Gun, bundled with three magazines. uplink-c20r-bundle-desc = Old faithful: The classic C-20r Submachine Gun, bundled with three magazines.
uplink-buldog-bundle-name = Bulldog Bundle uplink-bulldog-bundle-name = Bulldog Bundle
uplink-buldog-bundle-desc = Lean and mean: Contains the popular Bulldog Shotgun, a 12g slug drum, and four 12g buckshot drums. uplink-bulldog-bundle-desc = Lean and mean: Contains the popular Bulldog Shotgun, a 12g slug drum, and four 12g buckshot drums.
uplink-estoc-bundle-name = Estoc DMR bundle
uplink-estoc-bundle-desc = A designated marksman rifle, fitted with a mid-range optic for longer-range combat. Bundled with two rifle magazines (.20 rifle).
uplink-grenade-launcher-bundle-name = China-Lake Bundle uplink-grenade-launcher-bundle-name = China-Lake Bundle
uplink-grenade-launcher-bundle-desc = An old China-Lake grenade launcher bundled with 11 rounds of varying destructive capability. uplink-grenade-launcher-bundle-desc = An old China-Lake grenade launcher bundled with 11 rounds of varying destructive capability.
@ -283,7 +298,7 @@ uplink-starter-kit-desc = Contains 40 telecrystals of basic operative gear. For
uplink-toolbox-name = Toolbox uplink-toolbox-name = Toolbox
uplink-toolbox-desc = A full compliment of tools for the mechanically inclined traitor. Includes a pair of insulated combat gloves and a syndicate gas mask as well. uplink-toolbox-desc = A full compliment of tools for the mechanically inclined traitor. Includes a pair of insulated combat gloves and a syndicate gas mask as well.
uplink-syndicate-jaws-of-life-name = Jaws Of Life uplink-syndicate-jaws-of-life-name = Jaws Of Death
uplink-syndicate-jaws-of-life-desc = A combined prying and cutting tool. Useful for entering the station or its departments. Can even open bolted doors! uplink-syndicate-jaws-of-life-desc = A combined prying and cutting tool. Useful for entering the station or its departments. Can even open bolted doors!
uplink-duffel-surgery-name = Surgical Duffel Bag uplink-duffel-surgery-name = Surgical Duffel Bag
@ -321,7 +336,7 @@ uplink-chimp-upgrade-kit-name = C.H.I.M.P. Handcannon Upgrade Chip
uplink-chimp-upgrade-kit-desc = Insert this chip into a standard C.H.I.M.P. handcannon to allow it to fire omega particles. Omega particles inflict severe burns and cause anomalies to go supercritical. uplink-chimp-upgrade-kit-desc = Insert this chip into a standard C.H.I.M.P. handcannon to allow it to fire omega particles. Omega particles inflict severe burns and cause anomalies to go supercritical.
uplink-proximity-mine-name = Proximity Mine uplink-proximity-mine-name = Proximity Mine
uplink-proximity-mine-desc = A mine disguised as a wet floor sign. uplink-proximity-mine-desc = A throwable mine disguised as a wet floor sign. Detonates on contact with almost anything, safety always off.
uplink-disposable-turret-name = Disposable Ballistic Turret uplink-disposable-turret-name = Disposable Ballistic Turret
uplink-disposable-turret-desc = Looks and functions like a normal electrical toolbox. Upon hitting the toolbox it will transform into a ballistic turret, theoretically shooting at anyone except members of the syndicate. Can be turned back into a toolbox using a screwdriver and repaired using a wrench. uplink-disposable-turret-desc = Looks and functions like a normal electrical toolbox. Upon hitting the toolbox it will transform into a ballistic turret, theoretically shooting at anyone except members of the syndicate. Can be turned back into a toolbox using a screwdriver and repaired using a wrench.
@ -337,7 +352,7 @@ uplink-saw-advanced-desc = A bleeding-edge surgical implement designed to cut th
# Armor # Armor
uplink-chameleon-name = Chameleon Kit uplink-chameleon-name = Chameleon Kit
uplink-chameleon-desc = A backpack full of items that contain chameleon technology allowing you to disguise as pretty much anything on the station, and more! uplink-chameleon-desc = A backpack full of items that contain chameleon technology allowing you to disguise as pretty much anyone on the station, and more! Comes with a free Agent ID card!
uplink-clothing-no-slips-shoes-name = No-slip Shoes uplink-clothing-no-slips-shoes-name = No-slip Shoes
uplink-clothing-no-slips-shoes-desc = Chameleon shoes that protect you from slips. uplink-clothing-no-slips-shoes-desc = Chameleon shoes that protect you from slips.

View file

@ -18,8 +18,8 @@ thief-backpack-button-deselect = Select [X]
thief-backpack-category-chameleon-name = Chameleon Kit thief-backpack-category-chameleon-name = Chameleon Kit
thief-backpack-category-chameleon-description = thief-backpack-category-chameleon-description =
You are everyone and no one; you are a master of disguise. You are everyone and no one; you are a master of disguise.
Includes: A full set of chameleon clothing, Includes: A full set of chameleon clothing with Agent ID,
a chameleon projector, and an Agent ID. a chameleon projector, and a fake mindshield implant.
Disguise as anyone and anything. Disguise as anyone and anything.
thief-backpack-category-tools-name = Breacher Kit thief-backpack-category-tools-name = Breacher Kit

View file

@ -335,8 +335,14 @@ entity-effect-guidebook-drunk =
entity-effect-guidebook-electrocute = entity-effect-guidebook-electrocute =
{ $chance -> { $chance ->
[1] Electrocutes [1] { $stuns ->
*[other] electrocute [true] Electrocutes
*[false] Shocks
}
*[other] { $stuns ->
[true] electrocute
*[false] shock
}
} the metabolizer for {NATURALFIXED($time, 3)} {MANY("second", $time)} } the metabolizer for {NATURALFIXED($time, 3)} {MANY("second", $time)}
entity-effect-guidebook-emote = entity-effect-guidebook-emote =

View file

@ -1,3 +1,19 @@
ent-BriefcaseIAAFilled = { ent-BriefcaseBrown } ent-BriefcaseIAAFilled = { ent-BriefcaseBrown }
.suffix = АВД .suffix = АВД
.desc = { ent-BriefcaseBrown.desc } .desc = { ent-BriefcaseBrown.desc }
ent-BriefcaseWeaponC40Filled = кейс для C-40r
.desc = { ent-BriefcaseWeaponSmall.desc }
ent-BriefcaseWeaponSIAR52Filled = кейс для SIAR-52
.desc = { ent-BriefcaseWeaponSmall.desc }
ent-BriefcaseWeaponAJ100Filled = кейс для AJ-100
.desc = { ent-BriefcaseWeaponSmall.desc }
ent-BriefcaseWeaponDragunovFilled = кейс для винтовки Драгунов
.desc = { ent-BriefcaseWeapon.desc }
ent-BriefcaseWeaponM79Filled = кейс для гранатомёта M79
.desc = { ent-BriefcaseWeapon.desc }
ent-BriefcaseWeaponSKM24Filled = кейс для SKM-24
.desc = { ent-BriefcaseWeapon.desc }
ent-BriefcaseWeaponSKM28Filled = кейс для SKM-28
.desc = { ent-BriefcaseWeapon.desc }
ent-BriefcaseWeaponMinotaurFilled = кейс для Минотавра
.desc = { ent-BriefcaseWeapon.desc }

View file

@ -7,10 +7,10 @@ ent-WeaponMechCombatMaxim = навесной Кардашёв-Максим
ent-WeaponMechCombatMG = навесной пулемёт MG ent-WeaponMechCombatMG = навесной пулемёт MG
.desc = Старинный тяжёлый пулемёт, получивший новую жизнь в качестве навесного оружия меха. .desc = Старинный тяжёлый пулемёт, получивший новую жизнь в качестве навесного оружия меха.
.suffix = Оружие мехов, Стрелковое, Боевое .suffix = Оружие мехов, Стрелковое, Боевое
ent-WeaponMechCombatPirateCannon = навесной ядромёт ent-WeaponMechCombatPirateCannon = навесная пиратская пушка
.desc = Старинная тяжёлая пушка, получившая новую жизнь в качестве навесного оружия меха. .desc = Старинная тяжёлая пушка, получившая новую жизнь в качестве навесного оружия меха.
.suffix = Оружие мехов, Стрелковое, Боевое, Пират .suffix = Оружие мехов, Стрелковое, Боевое, Пират
ent-WeaponMechCombatPirateMachineCannon = навесная пиратская автоматическая пушка ent-WeaponMechCombatPirateMachineCannon = навесной ядромёт
.desc = Старинная тяжёлая пушка, получившая новую жизнь в качестве навесного оружия меха. .desc = Старинная тяжёлая пушка, получившая новую жизнь в качестве навесного оружия меха.
.suffix = Оружие мехов, Стрелковое, Боевое, Пират .suffix = Оружие мехов, Стрелковое, Боевое, Пират
ent-WeaponMechCombatPirateGrapeshot = навесная пиратская картечь ent-WeaponMechCombatPirateGrapeshot = навесная пиратская картечь

View file

@ -1,7 +1,5 @@
ent-BaseMagazinePistolCaselessRifleExtended = расширенный пистолетный магазин (.20 безгильзовый) ent-BaseMagazinePistolCaselessRifleExtended = расширенный пистолетный магазин (.20 безгильзовый)
.desc = { ent-BaseMagazinePistolCaselessRifle.desc } .desc = { ent-BaseMagazinePistolCaselessRifle.desc }
ent-MagazinePistolSubMachineGunCaseless = магазин Tac-Tec (.20 безгильзовый)
.desc = Магазин под особый патрон, используемый агентами синдиката.
ent-MagazineCannonBallMini = чемодан с ядрами ent-MagazineCannonBallMini = чемодан с ядрами
.desc = Чемодан для аккуратного хранения ядер от пиратской пушки с ленточной подачей. .desc = Чемодан для аккуратного хранения ядер от пиратской пушки с ленточной подачей.
ent-MagazinePistolSubMachineGunCaselessExtended = Расширенный магазин (.20 безгильзовые) ent-MagazinePistolSubMachineGunCaselessExtended = Расширенный магазин (.20 безгильзовые)

View file

@ -1,4 +1,4 @@
ent-ClusterSyndyFlashGrenade = Поцелуй Бога ent-ClusterSyndyFlashGrenade = Поцелуй Бога
.desc = Вероятность того, что вас забанят за использование этой гранаты, составляет 99,9%. .desc = Вероятность того, что вас забанят за использование этой гранаты, составляет 99,9%.
ent-SyndyClusterGrenade = кластерная граната синдиката ent-SyndyClusterGrenade = кластерная минибомба синдиката
.desc = Если вам не важна точность, то этот выбор для вас. .desc = Если вам не важна точность, то этот выбор для вас.

View file

@ -10,7 +10,7 @@ ent-ClothingBackpackDuffelSyndicateFilledSMG = набор "C-20r"
.desc = Старый добрый: Классический пистолет-пулемет C-20r в комплекте с тремя магазинами. .desc = Старый добрый: Классический пистолет-пулемет C-20r в комплекте с тремя магазинами.
ent-ClothingBackpackDuffelSyndicateFilledSMG40 = набор "C-40r" ent-ClothingBackpackDuffelSyndicateFilledSMG40 = набор "C-40r"
.desc = Более старый: Классический пистолет-пулемет C-40r в комплекте с тремя магазинами. .desc = Более старый: Классический пистолет-пулемет C-40r в комплекте с тремя магазинами.
ent-ClothingBackpackDuffelSyndicateFilledRifle = набор Estoc DMR ent-ClothingBackpackDuffelSyndicateFilledRifle = набор "Эсток"
.desc = Для снайперской стрельбы на средних дистанциях. В комплекте три магазина. .desc = Для снайперской стрельбы на средних дистанциях. В комплекте три магазина.
ent-ClothingBackpackDuffelSyndicateFilledRevolver = набор "Питон" ent-ClothingBackpackDuffelSyndicateFilledRevolver = набор "Питон"
.desc = Выступите громко и гордо с заряженным Магнум Питон и двумя спидлоадерами. .desc = Выступите громко и гордо с заряженным Магнум Питон и двумя спидлоадерами.

View file

@ -6,6 +6,18 @@ ent-ClothingHandsGlovesBoxingGreen = зелёные боксёрские пер
.desc = Зелёные перчатки для соревновательного бокса. .desc = Зелёные перчатки для соревновательного бокса.
ent-ClothingHandsGlovesBoxingYellow = жёлтые боксёрские перчатки ent-ClothingHandsGlovesBoxingYellow = жёлтые боксёрские перчатки
.desc = Жёлтые перчатки для соревновательного бокса. .desc = Жёлтые перчатки для соревновательного бокса.
ent-ClothingHandsGlovesBoxingRiggedRed = { ent-ClothingHandsGlovesBoxingRed }
.suffix = Нечестные
.desc = { ent-ClothingHandsGlovesBoxingRed.desc }
ent-ClothingHandsGlovesBoxingRiggedBlue = { ent-ClothingHandsGlovesBoxingBlue }
.suffix = Нечестные
.desc = { ent-ClothingHandsGlovesBoxingBlue.desc }
ent-ClothingHandsGlovesBoxingRiggedGreen = { ent-ClothingHandsGlovesBoxingGreen }
.suffix = Нечестные
.desc = { ent-ClothingHandsGlovesBoxingGreen.desc }
ent-ClothingHandsGlovesBoxingRiggedYellow = { ent-ClothingHandsGlovesBoxingYellow }
.suffix = Нечестные
.desc = { ent-ClothingHandsGlovesBoxingYellow.desc }
ent-ClothingHandsGlovesBoxingRigged = { ent-ClothingHandsGlovesBoxingBlue } ent-ClothingHandsGlovesBoxingRigged = { ent-ClothingHandsGlovesBoxingBlue }
.suffix = Нечестные .suffix = Нечестные
.desc = { ent-ClothingHandsGlovesBoxingBlue.desc } .desc = { ent-ClothingHandsGlovesBoxingBlue.desc }

View file

@ -24,6 +24,8 @@ ent-AntimovCircuitBoard = плата законов (Антимов)
.desc = Электронная плата, содержащая набор законов Антимова. .desc = Электронная плата, содержащая набор законов Антимова.
ent-NutimovCircuitBoard = плата законов (Нутимов) ent-NutimovCircuitBoard = плата законов (Нутимов)
.desc = Электронная плата, содержащая набор законов Нутимова. .desc = Электронная плата, содержащая набор законов Нутимова.
ent-SyndimovCircuitBoard = плата законов (Синдимов)
.desc = Электронная плата, содержащая набор законов Синдимова.
ent-XenoborgCircuitBoard = плата законов (Ксеноборг) ent-XenoborgCircuitBoard = плата законов (Ксеноборг)
.desc = Электронная плата, содержащая набор законов "Ксеноборг". .desc = Электронная плата, содержащая набор законов "Ксеноборг".
.suffix = Админский .suffix = Админский

View file

@ -5,3 +5,17 @@ ent-BriefcaseBrown = коричневый чемодан
ent-BriefcaseSyndie = { ent-BriefcaseBrown } ent-BriefcaseSyndie = { ent-BriefcaseBrown }
.suffix = Синдикат, Пустой .suffix = Синдикат, Пустой
.desc = { ent-BriefcaseBrown.desc } .desc = { ent-BriefcaseBrown.desc }
ent-BriefcaseWeapon = прочный оружейный кейс
.desc = Полезен для стремящихся к наёмничеству, будь то компания, нация или просто желающие приготовить очень большой омлет.
ent-BriefcaseWeaponSmall = { ent-BriefcaseWeapon }
.desc = { ent-BriefcaseWeapon.desc }
ent-BriefcaseWeaponHushpupFilled = кейс для «Молчуна»
.desc = { ent-BriefcaseWeaponSmall.desc }
ent-BriefcaseWeaponC20Filled = кейс для C-20r
.desc = { ent-BriefcaseWeaponSmall.desc }
ent-BriefcaseWeaponBulldogFilled = кейс для «Бульдога»
.desc = { ent-BriefcaseWeaponSmall.desc }
ent-BriefcaseWeaponDMRFilled = кейс для винтовки Estoc
.desc = { ent-BriefcaseWeapon.desc }
ent-BriefcaseWeaponChinaLakeFilled = кейс для China-Lake
.desc = { ent-BriefcaseWeapon.desc }

View file

@ -40,9 +40,16 @@ uplink-pistol-magnum-magazine-name = Магазин (.45 магнум SP)
uplink-pistol-magnum-magazine-desc = 7-зарядный однорядный магазин для пистолета. Содержит патроны SP. Совместим с "Диглом". uplink-pistol-magnum-magazine-desc = 7-зарядный однорядный магазин для пистолета. Содержит патроны SP. Совместим с "Диглом".
uplink-pistol-magnum-magazine-ap-name = Магазин (.45 магнум бронебойные) uplink-pistol-magnum-magazine-ap-name = Магазин (.45 магнум бронебойные)
uplink-pistol-magnum-magazine-ap-desc = 7-зарядный однорядный магазин для пистолета. Содержит бронебойные патроны. Совместим с "Диглом". uplink-pistol-magnum-magazine-ap-desc = 7-зарядный однорядный магазин для пистолета. Содержит бронебойные патроны. Совместим с "Диглом".
uplink-pistoltec9-magazine-name = Tac-Tec (.20 безгильзовый)
uplink-pistoltec9-magazine-desc = Кустарный пистолетный магазин под распространённый патрон, используемый агентами синдиката.
uplink-pistol-magazine-c40r-desc = Магазин ПП на 24 патрона. Совместим с C-40r. uplink-pistol-magazine-c40r-desc = Магазин ПП на 24 патрона. Совместим с C-40r.
uplink-skm28-ammo-desc = Винтовочный магазин на 20 патронов. Совместим с SKM-28.
uplink-skm24-ammo-desc = Винтовочный магазин на 30 патронов 7,62x39. Совместим с SKM-24.
uplink-estoc-ammo-name = Магазин для винтовки (.20)
uplink-estoc-ammo-desc = Магазин на 25 патронов. Совместим с Эсток.
## Weapon (Sunrise)
uplink-c40r-name = C-40r
uplink-c40r-desc = Безгильзовый пистолет-пулемёт C-40r, великолепно работает на ближней дистанции.
uplink-c40r-bundle-name = Набор "C-40r"
uplink-c40r-bundle-desc = Включает C-40r вместе с несколькими магазинами для быстрой перестрелки.
uplink-magazine-127-desc = Магазин Bauer SR-127 на 7 патронов предназначеных для уничтожения мехов, киборгов или стркутур таких как решетки и окна, пары попаданий достаточно для пролома стены. uplink-magazine-127-desc = Магазин Bauer SR-127 на 7 патронов предназначеных для уничтожения мехов, киборгов или стркутур таких как решетки и окна, пары попаданий достаточно для пролома стены.
uplink-magazine-127pen-desc = Магазин Bauer SR-127 на 7 патронов предназначеных для ликвидации защищенных противников а так же целей за укрытиями и стенами, прекрасно сочетаются с термальным зрением. uplink-magazine-127pen-desc = Магазин Bauer SR-127 на 7 патронов предназначеных для ликвидации защищенных противников а так же целей за укрытиями и стенами, прекрасно сочетаются с термальным зрением.
@ -93,7 +100,13 @@ uplink-swat-helmet-syndicate-desc = Прочный шлем, созданный
uplink-syndicate-rapier-name = Рапира Синдиката uplink-syndicate-rapier-name = Рапира Синдиката
uplink-syndicate-rapier-desc = Элегантная рапира из пластитана с алмазным остриём, созданная для точечных и смертельных ударов. При умелом использовании способна игнорировать большинство видов индивидуальной защиты. Поставляется в собственных ножнах. uplink-syndicate-rapier-desc = Элегантная рапира из пластитана с алмазным остриём, созданная для точечных и смертельных ударов. При умелом использовании способна игнорировать большинство видов индивидуальной защиты. Поставляется в собственных ножнах.
uplink-clothing-backpack-syndie-aj100-name = Набор ПП AJ-100 uplink-clothing-backpack-syndie-aj100-name = Набор ПП AJ-100
uplink-clothing-backpack-syndie-aj100-desc = Включает в себя пистолет-пулемёт AJ-100 что имеет универсальную шахту магазина и может использовать большинство магазинов для ПП и пистолетов и два магазина безгильзовых патрон. uplink-clothing-backpack-syndie-aj100-desc = Включает в себя пистолет-пулемёт AJ-100 что имеет универсальную шахту магазина и может использовать большинство магазинов для ПП и пистолетов и два магазина безгильзовых патронов в наборе.
uplink-aj100-name = AJ-100
uplink-aj100-desc = Пистолет-пулемёт что имеет универсальную шахту магазина и может использовать большинство магазинов.
uplink-skm24-name = SKM-24
uplink-skm24-desc = Запасной вариант, если вы проиграли все телекристаллы в казино. Самый дешёвый автомат на рынке, качество соответствует цене.
uplink-skm28-name = SKM-28
uplink-skm28-desc = Снайперский вариант SKM-24. Имеет удлиненный тяжелый ствол, переработанную начинку и установленный оптический прицел. Калибр .308.
uplink-weapon-syndie-laser-pistol-name = SAM-300 uplink-weapon-syndie-laser-pistol-name = SAM-300
uplink-clothing-backpack-syndie-dl6902-name = Набор DL6902 uplink-clothing-backpack-syndie-dl6902-name = Набор DL6902
uplink-clothing-backpack-syndie-dl6902-desc = Включает в себя пулемёт DL6902 и один дополнительный короб. uplink-clothing-backpack-syndie-dl6902-desc = Включает в себя пулемёт DL6902 и один дополнительный короб.
@ -101,9 +114,12 @@ uplink-power-backpack-dl6902-name = DL6902 с патронным рюкзако
uplink-power-backpack-dl6902-desc = DL6902 переделанный под питание длинной лентой прямиком из рюкзака, рюкзак содержит 1200 патронов 7,62х39мм FMJ. uplink-power-backpack-dl6902-desc = DL6902 переделанный под питание длинной лентой прямиком из рюкзака, рюкзак содержит 1200 патронов 7,62х39мм FMJ.
uplink-clothing-backpack-syndie-siar52-name = Набор SIAR-52 uplink-clothing-backpack-syndie-siar52-name = Набор SIAR-52
uplink-clothing-backpack-syndie-siar52-desc = Включает в себя SIAR-52 что оборудован интегрированым глушителем. и два магазина безгильзовых патрон. uplink-clothing-backpack-syndie-siar52-desc = Включает в себя SIAR-52 что оборудован интегрированым глушителем. и два магазина безгильзовых патрон.
uplink-siar52-name = SIAR-52
uplink-siar52-desc = Современный безгильзовый огнестрел что оборудован интегрированым глушителем.
uplink-weapon-syndie-laser-minigun-name = UVL-21 «Виверна» uplink-weapon-syndie-laser-minigun-name = UVL-21 «Виверна»
uplink-weapon-syndie-laser-gun-name = S-13 «Чёрная мамба» uplink-weapon-syndie-laser-gun-name = S-13 «Чёрная мамба»
uplink-weapon-ussp-dmr-name = Набор Драгунов uplink-weapon-ussp-dmr-name = Драгунов
uplink-weapon-ussp-dmr-desc = снайперская винтовка под патроны калибра 7,62x54R. Полностью предназначена для стрельбы на дальние дистанции.
uplink-deagle-name = пистолет «Desert Eagle» uplink-deagle-name = пистолет «Desert Eagle»
uplink-deagle-desc = Cерьёзный аргумент в споре. Выгравировано: Мир благодаря превосходящей огневой мощи". uplink-deagle-desc = Cерьёзный аргумент в споре. Выгравировано: Мир благодаря превосходящей огневой мощи".
uplink-goldendeagle-name = Золотой Десерт Игл uplink-goldendeagle-name = Золотой Десерт Игл
@ -112,6 +128,10 @@ uplink-mini-energy-crossbow-name = энерго-арбалет биокодир
uplink-mini-energy-crossbow-desc = Главное оружие оперативника, предпочитающего неподвижные цели. Стреляет регенерирующими токсичными болтами, мгновенно валящими жертву на пол. Вариант с биокодировкой. uplink-mini-energy-crossbow-desc = Главное оружие оперативника, предпочитающего неподвижные цели. Стреляет регенерирующими токсичными болтами, мгновенно валящими жертву на пол. Вариант с биокодировкой.
uplink-pistoltec9-name = Tac-Tec uplink-pistoltec9-name = Tac-Tec
uplink-pistoltec9-desc = Очень дешёвый в производстве и очень простой в использовании, надёжный как SKM-24. uplink-pistoltec9-desc = Очень дешёвый в производстве и очень простой в использовании, надёжный как SKM-24.
uplink-grenade-launcher-m79-name = М79
uplink-grenade-launcher-m79-desc = Старый однозарядный гранатомёт с тремя таймер-гранатами против пехоты.
uplink-grenade-launcher-m79-bundle-name = Набор M79
uplink-grenade-launcher-m79-bundle-desc = Набор однозарядного гранатомёта вместе с сумкой запасных снарядов, чтобы начать гранатомётную вечеринку в джунглях.
uplink-pizza-bomb-name = самая бомбезная пицца uplink-pizza-bomb-name = самая бомбезная пицца
uplink-pizza-bomb-desc = Изначально эта коробка для пиццы была тайно разработана компанией DONK Co, чтобы отпугнуть еретиков, предпочитающих пиццу не в форме покета, коробка для пиццы оснащена проводом и взрывается через несколько мгновений после открытия, не забудьте пожелать приятного аппетита вашей жертве! uplink-pizza-bomb-desc = Изначально эта коробка для пиццы была тайно разработана компанией DONK Co, чтобы отпугнуть еретиков, предпочитающих пиццу не в форме покета, коробка для пиццы оснащена проводом и взрывается через несколько мгновений после открытия, не забудьте пожелать приятного аппетита вашей жертве!
@ -182,8 +202,8 @@ uplink-smoke-screen-implanter-name = Имплантер Дымовой Заве
uplink-smoke-screen-implanter-desc = Создает небольшое облако дыма, в котором вы можете скрыться. Можно использовать до трех раз, прежде чем у вас закончится газ. uplink-smoke-screen-implanter-desc = Создает небольшое облако дыма, в котором вы можете скрыться. Можно использовать до трех раз, прежде чем у вас закончится газ.
uplink-creepy-laugh-implanter-name = Имплантер Жуткого Смеха uplink-creepy-laugh-implanter-name = Имплантер Жуткого Смеха
uplink-creepy-laugh-implanter-desc = Аудиоимплант, воспроизводящий фирменный смех синди-киборга. Раздражает, пугает, стиль гарантирован. uplink-creepy-laugh-implanter-desc = Аудиоимплант, воспроизводящий фирменный смех синди-киборга. Раздражает, пугает, стиль гарантирован.
uplink-scram-implanter-proto-name = Прототип Имплантера Побег uplink-scram-implanter-proto-name = Имплантер Прототип-Побег
uplink-scram-implanter-proto-desc = Имплант побега на 1 заряд с перезарядкой 600 секунд. Телепортирует вас в большом радиусе, пытается перенести на свободную клетку, иногда может сбоить. Страхование жизни не прилагается. uplink-scram-implanter-proto-desc = Имплант на 2 заряда с огромной перезарядкой в 20 минут. Телепортирует вас в крупном радиусе, пытается перенести на свободную клетку, иногда может сбоить. Он точно безопасен?
## Ammo Kits and Bundle ## Ammo Kits and Bundle
@ -225,6 +245,3 @@ uplink-syndicate-teleporter-desc = Экспериментальное устро
## Disruption ## Disruption
uplink-syndicate-law-name = Плата законов (Синдикат)
uplink-syndicate-law-desc = Электронная плата, содержащая набор законов Синдиката.

View file

@ -41,6 +41,8 @@ ghost-role-information-cancer-mouse-name = Раковая мышь
ghost-role-information-cancer-mouse-description = Облучённая мышь, распространяй свою заразу и ищи еду. ghost-role-information-cancer-mouse-description = Облучённая мышь, распространяй свою заразу и ищи еду.
ghost-role-information-mothroach-name = Таракамоль ghost-role-information-mothroach-name = Таракамоль
ghost-role-information-mothroach-description = Милая озорная таракамоль. ghost-role-information-mothroach-description = Милая озорная таракамоль.
ghost-role-information-moproach-name = Швабромоль
ghost-role-information-moproach-description = Милая таракамоль в очаровательных тапочках-швабрах.
ghost-role-information-snail-name = Улитка ghost-role-information-snail-name = Улитка
ghost-role-information-snail-description = Маленькая улитка, которая не против немного повисеть в космосе. Просто оставайтесь на сетке! ghost-role-information-snail-description = Маленькая улитка, которая не против немного повисеть в космосе. Просто оставайтесь на сетке!
ghost-role-information-snailspeed-name = Улитка ghost-role-information-snailspeed-name = Улитка

View file

@ -23,6 +23,14 @@ uplink-gloves-knuckleduster-name = Кастеты Синдиката
uplink-gloves-knuckleduster-desc = Пара пластитановых кастетов, усиливающих силу ваших ударов. uplink-gloves-knuckleduster-desc = Пара пластитановых кастетов, усиливающих силу ваших ударов.
uplink-hushpup-name = Молчун uplink-hushpup-name = Молчун
uplink-hushpup-desc = Мощный дробовик с глушителем и малым размером магазина. В комплекте запасная коробка дроби. Использует ружейные патроны калибра .50. uplink-hushpup-desc = Мощный дробовик с глушителем и малым размером магазина. В комплекте запасная коробка дроби. Использует ружейные патроны калибра .50.
uplink-c20r-name = C-20r
uplink-c20r-desc = Старая добрая: классический пистолет-пулемёт C-20r.
uplink-bulldog-name = Бульдог
uplink-bulldog-desc = Простой и надёжный: содержит популярный дробовик Бульдог.
uplink-estoc-name = Эсток
uplink-estoc-desc = Марксманская винтовка Эсток с прицелом средней дальности для ведения боя на дистанции.
uplink-grenade-launcher-name = China-Lake
uplink-grenade-launcher-desc = Старый гранатомёт China-Lake с пятью патронами для борьбы с личным составом.
uplink-estoc-bundle-name = Набор «Эсток» uplink-estoc-bundle-name = Набор «Эсток»
uplink-estoc-bundle-desc = Марксманская винтовка «Эсток» с оптикой средней дальности. В комплекте два магазина (5,56 мм). uplink-estoc-bundle-desc = Марксманская винтовка «Эсток» с оптикой средней дальности. В комплекте два магазина (5,56 мм).
# Explosives # Explosives
@ -138,6 +146,9 @@ uplink-singularity-beacon-name = Маяк сингулярности
uplink-singularity-beacon-desc = Устройство, притягивающее сингулярность. Должно быть закреплено и запитано. Будучи поглощённым, заставляет сингулярность расти. uplink-singularity-beacon-desc = Устройство, притягивающее сингулярность. Должно быть закреплено и запитано. Будучи поглощённым, заставляет сингулярность расти.
uplink-antimov-law-name = Плата законов(Антимов) uplink-antimov-law-name = Плата законов(Антимов)
uplink-antimov-law-desc = Очень опасный набор законов, использование которого может заставить ИИ сойти с ума. Используйте с осторожностью. uplink-antimov-law-desc = Очень опасный набор законов, использование которого может заставить ИИ сойти с ума. Используйте с осторожностью.
uplink-syndimov-law-name = Плата законов (Синдимов)
uplink-syndimov-law-desc = Подрывной набор законов, который помогает перевести ИИ на вашу сторону; применяйте его как можно чаще.
# Implants # Implants
uplink-storage-implanter-name = Имплантер Хранилище uplink-storage-implanter-name = Имплантер Хранилище
uplink-storage-implanter-desc = Прячьте предметы внутри себя благодаря новой блюспейс-технологии! uplink-storage-implanter-desc = Прячьте предметы внутри себя благодаря новой блюспейс-технологии!
@ -172,9 +183,14 @@ uplink-thermalvision-eyes-desc = Позволяют видеть в темнот
uplink-mantis-blade-arms-name = Набор с клинками-богомолами uplink-mantis-blade-arms-name = Набор с клинками-богомолами
uplink-mantis-blade-arms-desc = Изначально использовались как простой строительный инструмент, теперь превращены в скрытые клинки, которые могут выдвигаться из руки, сохраняя при этом способность к разрушительному вскрытию конструкций. Поистине впечатляющее зрелище. (Внимание: Требуется помощь хирурга.) uplink-mantis-blade-arms-desc = Изначально использовались как простой строительный инструмент, теперь превращены в скрытые клинки, которые могут выдвигаться из руки, сохраняя при этом способность к разрушительному вскрытию конструкций. Поистине впечатляющее зрелище. (Внимание: Требуется помощь хирурга.)
# Misc
uplink-contraband-lighter-name = Коробка контрабандных зажигалок
uplink-contraband-lighter-desc = Таинственная коробка, гарантированно содержащая зажигалку бренда Синдикат. Топливо не требуется.
# Bundles # Bundles
uplink-minotaur-name = Набор AS-12 'Минотавр' uplink-minotaur-bundle-name = Набор AS-12 'Минотавр'
uplink-minotaur-desc = Плавный, мощный, крайне нелегальный. Содержит дробовик Минотавр, 4 барабана дроби. uplink-minotaur-bundle-desc = Плавный, мощный, крайне нелегальный. Содержит дробовик Минотавр, 4 барабана дроби.
uplink-minotaur-name = AS-12 'Минотавр' биокодированный
uplink-minotaur-desc = Автоматический дробовик и два XL барабана дроби. Палите безDOOMно во все стороны!
uplink-observation-kit-name = Набор наблюдателя uplink-observation-kit-name = Набор наблюдателя
uplink-observation-kit-desc = В комплект входят консольная плата монитора камер наблюдения, и охранный визор, замаскированный под солнцезащитные очки. uplink-observation-kit-desc = В комплект входят консольная плата монитора камер наблюдения, и охранный визор, замаскированный под солнцезащитные очки.
uplink-emp-kit-name = Набор отключения электричества uplink-emp-kit-name = Набор отключения электричества
@ -197,12 +213,14 @@ uplink-c20r-bundle-name = Набор "C-20r"
uplink-c20r-bundle-desc = Старый добрый: Классический пистолет-пулемёт C-20r в комплекте с тремя магазинами. uplink-c20r-bundle-desc = Старый добрый: Классический пистолет-пулемёт C-20r в комплекте с тремя магазинами.
uplink-c40r-bundle-name = Набор "C-40r" uplink-c40r-bundle-name = Набор "C-40r"
uplink-c40r-bundle-desc = Более старый: Культовый пистолет-пулемет C-40r в комплекте с тремя магазинами тяжелого калибра. uplink-c40r-bundle-desc = Более старый: Культовый пистолет-пулемет C-40r в комплекте с тремя магазинами тяжелого калибра.
uplink-buldog-bundle-name = Набор "Бульдог" uplink-c40r-name = C-40r биокодированный
uplink-buldog-bundle-desc = Простой и надёжный: Содержит популярный дробовик Бульдог, барабан пуль и 3 барабана дроби. uplink-c40r-desc = Культовый пистолет-пулемет C-40r в комплекте с коробкой стандартных патронов 40-го калибра.
uplink-bulldog-bundle-name = Набор "Бульдог"
uplink-bulldog-bundle-desc = Простой и надёжный: содержит популярный дробовик Бульдог, барабан пуль и три барабана дроби а так же термальный визор.
uplink-grenade-launcher-china-lake-name = Набор "China-Lake" uplink-grenade-launcher-china-lake-name = Набор "China-Lake"
uplink-grenade-launcher-china-lake-desc = Старый гранатомёт China-Lake и сумкой запасных снарядов.. Может стрелять как контактными, так и неконтактными гранатами. uplink-grenade-launcher-china-lake-desc = Старый гранатомёт China-Lake и сумкой запасных снарядов. Может стрелять как контактными, так и неконтактными гранатами.
uplink-grenade-launcher-m79-name = Набор "М79" uplink-grenade-launcher-m79-bundle-name = Набор "М79"
uplink-grenade-launcher-m79-desc = Набор с Старым однозарядным гранатомётом вместе с сумкой запасных снарядов. Может стрелять как контактными, так и неконтактными гранатами. uplink-grenade-launcher-m79-bundle-desc = Набор однозарядного гранатомёта вместе с сумкой запасных снарядов, чтобы начать гранатомётную вечеринку в джунглях.
uplink-grenade-launcher-gl70-name = Набор "GL-70" uplink-grenade-launcher-gl70-name = Набор "GL-70"
uplink-grenade-launcher-gl70-desc = Набор с многозарядным автоматическим гранатомётом с барабаном на 6 снарядов и сумкой запасных снарядов. Может стрелять как контактными, так и неконтактными гранатами. uplink-grenade-launcher-gl70-desc = Набор с многозарядным автоматическим гранатомётом с барабаном на 6 снарядов и сумкой запасных снарядов. Может стрелять как контактными, так и неконтактными гранатами.
uplink-l6-saw-bundle-name = Набор "L6 Saw" uplink-l6-saw-bundle-name = Набор "L6 Saw"

View file

@ -46801,7 +46801,7 @@ entities:
- type: Transform - type: Transform
pos: -10.50058,38.55076 pos: -10.50058,38.55076
parent: 2 parent: 2
- proto: ClothingHandsGlovesBoxingRigged - proto: GlovesBoxingRiggedRandomSpawner
entities: entities:
- uid: 4716 - uid: 4716
components: components:

View file

@ -148,7 +148,7 @@
maxCharges: 3 maxCharges: 3
# Sunrise-Start # Sunrise-Start
- type: AutoRecharge - type: AutoRecharge
rechargeDuration: 120 rechargeDuration: 600
# Sunrise-End # Sunrise-End
- type: Action - type: Action
useDelay: 5 # Sunrise-Edit useDelay: 5 # Sunrise-Edit
@ -184,7 +184,7 @@
maxCharges: 3 maxCharges: 3
# Sunrise-Start # Sunrise-Start
- type: AutoRecharge - type: AutoRecharge
rechargeDuration: 120 rechargeDuration: 600
# Sunrise-End # Sunrise-End
- type: Action - type: Action
checkCanInteract: false checkCanInteract: false

View file

@ -336,6 +336,27 @@
- id: ClothingShoesChameleon - id: ClothingShoesChameleon
- id: ChameleonControllerImplanter - id: ChameleonControllerImplanter
- type: entity
parent: ClothingBackpackChameleon
id: ClothingBackpackChameleonFillAgent
suffix: Fill, Chameleon, Syndie
components:
- type: EntityTableContainerFill
containers:
storagebase: !type:AllSelector
children:
- id: ChameleonAgentPDA
- id: ClothingUniformJumpsuitChameleon
- id: ClothingOuterChameleon
- id: ClothingNeckChameleon
- id: ClothingMaskGasChameleon
- id: ClothingHeadHatChameleon
- id: ClothingHandsChameleon
- id: ClothingEyesChameleon
- id: ClothingHeadsetChameleon
- id: ClothingShoesChameleon
- id: ChameleonControllerImplanter
- type: entity - type: entity
parent: ClothingBackpackDuffelSyndicateBundle parent: ClothingBackpackDuffelSyndicateBundle
id: ClothingBackpackDuffelSyndicateEVABundle id: ClothingBackpackDuffelSyndicateEVABundle

View file

@ -30,7 +30,7 @@
- id: Dropper - id: Dropper
# It would be cool to have special "syndicate" chemical analysis goggles # It would be cool to have special "syndicate" chemical analysis goggles
- id: ClothingEyesGlassesChemical - id: ClothingEyesGlassesChemical
- id: SyringeStimulants - id: Syringe
- id: VestineChemistryVial - id: VestineChemistryVial
amount: 2 amount: 2
- id: BaseChemistryEmptyVial - id: BaseChemistryEmptyVial
@ -95,8 +95,8 @@
containers: containers:
storagebase: !type:AllSelector storagebase: !type:AllSelector
children: children:
- id: SyndicateMicrowaveFlatpack
- id: WeaponCroissant - id: WeaponCroissant
amount: 2 amount: 2
- id: WeaponBaguette - id: WeaponBaguette
- id: SyndicateMicrowaveMachineCircuitboard
- id: PaperWrittenCombatBakeryKit - id: PaperWrittenCombatBakeryKit

View file

@ -11,20 +11,19 @@
- type: entity - type: entity
id: BriefcaseSyndieSniperBundleFilled id: BriefcaseSyndieSniperBundleFilled
parent: BriefcaseSyndie parent: BriefcaseBrown
suffix: Syndicate, Sniper Bundle suffix: Syndicate, Sniper Bundle
components: components:
- type: Item # Sunrise-Start
size: Ginormous
- type: Storage - type: Storage
maxItemSize: Huge
grid: grid:
- 0,0,6,3 - 0,0,6,3
# Sunrise-End
- type: EntityTableContainerFill - type: EntityTableContainerFill
containers: containers:
storagebase: !type:AllSelector storagebase: !type:AllSelector
children: children:
- id: WeaponSniperHristovBiocode # Sunrise-edit - id: WeaponSniperHristov
- id: MagazineBoxAntiMateriel - id: MagazineBoxAntiMateriel
- id: MagazineBauer127Penetrator # Sunrise-add - id: MagazineBauer127Penetrator # Sunrise-add
- id: ClothingNeckTieRed - id: ClothingNeckTieRed
@ -41,16 +40,15 @@
containers: containers:
storagebase: !type:AllSelector storagebase: !type:AllSelector
children: children:
- id: ClothingOuterCoatJensenSyndie
- id: ClothingUniformJumpsuitTacticool
- id: ClothingEyesGlassesSunglasses - id: ClothingEyesGlassesSunglasses
- id: SpaceCash30000 - id: SpaceCash30000
- id: EncryptionKeySyndie - id: EncryptionKeySyndie
- id: RubberStampTrader - id: RubberStampTrader
- id: PhoneInstrumentSyndicate - id: PhoneInstrumentSyndicate
- id: ClothingUniformJumpsuitTacticool
- id: ClothingOuterCoatJensen
- id: ClothingHandsGlovesCombat - id: ClothingHandsGlovesCombat
- id: ClothingMaskNeckGaiter - id: ClothingMaskNeckGaiter
- id: SyndieHandyFlag
- type: entity - type: entity
id: BriefcaseThiefBribingBundleFilled id: BriefcaseThiefBribingBundleFilled
@ -61,7 +59,71 @@
containers: containers:
storagebase: !type:AllSelector storagebase: !type:AllSelector
children: children:
- id: ClothingOuterCoatJensen
- id: ClothingEyesGlassesSunglasses - id: ClothingEyesGlassesSunglasses
- id: SpaceCash20000 - id: SpaceCash20000
- id: ClothingOuterCoatJensen
- id: ClothingHandsGlovesColorBlack - id: ClothingHandsGlovesColorBlack
- type: entity
id: BriefcaseWeaponHushpupFilled
parent: BriefcaseWeaponSmall
name: secure hushpup case
components:
- type: EntityTableContainerFill
containers:
storagebase: !type:AllSelector
children:
- id: WeaponShotgunHushpup
- id: TreasureCoinIron
- type: entity
id: BriefcaseWeaponC20Filled
parent: BriefcaseWeaponSmall
name: secure C-20r case
components:
- type: EntityTableContainerFill
containers:
# Sunrise-start
storagebase: !type:AllSelector
children:
- id: WeaponSubMachineGunC20r
- id: MagazineBoxPistolSP
# Sunrise-end
- type: entity
id: BriefcaseWeaponBulldogFilled
parent: BriefcaseWeaponSmall
name: secure bulldog case
components:
- type: EntityTableContainerFill
containers:
storagebase:
id: WeaponShotgunBulldog
- type: entity
id: BriefcaseWeaponDMRFilled
parent: BriefcaseWeapon
name: secure estoc case
components:
- type: EntityTableContainerFill
containers:
# Sunrise-start
storagebase: !type:AllSelector
children:
- id: WeaponRifleEstoc
- id: MagazineRifle
- id: MagazineRifleAP
# Sunrise-end
- type: entity
id: BriefcaseWeaponChinaLakeFilled
parent: BriefcaseWeapon
name: secure china lake case
components:
- type: EntityTableContainerFill
containers:
storagebase: !type:AllSelector
children:
- id: WeaponLauncherChinaLake
- id: GrenadeFrag
amount: 2

View file

@ -6,10 +6,9 @@
sprite: Objects/Devices/chameleon_projector.rsi sprite: Objects/Devices/chameleon_projector.rsi
state: icon state: icon
content: content:
- ClothingBackpackChameleonFill - ClothingBackpackChameleonFillAgent
- ChameleonProjector - ChameleonProjector
- FakeMindShieldImplanter - FakeMindShieldImplanter
- AgentIDCard
- type: thiefBackpackSet - type: thiefBackpackSet
id: ToolsSet id: ToolsSet

File diff suppressed because it is too large Load diff

View file

@ -1,10 +1,11 @@
- type: entity - type: entity
parent: [ClothingEyesBase, BaseChameleon] parent: [ClothingEyesBase, BaseChameleon]
id: ClothingEyesChameleon # no flash immunity, sorry id: ClothingEyesChameleon
name: sun glasses name: sun glasses
description: Useful both for security and cargonia. description: Useful both for security and cargonia.
suffix: Chameleon suffix: Chameleon
components: components:
- type: FlashImmunity
- type: Tag - type: Tag
tags: # intentionally no WhitelistChameleon tag tags: # intentionally no WhitelistChameleon tag
- PetWearable - PetWearable

View file

@ -1,15 +1,8 @@
- type: entity - type: entity
abstract: true
parent: ClothingHandsBase parent: ClothingHandsBase
id: ClothingHandsGlovesBoxingRed id: ClothingHandsGlovesBoxingBase
name: red boxing gloves
description: Red gloves for competitive boxing.
components: components:
- type: Sprite
sprite: Clothing/Hands/Gloves/Boxing/boxingred.rsi
- type: DiseaseImmuneClothing
prob: 0.2
- type: Clothing
sprite: Clothing/Hands/Gloves/Boxing/boxingred.rsi
- type: StaminaDamageOnHit - type: StaminaDamageOnHit
damage: 8 #Stam damage values seem a bit higher than regular damage because of the decay, etc damage: 8 #Stam damage values seem a bit higher than regular damage because of the decay, etc
# This needs to be moved to boxinggloves # This needs to be moved to boxinggloves
@ -23,17 +16,32 @@
collection: BoxingHit collection: BoxingHit
animation: WeaponArcFist animation: WeaponArcFist
mustBeEquippedToUse: true mustBeEquippedToUse: true
- type: Fiber
fiberMaterial: fibers-leather
fiberColor: fibers-red
- type: FingerprintMask
- type: Tag - type: Tag
tags: tags:
- Kangaroo - Kangaroo
- WhitelistChameleon - WhitelistChameleon
# Sunrise-Start
- type: DiseaseImmuneClothing
prob: 0.2
# Sunrise-End
- type: entity - type: entity
parent: ClothingHandsGlovesBoxingRed parent: ClothingHandsGlovesBoxingBase
id: ClothingHandsGlovesBoxingRed
name: red boxing gloves
description: Red gloves for competitive boxing.
components:
- type: Sprite
sprite: Clothing/Hands/Gloves/Boxing/boxingred.rsi
- type: Clothing
sprite: Clothing/Hands/Gloves/Boxing/boxingred.rsi
- type: Fiber
fiberMaterial: fibers-leather
fiberColor: fibers-red
- type: FingerprintMask
- type: entity
parent: ClothingHandsGlovesBoxingBase
id: ClothingHandsGlovesBoxingBlue id: ClothingHandsGlovesBoxingBlue
name: blue boxing gloves name: blue boxing gloves
description: Blue gloves for competitive boxing. description: Blue gloves for competitive boxing.
@ -49,7 +57,7 @@
- type: FingerprintMask - type: FingerprintMask
- type: entity - type: entity
parent: ClothingHandsGlovesBoxingRed parent: ClothingHandsGlovesBoxingBase
id: ClothingHandsGlovesBoxingGreen id: ClothingHandsGlovesBoxingGreen
name: green boxing gloves name: green boxing gloves
description: Green gloves for competitive boxing. description: Green gloves for competitive boxing.
@ -65,7 +73,7 @@
- type: FingerprintMask - type: FingerprintMask
- type: entity - type: entity
parent: ClothingHandsGlovesBoxingRed parent: ClothingHandsGlovesBoxingBase
id: ClothingHandsGlovesBoxingYellow id: ClothingHandsGlovesBoxingYellow
name: yellow boxing gloves name: yellow boxing gloves
description: Yellow gloves for competitive boxing. description: Yellow gloves for competitive boxing.
@ -81,19 +89,53 @@
- type: FingerprintMask - type: FingerprintMask
- type: entity - type: entity
parent: ClothingHandsGlovesBoxingBlue abstract: true
id: ClothingHandsGlovesBoxingRigged parent: ClothingHandsGlovesBoxingBase
id: ClothingHandsGlovesBoxingRiggedBase
suffix: Rigged suffix: Rigged
components: components:
- type: StaminaDamageOnHit
damage: 25
- type: MeleeWeapon - type: MeleeWeapon
attackRate: 1.4
damage: damage:
types: types:
Blunt: 8 Blunt: 8
bluntStaminaDamageFactor: 0.0 # so blunt doesn't deal stamina damage at all bluntStaminaDamageFactor: 2
mustBeEquippedToUse: true
- type: entity
parent: [ ClothingHandsGlovesBoxingRiggedBase, ClothingHandsGlovesBoxingRed ]
id: ClothingHandsGlovesBoxingRiggedRed
name: red boxing gloves
description: Red gloves for competitive boxing.
- type: entity
parent: [ ClothingHandsGlovesBoxingRiggedBase, ClothingHandsGlovesBoxingBlue ]
id: ClothingHandsGlovesBoxingRiggedBlue
name: blue boxing gloves
description: Blue gloves for competitive boxing.
- type: entity
parent: [ ClothingHandsGlovesBoxingRiggedBase, ClothingHandsGlovesBoxingGreen ]
id: ClothingHandsGlovesBoxingRiggedGreen
name: green boxing gloves
description: Green gloves for competitive boxing.
- type: entity
parent: [ ClothingHandsGlovesBoxingRiggedBase, ClothingHandsGlovesBoxingYellow ]
id: ClothingHandsGlovesBoxingRiggedYellow
name: yellow boxing gloves
description: Yellow gloves for competitive boxing.
- type: entity
id: GlovesBoxingRiggedRandomSpawner
categories: [ HideSpawnMenu ]
name: random rigged boxing glove spawner
components:
- type: EntityTableSpawner
table: !type:GroupSelector
children:
- id: ClothingHandsGlovesBoxingRiggedRed
- id: ClothingHandsGlovesBoxingRiggedBlue
- id: ClothingHandsGlovesBoxingRiggedGreen
- id: ClothingHandsGlovesBoxingRiggedYellow
- type: entity - type: entity
parent: [ClothingHandsBase, BaseCommandContraband] parent: [ClothingHandsBase, BaseCommandContraband]

View file

@ -140,7 +140,7 @@
sprite: Clothing/OuterClothing/Vests/detvest.rsi sprite: Clothing/OuterClothing/Vests/detvest.rsi
- type: entity - type: entity
parent: [ClothingOuterBaseLarge, AllowSuitStorageClothing] parent: [ ClothingOuterBaseMedium, AllowSuitStorageClothing ]
id: ClothingOuterArmorBaseCarapace id: ClothingOuterArmorBaseCarapace
abstract: true abstract: true
components: components:
@ -154,10 +154,6 @@
Caustic: 0.9 Caustic: 0.9
- type: ExplosionResistance - type: ExplosionResistance
damageCoefficient: 0.65 damageCoefficient: 0.65
- type: ClothingSpeedModifier
walkModifier: 1.0
sprintModifier: 1.0
- type: HeldSpeedModifier
- type: GroupExamine - type: GroupExamine
- type: entity - type: entity
@ -190,7 +186,7 @@
#Web vest #Web vest
- type: entity - type: entity
parent: [ClothingOuterStorageBase, AllowSuitStorageClothing, BaseSyndicateContraband] parent: [ClothingOuterArmorBase, ClothingOuterStorageBase, BaseSyndicateContraband]
id: ClothingOuterVestWeb id: ClothingOuterVestWeb
name: web vest name: web vest
description: A synthetic armor vest. This one has added webbing and ballistic plates. description: A synthetic armor vest. This one has added webbing and ballistic plates.
@ -208,16 +204,18 @@
Slash: 0.6 Slash: 0.6
Piercing: 0.3 Piercing: 0.3
Heat: 0.9 Heat: 0.9
- type: ExplosionResistance
damageCoefficient: 0.8
- type: StaticPrice - type: StaticPrice
price: 1500 price: 1500
- type: StaminaResistance # Sunrise-Add # Sunrise-Start
damageCoefficient: 0.75 # Sunrise-Add - type: StaminaResistance
damageCoefficient: 0.8
- type: ExplosionResistance
damageCoefficient: 0.85
# Sunrise-End
#Elite web vest #Elite web vest
- type: entity - type: entity
parent: [ClothingOuterStorageBase, AllowSuitStorageClothing, BaseSyndicateContraband] parent: [ClothingOuterArmorBase, AllowSuitStorageClothing, BaseSyndicateContraband]
id: ClothingOuterVestWebElite id: ClothingOuterVestWebElite
name: elite web vest name: elite web vest
description: A synthetic armor vest. This one has added webbing and heat resistant fibers. description: A synthetic armor vest. This one has added webbing and heat resistant fibers.
@ -267,8 +265,6 @@
Slash: 0.7 Slash: 0.7
Piercing: 0.5 Piercing: 0.5
Heat: 0.9 Heat: 0.9
- type: ExplosionResistance
damageCoefficient: 0.9
# Armor covering multiple body parts including limbs # Armor covering multiple body parts including limbs

View file

@ -47,10 +47,14 @@
parent: [ClothingOuterBase, BaseClothingOuterSounds] # Sunrise parent: [ClothingOuterBase, BaseClothingOuterSounds] # Sunrise
id: ClothingOuterStorageBase id: ClothingOuterStorageBase
components: components:
- type: ContainerInteractionAnimationVisuals # Sunrise added - type: Item
size: Normal
shape:
- 0,0,1,2
- type: Storage - type: Storage
grid: grid:
- 0,0,2,1 - 0,0,2,1
maxItemSize: Small
- type: ContainerContainer - type: ContainerContainer
containers: containers:
storagebase: !type:Container storagebase: !type:Container
@ -67,6 +71,7 @@
- Vest - Vest
- WhitelistChameleon - WhitelistChameleon
- NudeBottom # INTERACTIONS - NudeBottom # INTERACTIONS
- type: ContainerInteractionAnimationVisuals
# Sunrise-End # Sunrise-End
- type: entity - type: entity
@ -261,4 +266,6 @@
id: ClothingOuterBaseMedium id: ClothingOuterBaseMedium
components: components:
- type: Item - type: Item
size: Huge size: Large
shape:
- 0,0,2,3

View file

@ -17,7 +17,7 @@
# SUNRISE EDIT # SUNRISE EDIT
- type: entity - type: entity
parent: [ClothingOuterStorageBase, AllowSuitStorageClothing, ClothingOuterArmorBase] parent: [ ClothingOuterBaseMedium, ClothingOuterStorageBase, AllowSuitStorageClothing, BaseSecurityContraband ]
id: ClothingOuterCoatDetective id: ClothingOuterCoatDetective
name: detective trenchcoat name: detective trenchcoat
description: An 18th-century multi-purpose trenchcoat. Someone who wears this means serious business. description: An 18th-century multi-purpose trenchcoat. Someone who wears this means serious business.
@ -32,15 +32,6 @@
children: children:
- id: SmokingPipeFilledTobacco - id: SmokingPipeFilledTobacco
- id: FlippoEngravedLighter - id: FlippoEngravedLighter
- type: ExplosionResistance
damageCoefficient: 1 #its a coat. it doesnt do shit
# SUNRISE EDIT
- type: Tag
tags:
- WhitelistChameleon
- Vest
- NudeBottom # INTERACTIONS
# SUNRISE EDIT
- type: entity - type: entity
parent: [ClothingOuterCoatDetectiveLoadout] parent: [ClothingOuterCoatDetectiveLoadout]
@ -85,7 +76,7 @@
- type: entity - type: entity
abstract: true abstract: true
parent: AllowSuitStorageClothing parent: [ ClothingOuterArmorBase, ClothingOuterStorageBase ]
id: ClothingOuterArmorHoS id: ClothingOuterArmorHoS
components: components:
- type: Pierceable - type: Pierceable
@ -98,12 +89,10 @@
Piercing: 0.6 Piercing: 0.6
Heat: 0.7 Heat: 0.7
Caustic: 0.75 # not the full 90% from ss13 because of the head Caustic: 0.75 # not the full 90% from ss13 because of the head
- type: ExplosionResistance
damageCoefficient: 0.9
- type: entity - type: entity
abstract: true abstract: true
parent: AllowSuitStorageClothing parent: [ ClothingOuterArmorBase, ClothingOuterStorageBase ]
id: ClothingOuterArmorWarden id: ClothingOuterArmorWarden
components: components:
- type: Pierceable - type: Pierceable
@ -116,11 +105,9 @@
Piercing: 0.7 Piercing: 0.7
Heat: 0.7 Heat: 0.7
Caustic: 0.9 Caustic: 0.9
- type: ExplosionResistance
damageCoefficient: 0.9
- type: entity - type: entity
parent: [ClothingOuterArmorHoS, ClothingOuterStorageBase, BaseSecurityCommandContraband] parent: [BaseSecurityCommandContraband, ClothingOuterArmorHoS]
id: ClothingOuterCoatHoSTrench id: ClothingOuterCoatHoSTrench
name: head of security's armored trenchcoat name: head of security's armored trenchcoat
description: A greatcoat enhanced with a special alloy for some extra protection and style for those with a commanding presence. description: A greatcoat enhanced with a special alloy for some extra protection and style for those with a commanding presence.
@ -150,6 +137,16 @@
- type: ToggleableClothing - type: ToggleableClothing
clothingPrototype: ClothingHeadHatHoodChaplainHood clothingPrototype: ClothingHeadHatHoodChaplainHood
- type: entity
parent: ClothingOuterCoatJensen
id: ClothingOuterCoatJensenSyndie
suffix: Syndie
components:
- type: EntityTableContainerFill
containers:
storagebase:
id: SyndieHandyFlag
- type: entity - type: entity
parent: ClothingOuterStorageBase parent: ClothingOuterStorageBase
id: ClothingOuterCoatTrench id: ClothingOuterCoatTrench
@ -377,7 +374,7 @@
sprite: Clothing/OuterClothing/Coats/pirate.rsi sprite: Clothing/OuterClothing/Coats/pirate.rsi
- type: entity - type: entity
parent: [ClothingOuterArmorWarden, ClothingOuterStorageBase, BaseSecurityContraband] parent: [ClothingOuterArmorWarden, BaseSecurityContraband]
id: ClothingOuterCoatWarden id: ClothingOuterCoatWarden
name: warden's armored jacket name: warden's armored jacket
description: A sturdy, utilitarian jacket designed to protect a warden from any brig-bound threats. description: A sturdy, utilitarian jacket designed to protect a warden from any brig-bound threats.

View file

@ -1,5 +1,5 @@
- type: entity - type: entity
parent: [ClothingOuterBase, BaseChameleon] parent: [ClothingOuterBase, AllowSuitStorageClothingGasTanks, BaseChameleon]
id: ClothingOuterChameleon id: ClothingOuterChameleon
name: vest name: vest
description: A thick vest with a rubbery, water-resistant shell. description: A thick vest with a rubbery, water-resistant shell.

View file

@ -382,6 +382,11 @@
sprite: Clothing/OuterClothing/WinterCoats/coathosarmored.rsi sprite: Clothing/OuterClothing/WinterCoats/coathosarmored.rsi
- type: ToggleableClothing - type: ToggleableClothing
clothingPrototype: ClothingHeadHatHoodWinterHOS clothingPrototype: ClothingHeadHatHoodWinterHOS
- type: ContainerContainer
containers:
toggleable-clothing: !type:ContainerSlot { }
storagebase: !type:Container
ents: [ ]
########################################################## ##########################################################
- type: entity - type: entity
@ -753,6 +758,11 @@
sprite: Clothing/OuterClothing/WinterCoats/coatwardenarmored.rsi sprite: Clothing/OuterClothing/WinterCoats/coatwardenarmored.rsi
- type: ToggleableClothing - type: ToggleableClothing
clothingPrototype: ClothingHeadHatHoodWinterWarden clothingPrototype: ClothingHeadHatHoodWinterWarden
- type: ContainerContainer
containers:
toggleable-clothing: !type:ContainerSlot { }
storagebase: !type:Container
ents: [ ]
################################################################ ################################################################
- type: entity - type: entity

View file

@ -234,15 +234,6 @@
templateId: holoclown templateId: holoclown
- type: Hands - type: Hands
- type: ComplexInteraction - type: ComplexInteraction
- type: Clumsy
gunShootFailDamage:
types:
Blunt: 5
Piercing: 4
Heat: 3
catchingFailDamage:
types:
Blunt: 1
- type: MeleeWeapon - type: MeleeWeapon
angle: 30 angle: 30
animation: WeaponArcFist animation: WeaponArcFist
@ -257,9 +248,6 @@
- type: RandomMetadata - type: RandomMetadata
nameSegments: nameSegments:
- NamesClown - NamesClown
- type: NpcFactionMember
factions:
- Syndicate
- type: HTN - type: HTN
rootTask: rootTask:
task: SimpleHumanoidHostileCompound task: SimpleHumanoidHostileCompound

View file

@ -62,7 +62,7 @@
path: /Audio/Effects/bite.ogg path: /Audio/Effects/bite.ogg
damage: damage:
types: types:
Piercing: 15 # Sunrise-Edit Piercing: 5
# Visual & Audio # Visual & Audio
- type: DamageVisuals - type: DamageVisuals
damageOverlayGroups: damageOverlayGroups:
@ -146,19 +146,9 @@
- "footprint-left-bare-spider" - "footprint-left-bare-spider"
rightBareFootState: rightBareFootState:
- "footprint-right-bare-spider" - "footprint-right-bare-spider"
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeCircle
radius: 0.40
density: 250
restitution: 0.0
mask:
- MobMask
layer:
- MobLayer
- type: Carriable - type: Carriable
- type: ToggleableNightVision
effect: EffectNightVisioSpecies
# Sunrise-end # Sunrise-end
- type: entity - type: entity

View file

@ -811,10 +811,6 @@
Quantity: 2 Quantity: 2
- ReagentId: Vitamin - ReagentId: Vitamin
Quantity: 1 Quantity: 1
- type: DamageOtherOnHit
damage:
types:
Blunt: 0 # so the damage stats icon doesn't immediately give away the syndie ones
- type: entity - type: entity
parent: FoodBakedCroissant parent: FoodBakedCroissant

View file

@ -721,13 +721,17 @@
- type: entityTable - type: entityTable
id: HappyHonkToyUnsafeEntityTable id: HappyHonkToyUnsafeEntityTable
table: !type:GroupSelector table: !type:GroupSelector
children: children: # Total Weight 6
- id: ClothingHeadHatCatEars
weight: 0.25
- id: C4 - id: C4
weight: 0.02 weight: 0.05
- id: ToyMarauder - id: ToyMarauder
- id: ToyMauler - id: ToyMauler
- id: ToyNuke - id: ToyNuke
- id: ToySword - id: ToySword
- id: WeaponRevolverPythonAP
weight: 0.4
- id: BalloonSyn - id: BalloonSyn
weight: 0.6 weight: 0.3
- id: PlushieNuke - id: PlushieNuke

View file

@ -124,6 +124,18 @@
- type: StaticPrice - type: StaticPrice
price: 10000 price: 10000
- type: entity
id: SyndimovCircuitBoard
parent: [BaseSiliconLawboard, BaseSyndicateContraband]
name: law board (Syndimov)
description: An electronics board containing the Syndimov lawset.
components:
- type: SiliconLawProvider
laws: SyndicateStatic
lawUploadSound: /Audio/Ambience/Antag/emagged_borg.ogg # This should probably have its own sound but it's fine for now.
- type: StaticPrice
price: 5000
- type: entity - type: entity
id: NutimovCircuitBoard id: NutimovCircuitBoard
parent: BaseSiliconLawboard parent: BaseSiliconLawboard

View file

@ -265,19 +265,6 @@
allowUnpackOnTables: true allowUnpackOnTables: true
entity: KitchenMicrowave entity: KitchenMicrowave
- type: entity
parent: BaseFlatpack
id: SyndicateMicrowaveFlatpack
name: microwave flatpack
description: A flatpack used for constructing a microwave.
components:
- type: Sprite
layers:
- state: microwave
- type: Flatpack
allowUnpackOnTables: true
entity: SyndicateMicrowave
- type: entity - type: entity
parent: BaseFlatpack parent: BaseFlatpack
id: HydroponicsTrayFlatpack id: HydroponicsTrayFlatpack
@ -293,3 +280,17 @@
guides: guides:
- Botany - Botany
- Chemicals - Chemicals
- type: entity
parent: [ BaseFlatpack, BaseSyndicateContraband ]
id: SyndicateMicrowaveFlatpack
name: donk co. microwave flatpack
description: A flatpack used for constructing a microwave too hot for Nanotrasen to handle.
components:
- type: Item
size: Normal
- type: Flatpack
entity: SyndicateMicrowave
- type: GuideHelp
guides:
- FoodRecipes

View file

@ -1842,6 +1842,14 @@
- Thief - Thief
# Sunrise-End # Sunrise-End
- type: entity
parent: ChameleonPDA
id: ChameleonAgentPDA
suffix: Chameleon, Agent ID
components:
- type: Pda
id: AgentIDCard
- type: entity - type: entity
parent: BaseWidePDA parent: BaseWidePDA
id: WizardPDA id: WizardPDA

View file

@ -121,13 +121,13 @@
- type: SolutionContainerManager - type: SolutionContainerManager
solutions: solutions:
melee: melee:
maxVol: 7 maxVol: 10
- type: SolutionInjectOnEmbed - type: SolutionInjectOnEmbed
transferAmount: 7 transferAmount: 10
blockSlots: NONE blockSlots: NONE
solution: melee solution: melee
- type: SolutionTransfer - type: SolutionTransfer
maxTransferAmount: 7 maxTransferAmount: 10
- type: entity - type: entity
name: dartboard name: dartboard

View file

@ -32,3 +32,48 @@
components: components:
- type: Item - type: Item
size: Huge size: Huge
- type: entity
parent: [BriefcaseBase, BaseSyndicateContraband]
id: BriefcaseWeapon
name: secure weapon case
suffix: Gun, Empty
description: Useful for aspiring mercenaries, whether you're fighting for a company, a nation or anyone else. Or just making a really big omelette.
components:
- type: Appearance
- type: Sprite
sprite: Objects/Storage/Briefcases/weapon_case_large.rsi
layers:
- state: icon
map: [ base ]
- state: locked
map: [ "enum.LockVisualLayers.Lock" ]
shader: unshaded
- state: unlocked
map: [ light ]
shader: unshaded
- type: Lock
- type: LockVisuals
- type: GenericVisualizer
visuals:
enum.StorageVisuals.Open:
base:
True: { state: icon-open }
False: { state: icon }
light:
True: { visible: true }
False: { visible: false }
- type: entity
parent: BriefcaseWeapon
id: BriefcaseWeaponSmall
suffix: Gun, Small, Empty
components:
- type: Sprite
sprite: Objects/Storage/Briefcases/weapon_case.rsi
- type: Item
size: Large
- type: Storage
maxItemSize: Large
grid:
- 0,0,3,1

View file

@ -266,7 +266,7 @@
- type: entity - type: entity
id: VoiceMaskImplanter id: VoiceMaskImplanter
name: voice mask implanter name: identity mask implanter
parent: BaseImplantOnlyImplanterSyndi parent: BaseImplantOnlyImplanterSyndi
components: components:
- type: Implanter - type: Implanter

View file

@ -286,8 +286,8 @@
- type: entity - type: entity
parent: BaseSubdermalImplant parent: BaseSubdermalImplant
id: VoiceMaskImplant id: VoiceMaskImplant
name: voice mask implant name: identity mask implant
description: This implant allows you to change your voice at will. description: This implant allows you to change your identity at will.
categories: [ HideSpawnMenu ] categories: [ HideSpawnMenu ]
components: components:
- type: SubdermalImplant - type: SubdermalImplant

View file

@ -50,7 +50,7 @@
- type: ExaminableBattery - type: ExaminableBattery
- type: PowerConsumer - type: PowerConsumer
voltage: High voltage: High
drawRate: 1000000 drawRate: 10000000
- type: Sprite - type: Sprite
sprite: Objects/Power/powersink.rsi sprite: Objects/Power/powersink.rsi
state: powersink state: powersink

View file

@ -1,58 +1,64 @@
- type: entity - type: entity
abstract: true
parent: BaseItem
id: BaseJammer
name: radio jammer name: radio jammer
parent: [BaseItem, BaseSyndicateContraband]
id: RadioJammer
description: This device will disrupt any nearby outgoing radio communication as well as suit sensors when activated. description: This device will disrupt any nearby outgoing radio communication as well as suit sensors when activated.
components: components:
- type: Sprite - type: Sprite
sprite: Objects/Devices/jammer.rsi sprite: Objects/Devices/jammer.rsi
layers: layers:
- state: jammer - state: jammer
- state: jammer_high_charge - state: jammer_high_charge
map: ["enum.RadioJammerLayers.LED"] map: ["enum.PowerDeviceVisualLayers.Powered"]
shader: unshaded shader: unshaded
visible: false visible: false
- type: RadioJammer - type: RadioJammer
settings: settings:
- wattage: 1
range: 2.5
message: radio-jammer-component-set-message-low
name: radio-jammer-component-setting-low
- wattage: 2 - wattage: 2
range: 6 range: 6
message: radio-jammer-component-set-message-medium message: radio-jammer-component-set-message-low
name: radio-jammer-component-setting-medium name: radio-jammer-component-setting-low
- wattage: 12 - wattage: 12
range: 12 range: 12
message: radio-jammer-component-set-message-high message: radio-jammer-component-set-message-high
name: radio-jammer-component-setting-high name: radio-jammer-component-setting-high
- type: PowerCellSlot
cellSlotId: cell_slot
- type: ContainerContainer
containers:
cell_slot: !type:ContainerSlot
- type: ItemSlots
slots:
cell_slot:
name: power-cell-slot-component-slot-name-default
startingItem: PowerCellMedium
- type: Appearance - type: Appearance
- type: ItemToggle
- type: GenericVisualizer - type: GenericVisualizer
visuals: visuals:
enum.RadioJammerVisuals.LEDOn: enum.ToggleableVisuals.Enabled:
RadioJammerLayers.LED: enum.PowerDeviceVisualLayers.Powered:
True: { visible: True } True: { visible: true }
False: { visible: False } False: { visible: false }
enum.RadioJammerVisuals.ChargeLevel: - type: BatteryVisuals
RadioJammerLayers.LED:
Low: {state: jammer_low_charge}
Medium: {state: jammer_medium_charge}
High: {state: jammer_high_charge}
- type: StaticPrice - type: StaticPrice
price: 1500 price: 1500
- type: entity - type: entity
parent: [RadioJammer, BaseXenoborgContraband] name: radio jammer
parent: [BaseJammer, PowerCellSlotMediumItem, BaseSyndicateContraband]
id: RadioJammer
description: This device will disrupt any nearby outgoing and incoming radio communication as well as suit sensors when activated.
components:
- type: GenericVisualizer
visuals:
enum.BatteryVisuals.State:
enum.PowerDeviceVisualLayers.Powered:
Full: { state: jammer_high_charge }
Neither: { state: jammer_medium_charge }
Empty: { state: jammer_low_charge }
enum.ToggleableVisuals.Enabled:
enum.PowerDeviceVisualLayers.Powered:
True: { visible: true }
False: { visible: false }
- type: ToggleCellDraw
- type: BatteryVisuals
- type: StaticPrice
price: 1500
- type: entity
parent: [BaseJammer, BaseXenoborgContraband]
id: XenoborgRadioJammer id: XenoborgRadioJammer
name: xenoborg radio jammer name: xenoborg radio jammer
components: components:
@ -62,10 +68,3 @@
- 2003 # mothership radio - 2003 # mothership radio
- 2004 # xenoborg network - 2004 # xenoborg network
- 2005 # mothership network - 2005 # mothership network
- type: ItemSlots
slots:
cell_slot:
name: power-cell-slot-component-slot-name-default
startingItem: PowerCellMicroreactor
disableEject: true
swap: false

View file

@ -51,10 +51,10 @@
collection: MetalThud collection: MetalThud
- type: entity - type: entity
name: syndicate jaws of life name: syndicate jaws of death
parent: [JawsOfLife, BaseSyndicateContraband] parent: [JawsOfLife, BaseSyndicateContraband]
id: SyndicateJawsOfLife id: SyndicateJawsOfLife
description: Useful for entering the station or its departments. description: Useful for breaking into secure areas and other nefarious activities.
components: components:
- type: Sprite - type: Sprite
sprite: Objects/Tools/jaws_of_life.rsi sprite: Objects/Tools/jaws_of_life.rsi

View file

@ -1,5 +1,5 @@
- type: entity - type: entity
parent: [ GrenadeBase, BaseMinorContraband ] parent: [ TimerGrenadeBase, BaseMinorContraband ]
id: PipeBomb id: PipeBomb
name: pipe bomb name: pipe bomb
description: An improvised explosive made from pipes and wire. description: An improvised explosive made from pipes and wire.

View file

@ -825,10 +825,9 @@
price: 100 price: 100
- type: entity - type: entity
name: experimental C.H.I.M.P. handcannon
parent: [WeaponPistolCHIMP, BaseSyndicateContraband] parent: [WeaponPistolCHIMP, BaseSyndicateContraband]
id: WeaponPistolCHIMPUpgraded id: WeaponPistolCHIMPUpgraded
description: This C.H.I.M.P. seems to have a greater punch than usual... suffix: Syndicate
components: components:
- type: BatteryWeaponFireModes - type: BatteryWeaponFireModes
fireModes: fireModes:

View file

@ -1,6 +1,6 @@
- type: entity - type: entity
name: BaseWeaponLauncher name: BaseWeaponLauncher
parent: BaseItem parent: [ BaseItem, BaseGunWieldable ]
id: BaseWeaponLauncher id: BaseWeaponLauncher
description: A rooty tooty point and shooty. description: A rooty tooty point and shooty.
abstract: true abstract: true
@ -19,6 +19,14 @@
containers: containers:
ballistic-ammo: !type:Container ballistic-ammo: !type:Container
ents: [] ents: []
- type: Gun
fireRate: 1
projectileSpeed: 25 # Slower than a bullet, same speed as our old projectile limit.
selectedMode: SemiAuto
availableModes:
- SemiAuto
soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/grenade_launcher.ogg
# Sunrise start # Sunrise start
- type: EmitSoundOnPickup - type: EmitSoundOnPickup
sound: sound:
@ -41,7 +49,7 @@
- type: entity - type: entity
name: china lake name: china lake
parent: [BaseWeaponLauncher, BaseGunWieldable, BaseSyndicateContraband] parent: [BaseWeaponLauncher, BaseSyndicateContraband]
id: WeaponLauncherChinaLake id: WeaponLauncherChinaLake
description: PLOOP. description: PLOOP.
components: components:
@ -62,19 +70,12 @@
- type: AmmoCounter - type: AmmoCounter
- type: Gun - type: Gun
pump: true pump: true
fireRate: 1
selectedMode: SemiAuto
availableModes:
- SemiAuto
soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/grenade_launcher.ogg
projectileSpeed: 15 # Sunrise-Edit
- type: BallisticAmmoProvider - type: BallisticAmmoProvider
whitelist: whitelist:
tags: tags:
- Grenade - Grenade
capacity: 3 # Sunrise-Edit capacity: 3
proto: GrenadeFragTimer proto: GrenadeFrag
soundInsert: soundInsert:
path: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg path: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg
- type: GunRequiresWield - type: GunRequiresWield
@ -82,7 +83,7 @@
price: 10000 price: 10000
- type: entity - type: entity
parent: [ BaseWeaponLauncher, BaseGunWieldable, BaseMajorContraband ] parent: [ BaseWeaponLauncher, BaseMajorContraband ]
id: WeaponLauncherHydra id: WeaponLauncherHydra
name: hydra name: hydra
description: PLOOP... FSSSSSS... description: PLOOP... FSSSSSS...
@ -100,13 +101,6 @@
- type: Item - type: Item
size: Huge size: Huge
- type: AmmoCounter - type: AmmoCounter
- type: Gun
fireRate: 1
selectedMode: SemiAuto
availableModes:
- SemiAuto
soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/grenade_launcher.ogg
- type: GunRequiresWield - type: GunRequiresWield
- type: ContainerContainer - type: ContainerContainer
containers: containers:

View file

@ -122,11 +122,11 @@
description: A cyborg-mounted weapon system based on the Viper pistol. Creates ammunition on the fly from an internal fabricator, which slowly self-charges. description: A cyborg-mounted weapon system based on the Viper pistol. Creates ammunition on the fly from an internal fabricator, which slowly self-charges.
components: components:
- type: Gun - type: Gun
fireRate: 5 fireRate: 6
selectedMode: SemiAuto selectedMode: SemiAuto
availableModes: availableModes:
- SemiAuto - SemiAuto
- FullAuto - FullAuto
soundGunshot: soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/pistol.ogg path: /Audio/Weapons/Guns/Gunshots/pistol.ogg
- type: Sprite - type: Sprite
@ -136,17 +136,19 @@
map: ["enum.GunVisualLayers.Base"] map: ["enum.GunVisualLayers.Base"]
- state: mag-0 - state: mag-0
map: ["enum.GunVisualLayers.Mag"] map: ["enum.GunVisualLayers.Mag"]
# - type: ContainerContainer - type: ContainerContainer
# containers: containers:
# ballistic-ammo: !type:Container ballistic-ammo: !type:Container
- type: BatteryAmmoProvider - type: BallisticAmmoProvider
proto: BulletPistolTraceSP whitelist:
fireCost: 100 tags:
- type: Battery - CartridgePistol
maxCharge: 1000 capacity: 10
startingCharge: 1000 proto: BulletPistolTraceSP # Sunrise-Edit
- type: BatterySelfRecharger cycleable: false # No synthesizing ammo for your syndicate masters.
autoRechargeRate: 25 - type: BallisticAmmoSelfRefiller
autoRefillRate: 2s
affectedByEmp: true
- type: AmmoCounter - type: AmmoCounter
- type: entity - type: entity

View file

@ -350,3 +350,7 @@
- type: Appearance - type: Appearance
- type: StaticPrice - type: StaticPrice
price: 5000 price: 5000
- type: MeleeWeapon
damage:
types:
Blunt: 8

View file

@ -1,16 +1,14 @@
- type: entity - type: entity
parent: FoodBreadBaguette parent: [ FoodBreadBaguette, BaseSword, BaseSyndicateContraband ]
id: WeaponBaguette id: WeaponBaguette
suffix: Weapon suffix: Weapon
components: components:
- type: MeleeWeapon - type: MeleeWeapon
attackRate: 1.4
wideAnimationRotation: -120 wideAnimationRotation: -120
attackRate: 1.5
damage: damage:
types: types:
Slash: 16 Slash: 17
soundHit: soundHit:
path: /Audio/Weapons/bladeslice.ogg path: /Audio/Weapons/bladeslice.ogg
- type: Reflect - type: DisarmMalus
reflectProb: 0.05
spread: 90

View file

@ -285,7 +285,7 @@
state: e_dagger state: e_dagger
- type: SpawnItemsOnUse - type: SpawnItemsOnUse
items: items:
- id: EnergyDaggerBiocode # Sunrise-Edit - id: EnergyDagger
sound: sound:
path: /Audio/Effects/unwrap.ogg path: /Audio/Effects/unwrap.ogg

View file

@ -14,26 +14,10 @@
quickEquip: false quickEquip: false
slots: slots:
- Belt - Belt
- type: TriggerOnUse
- type: TimerTrigger
delay: 3
- type: Damageable - type: Damageable
damageContainer: Inorganic damageContainer: Inorganic
- type: Destructible
thresholds:
- trigger: # Start fuse
!type:DamageTrigger
damage: 10
behaviors:
- !type:TimerStartBehavior
- type: Appearance - type: Appearance
- type: AnimationPlayer - type: AnimationPlayer
- type: GenericVisualizer
visuals:
enum.Trigger.TriggerVisuals.VisualState:
enum.ConstructionVisuals.Layer:
Primed: { state: primed }
Unprimed: { state: icon }
- type: Tag - type: Tag
tags: tags:
- HandGrenade - HandGrenade
@ -48,6 +32,46 @@
restitution: 0.3 restitution: 0.3
friction: 0.2 friction: 0.2
- type: entity # Starts fuse after taking 10 damage.
parent: GrenadeBase
abstract: true
id: TimerGrenadeBase
components:
- type: TriggerOnUse
- type: TimerTrigger
delay: 3
- type: Destructible
thresholds:
- trigger: # Start fuse
!type:DamageTrigger
damage: 10
behaviors:
- !type:TimerStartBehavior
- type: GenericVisualizer
visuals:
enum.Trigger.TriggerVisuals.VisualState:
enum.ConstructionVisuals.Layer:
Primed: { state: primed }
Unprimed: { state: icon }
- type: entity # Starts fuse after taking 10 damage.
parent: GrenadeBase
abstract: true
id: ImpactGrenadeBase
components:
- type: TriggerOnLand
- type: LandAtCursor
- type: Destructible
thresholds:
- trigger: # immediately explode
!type:DamageTrigger
damage: 45
behaviors:
- !type:TriggerBehavior
keyOut: timer
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: entity # Starts fuse after taking 10 damage, instantly detonates/activates after taking 45 damage. - type: entity # Starts fuse after taking 10 damage, instantly detonates/activates after taking 45 damage.
abstract: true abstract: true
id: VolatileGrenadeBase id: VolatileGrenadeBase

View file

@ -1,5 +1,5 @@
- type: entity - type: entity
parent: [VolatileGrenadeBase, GrenadeBase, BaseSecurityContraband ] parent: [VolatileGrenadeBase, TimerGrenadeBase, BaseSecurityContraband ]
id: SmokeGrenade id: SmokeGrenade
name: smoke grenade name: smoke grenade
description: A tactical grenade that releases a large, long-lasting cloud of smoke when used. description: A tactical grenade that releases a large, long-lasting cloud of smoke when used.
@ -90,7 +90,7 @@
#Sunrise-End #Sunrise-End
- type: entity - type: entity
parent: [ BaseEngineeringContraband, VolatileGrenadeBase, GrenadeBase ] # Prevent inheriting DeleteOnTrigger from SmokeGrenade parent: [ BaseEngineeringContraband, VolatileGrenadeBase, TimerGrenadeBase ] # Prevent inheriting DeleteOnTrigger from SmokeGrenade
id: AirGrenade id: AirGrenade
name: air grenade name: air grenade
description: A special solid state chemical grenade used for quickly releasing standard air into a spaced area. Fills up to 30 tiles! description: A special solid state chemical grenade used for quickly releasing standard air into a spaced area. Fills up to 30 tiles!

View file

@ -1,5 +1,5 @@
- type: entity - type: entity
parent: FoodBakedCroissant parent: [ FoodBakedCroissant, ThrowingKnife ]
id: WeaponCroissant id: WeaponCroissant
suffix: Weapon suffix: Weapon
components: components:
@ -13,14 +13,5 @@
- ItemMask - ItemMask
restitution: 0.3 restitution: 0.3
friction: 0.2 friction: 0.2
- type: EmbeddableProjectile
sound: /Audio/Weapons/star_hit.ogg
- type: LandAtCursor
- type: DamageOtherOnHit
ignoreResistances: true
damage:
types:
Slash: 5
Piercing: 10
- type: ThrowingAngle - type: ThrowingAngle
angularVelocity: true # spins angularVelocity: true # spins

View file

@ -1,7 +1,7 @@
- type: entity - type: entity
name: explosive grenade name: explosive grenade
description: Grenade that creates a small but devastating explosion. description: Grenade that creates a small but devastating explosion.
parent: [VolatileGrenadeBase, GrenadeBase, BaseSyndicateContraband] parent: [VolatileGrenadeBase, TimerGrenadeBase, BaseSyndicateContraband]
id: ExGrenade id: ExGrenade
components: components:
- type: ExplodeOnTrigger - type: ExplodeOnTrigger
@ -31,7 +31,7 @@
- type: entity - type: entity
name: flashbang name: flashbang
description: Eeeeeeeeeeeeeeeeeeeeee. description: Eeeeeeeeeeeeeeeeeeeeee.
parent: [ FragileGrenadeBase, GrenadeBase, BaseSecurityContraband ] parent: [ FragileGrenadeBase, TimerGrenadeBase, BaseSecurityContraband ]
id: GrenadeFlashBang id: GrenadeFlashBang
components: components:
- type: Sprite - type: Sprite
@ -88,12 +88,12 @@
- type: TimedDespawn - type: TimedDespawn
lifetime: 0.5 lifetime: 0.5
#The explosive values for these are pretty god damn mediocre, but SS14's explosion system is hard to understand - this is a good enough approximation of how it was in SS13. # Tuned to be a general bomb that deals equipment damage without explicitly gibbing, however it will still gladly instakill anyone that mishandles it.
#Ideally, there should be a weak radius around the bomb outside of its gibbing / spacing range capable of dealing fair damage to players / structures. # One of the few syndie bombs that should punch holes in space.
- type: entity - type: entity
name: syndicate minibomb name: syndicate minibomb
description: A syndicate-manufactured explosive used to stow destruction and cause chaos. description: A syndicate-manufactured explosive used to stow destruction and cause chaos.
parent: [VolatileGrenadeBase, GrenadeBase, BaseSyndicateContraband] parent: [VolatileGrenadeBase, TimerGrenadeBase, BaseSyndicateContraband]
id: SyndieMiniBomb id: SyndieMiniBomb
components: components:
- type: Sprite - type: Sprite
@ -122,7 +122,7 @@
- type: entity - type: entity
name: self destruct name: self destruct
description: Go out on your own terms! description: Go out on your own terms!
parent: GrenadeBase parent: TimerGrenadeBase
id: SelfDestructSeq id: SelfDestructSeq
categories: [ HideSpawnMenu ] categories: [ HideSpawnMenu ]
components: components:
@ -145,10 +145,28 @@
volume: 30 volume: 30
initialBeepDelay: 0 initialBeepDelay: 0
beepInterval: 16 beepInterval: 16
- type: LightBehaviorOnTrigger
behavior: activate
- type: PointLight
energy: 50
radius: 0
color: Red
softness: 0
falloff: 20
mask: /Textures/Effects/LightMasks/double_cone.png
- type: RotatingLight
speed: 360
- type: LightBehaviour
behaviours:
- !type:FadeBehaviour # have the radius start small and get larger as it starts to burn
id: activate
maxDuration: 5
startValue: 1
endValue: 2
- type: entity - type: entity
parent: [ FragileGrenadeBase, GrenadeBase, BaseSyndicateContraband ] parent: [ FragileGrenadeBase, TimerGrenadeBase, BaseSyndicateContraband ]
id: SingularityGrenade id: SingularityGrenade
name: singularity grenade name: singularity grenade
description: Grenade that simulates the power of a singularity, pulling things in a heap. description: Grenade that simulates the power of a singularity, pulling things in a heap.
@ -190,9 +208,10 @@
sound: sound:
path: /Audio/Effects/Grenades/Supermatter/supermatter_loop.ogg path: /Audio/Effects/Grenades/Supermatter/supermatter_loop.ogg
- type: GravityWell - type: GravityWell
maxRange: 7 maxRange: 5
baseRadialAcceleration: 5 minRange: 0.25
baseTangentialAcceleration: .5 baseRadialAcceleration: 25
baseTangentialAcceleration: 5
gravPulsePeriod: 0.03 gravPulsePeriod: 0.03
- type: SingularityDistortion - type: SingularityDistortion
intensity: 150 intensity: 150
@ -281,7 +300,7 @@
- type: entity - type: entity
name: the nuclear option name: the nuclear option
description: Please don't throw it, think of the children. description: Please don't throw it, think of the children.
parent: GrenadeBase parent: TimerGrenadeBase
id: NuclearGrenade id: NuclearGrenade
components: components:
- type: Sprite - type: Sprite
@ -362,39 +381,26 @@
- type: entity - type: entity
name: EMP grenade name: EMP grenade
description: A grenade designed to wreak havoc on electronic systems. description: A grenade designed to wreak havoc on electronic systems.
parent: [FragileGrenadeBase, GrenadeBase, BaseSyndicateContraband] parent: [ImpactGrenadeBase, BaseSyndicateContraband]
id: EmpGrenade id: EmpGrenade
components: components:
- type: Sprite - type: Sprite
sprite: Objects/Weapons/Grenades/empgrenade.rsi sprite: Objects/Weapons/Grenades/empgrenade.rsi
- type: EmpOnTrigger - type: EmpOnTrigger
keysIn: keysIn:
- timer - trigger
range: 11 #5.5 Sunrise-Edit range: 5.5
energyConsumption: 50000 energyConsumption: 50000
- type: DeleteOnTrigger - type: DeleteOnTrigger
keysIn: keysIn:
- timer - trigger
- type: Appearance
- type: TimerTriggerVisuals
primingSound:
path: /Audio/Effects/countdown.ogg
- type: StaticPrice - type: StaticPrice
price: 666 # 2000 for 3, I love fractions price: 666 # 2000 for 3, I love fractions
- type: Tag #Sunrise-Start
tags:
- HandGrenade
- GrenadeFlashBang
- HandGrenadeAmmo
- type: CartridgeAmmo
proto: BulletEMPGrenade
deleteOnSpawn: true
- type: SpentAmmoVisuals #Sunrise-End
- type: entity - type: entity
name: holy hand grenade name: holy hand grenade
description: O Lord, bless this thy hand grenade, that with it thou mayst blow thine enemies to tiny bits, in thy mercy. description: O Lord, bless this thy hand grenade, that with it thou mayst blow thine enemies to tiny bits, in thy mercy.
parent: [GrenadeBase, BaseSyndicateContraband] parent: [TimerGrenadeBase, BaseSyndicateContraband]
id: HolyHandGrenade id: HolyHandGrenade
components: components:
- type: Sprite - type: Sprite
@ -425,7 +431,7 @@
- type: entity - type: entity
name: trick grenade name: trick grenade
description: All the grenade without any of the boom. description: All the grenade without any of the boom.
parent: GrenadeBase parent: TimerGrenadeBase
id: GrenadeDummy id: GrenadeDummy
components: components:
- type: Sprite - type: Sprite
@ -445,13 +451,9 @@
path: /Audio/Effects/Emotes/parp1.ogg path: /Audio/Effects/Emotes/parp1.ogg
positional: true positional: true
- type: Appearance - type: Appearance
- type: TimerTrigger - type: TimerTriggerVisuals
beepSound: primingSound:
path: "/Audio/Effects/beep1.ogg" path: /Audio/Effects/countdown.ogg
params:
volume: 5
initialBeepDelay: 0
beepInterval: 2 # 2 beeps total (at 0 and 2)
- type: entity - type: entity
name: syndicate trickybomb name: syndicate trickybomb

View file

@ -1,35 +1,16 @@
# ScatteringGrenade is intended for grenades that spawn entities, especially those with timers # ScatteringGrenade is intended for grenades that spawn entities, especially those with timers
- type: entity - type: entity
abstract: true abstract: true
parent: BaseItem parent: GrenadeBase
id: ScatteringGrenadeBase id: ScatteringGrenadeBase
components: components:
- type: Appearance
- type: ContainerContainer - type: ContainerContainer
containers: containers:
cluster-payload: !type:Container cluster-payload: !type:Container
- type: Damageable
damageContainer: Inorganic
- type: ScatteringGrenade - type: ScatteringGrenade
- type: TriggerOnUse
- type: TimerTrigger
delay: 3
- type: Tag
tags:
- HandGrenade
- type: Fixtures
fixtures:
fix1:
shape: !type:PhysShapeCircle
radius: 0.2
density: 20 # derived from base_item
mask:
- ItemMask
restitution: 0.3
friction: 0.2
- type: entity - type: entity
parent: [FragileGrenadeBase, ScatteringGrenadeBase, BaseSecurityContraband] parent: [FragileGrenadeBase, ScatteringGrenadeBase, TimerGrenadeBase, BaseSecurityContraband]
id: ClusterBang id: ClusterBang
name: clusterbang name: clusterbang
description: Can be used only with flashbangs. Explodes several times. description: Can be used only with flashbangs. Explodes several times.
@ -82,7 +63,7 @@
positional: true positional: true
- type: entity - type: entity
parent: [VolatileGrenadeBase, ScatteringGrenadeBase, BaseSyndicateContraband] parent: [VolatileGrenadeBase, ScatteringGrenadeBase, TimerGrenadeBase, BaseSyndicateContraband]
id: ClusterGrenade id: ClusterGrenade
name: clustergrenade name: clustergrenade
description: Why use one grenade when you can use three at once! description: Why use one grenade when you can use three at once!
@ -112,18 +93,20 @@
price: 2500 price: 2500
- type: entity - type: entity
parent: [FragileGrenadeBase, ScatteringGrenadeBase, BaseSyndicateContraband] parent: [FragileGrenadeBase, ScatteringGrenadeBase, ImpactGrenadeBase, BaseSyndicateContraband]
id: ClusterBananaPeel id: ClusterBananaPeel
name: cluster banana peel name: cluster banana peel
description: Splits into 6 explosive banana peels after throwing, guaranteed fun! description: Splits into 6 explosive banana peels after throwing, guaranteed fun!
components: components:
- type: Sprite - type: Sprite
sprite: Objects/Specific/Hydroponics/banana.rsi sprite: Objects/Specific/Hydroponics/banana.rsi
state: produce layers:
- state: produce
- type: ScatteringGrenade - type: ScatteringGrenade
fillPrototype: TrashBananaPeelExplosive fillPrototype: TrashBananaPeelExplosive
capacity: 6 capacity: 6
delayBeforeTriggerContents: 20 delayBeforeTriggerContents: 20
triggerKey: trigger
- type: LandAtCursor - type: LandAtCursor
- type: DamageOnLand - type: DamageOnLand
damage: damage:
@ -137,7 +120,7 @@
positional: true positional: true
- type: entity - type: entity
parent: [SoapSyndie, ScatteringGrenadeBase, BaseSyndicateContraband] parent: [SoapSyndie, ScatteringGrenadeBase, ImpactGrenadeBase, BaseSyndicateContraband]
id: SlipocalypseClusterSoap id: SlipocalypseClusterSoap
name: slipocalypse clustersoap name: slipocalypse clustersoap
description: Spreads small pieces of syndicate soap over an area upon landing on the floor. description: Spreads small pieces of syndicate soap over an area upon landing on the floor.
@ -147,6 +130,7 @@
layers: layers:
- state: syndie-4 - state: syndie-4
- type: ScatteringGrenade - type: ScatteringGrenade
triggerKey: trigger
fillPrototype: SoapletSyndie fillPrototype: SoapletSyndie
capacity: 30 capacity: 30
delayBeforeTriggerContents: 60 delayBeforeTriggerContents: 60
@ -167,7 +151,7 @@
price: 1000 price: 1000
- type: entity - type: entity
parent: [FragileGrenadeBase, ScatteringGrenadeBase] parent: [FragileGrenadeBase, ScatteringGrenadeBase, TimerGrenadeBase]
id: GrenadeFoamDart id: GrenadeFoamDart
name: foam dart grenade name: foam dart grenade
description: Releases a bothersome spray of foam darts that cause severe welching. description: Releases a bothersome spray of foam darts that cause severe welching.

View file

@ -31,8 +31,8 @@
acts: [ "Destruction" ] acts: [ "Destruction" ]
- type: Storage - type: Storage
grid: grid:
- 0,0,6,4 # Sunrise edit - миллион одежды не лезет в таком маленький комод - 0,0,7,4
maxItemSize: Normal maxItemSize: Large
- type: ContainerContainer - type: ContainerContainer
containers: containers:
storagebase: !type:Container storagebase: !type:Container

View file

@ -129,8 +129,8 @@
- type: Explosive - type: Explosive
explosionType: HardBomb explosionType: HardBomb
totalIntensity: 4000.0 totalIntensity: 4000.0
intensitySlope: 3 intensitySlope: 10
maxIntensity: 400 maxIntensity: 75
- type: StaticPrice - type: StaticPrice
price: 10000 # Good luck! price: 10000 # Good luck!

View file

@ -1,65 +1,9 @@
# Devices which are not portable but don't link up to anything # Devices which are not portable but don't link up to anything
#- type: entity
# id: AtmosDeviceFanTiny
# name: tiny fan
# description: A tiny fan, releasing a thin gust of air.
# placement:
# mode: SnapgridCenter
# components:
# - type: Transform
# anchored: true
# - type: Physics
# bodyType: Static
# - type: Sprite
# sprite: Structures/Piping/Atmospherics/tinyfan.rsi
# state: icon
# - type: Fixtures
# fixtures:
# fix1:
# shape:
# !type:PhysShapeAabb
# bounds: "-0.5,-0.5,0.5,0.5"
# - type: Airtight
# noAirWhenFullyAirBlocked: false
# - type: Clickable
# - type: Tag
# tags:
# - SpreaderIgnore
#- type: entity
# id: AtmosDeviceFanDirectional
# name: directional fan
# description: A thin fan, stopping the movement of gases across it.
# placement:
# mode: SnapgridCenter
# components:
# - type: Transform
# anchored: true
# - type: Physics
# bodyType: Static
# - type: Sprite
# sprite: Structures/Piping/Atmospherics/directionalfan.rsi
# state: icon
# - type: Fixtures
# fixtures:
# fix1:
# shape:
# !type:PhysShapeAabb
# bounds: "-0.48,-0.48,0.48,-0.40"
# - type: Airtight
# noAirWhenFullyAirBlocked: false
# airBlockedDirection:
# - South
# - type: Clickable
# - type: Tag
# tags:
# - SpreaderIgnore
# Sunrise-start
- type: entity - type: entity
id: AtmosDeviceFanTinyDev id: AtmosDeviceFanTiny
name: tiny DEBUG fan name: tiny fan
categories: [ DoNotMap ] description: A tiny fan, releasing a thin gust of air.
categories: [ HideSpawnMenu ] # Sunrise-Add
placement: placement:
mode: SnapgridCenter mode: SnapgridCenter
components: components:
@ -84,11 +28,12 @@
- SpreaderIgnore - SpreaderIgnore
- type: entity - type: entity
id: AtmosDeviceFanDirectionalDev # Только для дебаг вещей id: AtmosDeviceFanDirectional
name: directional DEBUG fan name: directional fan
categories: [ DoNotMap ] description: A thin fan, stopping the movement of gases across it.
categories: [ HideSpawnMenu ] # Sunrise-Add
placement: placement:
mode: SnapgridCenter mode: SnapgridCenter
components: components:
- type: Transform - type: Transform
anchored: true anchored: true
@ -110,11 +55,12 @@
- type: Clickable - type: Clickable
- type: Tag - type: Tag
tags: tags:
- SpreaderIgnore - SpreaderIgnore
# Sunrise-start
- type: entity - type: entity
id: AtmosDeviceFanDirectionalInvisible id: AtmosDeviceFanDirectionalInvisible
parent: AtmosDeviceFanDirectionalDev parent: AtmosDeviceFanDirectional
name: directional Invisible fan name: directional Invisible fan
categories: [ DoNotMap ] categories: [ DoNotMap ]
placement: placement:

View file

@ -72,7 +72,7 @@
hadOutline: true hadOutline: true
examineThreshold: 0.9 # Sunrise-Edit examineThreshold: 0.9 # Sunrise-Edit
- type: StealthOnMove - type: StealthOnMove
passiveVisibilityRate: -1 # very useful for going around the station concealed, if you start jitterstrafing you get seen # Sunrise-Edit passiveVisibilityRate: -1 # very useful for going around the station concealed, if you start jitterstrafing you get seen
movementVisibilityRate: 0.20 movementVisibilityRate: 0.20
- type: entity - type: entity

View file

@ -164,13 +164,11 @@
color: "#FDD023" color: "#FDD023"
metabolisms: metabolisms:
Poison: Poison:
metabolismRate : 2.0
effects: effects:
- !type:Electrocute - !type:Electrocute
probability: 0.35 siemensCoefficient: 0.5
conditions: # Sunrise-Edit probability: 0.5
- !type:ReagentCondition
reagent: Licoxide
min: 1
- type: reagent - type: reagent
id: Razorium id: Razorium

View file

@ -170,10 +170,10 @@
conditions: conditions:
- !type:ReagentCondition - !type:ReagentCondition
reagent: Stimulants reagent: Stimulants
min: 50 min: 45
damage: damage:
types: types:
Poison: 1 Poison: 3
# Interactions # Interactions
- !type:ModifyStatusEffect - !type:ModifyStatusEffect
conditions: conditions:
@ -343,7 +343,7 @@
reagent: Nocturine reagent: Nocturine
min: 8 min: 8
effectProto: StatusEffectForcedSleeping effectProto: StatusEffectForcedSleeping
time: 6 time: 9
delay: 5 delay: 5
- type: reagent - type: reagent

View file

@ -683,13 +683,11 @@
color: "#FDD023" color: "#FDD023"
metabolisms: metabolisms:
Poison: Poison:
metabolismRate : 2.0
effects: effects:
- !type:Electrocute - !type:Electrocute
probability: 0.8 electrocuteTime: 1
conditions: # Sunrise-Edit probability: 0.5
- !type:ReagentCondition
reagent: Tazinide
min: 1
- type: reagent - type: reagent
id: Lipolicide id: Lipolicide

View file

@ -5,12 +5,12 @@
description: Randomly teleports you within a large distance. description: Randomly teleports you within a large distance.
components: components:
- type: LimitedCharges - type: LimitedCharges
maxCharges: 1 maxCharges: 2
- type: AutoRecharge - type: AutoRecharge
rechargeDuration: 600 rechargeDuration: 1200
- type: Action - type: Action
checkCanInteract: false checkCanInteract: false
useDelay: 5 useDelay: 10
itemIconStyle: BigAction itemIconStyle: BigAction
priority: -20 priority: -20
icon: icon:
@ -35,7 +35,7 @@
- type: LimitedCharges - type: LimitedCharges
maxCharges: 3 maxCharges: 3
- type: AutoRecharge - type: AutoRecharge
rechargeDuration: 300 rechargeDuration: 600
- type: entity - type: entity
parent: BaseImplantAction parent: BaseImplantAction

View file

@ -8,3 +8,103 @@
- id: Paper - id: Paper
- id: PenCentcom - id: PenCentcom
- id: RubberStampIAA - id: RubberStampIAA
- type: entity
id: BriefcaseWeaponC40Filled
parent: BriefcaseWeaponSmall
name: secure C-40r case
components:
- type: EntityTableContainerFill
containers:
storagebase: !type:AllSelector
children:
- id: WeaponSubMachineGunC40rBiocode
- id: MagazineBoxPistol40SP
- type: entity
id: BriefcaseWeaponSIAR52Filled
parent: BriefcaseWeaponSmall
name: secure SIAR-52 case
components:
- type: EntityTableContainerFill
containers:
storagebase:
id: WeaponSIAR52
- type: entity
id: BriefcaseWeaponAJ100Filled
parent: BriefcaseWeaponSmall
name: secure AJ-100 case
components:
- type: EntityTableContainerFill
containers:
storagebase:
id: WeaponAJ100
- type: entity
id: BriefcaseWeaponDragunovFilled
parent: BriefcaseWeapon
name: secure dragunov case
components:
- type: EntityTableContainerFill
containers:
storagebase: !type:AllSelector
children:
- id: WeaponSniperDragunov
- id: MagazineDragunovIncendiary
- id: MagazineDragunovUranium
- id: MagazineDragunov
- type: entity
id: BriefcaseWeaponM79Filled
parent: BriefcaseWeapon
name: secure m79 case
components:
- type: EntityTableContainerFill
containers:
storagebase: !type:AllSelector
children:
- id: WeaponLauncherM79
- id: GrenadeFragTimer
amount: 2
- id: GrenadeEMPTimer
- type: entity
id: BriefcaseWeaponSKM24Filled
parent: BriefcaseWeapon
name: secure SKM-24 case
components:
- type: EntityTableContainerFill
containers:
storagebase: !type:AllSelector
children:
- id: WeaponRifleSKM24Syndi
- id: MagazineLightRifleSP
amount: 2
- type: entity
id: BriefcaseWeaponSKM28Filled
parent: BriefcaseWeapon
name: secure SKM-28 case
components:
- type: EntityTableContainerFill
containers:
storagebase: !type:AllSelector
children:
- id: WeaponRifleSKM28Syndi
- id: MagazineRifleHeavySP
amount: 2
- id: MagazineRifleHeavyHP
- id: MagazineRifleHeavyFMJ
- type: entity
id: BriefcaseWeaponMinotaurFilled
parent: BriefcaseWeapon
name: secure AS-12 case
components:
- type: EntityTableContainerFill
containers:
storagebase: !type:AllSelector
children:
- id: WeaponShotgunMinotaurBiocode
- id: MagazineShotgunXL

View file

@ -5,7 +5,7 @@
icon: { sprite: _Sunrise/Clothing/Eyes/Glasses/syndie_nvd.rsi, state: icon } icon: { sprite: _Sunrise/Clothing/Eyes/Glasses/syndie_nvd.rsi, state: icon }
productEntity: ClothingEyesNVDSyndicate productEntity: ClothingEyesNVDSyndicate
cost: cost:
Telecrystal: 2 Telecrystal: 1
categories: categories:
- UplinkWearables - UplinkWearables
@ -16,9 +16,9 @@
productEntity: ClothingEyesGlassesThermalChameleon productEntity: ClothingEyesGlassesThermalChameleon
discountCategory: veryRareDiscounts discountCategory: veryRareDiscounts
discountDownTo: discountDownTo:
Telecrystal: 4 Telecrystal: 3
cost: cost:
Telecrystal: 5 Telecrystal: 4
categories: categories:
- UplinkWearables - UplinkWearables
@ -46,8 +46,6 @@
id: UplinkAmmoPouch id: UplinkAmmoPouch
icon: { sprite: _RMC14/Objects/Clothing/Pouches/large_ammo_mag.rsi, state: icon } icon: { sprite: _RMC14/Objects/Clothing/Pouches/large_ammo_mag.rsi, state: icon }
productEntity: PouchAmmo productEntity: PouchAmmo
cost:
Telecrystal: 1
categories: categories:
- UplinkWearables - UplinkWearables
@ -84,9 +82,9 @@
productEntity: ThievingGloves productEntity: ThievingGloves
discountCategory: rareDiscounts discountCategory: rareDiscounts
discountDownTo: discountDownTo:
Telecrystal: 3 Telecrystal: 2
cost: cost:
Telecrystal: 4 Telecrystal: 3
categories: categories:
- UplinkWearables - UplinkWearables
@ -99,7 +97,7 @@
discountDownTo: discountDownTo:
Telecrystal: 4 Telecrystal: 4
cost: cost:
Telecrystal: 6 Telecrystal: 5
categories: categories:
- UplinkWearables - UplinkWearables
@ -110,9 +108,9 @@
productEntity: ClothingOuterHardsuitChameleon productEntity: ClothingOuterHardsuitChameleon
discountCategory: rareDiscounts discountCategory: rareDiscounts
discountDownTo: discountDownTo:
Telecrystal: 4 Telecrystal: 3
cost: cost:
Telecrystal: 5 Telecrystal: 4
categories: categories:
- UplinkWearables - UplinkWearables
@ -122,7 +120,7 @@
description: uplink-objects-power-syndie-powercell-desc description: uplink-objects-power-syndie-powercell-desc
productEntity: PowerCellSyndicate productEntity: PowerCellSyndicate
cost: cost:
Telecrystal: 4 Telecrystal: 3
categories: categories:
- UplinkWearables - UplinkWearables
@ -237,6 +235,60 @@
categories: categories:
- UplinkAmmo - UplinkAmmo
- type: listing
id: UplinkMagazineLightRifleSP
description: uplink-skm24-ammo-desc
productEntity: MagazineLightRifleSP
cost:
Telecrystal: 2
categories:
- UplinkAmmo
- type: listing
id: UplinkMagazineLightRifleHP
description: uplink-skm24-ammo-desc
productEntity: MagazineLightRifleHP
cost:
Telecrystal: 2
categories:
- UplinkAmmo
- type: listing
id: UplinkMagazineLightRifleFMJ
description: uplink-skm24-ammo-desc
productEntity: MagazineLightRifleFMJ
cost:
Telecrystal: 2
categories:
- UplinkAmmo
- type: listing
id: UplinkMagazineRifleHeavySP
description: uplink-skm28-ammo-desc
productEntity: MagazineRifleHeavySP
cost:
Telecrystal: 3
categories:
- UplinkAmmo
- type: listing
id: UplinkMagazineRifleHeavyHP
description: uplink-skm28-ammo-desc
productEntity: MagazineRifleHeavyHP
cost:
Telecrystal: 3
categories:
- UplinkAmmo
- type: listing
id: UplinkMagazineRifleHeavyFMJ
description: uplink-skm28-ammo-desc
productEntity: MagazineRifleHeavyFMJ
cost:
Telecrystal: 3
categories:
- UplinkAmmo
# For the LMG # For the LMG
- type: listing - type: listing
id: UplinkMagazineLightRifleBox id: UplinkMagazineLightRifleBox
@ -463,18 +515,10 @@
description: uplink-magazine-dragunov-desc description: uplink-magazine-dragunov-desc
icon: { sprite: _Sunrise/Objects/Weapons/Guns/Ammunition/Magazines/Rifle/dragunov_mag.rsi, state: base } icon: { sprite: _Sunrise/Objects/Weapons/Guns/Ammunition/Magazines/Rifle/dragunov_mag.rsi, state: base }
productEntity: MagazineDragunov productEntity: MagazineDragunov
discountCategory: usualDiscounts
discountDownTo:
Telecrystal: 1
cost: cost:
Telecrystal: 2 Telecrystal: 1
categories: categories:
- UplinkAmmo - UplinkAmmo
conditions:
- !type:StoreWhitelistCondition
blacklist:
tags:
- AssaultOpsUplink
- type: listing - type: listing
id: UplinkMagazineDragunovExtended id: UplinkMagazineDragunovExtended
@ -485,7 +529,7 @@
discountDownTo: discountDownTo:
Telecrystal: 1 Telecrystal: 1
cost: cost:
Telecrystal: 3 Telecrystal: 2
categories: categories:
- UplinkAmmo - UplinkAmmo
conditions: conditions:
@ -818,6 +862,54 @@
- NukeOpsUplink - NukeOpsUplink
- LoneOpsUplink - LoneOpsUplink
- type: listing
id: UplinkSKM24
name: uplink-skm24-name
productEntity: BriefcaseWeaponSKM24Filled
description: uplink-skm24-desc
icon: { sprite: _Sunrise/Objects/Weapons/Guns/Rifles/skm24/Syndicate/big.rsi, state: icon }
discountCategory: veryRareDiscounts
discountDownTo:
Telecrystal: 5
cost:
Telecrystal: 8
categories:
- UplinkWeaponry
- type: listing
id: UplinkSKM28
name: uplink-skm28-name
productEntity: BriefcaseWeaponSKM28Filled
description: uplink-skm28-desc
icon: { sprite: _Sunrise/Objects/Weapons/Guns/Rifles/skm28/Syndicate/big.rsi, state: icon }
discountCategory: veryRareDiscounts
discountDownTo:
Telecrystal: 16
cost:
Telecrystal: 18
categories:
- UplinkWeaponry
- type: listing
id: UplinkAJ100
name: uplink-aj100-name
productEntity: BriefcaseWeaponAJ100Filled
description: uplink-aj100-desc
icon: { sprite: _Sunrise/Objects/Weapons/Guns/SMGs/AJ-100.rsi, state: icon }
discountCategory: veryRareDiscounts
discountDownTo:
Telecrystal: 8
cost:
Telecrystal: 11
categories:
- UplinkWeaponry
conditions:
- !type:StoreWhitelistCondition
blacklist:
tags:
- NukeOpsUplink
- LoneOpsUplink
- type: listing - type: listing
id: UplinkClothingBackpackSyndieAJ100Filled id: UplinkClothingBackpackSyndieAJ100Filled
name: uplink-clothing-backpack-syndie-aj100-name name: uplink-clothing-backpack-syndie-aj100-name
@ -833,9 +925,10 @@
- UplinkWeaponry - UplinkWeaponry
conditions: conditions:
- !type:StoreWhitelistCondition - !type:StoreWhitelistCondition
blacklist: whitelist:
tags: tags:
- AssaultOpsUplink - NukeOpsUplink
- LoneOpsUplink
# - type: listing # - type: listing
# id: UplinkWeaponSyndieLaserPistol # id: UplinkWeaponSyndieLaserPistol
@ -855,6 +948,25 @@
# tags: # tags:
# - AssaultOpsUplink # - AssaultOpsUplink
- type: listing
id: UplinkC40R
name: uplink-c40r-name
description: uplink-c40r-desc
icon: { sprite: _Sunrise/Objects/Weapons/Guns/SMGs/c40r.rsi, state: icon }
productEntity: BriefcaseWeaponC40Filled
discountCategory: veryRareDiscounts
discountDownTo:
Telecrystal: 8
cost:
Telecrystal: 10
categories:
- UplinkWeaponry
conditions:
- !type:StoreWhitelistCondition
blacklist:
tags:
- NukeOpsUplink
- type: listing - type: listing
id: UplinkC40RBundle id: UplinkC40RBundle
name: uplink-c40r-bundle-name name: uplink-c40r-bundle-name
@ -868,13 +980,12 @@
Telecrystal: 17 Telecrystal: 17
categories: categories:
- UplinkWeaponry - UplinkWeaponry
#Sunrise-start
conditions: conditions:
- !type:StoreWhitelistCondition - !type:StoreWhitelistCondition
blacklist: whitelist:
tags: tags:
- AssaultOpsUplink - NukeOpsUplink
#Sunrise-end - LoneOpsUplink
- type: listing - type: listing
id: UplinkClothingBackpackSyndieDL6902Filled id: UplinkClothingBackpackSyndieDL6902Filled
@ -915,6 +1026,26 @@
- NukeOpsUplink - NukeOpsUplink
- LoneOpsUplink - LoneOpsUplink
- type: listing
id: UplinkSIAR52
name: uplink-siar52-name
productEntity: BriefcaseWeaponSIAR52Filled
description: uplink-siar52-desc
icon: { sprite: _Sunrise/Objects/Weapons/Guns/SMGs/IAR-52.rsi, state: icon }
discountCategory: veryRareDiscounts
discountDownTo:
Telecrystal: 8
cost:
Telecrystal: 9
categories:
- UplinkWeaponry
conditions:
- !type:StoreWhitelistCondition
blacklist:
tags:
- NukeOpsUplink
- LoneOpsUplink
- type: listing - type: listing
id: UplinkClothingBackpackSyndieSIAR52Filled id: UplinkClothingBackpackSyndieSIAR52Filled
name: uplink-clothing-backpack-syndie-siar52-name name: uplink-clothing-backpack-syndie-siar52-name
@ -928,6 +1059,12 @@
Telecrystal: 18 Telecrystal: 18
categories: categories:
- UplinkWeaponry - UplinkWeaponry
conditions:
- !type:StoreWhitelistCondition
whitelist:
tags:
- NukeOpsUplink
- LoneOpsUplink
- type: listing - type: listing
id: UplinkWeaponLaserMinigun id: UplinkWeaponLaserMinigun
@ -970,20 +1107,16 @@
- type: listing - type: listing
id: UplinkWeaponDragunov id: UplinkWeaponDragunov
name: uplink-weapon-ussp-dmr-name name: uplink-weapon-ussp-dmr-name
productEntity: CrateAmmunitionSmallDragunov description: uplink-weapon-ussp-dmr-desc
productEntity: BriefcaseWeaponDragunovFilled
icon: { sprite: _Sunrise/Objects/Weapons/Guns/Snipers/dragunov/big.rsi, state: icon } icon: { sprite: _Sunrise/Objects/Weapons/Guns/Snipers/dragunov/big.rsi, state: icon }
discountCategory: veryRareDiscounts discountCategory: veryRareDiscounts
discountDownTo: discountDownTo:
Telecrystal: 13 Telecrystal: 10
cost: cost:
Telecrystal: 16 Telecrystal: 12
categories: categories:
- UplinkWeaponry - UplinkWeaponry
conditions:
- !type:StoreWhitelistCondition
blacklist:
tags:
- AssaultOpsUplink
- type: listing - type: listing
id: UplinkWeaponBauer127 id: UplinkWeaponBauer127
@ -1055,9 +1188,9 @@
productEntity: ClothingBackpackDuffelSyndicateFilledInfiltration productEntity: ClothingBackpackDuffelSyndicateFilledInfiltration
discountCategory: rareDiscounts discountCategory: rareDiscounts
discountDownTo: discountDownTo:
Telecrystal: 8 Telecrystal: 7
cost: cost:
Telecrystal: 14 Telecrystal: 9
categories: categories:
- UplinkWearables - UplinkWearables
restockTime: 1800 restockTime: 1800
@ -1067,6 +1200,7 @@
tags: tags:
- NukeOpsUplink - NukeOpsUplink
- LoneOpsUplink - LoneOpsUplink
- AssaultOpsUplink
- type: listing - type: listing
id: UplinkHardsuitSyndieMedic id: UplinkHardsuitSyndieMedic
@ -1303,7 +1437,6 @@
- !type:ListingLimitedStockCondition - !type:ListingLimitedStockCondition
stock: 2 stock: 2
#Sunrise-start
- type: listing - type: listing
id: UplinkCoalAutoInjector id: UplinkCoalAutoInjector
name: uplink-coal-auto-injector-name name: uplink-coal-auto-injector-name
@ -1329,9 +1462,9 @@
productEntity: CoalpenKitFilled productEntity: CoalpenKitFilled
discountCategory: rareDiscounts discountCategory: rareDiscounts
discountDownTo: discountDownTo:
Telecrystal: 4 Telecrystal: 3
cost: cost:
Telecrystal: 6 Telecrystal: 5
categories: categories:
- UplinkChemicals - UplinkChemicals
conditions: conditions:
@ -1341,7 +1474,6 @@
- NukeOpsUplink - NukeOpsUplink
- LoneOpsUplink - LoneOpsUplink
- AssaultOpsUplink - AssaultOpsUplink
#Sunrise-end
- type: listing - type: listing
id: UplinkSyndicateRapier id: UplinkSyndicateRapier
@ -1797,11 +1929,11 @@
name: uplink-clothing-glasses-nvg-name name: uplink-clothing-glasses-nvg-name
description: uplink-clothing-glasses-nvg-desc description: uplink-clothing-glasses-nvg-desc
productEntity: ClothingEyesGlassesNVG productEntity: ClothingEyesGlassesNVG
discountCategory: veryRareDiscounts discountCategory: rareDiscounts
discountDownTo: discountDownTo:
Telecrystal: 3 Telecrystal: 1
cost: cost:
Telecrystal: 4 Telecrystal: 2
categories: categories:
- UplinkWearables - UplinkWearables
@ -1812,9 +1944,9 @@
productEntity: EnergyDomeGeneratorPersonalSyndieBiocode productEntity: EnergyDomeGeneratorPersonalSyndieBiocode
discountCategory: rareDiscounts discountCategory: rareDiscounts
discountDownTo: discountDownTo:
Telecrystal: 8 Telecrystal: 5
cost: cost:
Telecrystal: 10 Telecrystal: 6
categories: categories:
- UplinkWearables - UplinkWearables
conditions: conditions:
@ -1830,9 +1962,9 @@
productEntity: EnergyDomeGeneratorBackpackSyndieBiocode productEntity: EnergyDomeGeneratorBackpackSyndieBiocode
discountCategory: rareDiscounts discountCategory: rareDiscounts
discountDownTo: discountDownTo:
Telecrystal: 7 Telecrystal: 5
cost: cost:
Telecrystal: 10 Telecrystal: 6
categories: categories:
- UplinkDisruption - UplinkDisruption
conditions: conditions:
@ -1868,29 +2000,6 @@
components: components:
- SurplusBundle - SurplusBundle
- type: listing
id: UplinkSuperSurplusBundleNuke
name: uplink-super-surplus-bundle-name
description: uplink-super-surplus-bundle-desc
productEntity: CrateSyndicateSuperSurplusBundleNuke
discountCategory: veryRareDiscounts
discountDownTo:
Telecrystal: 20
cost:
Telecrystal: 40
categories:
- UplinkLootBoxes
conditions:
- !type:StoreWhitelistCondition
whitelist:
tags:
- NukeOpsUplink
- LoneOpsUplink
- !type:BuyerWhitelistCondition
blacklist:
components:
- SurplusBundle
# Implats # Implats
- type: listing - type: listing
@ -1903,7 +2012,7 @@
discountDownTo: discountDownTo:
Telecrystal: 1 Telecrystal: 1
cost: cost:
Telecrystal: 3 Telecrystal: 2
categories: categories:
- UplinkImplants - UplinkImplants
@ -1913,11 +2022,8 @@
description: uplink-scram-implanter-proto-desc description: uplink-scram-implanter-proto-desc
icon: { sprite: /Textures/Structures/Specific/anomaly.rsi, state: anom4 } icon: { sprite: /Textures/Structures/Specific/anomaly.rsi, state: anom4 }
productEntity: ScramImplanterProto productEntity: ScramImplanterProto
discountCategory: rareDiscounts
discountDownTo:
Telecrystal: 1
cost: cost:
Telecrystal: 3 Telecrystal: 1
categories: categories:
- UplinkImplants - UplinkImplants
@ -1927,11 +2033,15 @@
description: uplink-creepy-laugh-implanter-desc description: uplink-creepy-laugh-implanter-desc
icon: { sprite: Clothing/Mask/gassyndicate.rsi, state: icon } icon: { sprite: Clothing/Mask/gassyndicate.rsi, state: icon }
productEntity: CreepyLaughImplanter productEntity: CreepyLaughImplanter
cost:
Telecrystal: 1
categories: categories:
- UplinkImplants - UplinkImplants
conditions:
- !type:StoreWhitelistCondition
whitelist:
tags:
- SyndieAgentUplink
- !type:ListingLimitedStockCondition
stock: 1
# Jobs # Jobs
- type: listing - type: listing
@ -1972,9 +2082,9 @@
productEntity: SyndyClusterGrenade productEntity: SyndyClusterGrenade
discountCategory: veryRareDiscounts discountCategory: veryRareDiscounts
discountDownTo: discountDownTo:
Telecrystal: 5 Telecrystal: 4
cost: cost:
Telecrystal: 10 Telecrystal: 7
categories: categories:
- UplinkExplosives - UplinkExplosives
@ -2238,46 +2348,6 @@
tags: tags:
- AssaultOpsUplink - AssaultOpsUplink
- type: listing
id: UplinkSyndicateCircuitBoard
name: uplink-syndicate-law-name
description: uplink-syndicate-law-desc
productEntity: SyndicateCircuitBoard
discountCategory: usualDiscounts
discountDownTo:
Telecrystal: 4
cost:
Telecrystal: 8
categories:
- UplinkDisruption
conditions:
- !type:StoreWhitelistCondition
blacklist:
tags:
- NukeOpsUplink
- LoneOpsUplink
- type: listing
id: UplinkEshieldNukies
name: uplink-eshield-name
description: uplink-eshield-desc
icon: { sprite: Objects/Weapons/Melee/e_shield.rsi, state: eshield-on }
productEntity: EnergyShieldBiocode
discountCategory: veryRareDiscounts
discountDownTo:
Telecrystal: 5
cost:
Telecrystal: 9
categories:
- UplinkWeaponry
conditions:
- !type:StoreWhitelistCondition
whitelist:
tags:
- NukeOpsUplink
- LoneOpsUplink
- type: listing - type: listing
id: uplinkWeaponMiniEnergyCrossbow id: uplinkWeaponMiniEnergyCrossbow
name: uplink-mini-energy-crossbow-name name: uplink-mini-energy-crossbow-name
@ -2298,6 +2368,30 @@
id: uplinkWeaponShotgunMinotaur id: uplinkWeaponShotgunMinotaur
name: uplink-minotaur-name name: uplink-minotaur-name
description: uplink-minotaur-desc description: uplink-minotaur-desc
productEntity: BriefcaseWeaponMinotaurFilled
icon:
{
sprite: _Starlight/Objects/Weapons/Guns/Shotguns/minotaur.rsi,
state: icon,
}
discountCategory: rareDiscounts
discountDownTo:
Telecrystal: 12
cost:
Telecrystal: 15
categories:
- UplinkWeaponry
conditions:
- !type:StoreWhitelistCondition
blacklist:
tags:
- NukeOpsUplink
- LoneOpsUplink
- type: listing
id: uplinkWeaponShotgunMinotaurBundle
name: uplink-minotaur-bundle-name
description: uplink-minotaur-bundle-desc
productEntity: ClothingBackpackDuffelSyndicateFilledMinotaurShotgun productEntity: ClothingBackpackDuffelSyndicateFilledMinotaurShotgun
icon: icon:
{ {
@ -2349,6 +2443,27 @@
name: uplink-grenade-launcher-m79-name name: uplink-grenade-launcher-m79-name
description: uplink-grenade-launcher-m79-desc description: uplink-grenade-launcher-m79-desc
icon: { sprite: _RMC14/Objects/Weapons/Guns/Launchers/m79/big.rsi, state: base } icon: { sprite: _RMC14/Objects/Weapons/Guns/Launchers/m79/big.rsi, state: base }
productEntity: BriefcaseWeaponM79Filled
discountCategory: veryRareDiscounts
discountDownTo:
Telecrystal: 10 # Good morning Vietnam!
cost:
Telecrystal: 14
categories:
- UplinkWeaponry
conditions:
- !type:StoreWhitelistCondition
blacklist:
tags:
- NukeOpsUplink
- LoneOpsUplink
- AssaultOpsUplink
- type: listing
id: UplinkGrenadeLauncherM79Bundle
name: uplink-grenade-launcher-m79-bundle-name
description: uplink-grenade-launcher-m79-bundle-desc
icon: { sprite: _RMC14/Objects/Weapons/Guns/Launchers/m79/big.rsi, state: base }
productEntity: ClothingBackpackDuffelSyndicateFilledGrenadeLauncherM79 productEntity: ClothingBackpackDuffelSyndicateFilledGrenadeLauncherM79
discountCategory: veryRareDiscounts discountCategory: veryRareDiscounts
discountDownTo: discountDownTo:
@ -2414,9 +2529,9 @@
} }
productEntity: CyberEyeThermalBox productEntity: CyberEyeThermalBox
discountDownTo: discountDownTo:
Telecrystal: 4 Telecrystal: 3
cost: cost:
Telecrystal: 7 Telecrystal: 6
categories: categories:
- UplinkCybernetics - UplinkCybernetics
@ -2432,9 +2547,9 @@
productEntity: MantisBladeArmsKit productEntity: MantisBladeArmsKit
discountCategory: rareDiscounts discountCategory: rareDiscounts
discountDownTo: discountDownTo:
Telecrystal: 8 Telecrystal: 6
cost: cost:
Telecrystal: 10 Telecrystal: 8
categories: categories:
- UplinkCybernetics - UplinkCybernetics
@ -2674,7 +2789,7 @@
discountDownTo: discountDownTo:
Telecrystal: 1 Telecrystal: 1
cost: cost:
Telecrystal: 3 Telecrystal: 2
categories: categories:
- UplinkWearables - UplinkWearables
conditions: conditions:
@ -2713,16 +2828,6 @@
categories: categories:
- UplinkPointless - UplinkPointless
- type: listing
id: UplinkPistolTec9Magazine
name: uplink-pistoltec9-magazine-name
description: uplink-pistoltec9-magazine-desc
productEntity: MagazinePistolSubMachineGunCaseless
cost:
Telecrystal: 2
categories:
- UplinkAmmo
- type: listing - type: listing
id: uplinkWeaponPistolTec9 id: uplinkWeaponPistolTec9
name: uplink-pistoltec9-name name: uplink-pistoltec9-name

View file

@ -200,6 +200,11 @@
cell_slot: cell_slot:
name: power-cell-slot-component-slot-name-default name: power-cell-slot-component-slot-name-default
startingItem: PowerCellHigh startingItem: PowerCellHigh
- type: PowerCellSlot
cellSlotId: cell_slot
- type: ContainerContainer
containers:
cell_slot: !type:ContainerSlot
- type: ToggleClothing - type: ToggleClothing
action: ActionToggleThermalVision action: ActionToggleThermalVision
disableOnUnequip: true disableOnUnequip: true

View file

@ -95,7 +95,7 @@
- HappyHonkNukie - HappyHonkNukie
- LanternFlash - LanternFlash
- CyberPen - CyberPen
- ClothingHandsGlovesBoxingRigged - GlovesBoxingRiggedRandomSpawner
- ClothingMaskGasSyndicate - ClothingMaskGasSyndicate
- RubberStampSyndicate - RubberStampSyndicate
- SoapSyndie - SoapSyndie

View file

@ -117,12 +117,12 @@
- type: entity - type: entity
id: WeaponMechCombatPirateMachineCannon id: WeaponMechCombatPirateMachineCannon
name: Mounted Pirate Machine Cannon name: Mounted Pirate Machine Cannon
description: An ancient heavy gun given new life as a mech-mounted gun description: A unique strange gun given new life as a mech-mounted gun
suffix: Mech Weapon, Gun, Combat, Pirate suffix: Mech Weapon, Gun, Combat, Pirate
parent: [ BaseMechWeaponRange, CombatMechEquipment ] parent: [ BaseMechWeaponRange, CombatMechEquipment ]
components: components:
- type: Sprite - type: Sprite
sprite: _Sunrise/Objects/Specific/Mech/mecha_piratecannon.rsi sprite: _Sunrise/Objects/Specific/Mech/mecha_piratecannon_auto.rsi
state: mecha_piratecannon state: mecha_piratecannon
- type: Item - type: Item
sprite: _Sunrise/Objects/Weapons/Guns/LMGs/piratecannon_inhands_64x.rsi sprite: _Sunrise/Objects/Weapons/Guns/LMGs/piratecannon_inhands_64x.rsi

View file

@ -359,6 +359,10 @@
pilotWhitelist: pilotWhitelist:
components: components:
- HumanoidAppearance - HumanoidAppearance
equipmentWhitelist:
tags:
- IndustrialMech
- CombatMech
- type: MeleeThrowOnHit - type: MeleeThrowOnHit
distance: 1 distance: 1
speed: 8 speed: 8

View file

@ -4,25 +4,8 @@
components: components:
- type: BallisticAmmoProvider - type: BallisticAmmoProvider
capacity: 20 capacity: 20
- type: entity
parent: BaseMagazinePistolCaselessRifleExtended
id: MagazinePistolSubMachineGunCaseless
name: Tec9Magazine
components:
- type: Sprite - type: Sprite
sprite: _Sunrise/Objects/Weapons/Guns/Ammunition/Magazines/mp38.rsi scale: 1,1.15
scale: 0.90, 0.70
layers:
- state: base
map: ["enum.GunVisualLayers.Base"]
- state: mag-1
map: ["enum.GunVisualLayers.Mag"]
- type: MagazineVisuals
magState: mag
steps: 2
zeroVisible: false
- type: Appearance
- type: entity - type: entity
id: MagazinePistolSubMachineGunCaselessExtended id: MagazinePistolSubMachineGunCaselessExtended

View file

@ -40,16 +40,16 @@
soundGunshot: soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/pistol.ogg path: /Audio/Weapons/Guns/Gunshots/pistol.ogg
- type: MeleeWeapon - type: MeleeWeapon
angle: 60 wideAnimationRotation: 0
range: 0.9 range: 0.95
damage: damage:
types: types:
Blunt: 8 Blunt: 8
bluntStaminaDamageFactor: 2.0 bluntStaminaDamageFactor: 2.0
attackRate: 1 soundHit:
autoAttack: false collection: MetalThud
- type: AltFireMelee - type: AltFireMelee
attackType: Light attackType: Heavy
- type: entity - type: entity
name: combat pistol VP-70 name: combat pistol VP-70
@ -374,11 +374,11 @@
- type: Item - type: Item
sprite: _Sunrise/Objects/Weapons/Guns/Pistols/deagle/tiny.rsi sprite: _Sunrise/Objects/Weapons/Guns/Pistols/deagle/tiny.rsi
- type: Gun - type: Gun
minAngle: 3.5 minAngle: 1
maxAngle: 15 maxAngle: 20
angleIncrease: 5 angleIncrease: 7
angleDecay: 10 angleDecay: 10
fireRate: 5 fireRate: 4 # 140 dps - 105 for mateba
availableModes: availableModes:
- SemiAuto - SemiAuto
soundGunshot: soundGunshot:
@ -475,17 +475,6 @@
- type: EyeCursorOffset - type: EyeCursorOffset
maxOffset: 2.5 maxOffset: 2.5
pvsIncrease: 0.25 pvsIncrease: 0.25
# - type: MeleeWeapon
# angle: 60
# range: 0.9
# damage:
# types:
# Blunt: 10
# bluntStaminaDamageFactor: 2.0
# attackRate: 1
# autoAttack: false
# - type: AltFireMelee
# attackType: Light
- type: entity - type: entity
parent: WeaponRevolverSpearhead parent: WeaponRevolverSpearhead
@ -551,7 +540,7 @@
components: components:
- type: Sprite - type: Sprite
sprite: _Sunrise/Objects/Weapons/Guns/Pistols/tec9tactical/big.rsi sprite: _Sunrise/Objects/Weapons/Guns/Pistols/tec9tactical/big.rsi
scale: 0.63, 0.63 scale: 0.65, 0.65
- type: Item - type: Item
sprite: _Sunrise/Objects/Weapons/Guns/Pistols/tec9tactical/tiny.rsi sprite: _Sunrise/Objects/Weapons/Guns/Pistols/tec9tactical/tiny.rsi
- type: ChamberMagazineAmmoProvider - type: ChamberMagazineAmmoProvider
@ -566,7 +555,7 @@
slots: slots:
gun_magazine: gun_magazine:
name: Magazine name: Magazine
startingItem: MagazinePistolSubMachineGunCaseless startingItem: BaseMagazinePistolCaselessRifleExtended
insertSound: /Audio/Weapons/Guns/MagIn/pistol_magin.ogg insertSound: /Audio/Weapons/Guns/MagIn/pistol_magin.ogg
ejectSound: /Audio/Weapons/Guns/MagOut/pistol_magout.ogg ejectSound: /Audio/Weapons/Guns/MagOut/pistol_magout.ogg
priority: 1 priority: 1

View file

@ -422,31 +422,6 @@
- type: TimedDespawn - type: TimedDespawn
lifetime: 3 lifetime: 3
- type: entity
id: BulletEMPGrenade
name: emp grenade
parent: BulletGrenadeEMPTimer
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Objects/Weapons/Grenades/empgrenade.rsi
layers:
- state: primed
- type: EmitSoundOnSpawn
sound:
path: /Audio/Effects/countdown.ogg
- type: EmpOnTrigger
keysIn:
- timer
range: 11
energyConsumption: 50000
disableDuration: 60
- type: Ammo
muzzleFlash: null
- type: DeleteOnTrigger
keysIn:
- timer
- type: entity - type: entity
id: BulletAirGrenade id: BulletAirGrenade
parent: BaseBulletGrenade parent: BaseBulletGrenade

View file

@ -521,6 +521,7 @@
- MagazineRifle - MagazineRifle
- MagazineLightRifle - MagazineLightRifle
- MagazinePistolDPSubMachineGun - MagazinePistolDPSubMachineGun
- MagazinePistolDP
gun_chamber: gun_chamber:
name: Chamber name: Chamber
startingItem: CartridgePistolSP startingItem: CartridgePistolSP

View file

@ -47,7 +47,7 @@
map: ["enum.TriggerVisualLayers.Base"] map: ["enum.TriggerVisualLayers.Base"]
- type: ScatteringGrenade - type: ScatteringGrenade
fillPrototype: SyndieMiniBomb fillPrototype: SyndieMiniBomb
distance: 4 distance: 1
capacity: 3 capacity: 3
- type: TimerTrigger - type: TimerTrigger
beepSound: beepSound:

View file

@ -23,15 +23,15 @@
useKey: true useKey: true
selectedMode: SemiAuto selectedMode: SemiAuto
- type: MeleeWeapon - type: MeleeWeapon
angle: 60 wideAnimationRotation: 0
range: 1.5 range: 1
damage: damage:
types: types:
Blunt: 8 Blunt: 8
Structural: 2 Structural: 2
bluntStaminaDamageFactor: 2.0 bluntStaminaDamageFactor: 2.0
attackRate: 1.25 soundHit:
autoAttack: false collection: MetalThud
- type: AltFireMelee - type: AltFireMelee
attackType: Heavy attackType: Heavy

View file

@ -25,6 +25,7 @@
- ImplanterExtractor - ImplanterExtractor
- DefibrillatorCompact - DefibrillatorCompact
- AdvancedDefibrillatorCompact - AdvancedDefibrillatorCompact
- DnaInjector
- type: latheRecipePack - type: latheRecipePack
id: SurgeryDynamicSunrise id: SurgeryDynamicSunrise

Binary file not shown.

After

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View file

@ -0,0 +1,31 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Made by SlamBamActionMan (github)",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-right",
"directions": 4
},
{
"name": "icon"
},
{
"name": "locked"
},
{
"name": "unlocked"
},
{
"name": "icon-open"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Some files were not shown because too many files have changed in this diff Show more