Санитизация

This commit is contained in:
BIGZi0348
2024-11-24 21:44:35 +03:00
parent ce7cadf4df
commit 85a42c3638
50 changed files with 31 additions and 561 deletions

View File

@@ -135,7 +135,7 @@ namespace Content.Client.Entry
_prototypeManager.RegisterIgnore("wireLayout"); _prototypeManager.RegisterIgnore("wireLayout");
_prototypeManager.RegisterIgnore("alertLevels"); _prototypeManager.RegisterIgnore("alertLevels");
_prototypeManager.RegisterIgnore("nukeopsRole"); _prototypeManager.RegisterIgnore("nukeopsRole");
_prototypeManager.RegisterIgnore("stationGoal"); // WD ENGI EXCLUSIVE _prototypeManager.RegisterIgnore("stationGoal"); // WD
_prototypeManager.RegisterIgnore("ghostRoleRaffleDecider"); _prototypeManager.RegisterIgnore("ghostRoleRaffleDecider");
//WD-EDIT //WD-EDIT

View File

@@ -136,14 +136,14 @@ namespace Content.Server.Strip
} }
// WD EDIT END // WD EDIT END
// WD ENGI EXCLUSIVE EDIT START // WD EDIT START
if (args.Slot == "ears" && TryComp(strippable, out PreventStrippingFromEarsComponent? _)) if (args.Slot == "ears" && TryComp(strippable, out PreventStrippingFromEarsComponent? _))
{ {
var message = Loc.GetString("buckethelmet-cant-strip"); var message = Loc.GetString("buckethelmet-cant-strip");
_popupSystem.PopupEntity(message, user, user); _popupSystem.PopupEntity(message, user, user);
return; return;
} }
// WD ENGI EXCLUSIVE EDIT END // WD EDIT END
if (args.IsHand) if (args.IsHand)
@@ -616,7 +616,7 @@ namespace Content.Server.Strip
if (ev.Event.InventoryOrHand) 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.Event.InsertOrRemove && !CanStripRemoveInventory(entity.Owner, args.Target.Value, args.Used.Value, ev.Event.SlotOrHandName))
{ {
ev.Cancel(); ev.Cancel();
@@ -624,7 +624,7 @@ namespace Content.Server.Strip
} }
else 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.Event.InsertOrRemove && !CanStripRemoveHand(entity.Owner, args.Target.Value, args.Used.Value, ev.Event.SlotOrHandName))
{ {
ev.Cancel(); ev.Cancel();
@@ -645,14 +645,14 @@ namespace Content.Server.Strip
if (ev.InventoryOrHand) if (ev.InventoryOrHand)
{ {
if (ev.InsertOrRemove) if (ev.InsertOrRemove)
StripInsertInventory((entity.Owner, entity.Comp), ev.Target.Value, ev.Used.Value, ev.SlotOrHandName); 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 StripRemoveInventory(entity.Owner, ev.Target.Value, ev.Used.Value, ev.SlotOrHandName, ev.Args.Hidden);
} }
else else
{ {
if (ev.InsertOrRemove) if (ev.InsertOrRemove)
StripInsertHand((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); else StripRemoveHand((entity.Owner, entity.Comp), ev.Target.Value, ev.Used.Value, ev.SlotOrHandName, ev.Args.Hidden);
} }
} }
} }

View File

