Санитизация
@@ -135,7 +135,7 @@ namespace Content.Client.Entry
|
||||
_prototypeManager.RegisterIgnore("wireLayout");
|
||||
_prototypeManager.RegisterIgnore("alertLevels");
|
||||
_prototypeManager.RegisterIgnore("nukeopsRole");
|
||||
_prototypeManager.RegisterIgnore("stationGoal"); // WD ENGI EXCLUSIVE
|
||||
_prototypeManager.RegisterIgnore("stationGoal"); // WD
|
||||
_prototypeManager.RegisterIgnore("ghostRoleRaffleDecider");
|
||||
|
||||
//WD-EDIT
|
||||
|
||||
@@ -136,14 +136,14 @@ namespace Content.Server.Strip
|
||||
}
|
||||
// WD EDIT END
|
||||
|
||||
// WD ENGI EXCLUSIVE EDIT START
|
||||
// WD EDIT START
|
||||
if (args.Slot == "ears" && TryComp(strippable, out PreventStrippingFromEarsComponent? _))
|
||||
{
|
||||
var message = Loc.GetString("buckethelmet-cant-strip");
|
||||
_popupSystem.PopupEntity(message, user, user);
|
||||
return;
|
||||
}
|
||||
// WD ENGI EXCLUSIVE EDIT END
|
||||
// WD EDIT END
|
||||
|
||||
|
||||
if (args.IsHand)
|
||||
@@ -616,7 +616,7 @@ namespace Content.Server.Strip
|
||||
|
||||
if (ev.Event.InventoryOrHand)
|
||||
{
|
||||
if ( ev.Event.InsertOrRemove && !CanStripInsertInventory((entity.Owner, entity.Comp), args.Target.Value, args.Used.Value, ev.Event.SlotOrHandName) ||
|
||||
if (ev.Event.InsertOrRemove && !CanStripInsertInventory((entity.Owner, entity.Comp), args.Target.Value, args.Used.Value, ev.Event.SlotOrHandName) ||
|
||||
!ev.Event.InsertOrRemove && !CanStripRemoveInventory(entity.Owner, args.Target.Value, args.Used.Value, ev.Event.SlotOrHandName))
|
||||
{
|
||||
ev.Cancel();
|
||||
@@ -624,7 +624,7 @@ namespace Content.Server.Strip
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( ev.Event.InsertOrRemove && !CanStripInsertHand((entity.Owner, entity.Comp), args.Target.Value, args.Used.Value, ev.Event.SlotOrHandName) ||
|
||||
if (ev.Event.InsertOrRemove && !CanStripInsertHand((entity.Owner, entity.Comp), args.Target.Value, args.Used.Value, ev.Event.SlotOrHandName) ||
|
||||
!ev.Event.InsertOrRemove && !CanStripRemoveHand(entity.Owner, args.Target.Value, args.Used.Value, ev.Event.SlotOrHandName))
|
||||
{
|
||||
ev.Cancel();
|
||||
@@ -645,14 +645,14 @@ namespace Content.Server.Strip
|
||||
if (ev.InventoryOrHand)
|
||||
{
|
||||
if (ev.InsertOrRemove)
|
||||
StripInsertInventory((entity.Owner, entity.Comp), ev.Target.Value, ev.Used.Value, ev.SlotOrHandName);
|
||||
else StripRemoveInventory(entity.Owner, ev.Target.Value, ev.Used.Value, ev.SlotOrHandName, ev.Args.Hidden);
|
||||
StripInsertInventory((entity.Owner, entity.Comp), ev.Target.Value, ev.Used.Value, ev.SlotOrHandName);
|
||||
else StripRemoveInventory(entity.Owner, ev.Target.Value, ev.Used.Value, ev.SlotOrHandName, ev.Args.Hidden);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ev.InsertOrRemove)
|
||||
StripInsertHand((entity.Owner, entity.Comp), ev.Target.Value, ev.Used.Value, ev.SlotOrHandName, ev.Args.Hidden);
|
||||
else StripRemoveHand((entity.Owner, entity.Comp), ev.Target.Value, ev.Used.Value, ev.SlotOrHandName, ev.Args.Hidden);
|
||||
StripInsertHand((entity.Owner, entity.Comp), ev.Target.Value, ev.Used.Value, ev.SlotOrHandName, ev.Args.Hidden);
|
||||
else StripRemoveHand((entity.Owner, entity.Comp), ev.Target.Value, ev.Used.Value, ev.SlotOrHandName, ev.Args.Hidden);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@ using Content.Shared._White._Engi.BucketHelmet;
|
||||
namespace Content.Server._White._Engi.BucketHelmet;
|
||||
|
||||
/// <summary>
|
||||
/// WD.
|
||||
/// This handles placemet of PreventStrippingFromEarsComponent when bucket helmet is in use.
|
||||
/// WD Engi Exclusive.
|
||||
/// </summary>
|
||||
public sealed class BucketHelmetSystem : EntitySystem
|
||||
{
|
||||
|
||||
@@ -3,8 +3,8 @@ using Robust.Shared.Audio;
|
||||
namespace Content.Server._White._Engi.PacifiedOnChaplainAction
|
||||
{
|
||||
/// <summary>
|
||||
/// WD.
|
||||
/// Adds verb for chaplain to pacify entity.
|
||||
/// WD Engi Exclusive.
|
||||
/// </summary>
|
||||
[RegisterComponent]
|
||||
public sealed partial class PacifiedOnChaplainActionComponent : Component
|
||||
|
||||
@@ -12,7 +12,7 @@ using Content.Shared.Database;
|
||||
namespace Content.Server._White._Engi.PacifiedOnChaplainAction
|
||||
{
|
||||
/// <summary>
|
||||
/// WD Engi Exclusive.
|
||||
/// WD
|
||||
/// </summary>
|
||||
public sealed class PacifiedOnChaplainAction : EntitySystem
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@ using Robust.Shared.Prototypes;
|
||||
namespace Content.Server._White._Engi.StationGoal
|
||||
{
|
||||
/// <summary>
|
||||
/// WD ENGI EXCLUSIVE.
|
||||
/// WD.
|
||||
/// If attached to a station prototype, will send the station a random goal from the list.
|
||||
/// </summary>
|
||||
[RegisterComponent]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
namespace Content.Server._White._Engi.StationGoal
|
||||
{
|
||||
/// <summary>
|
||||
/// WD ENGI EXCLUSIVE.
|
||||
/// WD.
|
||||
/// Paper with a written station goal in it.
|
||||
/// </summary>
|
||||
[RegisterComponent]
|
||||
|
||||
@@ -12,7 +12,7 @@ using Content.Server.RandomMetadata;
|
||||
namespace Content.Server._White._Engi.StationGoal
|
||||
{
|
||||
/// <summary>
|
||||
/// WD ENGI EXCLUSIVE.
|
||||
/// WD.
|
||||
/// System to spawn paper with station goal.
|
||||
/// </summary>
|
||||
public sealed class StationGoalPaperSystem : EntitySystem
|
||||
@@ -71,7 +71,6 @@ namespace Content.Server._White._Engi.StationGoal
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// WD ENGI EXCLUSIVE.
|
||||
/// Send a station goal on selected station to all faxes which are authorized to receive it.
|
||||
/// </summary>
|
||||
/// <returns>True if at least one fax received paper</returns>
|
||||
|
||||
@@ -3,7 +3,7 @@ using Robust.Shared.Prototypes;
|
||||
namespace Content.Server._White._Engi.StationGoal
|
||||
{
|
||||
/// <summary>
|
||||
/// WD ENGI EXCLUSIVE.
|
||||
/// WD
|
||||
/// </summary>
|
||||
[Serializable, Prototype("stationGoal")]
|
||||
public sealed class StationGoalPrototype : IPrototype
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
using Content.Shared.Damage;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
using Content.Shared.Chat.Prototypes;
|
||||
using Robust.Shared.Audio;
|
||||
|
||||
namespace Content.Server._White._Engi.Suhariki;
|
||||
|
||||
/// <summary>
|
||||
/// Makes you loose your tooth and have funny accent.
|
||||
/// WD Engi Exclusive.
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(SuharikiSystem))]
|
||||
public sealed partial class SuharikiComponent : Component
|
||||
|
||||
{
|
||||
/// <summary>
|
||||
/// Amount and type of damage that will be dealt on event.
|
||||
/// </summary>
|
||||
[DataField(required: true)]
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public DamageSpecifier Damage = new();
|
||||
|
||||
/// <summary>
|
||||
/// Chance of event activation.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public float Chance = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Amount of rolls for event.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public int StonesInFood = 1;
|
||||
|
||||
/// <summary>
|
||||
/// The prototype that will be spawned on event.
|
||||
/// </summary>
|
||||
[DataField(customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>)), ViewVariables(VVAccess.ReadWrite)]
|
||||
public string HoldingPrototype = "SuharikiTooth";
|
||||
|
||||
/// <summary>
|
||||
/// Emote triggered on event.
|
||||
/// </summary>
|
||||
[DataField(customTypeSerializer: typeof(PrototypeIdSerializer<EmotePrototype>))]
|
||||
public string EmoteId = "Scream";
|
||||
|
||||
/// <summary>
|
||||
/// Sound triggered on event.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public SoundSpecifier UseSound { get; set; } = new SoundPathSpecifier("/Audio/White/_Engi/Object/Misc/Suhariki/tooth_break.ogg");
|
||||
}
|
||||
@@ -1,152 +0,0 @@
|
||||
using Content.Server.Inventory;
|
||||
using Content.Server.Nutrition.Components;
|
||||
using Content.Server.Popups;
|
||||
using Content.Shared.Interaction.Events;
|
||||
using Content.Shared.Nutrition.EntitySystems;
|
||||
using Robust.Shared.Random;
|
||||
using Content.Shared.Damage;
|
||||
using Content.Server.Effects;
|
||||
using Robust.Shared.Player;
|
||||
using Content.Server.Administration.Logs;
|
||||
using Content.Shared.Database;
|
||||
using Content.Server.Chat.Systems;
|
||||
using Content.Server.Nutrition.EntitySystems;
|
||||
using Robust.Shared.Timing;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Audio.Systems;
|
||||
using Content.Shared.Verbs;
|
||||
using Robust.Shared.Utility;
|
||||
using Content.Shared.Body.Components;
|
||||
using Content.Server.Body.Systems;
|
||||
using Content.Server.Body.Components;
|
||||
using Content.Server.Speech.Components;
|
||||
|
||||
namespace Content.Server._White._Engi.Suhariki;
|
||||
|
||||
/// <summary>
|
||||
/// WD Engi Exclusive.
|
||||
/// </summary>
|
||||
public sealed class SuharikiSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly PopupSystem _popup = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly DamageableSystem _damageableSystem = default!;
|
||||
[Dependency] private readonly ColorFlashEffectSystem _color = default!;
|
||||
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
|
||||
[Dependency] private readonly ChatSystem _chat = default!;
|
||||
[Dependency] private readonly FoodSystem _food = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly BodySystem _body = default!;
|
||||
private EntityQuery<MetaDataComponent> _metaQuery;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
_metaQuery = GetEntityQuery<MetaDataComponent>();
|
||||
SubscribeLocalEvent<SuharikiComponent, UseInHandEvent>(OnUseInHand, after: new[] { typeof(OpenableSystem), typeof(ServerInventorySystem) });
|
||||
SubscribeLocalEvent<SuharikiComponent, GetVerbsEvent<AlternativeVerb>>(AddEatVerb);
|
||||
}
|
||||
|
||||
private void OnUseInHand(Entity<SuharikiComponent> entity, ref UseInHandEvent ev)
|
||||
{
|
||||
if (ev.Handled)
|
||||
return;
|
||||
|
||||
var result = TryUse(ev.User, ev.User, entity, entity.Comp);
|
||||
ev.Handled = result.Handled;
|
||||
}
|
||||
|
||||
private (bool Success, bool Handled) TryUse(EntityUid user, EntityUid target, EntityUid food, SuharikiComponent scomponent)
|
||||
{
|
||||
var foodComponents = _metaQuery.GetComponent(food).EntityPrototype;
|
||||
|
||||
if (foodComponents == null)
|
||||
return (false, false);
|
||||
|
||||
foodComponents.Components.TryGetComponent("Food", out var component);
|
||||
|
||||
if (component == null)
|
||||
return (false, false);
|
||||
|
||||
// idk what I'm doing but otherwise the owner is "0" and it throws fatal error
|
||||
component.Owner = food;
|
||||
|
||||
var result = _food.TryFeed(user, target, food, (FoodComponent) component);
|
||||
|
||||
if (result.Success)
|
||||
Timer.Spawn(300, () => RollEvent(scomponent, user));
|
||||
|
||||
return (true, true);
|
||||
}
|
||||
|
||||
private void RollEvent(SuharikiComponent scomponent, EntityUid user)
|
||||
{
|
||||
if (scomponent.StonesInFood < 1)
|
||||
return;
|
||||
|
||||
scomponent.StonesInFood -= 1;
|
||||
|
||||
// Pseudorandom shit
|
||||
if (!_random.Prob(scomponent.Chance))
|
||||
return;
|
||||
|
||||
// Normally slimes don't care about hard food
|
||||
var whomst = _metaQuery.GetComponent(user).EntityPrototype;
|
||||
var isUserSlime = whomst!.ID.Contains("slime", StringComparison.OrdinalIgnoreCase);
|
||||
if (isUserSlime)
|
||||
return;
|
||||
|
||||
var modifiedDamage = _damageableSystem.TryChangeDamage(user, scomponent.Damage, true);
|
||||
var deleted = Deleted(user);
|
||||
if (modifiedDamage is null || !EntityManager.EntityExists(user))
|
||||
return;
|
||||
if (!modifiedDamage.Any() || deleted)
|
||||
return;
|
||||
// Damaging the user with appropriate effects
|
||||
var stringTopopup = Loc.GetString("suhariki-lost", ("user", user));
|
||||
_popup.PopupEntity(Name(user) + " " + stringTopopup, user, Shared.Popups.PopupType.LargeCaution);
|
||||
_color.RaiseEffect(Color.Red, new List<EntityUid> { user }, Filter.Pvs(user, entityManager: EntityManager));
|
||||
_audio.PlayPvs(scomponent.UseSound, user, AudioParams.Default.WithVolume(-1f));
|
||||
_adminLogger.Add(LogType.Damaged,
|
||||
LogImpact.Medium,
|
||||
$"This idiot {ToPrettyString(user):user} tried to eat Suhariki and lost tooth, received {modifiedDamage.GetTotal():damage} damage and recieved FrontalLisp accent");
|
||||
|
||||
// Spawns prototype
|
||||
var coords = Transform(user).Coordinates;
|
||||
Spawn(scomponent.HoldingPrototype, coords.Offset(_random.NextVector2(0.2f)));
|
||||
|
||||
// Scream
|
||||
Timer.Spawn(300, () => _chat.TryEmoteWithChat(user, scomponent.EmoteId));
|
||||
|
||||
// Adding FrontalLisp accent
|
||||
EnsureComp<FrontalLispComponent>(user);
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
private void AddEatVerb(Entity<SuharikiComponent> entity, ref GetVerbsEvent<AlternativeVerb> ev)
|
||||
{
|
||||
if (entity.Owner == ev.User ||
|
||||
!ev.CanInteract ||
|
||||
!ev.CanAccess ||
|
||||
!TryComp<BodyComponent>(ev.User, out var body) ||
|
||||
!_body.TryGetBodyOrganComponents<StomachComponent>(ev.User, out var stomachs))
|
||||
return;
|
||||
|
||||
var user = ev.User;
|
||||
AlternativeVerb verb = new()
|
||||
{
|
||||
Act = () =>
|
||||
{
|
||||
TryUse(user, user, entity, entity.Comp);
|
||||
},
|
||||
Icon = new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/VerbIcons/cutlery.svg.192dpi.png")),
|
||||
Text = Loc.GetString("food-system-verb-eat"),
|
||||
Priority = -1
|
||||
};
|
||||
|
||||
ev.Verbs.Add(verb);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -60,7 +60,7 @@ public sealed partial class FaxMachineComponent : Component
|
||||
public bool ReceiveNukeCodes { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// WD ENGI EXCLUSIVE.
|
||||
/// WD.
|
||||
/// Should that fax receive station goal info
|
||||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
namespace Content.Shared._White._Engi.BucketHelmet;
|
||||
|
||||
/// <summary>
|
||||
/// WD.
|
||||
/// This is used for bucket helmet.
|
||||
/// WD Engi Exclusive.
|
||||
/// </summary>
|
||||
[RegisterComponent]
|
||||
public sealed partial class BucketHelmetComponent : Component
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
namespace Content.Shared._White._Engi.BucketHelmet;
|
||||
|
||||
/// <summary>
|
||||
/// WD.
|
||||
/// This is used to block stripping headsets when bucket helmet is on.
|
||||
/// WD Engi Exclusive.
|
||||
/// </summary>
|
||||
[RegisterComponent]
|
||||
public sealed partial class PreventStrippingFromEarsComponent : Component
|
||||
|
||||
@@ -4,8 +4,8 @@ using Robust.Shared.GameStates;
|
||||
namespace Content.Shared._White._Engi.DamageableClothing;
|
||||
|
||||
/// <summary>
|
||||
/// WD.
|
||||
/// This component goes on an equippable item that should take damage while in use.
|
||||
/// WD Engi Exclusive.
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
|
||||
public sealed partial class DamageableClothingComponent : Component
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
namespace Content.Shared._White._Engi.DamageableClothing;
|
||||
|
||||
/// <summary>
|
||||
/// WD.
|
||||
/// This component gets dynamically added to an Entity via the <see cref="DamageableClothing"/>.
|
||||
/// WD Engi Exclusive.
|
||||
/// </summary>
|
||||
[RegisterComponent]
|
||||
public sealed partial class DamageableClothingUserComponent : Component
|
||||
|
||||
@@ -4,7 +4,7 @@ using Content.Shared.Inventory.Events;
|
||||
namespace Content.Shared._White._Engi.DamageableClothing;
|
||||
|
||||
/// <summary>
|
||||
/// WD Engi Exclusive.
|
||||
/// WD
|
||||
/// </summary>
|
||||
public sealed partial class DamageableClothingSystem : EntitySystem
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@ using Content.Shared.Damage;
|
||||
namespace Content.Shared._White._Engi.DamageableClothing;
|
||||
|
||||
/// <summary>
|
||||
/// WD Engi Exclusive.
|
||||
/// WD
|
||||
/// </summary>
|
||||
public sealed partial class DamageableClothingSystem
|
||||
{
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
ent-FoodSnackSuhariki = сухарики
|
||||
.desc = Старая реликвия из прошлого, на этикетке едва можно прочитать слово «Кириешки».
|
||||
ent-FoodPacketSuharikiTrash = упаковка от сухариков
|
||||
ent-SuharikiTooth = зуб
|
||||
.desc = Может быть он твой, а может и не твой.
|
||||
|
||||
suhariki-lost = сломал свой зуб!
|
||||
@@ -1,3 +1,3 @@
|
||||
send-station-goal-command-description = WD ENGI EXCLUSIVE. Отправляет выбранную цель станции на все факсы способные её принять
|
||||
send-station-goal-command-description = WD. Отправляет выбранную цель станции на все факсы способные её принять
|
||||
send-station-goal-command-help-text = Использование: { $command } <id-цели>
|
||||
send-station-goal-command-arg-id = <ID цели>
|
||||
|
||||
@@ -594,8 +594,6 @@
|
||||
prob: 0.10
|
||||
- id: BarberScissors
|
||||
prob: 0.05
|
||||
- id: FoodSnackSuhariki # WD Engi Exclusive
|
||||
prob: 0.10
|
||||
# Syndicate loot
|
||||
- id: null
|
||||
prob: 0.95
|
||||
|
||||
@@ -45,6 +45,5 @@
|
||||
- FoodFrozenSnowconeRainbow
|
||||
- FoodSnackPistachios
|
||||
- FoodSnackSemki
|
||||
- FoodSnackSuhariki # WD
|
||||
chance: 0.8
|
||||
offset: 0.0
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
- type: PhysicalComposition
|
||||
materialComposition:
|
||||
Plastic: 50
|
||||
- type: Construction # WD Engi Exclusive
|
||||
- type: Construction # WD
|
||||
deconstructionTarget: null
|
||||
graph: ClothingHeadBucketHelmet
|
||||
node: start
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
- type: FaxMachine
|
||||
name: "Central Command"
|
||||
notifyAdmins: true
|
||||
receiveStationGoal: true # WD ENGI EXCLUSIVE
|
||||
receiveStationGoal: true # WD
|
||||
|
||||
- type: entity
|
||||
parent: FaxMachineBase
|
||||
@@ -110,6 +110,6 @@
|
||||
- type: FaxMachine
|
||||
name: "Captain's Office"
|
||||
receiveNukeCodes: true
|
||||
receiveStationGoal: true # WD ENGI EXCLUSIVE
|
||||
receiveStationGoal: true # WD
|
||||
- type: StealTarget
|
||||
stealGroup: FaxMachineCaptain
|
||||
|
||||
@@ -263,8 +263,7 @@
|
||||
sprite: White/Objects/Weapons/Chaplain/scythe-inhands.rsi
|
||||
- type: Sharp
|
||||
|
||||
# Может пиздеть
|
||||
# WD Engi Exclusive - и может давать пизды
|
||||
# Может пиздеть и может давать пизды
|
||||
- type: entity
|
||||
parent: HolyKatana
|
||||
id: PossessedBlade
|
||||
@@ -282,11 +281,9 @@
|
||||
- suitStorage
|
||||
- type: GhostRole
|
||||
allowSpeech: true
|
||||
# WD Engi Exclusive edit start
|
||||
name: ghost-role-information-possessed-blade-name
|
||||
description: ghost-role-information-possessed-blade-description
|
||||
rules: ghost-role-information-possessed-blade-rules
|
||||
# WD Engi Exclusive edit end
|
||||
- type: GhostTakeoverAvailable
|
||||
- type: Examiner
|
||||
- type: Item
|
||||
@@ -295,7 +292,6 @@
|
||||
shape:
|
||||
- 0, 0, 1, 3
|
||||
sprite: White/Objects/Weapons/Chaplain/possessed.rsi
|
||||
# WD Engi Exclusive start
|
||||
- type: DamageOtherOnHit
|
||||
damage:
|
||||
types:
|
||||
@@ -304,7 +300,6 @@
|
||||
- type: UseDelay
|
||||
delay: 2.0
|
||||
- type: PacifiedOnChaplainAction
|
||||
# WD Engi Exclusive end
|
||||
|
||||
# Приклеен к руке, быстро и громко бьет
|
||||
- type: entity
|
||||
@@ -507,11 +502,9 @@
|
||||
soundSwing:
|
||||
collection: HammerMiss
|
||||
- type: DisarmMalus
|
||||
# WD Engi Exclusive start
|
||||
- type: KnockDownOnHit
|
||||
knockDownBehavior: NoDrop
|
||||
knockdownTime: 0.4
|
||||
# WD Engi Exclusive end
|
||||
|
||||
# Имеет все инструменты в себе, но работает медленно и почти не наносит урона
|
||||
- type: entity
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# WD Engi Exclusive
|
||||
- type: entity
|
||||
parent: ClothingHeadBase
|
||||
id: ClothingHeadBucketHelmet
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# WD Engi Exclusive
|
||||
- type: entity
|
||||
parent: ClothingOuterArmorBasic
|
||||
id: ClothingOuterArmorReflectiveGhetto
|
||||
|
||||
@@ -1,78 +0,0 @@
|
||||
# WD Engi Exclusive
|
||||
- type: entity
|
||||
parent: BaseItem
|
||||
id: FoodSnackSuhariki
|
||||
name: suhariki
|
||||
description: Old relic of the past, you can barely read the label "Kirieshki".
|
||||
components:
|
||||
- type: Food
|
||||
trash: FoodPacketSuharikiTrash
|
||||
- type: FlavorProfile
|
||||
flavors:
|
||||
- cheap
|
||||
- bread
|
||||
- type: Sprite
|
||||
sprite: White/_Engi/Objects/Consumable/Food/Suhariki/suhariki.rsi
|
||||
state: suhariki
|
||||
- type: Tag
|
||||
tags:
|
||||
- FoodSnack
|
||||
- type: BadFood
|
||||
- type: Suhariki
|
||||
chance: 0.25
|
||||
damage:
|
||||
types:
|
||||
Blunt: 10
|
||||
- type: Item
|
||||
size: Tiny
|
||||
sprite: White/_Engi/Objects/Consumable/Food/Suhariki/suhariki.rsi
|
||||
heldPrefix: suhariki
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
food:
|
||||
maxVol: 5 # No extra room for condiments
|
||||
reagents:
|
||||
- ReagentId: Nutriment
|
||||
Quantity: 1
|
||||
- ReagentId: Omnizine
|
||||
Quantity: 4
|
||||
- type: SpaceGarbage
|
||||
- type: StaticPrice
|
||||
price: 500
|
||||
|
||||
- type: entity
|
||||
noSpawn: true
|
||||
parent: FoodPacketTrash
|
||||
id: FoodPacketSuharikiTrash
|
||||
name: suhariki bag
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/_Engi/Objects/Consumable/Food/Suhariki/suhariki.rsi
|
||||
state: suhariki-trash
|
||||
- type: Item
|
||||
size: Tiny
|
||||
sprite: White/_Engi/Objects/Consumable/Food/Suhariki/suhariki.rsi
|
||||
heldPrefix: suhariki
|
||||
|
||||
- type: entity
|
||||
noSpawn: true
|
||||
name: Зуб
|
||||
parent: BaseItem
|
||||
id: SuharikiTooth
|
||||
description: Может быть он твой, а может и не твой.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/_Engi/Objects/Consumable/Food/Suhariki/tooth.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Tiny
|
||||
- type: EmitSoundOnLand
|
||||
sound:
|
||||
path: /Audio/White/_Engi/Object/Misc/Suhariki/tooth_drop_1.ogg
|
||||
- type: EmitSoundOnCollide
|
||||
sound:
|
||||
path: /Audio/White/_Engi/Object/Misc/Suhariki/tooth_drop_2.ogg
|
||||
- type: SpaceGarbage
|
||||
- type: StaticPrice
|
||||
price: 100
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# WD Engi Exclusive
|
||||
- type: entity
|
||||
name: makeshift mirror shield
|
||||
parent: BaseItem
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
# WD Engi Exclusive
|
||||
|
||||
#BIG_Zi_348
|
||||
- type: customGhost
|
||||
id: big_zi_348-ghost
|
||||
ckey: BIG_Zi_348
|
||||
sprite: White/_Engi/Fluff/BIG_Zi_348/big_zi_348-ghost.rsi
|
||||
alpha: 0.9
|
||||
ghostName: BIG_Zi_348
|
||||
ghostDescription: Как хорошо быть кем-то в этой жизни.
|
||||
|
||||
#Rikka
|
||||
- type: entity
|
||||
parent: BasePlushie
|
||||
id: PlushieRikkaFluff
|
||||
name: плюшевая Аврора
|
||||
description: Теперь бесит компактнее.
|
||||
suffix: fluff
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/_Engi/Fluff/Rikka/rikka-plushie.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
@@ -1,5 +1,4 @@
|
||||
# WD Engi Exclusive
|
||||
- type: constructionGraph
|
||||
- type: constructionGraph
|
||||
id: ClothingHeadBucketHelmet
|
||||
start: start
|
||||
graph:
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# WD Engi Exclusive
|
||||
- type: constructionGraph
|
||||
- type: constructionGraph
|
||||
id: MirrorShieldGhetto
|
||||
start: start
|
||||
graph:
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# WD Engi Exclusive
|
||||
- type: construction
|
||||
- type: construction
|
||||
name: самодельный зеркальный щит
|
||||
id: MirrorShieldGhetto
|
||||
graph: MirrorShieldGhetto
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# WD ENGI EXCLUSIVE
|
||||
- type: stationGoal
|
||||
id: Singularity
|
||||
text: engi-station-goal-singularity
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
# WD Engi Exclusive
|
||||
- type: Tag
|
||||
id: MirrorShieldGhetto
|
||||
@@ -121,6 +121,5 @@
|
||||
- type: Tag
|
||||
id: VoiceActivatedBombImplant
|
||||
|
||||
# WD Engi Exclusive
|
||||
- type: Tag
|
||||
id: MirrorShieldGhetto
|
||||
|
||||
|
Before Width: | Height: | Size: 43 KiB |
@@ -1,141 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Modified by BIG_Zi_348 from - https://github.com/tgstation/tgstation/blob/f80e7ba62d27c77cfeac709dd71033744d0015c4/icons/mob/mob.dmi",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "animated",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05
|
||||
],
|
||||
[
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05
|
||||
],
|
||||
[
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05
|
||||
],
|
||||
[
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05,
|
||||
0.05
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Before Width: | Height: | Size: 772 B |
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "rikka",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "deadisko and BIG_Zi_348",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "suhariki"
|
||||
},
|
||||
{
|
||||
"name": "suhariki-trash"
|
||||
},
|
||||
{
|
||||
"name": "suhariki-inhand-right",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "suhariki-inhand-left",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "xd",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
}
|
||||
]
|
||||
}
|
||||