mirror of
https://github.com/WWhiteDreamProject/wwdpublic.git
synced 2026-04-17 05:27:38 +03:00
* this is definitely one of the commits * 1 * new facehuggers * suffix * Burst egg * some fix * Update Content.Server/_White/Xenomorphs/Queen/XenomorphQueenSystem.cs Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update Content.Server/_White/Xenomorphs/Queen/XenomorphQueenSystem.cs Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update Resources/Locale/en-US/_white/objectives/conditions/steal-target-groups.ftl Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update Content.Server/_White/Xenomorphs/FaceHugger/FaceHuggerSystem.cs * Update Content.Server/_White/Xenomorphs/FaceHugger/FaceHuggerSystem.cs * Update Resources/Locale/ru-RU/_white/prototypes/entities/mobs/player/pets.ftl * Update Resources/Locale/ru-RU/WWDP_TRANSLATION/_white/prototypes/entities/structures/storage/glass_box.ftl * Update Resources/Locale/ru-RU/_white/objectives/conditions/steal-target-groups.ftl * Update Content.Server/_White/Xenomorphs/FaceHugger/FaceHuggerSystem.cs * some fix * SelfUnBuckleDelay * Neurotoxin now stun * PlasmaAmmoProvider * some fix * fix * some number --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
77 lines
2.7 KiB
C#
77 lines
2.7 KiB
C#
using Content.Shared._White.Inventory.Components;
|
|
using Content.Shared._White.Jump;
|
|
using Content.Shared.Hands;
|
|
using Content.Shared.Inventory;
|
|
using Content.Shared.Mobs.Systems;
|
|
using Content.Shared.Nutrition.Components;
|
|
using Content.Shared.Throwing;
|
|
using Content.Shared.Weapons.Melee.Events;
|
|
using Content.Shared.Whitelist;
|
|
using Robust.Shared.Physics.Events;
|
|
using Robust.Shared.Random;
|
|
using Robust.Shared.Utility;
|
|
|
|
namespace Content.Shared._White.Inventory;
|
|
|
|
public sealed partial class WhiteInventorySystem
|
|
{
|
|
[Dependency] private readonly IRobustRandom _random = default!;
|
|
|
|
[Dependency] private readonly EntityWhitelistSystem _entityWhitelist = default!;
|
|
[Dependency] private readonly MobStateSystem _mobState = default!;
|
|
[Dependency] private readonly InventorySystem _inventory = default!;
|
|
|
|
|
|
private void InitializeEquip()
|
|
{
|
|
SubscribeLocalEvent<EquipOnCollideComponent, StartCollideEvent>(OnCollideEvent);
|
|
SubscribeLocalEvent<EquipOnMeleeHitComponent, MeleeHitEvent>(OnMeleeHit);
|
|
SubscribeLocalEvent<EquipOnPickUpComponent, GotEquippedHandEvent>(OnPickedUp);
|
|
SubscribeLocalEvent<EquipOnThrownHitComponent, ThrowDoHitEvent>(OnThrowDoHit, before: new[] {typeof(JumpSystem)});
|
|
}
|
|
|
|
private void OnCollideEvent(EntityUid uid, EquipOnCollideComponent component, StartCollideEvent args)
|
|
{
|
|
TryEquip(uid, args.OtherEntity, component);
|
|
}
|
|
|
|
private void OnMeleeHit(EntityUid uid, EquipOnMeleeHitComponent component, MeleeHitEvent args)
|
|
{
|
|
if (args.HitEntities.FirstOrNull() is not {} target)
|
|
return;
|
|
|
|
TryEquip(uid, target, component);
|
|
}
|
|
|
|
private void OnPickedUp(EntityUid uid, EquipOnPickUpComponent component, GotEquippedHandEvent args)
|
|
{
|
|
TryEquip(uid, args.User, component);
|
|
}
|
|
|
|
private void OnThrowDoHit(EntityUid uid, EquipOnThrownHitComponent component, ThrowDoHitEvent args)
|
|
{
|
|
if (args.Handled)
|
|
return;
|
|
|
|
TryEquip(uid, args.Target, component);
|
|
args.Handled = true;
|
|
}
|
|
|
|
public bool TryEquip(EntityUid uid, EntityUid target, BaseEquipOnComponent component)
|
|
{
|
|
if (_mobState.IsDead(uid)
|
|
|| !_random.Prob(component.EquipProb)
|
|
|| _entityWhitelist.IsBlacklistPass(component.Blacklist, target)
|
|
|| _inventory.TryGetSlotEntity(target, component.BlockingSlot, out var headItem)
|
|
&& TryComp<IngestionBlockerComponent>(headItem, out var ingestionBlocker)
|
|
&& ingestionBlocker.Enabled)
|
|
return false;
|
|
|
|
if (component.Force)
|
|
_inventory.TryUnequip(target, component.Slot, true);
|
|
_inventory.TryEquip(target, uid, component.Slot, true, true);
|
|
|
|
return true;
|
|
}
|
|
}
|