@@ -4,8 +4,8 @@ using Content.Shared._White._Engi.BucketHelmet;
namespace Content.Server._White._Engi.BucketHelmet; namespace Content.Server._White._Engi.BucketHelmet;
/// <summary> /// <summary>
/// WD.
/// This handles placemet of PreventStrippingFromEarsComponent when bucket helmet is in use. /// This handles placemet of PreventStrippingFromEarsComponent when bucket helmet is in use.
/// WD Engi Exclusive.
/// </summary> /// </summary>
public sealed class BucketHelmetSystem : EntitySystem public sealed class BucketHelmetSystem : EntitySystem
{ {

View File

@@ -3,8 +3,8 @@ using Robust.Shared.Audio;
namespace Content.Server._White._Engi.PacifiedOnChaplainAction namespace Content.Server._White._Engi.PacifiedOnChaplainAction
{ {
/// <summary> /// <summary>
/// WD.
/// Adds verb for chaplain to pacify entity. /// Adds verb for chaplain to pacify entity.
/// WD Engi Exclusive.
/// </summary> /// </summary>
[RegisterComponent] [RegisterComponent]
public sealed partial class PacifiedOnChaplainActionComponent : Component public sealed partial class PacifiedOnChaplainActionComponent : Component

View File

@@ -12,7 +12,7 @@ using Content.Shared.Database;
namespace Content.Server._White._Engi.PacifiedOnChaplainAction namespace Content.Server._White._Engi.PacifiedOnChaplainAction
{ {
/// <summary> /// <summary>
/// WD Engi Exclusive. /// WD
/// </summary> /// </summary>
public sealed class PacifiedOnChaplainAction : EntitySystem public sealed class PacifiedOnChaplainAction : EntitySystem
{ {

View File

@@ -3,7 +3,7 @@ using Robust.Shared.Prototypes;
namespace Content.Server._White._Engi.StationGoal namespace Content.Server._White._Engi.StationGoal
{ {
/// <summary> /// <summary>
/// WD ENGI EXCLUSIVE. /// WD.
/// If attached to a station prototype, will send the station a random goal from the list. /// If attached to a station prototype, will send the station a random goal from the list.
/// </summary> /// </summary>
[RegisterComponent] [RegisterComponent]

View File

@@ -1,7 +1,7 @@
namespace Content.Server._White._Engi.StationGoal namespace Content.Server._White._Engi.StationGoal
{ {
/// <summary> /// <summary>
/// WD ENGI EXCLUSIVE. /// WD.
/// Paper with a written station goal in it. /// Paper with a written station goal in it.
/// </summary> /// </summary>
[RegisterComponent] [RegisterComponent]

View File

@@ -12,7 +12,7 @@ using Content.Server.RandomMetadata;
namespace Content.Server._White._Engi.StationGoal namespace Content.Server._White._Engi.StationGoal
{ {
/// <summary> /// <summary>
/// WD ENGI EXCLUSIVE. /// WD.
/// System to spawn paper with station goal. /// System to spawn paper with station goal.
/// </summary> /// </summary>
public sealed class StationGoalPaperSystem : EntitySystem public sealed class StationGoalPaperSystem : EntitySystem
@@ -71,7 +71,6 @@ namespace Content.Server._White._Engi.StationGoal
} }
/// <summary> /// <summary>
/// WD ENGI EXCLUSIVE.
/// Send a station goal on selected station to all faxes which are authorized to receive it. /// Send a station goal on selected station to all faxes which are authorized to receive it.
/// </summary> /// </summary>
/// <returns>True if at least one fax received paper</returns> /// <returns>True if at least one fax received paper</returns>

View File

@@ -3,7 +3,7 @@ using Robust.Shared.Prototypes;
namespace Content.Server._White._Engi.StationGoal namespace Content.Server._White._Engi.StationGoal
{ {
/// <summary> /// <summary>
/// WD ENGI EXCLUSIVE. /// WD
/// </summary> /// </summary>
[Serializable, Prototype("stationGoal")] [Serializable, Prototype("stationGoal")]
public sealed class StationGoalPrototype : IPrototype public sealed class StationGoalPrototype : IPrototype

View File

@@ -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");
}

View File

@@ -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);
}
}

View File

@@ -60,7 +60,7 @@ public sealed partial class FaxMachineComponent : Component
public bool ReceiveNukeCodes { get; set; } = false; public bool ReceiveNukeCodes { get; set; } = false;
/// <summary> /// <summary>
/// WD ENGI EXCLUSIVE. /// WD.
/// Should that fax receive station goal info /// Should that fax receive station goal info
/// </summary> /// </summary>
[ViewVariables(VVAccess.ReadWrite)] [ViewVariables(VVAccess.ReadWrite)]

View File

@@ -1,8 +1,8 @@
namespace Content.Shared._White._Engi.BucketHelmet; namespace Content.Shared._White._Engi.BucketHelmet;
/// <summary> /// <summary>
/// WD.
/// This is used for bucket helmet. /// This is used for bucket helmet.
/// WD Engi Exclusive.
/// </summary> /// </summary>
[RegisterComponent] [RegisterComponent]
public sealed partial class BucketHelmetComponent : Component public sealed partial class BucketHelmetComponent : Component

View File

@@ -1,8 +1,8 @@
namespace Content.Shared._White._Engi.BucketHelmet; namespace Content.Shared._White._Engi.BucketHelmet;
/// <summary> /// <summary>
/// WD.
/// This is used to block stripping headsets when bucket helmet is on. /// This is used to block stripping headsets when bucket helmet is on.
/// WD Engi Exclusive.
/// </summary> /// </summary>
[RegisterComponent] [RegisterComponent]
public sealed partial class PreventStrippingFromEarsComponent : Component public sealed partial class PreventStrippingFromEarsComponent : Component

View File

@@ -4,8 +4,8 @@ using Robust.Shared.GameStates;
namespace Content.Shared._White._Engi.DamageableClothing; namespace Content.Shared._White._Engi.DamageableClothing;
/// <summary> /// <summary>
/// WD.
/// This component goes on an equippable item that should take damage while in use. /// This component goes on an equippable item that should take damage while in use.
/// WD Engi Exclusive.
/// </summary> /// </summary>
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] [RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class DamageableClothingComponent : Component public sealed partial class DamageableClothingComponent : Component

View File

@@ -1,8 +1,8 @@
namespace Content.Shared._White._Engi.DamageableClothing; namespace Content.Shared._White._Engi.DamageableClothing;
/// <summary> /// <summary>
/// WD.
/// This component gets dynamically added to an Entity via the <see cref="DamageableClothing"/>. /// This component gets dynamically added to an Entity via the <see cref="DamageableClothing"/>.
/// WD Engi Exclusive.
/// </summary> /// </summary>
[RegisterComponent] [RegisterComponent]
public sealed partial class DamageableClothingUserComponent : Component public sealed partial class DamageableClothingUserComponent : Component

View File

@@ -4,7 +4,7 @@ using Content.Shared.Inventory.Events;
namespace Content.Shared._White._Engi.DamageableClothing; namespace Content.Shared._White._Engi.DamageableClothing;
/// <summary> /// <summary>
/// WD Engi Exclusive. /// WD
/// </summary> /// </summary>
public sealed partial class DamageableClothingSystem : EntitySystem public sealed partial class DamageableClothingSystem : EntitySystem
{ {

View File

@@ -3,7 +3,7 @@ using Content.Shared.Damage;
namespace Content.Shared._White._Engi.DamageableClothing; namespace Content.Shared._White._Engi.DamageableClothing;
/// <summary> /// <summary>
/// WD Engi Exclusive. /// WD
/// </summary> /// </summary>
public sealed partial class DamageableClothingSystem public sealed partial class DamageableClothingSystem
{ {

View File

@@ -1,7 +0,0 @@
ent-FoodSnackSuhariki = сухарики
.desc = Старая реликвия из прошлого, на этикетке едва можно прочитать слово «Кириешки».
ent-FoodPacketSuharikiTrash = упаковка от сухариков
ent-SuharikiTooth = зуб
.desc = Может быть он твой, а может и не твой.
suhariki-lost = сломал свой зуб!

View File

@@ -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-help-text = Использование: { $command } <id-цели>
send-station-goal-command-arg-id = <ID цели> send-station-goal-command-arg-id = <ID цели>

View File

@@ -594,8 +594,6 @@
prob: 0.10 prob: 0.10
- id: BarberScissors - id: BarberScissors
prob: 0.05 prob: 0.05
- id: FoodSnackSuhariki # WD Engi Exclusive
prob: 0.10
# Syndicate loot # Syndicate loot
- id: null - id: null
prob: 0.95 prob: 0.95

View File

@@ -45,6 +45,5 @@
- FoodFrozenSnowconeRainbow - FoodFrozenSnowconeRainbow
- FoodSnackPistachios - FoodSnackPistachios
- FoodSnackSemki - FoodSnackSemki
- FoodSnackSuhariki # WD
chance: 0.8 chance: 0.8
offset: 0.0 offset: 0.0

View File

@@ -66,7 +66,7 @@
- type: PhysicalComposition - type: PhysicalComposition
materialComposition: materialComposition:
Plastic: 50 Plastic: 50
- type: Construction # WD Engi Exclusive - type: Construction # WD
deconstructionTarget: null deconstructionTarget: null
graph: ClothingHeadBucketHelmet graph: ClothingHeadBucketHelmet
node: start node: start

View File

@@ -82,7 +82,7 @@
- type: FaxMachine - type: FaxMachine
name: "Central Command" name: "Central Command"
notifyAdmins: true notifyAdmins: true
receiveStationGoal: true # WD ENGI EXCLUSIVE receiveStationGoal: true # WD
- type: entity - type: entity
parent: FaxMachineBase parent: FaxMachineBase
@@ -110,6 +110,6 @@
- type: FaxMachine - type: FaxMachine
name: "Captain's Office" name: "Captain's Office"
receiveNukeCodes: true receiveNukeCodes: true
receiveStationGoal: true # WD ENGI EXCLUSIVE receiveStationGoal: true # WD
- type: StealTarget - type: StealTarget
stealGroup: FaxMachineCaptain stealGroup: FaxMachineCaptain

View File

@@ -263,8 +263,7 @@
sprite: White/Objects/Weapons/Chaplain/scythe-inhands.rsi sprite: White/Objects/Weapons/Chaplain/scythe-inhands.rsi
- type: Sharp - type: Sharp
# Может пиздеть # Может пиздеть и может давать пизды
# WD Engi Exclusive - и может давать пизды
- type: entity - type: entity
parent: HolyKatana parent: HolyKatana
id: PossessedBlade id: PossessedBlade
@@ -282,11 +281,9 @@
- suitStorage - suitStorage
- type: GhostRole - type: GhostRole
allowSpeech: true allowSpeech: true
# WD Engi Exclusive edit start
name: ghost-role-information-possessed-blade-name name: ghost-role-information-possessed-blade-name
description: ghost-role-information-possessed-blade-description description: ghost-role-information-possessed-blade-description
rules: ghost-role-information-possessed-blade-rules rules: ghost-role-information-possessed-blade-rules
# WD Engi Exclusive edit end
- type: GhostTakeoverAvailable - type: GhostTakeoverAvailable
- type: Examiner - type: Examiner
- type: Item - type: Item
@@ -295,7 +292,6 @@
shape: shape:
- 0, 0, 1, 3 - 0, 0, 1, 3
sprite: White/Objects/Weapons/Chaplain/possessed.rsi sprite: White/Objects/Weapons/Chaplain/possessed.rsi
# WD Engi Exclusive start
- type: DamageOtherOnHit - type: DamageOtherOnHit
damage: damage:
types: types:
@@ -304,7 +300,6 @@
- type: UseDelay - type: UseDelay
delay: 2.0 delay: 2.0
- type: PacifiedOnChaplainAction - type: PacifiedOnChaplainAction
# WD Engi Exclusive end
# Приклеен к руке, быстро и громко бьет # Приклеен к руке, быстро и громко бьет
- type: entity - type: entity
@@ -507,11 +502,9 @@
soundSwing: soundSwing:
collection: HammerMiss collection: HammerMiss
- type: DisarmMalus - type: DisarmMalus
# WD Engi Exclusive start
- type: KnockDownOnHit - type: KnockDownOnHit
knockDownBehavior: NoDrop knockDownBehavior: NoDrop
knockdownTime: 0.4 knockdownTime: 0.4
# WD Engi Exclusive end
# Имеет все инструменты в себе, но работает медленно и почти не наносит урона # Имеет все инструменты в себе, но работает медленно и почти не наносит урона
- type: entity - type: entity

View File

@@ -1,4 +1,3 @@
# WD Engi Exclusive
- type: entity - type: entity
parent: ClothingHeadBase parent: ClothingHeadBase
id: ClothingHeadBucketHelmet id: ClothingHeadBucketHelmet

View File

@@ -1,4 +1,3 @@
# WD Engi Exclusive
- type: entity - type: entity
parent: ClothingOuterArmorBasic parent: ClothingOuterArmorBasic
id: ClothingOuterArmorReflectiveGhetto id: ClothingOuterArmorReflectiveGhetto

View File

@@ -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

View File

@@ -1,4 +1,3 @@
# WD Engi Exclusive
- type: entity - type: entity
name: makeshift mirror shield name: makeshift mirror shield
parent: BaseItem parent: BaseItem

View File

@@ -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

View File

@@ -1,5 +1,4 @@
# WD Engi Exclusive - type: constructionGraph
- type: constructionGraph
id: ClothingHeadBucketHelmet id: ClothingHeadBucketHelmet
start: start start: start
graph: graph:

View File

@@ -1,5 +1,4 @@
# WD Engi Exclusive - type: constructionGraph
- type: constructionGraph
id: MirrorShieldGhetto id: MirrorShieldGhetto
start: start start: start
graph: graph:

View File

@@ -1,5 +1,4 @@
# WD Engi Exclusive - type: construction
- type: construction
name: самодельный зеркальный щит name: самодельный зеркальный щит
id: MirrorShieldGhetto id: MirrorShieldGhetto
graph: MirrorShieldGhetto graph: MirrorShieldGhetto

View File

@@ -1,4 +1,3 @@
# WD ENGI EXCLUSIVE
- type: stationGoal - type: stationGoal
id: Singularity id: Singularity
text: engi-station-goal-singularity text: engi-station-goal-singularity

View File

@@ -1,3 +0,0 @@
# WD Engi Exclusive
- type: Tag
id: MirrorShieldGhetto

View File

@@ -121,6 +121,5 @@
- type: Tag - type: Tag
id: VoiceActivatedBombImplant id: VoiceActivatedBombImplant
# WD Engi Exclusive
- type: Tag - type: Tag
id: MirrorShieldGhetto id: MirrorShieldGhetto

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

View File

@@ -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
]
]
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 772 B

View File

@@ -1,14 +0,0 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "rikka",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "icon"
}
]
}

View File

@@ -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
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -1,14 +0,0 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "xd",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "icon"
}
]
}