Revert "Черипик части апстрима вручную: Аплинк" (#3815)

This commit is contained in:
Vigers Ray 2026-01-29 16:03:51 +01:00 committed by GitHub
parent 796db09c61
commit 8c4edcddd0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
114 changed files with 1197 additions and 1533 deletions

View file

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

View file

@ -1,21 +0,0 @@
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,23 +19,100 @@ public sealed class JammerSystem : SharedJammerSystem
{
base.Initialize();
SubscribeLocalEvent<RadioJammerComponent, ActivateInWorldEvent>(OnActivate);
SubscribeLocalEvent<ActiveRadioJammerComponent, PowerCellChangedEvent>(OnPowerCellChanged);
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)
{
if (ShouldCancel(args.RadioSource, args.Channel.Frequency))
if (ShouldCancelSend(args.RadioSource, args.Channel.Frequency))
{
args.Cancelled = true;
}
}
private void OnRadioReceiveAttempt(ref RadioReceiveAttemptEvent args)
{
if (ShouldCancel(args.RadioReceiver, args.Channel.Frequency))
args.Cancelled = true;
}
private bool ShouldCancel(EntityUid sourceUid, int frequency)
private bool ShouldCancelSend(EntityUid sourceUid, int frequency)
{
var source = Transform(sourceUid).Coordinates;
var query = EntityQueryEnumerator<ActiveRadioJammerComponent, RadioJammerComponent, TransformComponent>();
@ -43,7 +120,7 @@ public sealed class JammerSystem : SharedJammerSystem
while (query.MoveNext(out var uid, out _, out var jam, out var transform))
{
// Check if this jammer excludes the frequency
if (jam.FrequenciesExcluded.Contains(frequency))
if (jam.FrequenciesExcluded != null && jam.FrequenciesExcluded.Contains(frequency))
continue;
if (_transform.InRange(source, transform.Coordinates, GetCurrentRange((uid, jam))))

View file

@ -62,8 +62,7 @@ public abstract class SharedEmpSystem : EntitySystem
/// <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="user">The player that caused the effect. Used for predicted audio.</param>
/// <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)
public void EmpPulse(EntityCoordinates coordinates, float range, float energyConsumption, TimeSpan duration, EntityUid? user = null)
{
_entSet.Clear();
_lookup.GetEntitiesInRange(coordinates, range, _entSet);
@ -75,10 +74,7 @@ public abstract class SharedEmpSystem : EntitySystem
if (_net.IsServer)
Spawn(EmpPulseEffectPrototype, coordinates);
if (predicted)
_audio.PlayPredicted(EmpSound, coordinates, user);
else
_audio.PlayPvs(EmpSound, coordinates);
_audio.PlayPredicted(EmpSound, coordinates, user);
}
/// <summary>

View file

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

View file

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

View file

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

View file

@ -1,67 +1,25 @@
using Content.Shared.DeviceNetwork.Components;
using Content.Shared.Popups;
using Content.Shared.Verbs;
using Content.Shared.Examine;
using Content.Shared.Radio.Components;
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;
public abstract class SharedJammerSystem : EntitySystem
{
[Dependency] private readonly ItemToggleSystem _itemToggle = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly SharedDeviceNetworkJammerSystem _jammer = default!;
[Dependency] private readonly SharedPopupSystem _popup = default!;
[Dependency] protected readonly SharedPopupSystem Popup = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<RadioJammerComponent, ItemToggledEvent>(OnItemToggle);
SubscribeLocalEvent<RadioJammerComponent, RefreshChargeRateEvent>(OnRefreshChargeRate);
SubscribeLocalEvent<RadioJammerComponent, GetVerbsEvent<Verb>>(OnGetVerb);
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)
{
if (!args.CanAccess || !args.CanInteract)
@ -89,7 +47,7 @@ public abstract class SharedJammerSystem : EntitySystem
// The range should be updated when it turns on again!
_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),
};
@ -100,26 +58,37 @@ public abstract class SharedJammerSystem : EntitySystem
private void OnExamine(Entity<RadioJammerComponent> ent, ref ExaminedEvent args)
{
if (!args.IsInDetailsRange)
return;
if (args.IsInDetailsRange)
{
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 powerIndicator = _itemToggle.IsActivated(ent.Owner)
? 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 switchIndicator = Loc.GetString("radio-jammer-component-switch-setting", ("powerLevel", powerLevel));
args.PushMarkup(switchIndicator);
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);
}
}
private float GetCurrentWattage(Entity<RadioJammerComponent> jammer)
public float GetCurrentWattage(Entity<RadioJammerComponent> jammer)
{
return jammer.Comp.Settings[jammer.Comp.SelectedPowerLevel].Wattage;
}
protected float GetCurrentRange(Entity<RadioJammerComponent> jammer)
public float GetCurrentRange(Entity<RadioJammerComponent> jammer)
{
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

@ -1,16 +0,0 @@
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,4 +1,3 @@
using System.Numerics;
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
@ -13,10 +12,10 @@ namespace Content.Shared.Trigger.Components.Effects;
public sealed partial class ScramOnTriggerComponent : BaseXOnTriggerComponent
{
/// <summary>
/// Up to how far to teleport the entity. Represented with X as Min Radius, and Y as Max Radius
/// Up to how far to teleport the entity.
/// </summary>
[DataField, AutoNetworkedField]
public Vector2 TeleportRadius = new (10f, 15f);
public float TeleportRadius = 100f;
/// <summary>
/// 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)
{
_emp.EmpPulse(Transform(target).Coordinates, ent.Comp.Range, ent.Comp.EnergyConsumption, ent.Comp.DisableDuration, args.User, predicted: args.Predicted);
_emp.EmpPulse(Transform(target).Coordinates, ent.Comp.Range, ent.Comp.EnergyConsumption, ent.Comp.DisableDuration, args.User);
args.Handled = true;
}
}

View file

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

View file

@ -67,16 +67,15 @@ public sealed partial class TriggerSystem : EntitySystem
/// <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="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>
public bool Trigger(EntityUid trigger, EntityUid? user = null, string? key = null, bool predicted = true)
public bool Trigger(EntityUid trigger, EntityUid? user = null, string? key = null)
{
var attemptTriggerEvent = new AttemptTriggerEvent(user, key);
RaiseLocalEvent(trigger, ref attemptTriggerEvent);
if (attemptTriggerEvent.Cancelled)
return false;
var triggerEvent = new TriggerEvent(user, key, predicted);
var triggerEvent = new TriggerEvent(user, key);
RaiseLocalEvent(trigger, ref triggerEvent, true);
return triggerEvent.Handled;
}

View file

@ -9,9 +9,8 @@ namespace Content.Shared.Trigger;
/// Setting this to null will activate all triggers.
/// </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]
public record struct TriggerEvent(EntityUid? User = null, string? Key = null, bool Predicted = true, bool Handled = false);
public record struct TriggerEvent(EntityUid? User = null, string? Key = null, bool Handled = false);
/// <summary>
/// Raised before a trigger is activated.

View file

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

View file

@ -24,8 +24,6 @@ ent-AntimovCircuitBoard = law board (Antimov)
.desc = An electronics board containing the Antimov lawset.
ent-NutimovCircuitBoard = law board (Nutimov)
.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)
.desc = An electronics board containing the Xenoborg lawset.
.suffix = Admeme

View file

@ -19,6 +19,8 @@ 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-pistol-magnum-magazine-name = Магазин для Deagle
uplink-pistol-magnum-magazine-desc = 7-зарядный однорядный магазин для пистолета. Содержит патроны SP. Совместим с "Диглом".
uplink-pistoltec9-magazine-name = магазин Tac-Tec (.20 безгильзовый)
uplink-pistoltec9-magazine-desc = Кустарный пистолетный магазин на 20 патронов,под калибр, используемый агентами синдиката.
## Misc
uplink-music-boombox-name = Музыкальный набор синдиката

View file

@ -2,6 +2,9 @@
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-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-desc = A brutally simple, effective, and loud Syndicate revolver. Comes loaded with armor-piercing rounds. Uses .45 magnum.
@ -33,19 +36,7 @@ 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-hushpup-name = Hushpup
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.
uplink-hushpup-desc = A powerful silenced shotgun with a low magazine capacity. Comes with a spare box of buckshot. Uses .50 shotgun ammo.
# Explosives
uplink-explosive-grenade-name = Explosive Grenade
@ -202,9 +193,6 @@ uplink-singularity-beacon-desc = A device that attracts singularities. Has to be
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-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
uplink-storage-implanter-name = Storage Implanter
uplink-storage-implanter-desc = Hide goodies inside of yourself with new bluespace technology!
@ -239,8 +227,8 @@ uplink-micro-bomb-implanter-desc = Explode on death or manual activation with th
uplink-radio-implanter-name = Radio Implanter
uplink-radio-implanter-desc = Implants a Syndicate radio, allowing covert communication without a headset.
uplink-voice-mask-implanter-name = Identity Mask Implanter
uplink-voice-mask-implanter-desc = Modifies your vocal cords and facial structure to be able to mimic anyone you could imagine.
uplink-voice-mask-implanter-name = Voice Mask Implanter
uplink-voice-mask-implanter-desc = Modifies your vocal cords to be able to sound like anyone you could imagine.
# Bundles
uplink-observation-kit-name = Observation Kit
@ -270,11 +258,8 @@ uplink-sniper-bundle-desc = An inconspicuous briefcase that contains a Hristov,
uplink-c20r-bundle-name = C-20r Bundle
uplink-c20r-bundle-desc = Old faithful: The classic C-20r Submachine Gun, bundled with three magazines.
uplink-bulldog-bundle-name = Bulldog Bundle
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-buldog-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-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.
@ -298,7 +283,7 @@ uplink-starter-kit-desc = Contains 40 telecrystals of basic operative gear. For
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-syndicate-jaws-of-life-name = Jaws Of Death
uplink-syndicate-jaws-of-life-name = Jaws Of Life
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
@ -336,7 +321,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-proximity-mine-name = Proximity Mine
uplink-proximity-mine-desc = A throwable mine disguised as a wet floor sign. Detonates on contact with almost anything, safety always off.
uplink-proximity-mine-desc = A mine disguised as a wet floor sign.
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.
@ -352,7 +337,7 @@ uplink-saw-advanced-desc = A bleeding-edge surgical implement designed to cut th
# Armor
uplink-chameleon-name = Chameleon Kit
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-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-clothing-no-slips-shoes-name = No-slip Shoes
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-description =
You are everyone and no one; you are a master of disguise.
Includes: A full set of chameleon clothing with Agent ID,
a chameleon projector, and a fake mindshield implant.
Includes: A full set of chameleon clothing,
a chameleon projector, and an Agent ID.
Disguise as anyone and anything.
thief-backpack-category-tools-name = Breacher Kit

View file

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

View file

@ -1,19 +1,3 @@
ent-BriefcaseIAAFilled = { ent-BriefcaseBrown }
.suffix = АВД
.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
.desc = Старинный тяжёлый пулемёт, получивший новую жизнь в качестве навесного оружия меха.
.suffix = Оружие мехов, Стрелковое, Боевое
ent-WeaponMechCombatPirateCannon = навесная пиратская пушка
ent-WeaponMechCombatPirateCannon = навесной ядромёт
.desc = Старинная тяжёлая пушка, получившая новую жизнь в качестве навесного оружия меха.
.suffix = Оружие мехов, Стрелковое, Боевое, Пират
ent-WeaponMechCombatPirateMachineCannon = навесной ядромёт
ent-WeaponMechCombatPirateMachineCannon = навесная пиратская автоматическая пушка
.desc = Старинная тяжёлая пушка, получившая новую жизнь в качестве навесного оружия меха.
.suffix = Оружие мехов, Стрелковое, Боевое, Пират
ent-WeaponMechCombatPirateGrapeshot = навесная пиратская картечь

View file

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

View file

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

View file

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

View file

@ -6,18 +6,6 @@ ent-ClothingHandsGlovesBoxingGreen = зелёные боксёрские пер
.desc = Зелёные перчатки для соревновательного бокса.
ent-ClothingHandsGlovesBoxingYellow = жёлтые боксёрские перчатки
.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 }
.suffix = Нечестные
.desc = { ent-ClothingHandsGlovesBoxingBlue.desc }

View file

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

View file

@ -5,17 +5,3 @@ ent-BriefcaseBrown = коричневый чемодан
ent-BriefcaseSyndie = { ent-BriefcaseBrown }
.suffix = Синдикат, Пустой
.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,16 +40,9 @@ uplink-pistol-magnum-magazine-name = Магазин (.45 магнум SP)
uplink-pistol-magnum-magazine-desc = 7-зарядный однорядный магазин для пистолета. Содержит патроны SP. Совместим с "Диглом".
uplink-pistol-magnum-magazine-ap-name = Магазин (.45 магнум бронебойные)
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-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-127pen-desc = Магазин Bauer SR-127 на 7 патронов предназначеных для ликвидации защищенных противников а так же целей за укрытиями и стенами, прекрасно сочетаются с термальным зрением.
@ -100,13 +93,7 @@ uplink-swat-helmet-syndicate-desc = Прочный шлем, созданный
uplink-syndicate-rapier-name = Рапира Синдиката
uplink-syndicate-rapier-desc = Элегантная рапира из пластитана с алмазным остриём, созданная для точечных и смертельных ударов. При умелом использовании способна игнорировать большинство видов индивидуальной защиты. Поставляется в собственных ножнах.
uplink-clothing-backpack-syndie-aj100-name = Набор ПП 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-clothing-backpack-syndie-aj100-desc = Включает в себя пистолет-пулемёт AJ-100 что имеет универсальную шахту магазина и может использовать большинство магазинов для ПП и пистолетов и два магазина безгильзовых патрон.
uplink-weapon-syndie-laser-pistol-name = SAM-300
uplink-clothing-backpack-syndie-dl6902-name = Набор DL6902
uplink-clothing-backpack-syndie-dl6902-desc = Включает в себя пулемёт DL6902 и один дополнительный короб.
@ -114,12 +101,9 @@ uplink-power-backpack-dl6902-name = DL6902 с патронным рюкзако
uplink-power-backpack-dl6902-desc = DL6902 переделанный под питание длинной лентой прямиком из рюкзака, рюкзак содержит 1200 патронов 7,62х39мм FMJ.
uplink-clothing-backpack-syndie-siar52-name = Набор 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-gun-name = S-13 «Чёрная мамба»
uplink-weapon-ussp-dmr-name = Драгунов
uplink-weapon-ussp-dmr-desc = снайперская винтовка под патроны калибра 7,62x54R. Полностью предназначена для стрельбы на дальние дистанции.
uplink-weapon-ussp-dmr-name = Набор Драгунов
uplink-deagle-name = пистолет «Desert Eagle»
uplink-deagle-desc = Cерьёзный аргумент в споре. Выгравировано: Мир благодаря превосходящей огневой мощи".
uplink-goldendeagle-name = Золотой Десерт Игл
@ -128,10 +112,6 @@ uplink-mini-energy-crossbow-name = энерго-арбалет биокодир
uplink-mini-energy-crossbow-desc = Главное оружие оперативника, предпочитающего неподвижные цели. Стреляет регенерирующими токсичными болтами, мгновенно валящими жертву на пол. Вариант с биокодировкой.
uplink-pistoltec9-name = Tac-Tec
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-desc = Изначально эта коробка для пиццы была тайно разработана компанией DONK Co, чтобы отпугнуть еретиков, предпочитающих пиццу не в форме покета, коробка для пиццы оснащена проводом и взрывается через несколько мгновений после открытия, не забудьте пожелать приятного аппетита вашей жертве!
@ -202,8 +182,8 @@ uplink-smoke-screen-implanter-name = Имплантер Дымовой Заве
uplink-smoke-screen-implanter-desc = Создает небольшое облако дыма, в котором вы можете скрыться. Можно использовать до трех раз, прежде чем у вас закончится газ.
uplink-creepy-laugh-implanter-name = Имплантер Жуткого Смеха
uplink-creepy-laugh-implanter-desc = Аудиоимплант, воспроизводящий фирменный смех синди-киборга. Раздражает, пугает, стиль гарантирован.
uplink-scram-implanter-proto-name = Имплантер Прототип-Побег
uplink-scram-implanter-proto-desc = Имплант на 2 заряда с огромной перезарядкой в 20 минут. Телепортирует вас в крупном радиусе, пытается перенести на свободную клетку, иногда может сбоить. Он точно безопасен?
uplink-scram-implanter-proto-name = Прототип Имплантера Побег
uplink-scram-implanter-proto-desc = Имплант побега на 1 заряд с перезарядкой 600 секунд. Телепортирует вас в большом радиусе, пытается перенести на свободную клетку, иногда может сбоить. Страхование жизни не прилагается.
## Ammo Kits and Bundle
@ -245,3 +225,6 @@ uplink-syndicate-teleporter-desc = Экспериментальное устро
## Disruption
uplink-syndicate-law-name = Плата законов (Синдикат)
uplink-syndicate-law-desc = Электронная плата, содержащая набор законов Синдиката.

View file

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

View file

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

View file

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

View file

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

View file

@ -336,27 +336,6 @@
- id: ClothingShoesChameleon
- 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
parent: ClothingBackpackDuffelSyndicateBundle
id: ClothingBackpackDuffelSyndicateEVABundle

View file

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

View file

@ -11,19 +11,20 @@
- type: entity
id: BriefcaseSyndieSniperBundleFilled
parent: BriefcaseBrown
parent: BriefcaseSyndie
suffix: Syndicate, Sniper Bundle
components:
# Sunrise-Start
- type: Item
size: Ginormous
- type: Storage
maxItemSize: Huge
grid:
- 0,0,6,3
# Sunrise-End
- type: EntityTableContainerFill
containers:
storagebase: !type:AllSelector
children:
- id: WeaponSniperHristov
- id: WeaponSniperHristovBiocode # Sunrise-edit
- id: MagazineBoxAntiMateriel
- id: MagazineBauer127Penetrator # Sunrise-add
- id: ClothingNeckTieRed
@ -40,15 +41,16 @@
containers:
storagebase: !type:AllSelector
children:
- id: ClothingOuterCoatJensenSyndie
- id: ClothingUniformJumpsuitTacticool
- id: ClothingEyesGlassesSunglasses
- id: SpaceCash30000
- id: EncryptionKeySyndie
- id: RubberStampTrader
- id: PhoneInstrumentSyndicate
- id: ClothingUniformJumpsuitTacticool
- id: ClothingOuterCoatJensen
- id: ClothingHandsGlovesCombat
- id: ClothingMaskNeckGaiter
- id: SyndieHandyFlag
- type: entity
id: BriefcaseThiefBribingBundleFilled
@ -59,71 +61,7 @@
containers:
storagebase: !type:AllSelector
children:
- id: ClothingOuterCoatJensen
- id: ClothingEyesGlassesSunglasses
- id: SpaceCash20000
- id: ClothingOuterCoatJensen
- 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,9 +6,10 @@
sprite: Objects/Devices/chameleon_projector.rsi
state: icon
content:
- ClothingBackpackChameleonFillAgent
- ClothingBackpackChameleonFill
- ChameleonProjector
- FakeMindShieldImplanter
- AgentIDCard
- type: thiefBackpackSet
id: ToolsSet

File diff suppressed because it is too large Load diff

View file

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

View file

@ -1,8 +1,15 @@
- type: entity
abstract: true
parent: ClothingHandsBase
id: ClothingHandsGlovesBoxingBase
id: ClothingHandsGlovesBoxingRed
name: red boxing gloves
description: Red gloves for competitive boxing.
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
damage: 8 #Stam damage values seem a bit higher than regular damage because of the decay, etc
# This needs to be moved to boxinggloves
@ -16,32 +23,17 @@
collection: BoxingHit
animation: WeaponArcFist
mustBeEquippedToUse: true
- type: Tag
tags:
- Kangaroo
- WhitelistChameleon
# Sunrise-Start
- type: DiseaseImmuneClothing
prob: 0.2
# Sunrise-End
- type: entity
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: Tag
tags:
- Kangaroo
- WhitelistChameleon
- type: entity
parent: ClothingHandsGlovesBoxingBase
parent: ClothingHandsGlovesBoxingRed
id: ClothingHandsGlovesBoxingBlue
name: blue boxing gloves
description: Blue gloves for competitive boxing.
@ -57,7 +49,7 @@
- type: FingerprintMask
- type: entity
parent: ClothingHandsGlovesBoxingBase
parent: ClothingHandsGlovesBoxingRed
id: ClothingHandsGlovesBoxingGreen
name: green boxing gloves
description: Green gloves for competitive boxing.
@ -73,7 +65,7 @@
- type: FingerprintMask
- type: entity
parent: ClothingHandsGlovesBoxingBase
parent: ClothingHandsGlovesBoxingRed
id: ClothingHandsGlovesBoxingYellow
name: yellow boxing gloves
description: Yellow gloves for competitive boxing.
@ -89,53 +81,19 @@
- type: FingerprintMask
- type: entity
abstract: true
parent: ClothingHandsGlovesBoxingBase
id: ClothingHandsGlovesBoxingRiggedBase
parent: ClothingHandsGlovesBoxingBlue
id: ClothingHandsGlovesBoxingRigged
suffix: Rigged
components:
- type: StaminaDamageOnHit
damage: 25
- type: MeleeWeapon
attackRate: 1.4
damage:
types:
Blunt: 8
bluntStaminaDamageFactor: 2
- 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
bluntStaminaDamageFactor: 0.0 # so blunt doesn't deal stamina damage at all
mustBeEquippedToUse: true
- type: entity
parent: [ClothingHandsBase, BaseCommandContraband]

View file

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

View file

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

View file

@ -17,7 +17,7 @@
# SUNRISE EDIT
- type: entity
parent: [ ClothingOuterBaseMedium, ClothingOuterStorageBase, AllowSuitStorageClothing, BaseSecurityContraband ]
parent: [ClothingOuterStorageBase, AllowSuitStorageClothing, ClothingOuterArmorBase]
id: ClothingOuterCoatDetective
name: detective trenchcoat
description: An 18th-century multi-purpose trenchcoat. Someone who wears this means serious business.
@ -32,6 +32,15 @@
children:
- id: SmokingPipeFilledTobacco
- 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
parent: [ClothingOuterCoatDetectiveLoadout]
@ -76,7 +85,7 @@
- type: entity
abstract: true
parent: [ ClothingOuterArmorBase, ClothingOuterStorageBase ]
parent: AllowSuitStorageClothing
id: ClothingOuterArmorHoS
components:
- type: Pierceable
@ -89,10 +98,12 @@
Piercing: 0.6
Heat: 0.7
Caustic: 0.75 # not the full 90% from ss13 because of the head
- type: ExplosionResistance
damageCoefficient: 0.9
- type: entity
abstract: true
parent: [ ClothingOuterArmorBase, ClothingOuterStorageBase ]
parent: AllowSuitStorageClothing
id: ClothingOuterArmorWarden
components:
- type: Pierceable
@ -105,9 +116,11 @@
Piercing: 0.7
Heat: 0.7
Caustic: 0.9
- type: ExplosionResistance
damageCoefficient: 0.9
- type: entity
parent: [BaseSecurityCommandContraband, ClothingOuterArmorHoS]
parent: [ClothingOuterArmorHoS, ClothingOuterStorageBase, BaseSecurityCommandContraband]
id: ClothingOuterCoatHoSTrench
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.
@ -137,16 +150,6 @@
- type: ToggleableClothing
clothingPrototype: ClothingHeadHatHoodChaplainHood
- type: entity
parent: ClothingOuterCoatJensen
id: ClothingOuterCoatJensenSyndie
suffix: Syndie
components:
- type: EntityTableContainerFill
containers:
storagebase:
id: SyndieHandyFlag
- type: entity
parent: ClothingOuterStorageBase
id: ClothingOuterCoatTrench
@ -374,7 +377,7 @@
sprite: Clothing/OuterClothing/Coats/pirate.rsi
- type: entity
parent: [ClothingOuterArmorWarden, BaseSecurityContraband]
parent: [ClothingOuterArmorWarden, ClothingOuterStorageBase, BaseSecurityContraband]
id: ClothingOuterCoatWarden
name: warden's armored jacket
description: A sturdy, utilitarian jacket designed to protect a warden from any brig-bound threats.

View file

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

View file

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

View file

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

View file

@ -62,7 +62,7 @@
path: /Audio/Effects/bite.ogg
damage:
types:
Piercing: 5
Piercing: 15 # Sunrise-Edit
# Visual & Audio
- type: DamageVisuals
damageOverlayGroups:
@ -146,9 +146,19 @@
- "footprint-left-bare-spider"
rightBareFootState:
- "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: ToggleableNightVision
effect: EffectNightVisioSpecies
# Sunrise-end
- type: entity

View file

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

View file

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

View file

@ -124,18 +124,6 @@
- type: StaticPrice
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
id: NutimovCircuitBoard
parent: BaseSiliconLawboard

View file

@ -265,6 +265,19 @@
allowUnpackOnTables: true
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
parent: BaseFlatpack
id: HydroponicsTrayFlatpack
@ -280,17 +293,3 @@
guides:
- Botany
- 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,14 +1842,6 @@
- Thief
# Sunrise-End
- type: entity
parent: ChameleonPDA
id: ChameleonAgentPDA
suffix: Chameleon, Agent ID
components:
- type: Pda
id: AgentIDCard
- type: entity
parent: BaseWidePDA
id: WizardPDA

View file

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

View file

@ -32,48 +32,3 @@
components:
- type: Item
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
id: VoiceMaskImplanter
name: identity mask implanter
name: voice mask implanter
parent: BaseImplantOnlyImplanterSyndi
components:
- type: Implanter

View file

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

View file

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

View file

@ -1,64 +1,58 @@
- type: entity
abstract: true
parent: BaseItem
id: BaseJammer
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.
components:
- type: Sprite
sprite: Objects/Devices/jammer.rsi
layers:
- state: jammer
- state: jammer_high_charge
map: ["enum.PowerDeviceVisualLayers.Powered"]
shader: unshaded
visible: false
- state: jammer
- state: jammer_high_charge
map: ["enum.RadioJammerLayers.LED"]
shader: unshaded
visible: false
- type: RadioJammer
settings:
- wattage: 2
range: 6
- wattage: 1
range: 2.5
message: radio-jammer-component-set-message-low
name: radio-jammer-component-setting-low
- wattage: 2
range: 6
message: radio-jammer-component-set-message-medium
name: radio-jammer-component-setting-medium
- wattage: 12
range: 12
message: radio-jammer-component-set-message-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: ItemToggle
- type: GenericVisualizer
visuals:
enum.ToggleableVisuals.Enabled:
enum.PowerDeviceVisualLayers.Powered:
True: { visible: true }
False: { visible: false }
- type: BatteryVisuals
enum.RadioJammerVisuals.LEDOn:
RadioJammerLayers.LED:
True: { visible: True }
False: { visible: False }
enum.RadioJammerVisuals.ChargeLevel:
RadioJammerLayers.LED:
Low: {state: jammer_low_charge}
Medium: {state: jammer_medium_charge}
High: {state: jammer_high_charge}
- type: StaticPrice
price: 1500
- type: entity
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]
parent: [RadioJammer, BaseXenoborgContraband]
id: XenoborgRadioJammer
name: xenoborg radio jammer
components:
@ -68,3 +62,10 @@
- 2003 # mothership radio
- 2004 # xenoborg 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
- type: entity
name: syndicate jaws of death
name: syndicate jaws of life
parent: [JawsOfLife, BaseSyndicateContraband]
id: SyndicateJawsOfLife
description: Useful for breaking into secure areas and other nefarious activities.
description: Useful for entering the station or its departments.
components:
- type: Sprite
sprite: Objects/Tools/jaws_of_life.rsi

View file

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

View file

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

View file

@ -1,6 +1,6 @@
- type: entity
name: BaseWeaponLauncher
parent: [ BaseItem, BaseGunWieldable ]
parent: BaseItem
id: BaseWeaponLauncher
description: A rooty tooty point and shooty.
abstract: true
@ -19,14 +19,6 @@
containers:
ballistic-ammo: !type:Container
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
- type: EmitSoundOnPickup
sound:
@ -49,7 +41,7 @@
- type: entity
name: china lake
parent: [BaseWeaponLauncher, BaseSyndicateContraband]
parent: [BaseWeaponLauncher, BaseGunWieldable, BaseSyndicateContraband]
id: WeaponLauncherChinaLake
description: PLOOP.
components:
@ -70,12 +62,19 @@
- type: AmmoCounter
- type: Gun
pump: true
fireRate: 1
selectedMode: SemiAuto
availableModes:
- SemiAuto
soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/grenade_launcher.ogg
projectileSpeed: 15 # Sunrise-Edit
- type: BallisticAmmoProvider
whitelist:
tags:
- Grenade
capacity: 3
proto: GrenadeFrag
capacity: 3 # Sunrise-Edit
proto: GrenadeFragTimer
soundInsert:
path: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg
- type: GunRequiresWield
@ -83,7 +82,7 @@
price: 10000
- type: entity
parent: [ BaseWeaponLauncher, BaseMajorContraband ]
parent: [ BaseWeaponLauncher, BaseGunWieldable, BaseMajorContraband ]
id: WeaponLauncherHydra
name: hydra
description: PLOOP... FSSSSSS...
@ -101,6 +100,13 @@
- type: Item
size: Huge
- type: AmmoCounter
- type: Gun
fireRate: 1
selectedMode: SemiAuto
availableModes:
- SemiAuto
soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/grenade_launcher.ogg
- type: GunRequiresWield
- type: ContainerContainer
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.
components:
- type: Gun
fireRate: 6
fireRate: 5
selectedMode: SemiAuto
availableModes:
- SemiAuto
- FullAuto
- SemiAuto
- FullAuto
soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/pistol.ogg
- type: Sprite
@ -136,19 +136,17 @@
map: ["enum.GunVisualLayers.Base"]
- state: mag-0
map: ["enum.GunVisualLayers.Mag"]
- type: ContainerContainer
containers:
ballistic-ammo: !type:Container
- type: BallisticAmmoProvider
whitelist:
tags:
- CartridgePistol
capacity: 10
proto: BulletPistolTraceSP # Sunrise-Edit
cycleable: false # No synthesizing ammo for your syndicate masters.
- type: BallisticAmmoSelfRefiller
autoRefillRate: 2s
affectedByEmp: true
# - type: ContainerContainer
# containers:
# ballistic-ammo: !type:Container
- type: BatteryAmmoProvider
proto: BulletPistolTraceSP
fireCost: 100
- type: Battery
maxCharge: 1000
startingCharge: 1000
- type: BatterySelfRecharger
autoRechargeRate: 25
- type: AmmoCounter
- type: entity

View file

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

View file

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

View file

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

View file

@ -14,10 +14,26 @@
quickEquip: false
slots:
- Belt
- type: TriggerOnUse
- type: TimerTrigger
delay: 3
- type: Damageable
damageContainer: Inorganic
- type: Destructible
thresholds:
- trigger: # Start fuse
!type:DamageTrigger
damage: 10
behaviors:
- !type:TimerStartBehavior
- type: Appearance
- type: AnimationPlayer
- type: GenericVisualizer
visuals:
enum.Trigger.TriggerVisuals.VisualState:
enum.ConstructionVisuals.Layer:
Primed: { state: primed }
Unprimed: { state: icon }
- type: Tag
tags:
- HandGrenade
@ -32,46 +48,6 @@
restitution: 0.3
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.
abstract: true
id: VolatileGrenadeBase

View file

@ -1,5 +1,5 @@
- type: entity
parent: [VolatileGrenadeBase, TimerGrenadeBase, BaseSecurityContraband ]
parent: [VolatileGrenadeBase, GrenadeBase, BaseSecurityContraband ]
id: SmokeGrenade
name: smoke grenade
description: A tactical grenade that releases a large, long-lasting cloud of smoke when used.
@ -90,7 +90,7 @@
#Sunrise-End
- type: entity
parent: [ BaseEngineeringContraband, VolatileGrenadeBase, TimerGrenadeBase ] # Prevent inheriting DeleteOnTrigger from SmokeGrenade
parent: [ BaseEngineeringContraband, VolatileGrenadeBase, GrenadeBase ] # Prevent inheriting DeleteOnTrigger from SmokeGrenade
id: AirGrenade
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!

View file

@ -1,5 +1,5 @@
- type: entity
parent: [ FoodBakedCroissant, ThrowingKnife ]
parent: FoodBakedCroissant
id: WeaponCroissant
suffix: Weapon
components:
@ -13,5 +13,14 @@
- ItemMask
restitution: 0.3
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
angularVelocity: true # spins

View file

@ -1,7 +1,7 @@
- type: entity
name: explosive grenade
description: Grenade that creates a small but devastating explosion.
parent: [VolatileGrenadeBase, TimerGrenadeBase, BaseSyndicateContraband]
parent: [VolatileGrenadeBase, GrenadeBase, BaseSyndicateContraband]
id: ExGrenade
components:
- type: ExplodeOnTrigger
@ -31,7 +31,7 @@
- type: entity
name: flashbang
description: Eeeeeeeeeeeeeeeeeeeeee.
parent: [ FragileGrenadeBase, TimerGrenadeBase, BaseSecurityContraband ]
parent: [ FragileGrenadeBase, GrenadeBase, BaseSecurityContraband ]
id: GrenadeFlashBang
components:
- type: Sprite
@ -88,12 +88,12 @@
- type: TimedDespawn
lifetime: 0.5
# Tuned to be a general bomb that deals equipment damage without explicitly gibbing, however it will still gladly instakill anyone that mishandles it.
# One of the few syndie bombs that should punch holes in space.
#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.
#Ideally, there should be a weak radius around the bomb outside of its gibbing / spacing range capable of dealing fair damage to players / structures.
- type: entity
name: syndicate minibomb
description: A syndicate-manufactured explosive used to stow destruction and cause chaos.
parent: [VolatileGrenadeBase, TimerGrenadeBase, BaseSyndicateContraband]
parent: [VolatileGrenadeBase, GrenadeBase, BaseSyndicateContraband]
id: SyndieMiniBomb
components:
- type: Sprite
@ -122,7 +122,7 @@
- type: entity
name: self destruct
description: Go out on your own terms!
parent: TimerGrenadeBase
parent: GrenadeBase
id: SelfDestructSeq
categories: [ HideSpawnMenu ]
components:
@ -145,28 +145,10 @@
volume: 30
initialBeepDelay: 0
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
parent: [ FragileGrenadeBase, TimerGrenadeBase, BaseSyndicateContraband ]
parent: [ FragileGrenadeBase, GrenadeBase, BaseSyndicateContraband ]
id: SingularityGrenade
name: singularity grenade
description: Grenade that simulates the power of a singularity, pulling things in a heap.
@ -208,10 +190,9 @@
sound:
path: /Audio/Effects/Grenades/Supermatter/supermatter_loop.ogg
- type: GravityWell
maxRange: 5
minRange: 0.25
baseRadialAcceleration: 25
baseTangentialAcceleration: 5
maxRange: 7
baseRadialAcceleration: 5
baseTangentialAcceleration: .5
gravPulsePeriod: 0.03
- type: SingularityDistortion
intensity: 150
@ -300,7 +281,7 @@
- type: entity
name: the nuclear option
description: Please don't throw it, think of the children.
parent: TimerGrenadeBase
parent: GrenadeBase
id: NuclearGrenade
components:
- type: Sprite
@ -381,26 +362,39 @@
- type: entity
name: EMP grenade
description: A grenade designed to wreak havoc on electronic systems.
parent: [ImpactGrenadeBase, BaseSyndicateContraband]
parent: [FragileGrenadeBase, GrenadeBase, BaseSyndicateContraband]
id: EmpGrenade
components:
- type: Sprite
sprite: Objects/Weapons/Grenades/empgrenade.rsi
- type: EmpOnTrigger
keysIn:
- trigger
range: 5.5
- timer
range: 11 #5.5 Sunrise-Edit
energyConsumption: 50000
- type: DeleteOnTrigger
keysIn:
- trigger
- timer
- type: Appearance
- type: TimerTriggerVisuals
primingSound:
path: /Audio/Effects/countdown.ogg
- type: StaticPrice
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
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.
parent: [TimerGrenadeBase, BaseSyndicateContraband]
parent: [GrenadeBase, BaseSyndicateContraband]
id: HolyHandGrenade
components:
- type: Sprite
@ -431,7 +425,7 @@
- type: entity
name: trick grenade
description: All the grenade without any of the boom.
parent: TimerGrenadeBase
parent: GrenadeBase
id: GrenadeDummy
components:
- type: Sprite
@ -451,9 +445,13 @@
path: /Audio/Effects/Emotes/parp1.ogg
positional: true
- type: Appearance
- type: TimerTriggerVisuals
primingSound:
path: /Audio/Effects/countdown.ogg
- type: TimerTrigger
beepSound:
path: "/Audio/Effects/beep1.ogg"
params:
volume: 5
initialBeepDelay: 0
beepInterval: 2 # 2 beeps total (at 0 and 2)
- type: entity
name: syndicate trickybomb

View file

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

View file

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

View file

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

View file

@ -1,9 +1,65 @@
# 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
id: AtmosDeviceFanTiny
name: tiny fan
description: A tiny fan, releasing a thin gust of air.
categories: [ HideSpawnMenu ] # Sunrise-Add
id: AtmosDeviceFanTinyDev
name: tiny DEBUG fan
categories: [ DoNotMap ]
placement:
mode: SnapgridCenter
components:
@ -28,12 +84,11 @@
- SpreaderIgnore
- type: entity
id: AtmosDeviceFanDirectional
name: directional fan
description: A thin fan, stopping the movement of gases across it.
categories: [ HideSpawnMenu ] # Sunrise-Add
id: AtmosDeviceFanDirectionalDev # Только для дебаг вещей
name: directional DEBUG fan
categories: [ DoNotMap ]
placement:
mode: SnapgridCenter
mode: SnapgridCenter
components:
- type: Transform
anchored: true
@ -55,12 +110,11 @@
- type: Clickable
- type: Tag
tags:
- SpreaderIgnore
- SpreaderIgnore
# Sunrise-start
- type: entity
id: AtmosDeviceFanDirectionalInvisible
parent: AtmosDeviceFanDirectional
parent: AtmosDeviceFanDirectionalDev
name: directional Invisible fan
categories: [ DoNotMap ]
placement:

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -8,103 +8,3 @@
- id: Paper
- id: PenCentcom
- 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 }
productEntity: ClothingEyesNVDSyndicate
cost:
Telecrystal: 1
Telecrystal: 2
categories:
- UplinkWearables
@ -16,9 +16,9 @@
productEntity: ClothingEyesGlassesThermalChameleon
discountCategory: veryRareDiscounts
discountDownTo:
Telecrystal: 3
cost:
Telecrystal: 4
cost:
Telecrystal: 5
categories:
- UplinkWearables
@ -46,6 +46,8 @@
id: UplinkAmmoPouch
icon: { sprite: _RMC14/Objects/Clothing/Pouches/large_ammo_mag.rsi, state: icon }
productEntity: PouchAmmo
cost:
Telecrystal: 1
categories:
- UplinkWearables
@ -82,9 +84,9 @@
productEntity: ThievingGloves
discountCategory: rareDiscounts
discountDownTo:
Telecrystal: 2
cost:
Telecrystal: 3
cost:
Telecrystal: 4
categories:
- UplinkWearables
@ -97,7 +99,7 @@
discountDownTo:
Telecrystal: 4
cost:
Telecrystal: 5
Telecrystal: 6
categories:
- UplinkWearables
@ -108,9 +110,9 @@
productEntity: ClothingOuterHardsuitChameleon
discountCategory: rareDiscounts
discountDownTo:
Telecrystal: 3
cost:
Telecrystal: 4
cost:
Telecrystal: 5
categories:
- UplinkWearables
@ -120,7 +122,7 @@
description: uplink-objects-power-syndie-powercell-desc
productEntity: PowerCellSyndicate
cost:
Telecrystal: 3
Telecrystal: 4
categories:
- UplinkWearables
@ -235,60 +237,6 @@
categories:
- 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
- type: listing
id: UplinkMagazineLightRifleBox
@ -515,10 +463,18 @@
description: uplink-magazine-dragunov-desc
icon: { sprite: _Sunrise/Objects/Weapons/Guns/Ammunition/Magazines/Rifle/dragunov_mag.rsi, state: base }
productEntity: MagazineDragunov
cost:
discountCategory: usualDiscounts
discountDownTo:
Telecrystal: 1
cost:
Telecrystal: 2
categories:
- UplinkAmmo
conditions:
- !type:StoreWhitelistCondition
blacklist:
tags:
- AssaultOpsUplink
- type: listing
id: UplinkMagazineDragunovExtended
@ -529,7 +485,7 @@
discountDownTo:
Telecrystal: 1
cost:
Telecrystal: 2
Telecrystal: 3
categories:
- UplinkAmmo
conditions:
@ -862,54 +818,6 @@
- NukeOpsUplink
- 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
id: UplinkClothingBackpackSyndieAJ100Filled
name: uplink-clothing-backpack-syndie-aj100-name
@ -925,10 +833,9 @@
- UplinkWeaponry
conditions:
- !type:StoreWhitelistCondition
whitelist:
blacklist:
tags:
- NukeOpsUplink
- LoneOpsUplink
- AssaultOpsUplink
# - type: listing
# id: UplinkWeaponSyndieLaserPistol
@ -948,25 +855,6 @@
# tags:
# - 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
id: UplinkC40RBundle
name: uplink-c40r-bundle-name
@ -980,12 +868,13 @@
Telecrystal: 17
categories:
- UplinkWeaponry
#Sunrise-start
conditions:
- !type:StoreWhitelistCondition
whitelist:
blacklist:
tags:
- NukeOpsUplink
- LoneOpsUplink
- AssaultOpsUplink
#Sunrise-end
- type: listing
id: UplinkClothingBackpackSyndieDL6902Filled
@ -1026,26 +915,6 @@
- NukeOpsUplink
- 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
id: UplinkClothingBackpackSyndieSIAR52Filled
name: uplink-clothing-backpack-syndie-siar52-name
@ -1059,12 +928,6 @@
Telecrystal: 18
categories:
- UplinkWeaponry
conditions:
- !type:StoreWhitelistCondition
whitelist:
tags:
- NukeOpsUplink
- LoneOpsUplink
- type: listing
id: UplinkWeaponLaserMinigun
@ -1107,16 +970,20 @@
- type: listing
id: UplinkWeaponDragunov
name: uplink-weapon-ussp-dmr-name
description: uplink-weapon-ussp-dmr-desc
productEntity: BriefcaseWeaponDragunovFilled
productEntity: CrateAmmunitionSmallDragunov
icon: { sprite: _Sunrise/Objects/Weapons/Guns/Snipers/dragunov/big.rsi, state: icon }
discountCategory: veryRareDiscounts
discountDownTo:
Telecrystal: 10
Telecrystal: 13
cost:
Telecrystal: 12
Telecrystal: 16
categories:
- UplinkWeaponry
conditions:
- !type:StoreWhitelistCondition
blacklist:
tags:
- AssaultOpsUplink
- type: listing
id: UplinkWeaponBauer127
@ -1188,9 +1055,9 @@
productEntity: ClothingBackpackDuffelSyndicateFilledInfiltration
discountCategory: rareDiscounts
discountDownTo:
Telecrystal: 7
Telecrystal: 8
cost:
Telecrystal: 9
Telecrystal: 14
categories:
- UplinkWearables
restockTime: 1800
@ -1200,7 +1067,6 @@
tags:
- NukeOpsUplink
- LoneOpsUplink
- AssaultOpsUplink
- type: listing
id: UplinkHardsuitSyndieMedic
@ -1437,6 +1303,7 @@
- !type:ListingLimitedStockCondition
stock: 2
#Sunrise-start
- type: listing
id: UplinkCoalAutoInjector
name: uplink-coal-auto-injector-name
@ -1462,9 +1329,9 @@
productEntity: CoalpenKitFilled
discountCategory: rareDiscounts
discountDownTo:
Telecrystal: 3
Telecrystal: 4
cost:
Telecrystal: 5
Telecrystal: 6
categories:
- UplinkChemicals
conditions:
@ -1474,6 +1341,7 @@
- NukeOpsUplink
- LoneOpsUplink
- AssaultOpsUplink
#Sunrise-end
- type: listing
id: UplinkSyndicateRapier
@ -1929,11 +1797,11 @@
name: uplink-clothing-glasses-nvg-name
description: uplink-clothing-glasses-nvg-desc
productEntity: ClothingEyesGlassesNVG
discountCategory: rareDiscounts
discountCategory: veryRareDiscounts
discountDownTo:
Telecrystal: 1
Telecrystal: 3
cost:
Telecrystal: 2
Telecrystal: 4
categories:
- UplinkWearables
@ -1944,9 +1812,9 @@
productEntity: EnergyDomeGeneratorPersonalSyndieBiocode
discountCategory: rareDiscounts
discountDownTo:
Telecrystal: 5
Telecrystal: 8
cost:
Telecrystal: 6
Telecrystal: 10
categories:
- UplinkWearables
conditions:
@ -1962,9 +1830,9 @@
productEntity: EnergyDomeGeneratorBackpackSyndieBiocode
discountCategory: rareDiscounts
discountDownTo:
Telecrystal: 5
Telecrystal: 7
cost:
Telecrystal: 6
Telecrystal: 10
categories:
- UplinkDisruption
conditions:
@ -2000,6 +1868,29 @@
components:
- 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
- type: listing
@ -2012,7 +1903,7 @@
discountDownTo:
Telecrystal: 1
cost:
Telecrystal: 2
Telecrystal: 3
categories:
- UplinkImplants
@ -2022,8 +1913,11 @@
description: uplink-scram-implanter-proto-desc
icon: { sprite: /Textures/Structures/Specific/anomaly.rsi, state: anom4 }
productEntity: ScramImplanterProto
cost:
discountCategory: rareDiscounts
discountDownTo:
Telecrystal: 1
cost:
Telecrystal: 3
categories:
- UplinkImplants
@ -2033,15 +1927,11 @@
description: uplink-creepy-laugh-implanter-desc
icon: { sprite: Clothing/Mask/gassyndicate.rsi, state: icon }
productEntity: CreepyLaughImplanter
cost:
Telecrystal: 1
categories:
- UplinkImplants
conditions:
- !type:StoreWhitelistCondition
whitelist:
tags:
- SyndieAgentUplink
- !type:ListingLimitedStockCondition
stock: 1
# Jobs
- type: listing
@ -2082,9 +1972,9 @@
productEntity: SyndyClusterGrenade
discountCategory: veryRareDiscounts
discountDownTo:
Telecrystal: 4
Telecrystal: 5
cost:
Telecrystal: 7
Telecrystal: 10
categories:
- UplinkExplosives
@ -2348,6 +2238,46 @@
tags:
- 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
id: uplinkWeaponMiniEnergyCrossbow
name: uplink-mini-energy-crossbow-name
@ -2368,30 +2298,6 @@
id: uplinkWeaponShotgunMinotaur
name: uplink-minotaur-name
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
icon:
{
@ -2443,27 +2349,6 @@
name: uplink-grenade-launcher-m79-name
description: uplink-grenade-launcher-m79-desc
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
discountCategory: veryRareDiscounts
discountDownTo:
@ -2529,9 +2414,9 @@
}
productEntity: CyberEyeThermalBox
discountDownTo:
Telecrystal: 3
Telecrystal: 4
cost:
Telecrystal: 6
Telecrystal: 7
categories:
- UplinkCybernetics
@ -2547,9 +2432,9 @@
productEntity: MantisBladeArmsKit
discountCategory: rareDiscounts
discountDownTo:
Telecrystal: 6
cost:
Telecrystal: 8
cost:
Telecrystal: 10
categories:
- UplinkCybernetics
@ -2789,7 +2674,7 @@
discountDownTo:
Telecrystal: 1
cost:
Telecrystal: 2
Telecrystal: 3
categories:
- UplinkWearables
conditions:
@ -2828,6 +2713,16 @@
categories:
- UplinkPointless
- type: listing
id: UplinkPistolTec9Magazine
name: uplink-pistoltec9-magazine-name
description: uplink-pistoltec9-magazine-desc
productEntity: MagazinePistolSubMachineGunCaseless
cost:
Telecrystal: 2
categories:
- UplinkAmmo
- type: listing
id: uplinkWeaponPistolTec9
name: uplink-pistoltec9-name

View file

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

View file

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

View file

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

View file

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

View file

@ -4,8 +4,25 @@
components:
- type: BallisticAmmoProvider
capacity: 20
- type: entity
parent: BaseMagazinePistolCaselessRifleExtended
id: MagazinePistolSubMachineGunCaseless
name: Tec9Magazine
components:
- type: Sprite
scale: 1,1.15
sprite: _Sunrise/Objects/Weapons/Guns/Ammunition/Magazines/mp38.rsi
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
id: MagazinePistolSubMachineGunCaselessExtended

View file

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

View file

@ -422,6 +422,31 @@
- type: TimedDespawn
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
id: BulletAirGrenade
parent: BaseBulletGrenade

View file

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

View file

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

View file

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

View file

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

View file

@ -1,31 +0,0 @@
{
"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.

Before

Width:  |  Height:  |  Size: 5.7 KiB

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