clipping and extracting put seeds in the users hands (#14343)
This commit is contained in:
@@ -6,6 +6,7 @@ using Content.Server.Kitchen.Components;
|
|||||||
using Content.Server.Popups;
|
using Content.Server.Popups;
|
||||||
using Content.Shared.Botany;
|
using Content.Shared.Botany;
|
||||||
using Content.Shared.Examine;
|
using Content.Shared.Examine;
|
||||||
|
using Content.Shared.Hands.EntitySystems;
|
||||||
using Content.Shared.Popups;
|
using Content.Shared.Popups;
|
||||||
using Content.Shared.Random.Helpers;
|
using Content.Shared.Random.Helpers;
|
||||||
using Content.Shared.Slippery;
|
using Content.Shared.Slippery;
|
||||||
@@ -22,6 +23,7 @@ namespace Content.Server.Botany.Systems;
|
|||||||
public sealed partial class BotanySystem : EntitySystem
|
public sealed partial class BotanySystem : EntitySystem
|
||||||
{
|
{
|
||||||
[Dependency] private readonly AppearanceSystem _appearance = default!;
|
[Dependency] private readonly AppearanceSystem _appearance = default!;
|
||||||
|
[Dependency] private readonly SharedHandsSystem _hands = default!;
|
||||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||||
[Dependency] private readonly PopupSystem _popupSystem = default!;
|
[Dependency] private readonly PopupSystem _popupSystem = default!;
|
||||||
[Dependency] private readonly IRobustRandom _robustRandom = default!;
|
[Dependency] private readonly IRobustRandom _robustRandom = default!;
|
||||||
@@ -88,9 +90,12 @@ public sealed partial class BotanySystem : EntitySystem
|
|||||||
|
|
||||||
#region SeedPrototype prototype stuff
|
#region SeedPrototype prototype stuff
|
||||||
|
|
||||||
public EntityUid SpawnSeedPacket(SeedData proto, EntityCoordinates transformCoordinates)
|
/// <summary>
|
||||||
|
/// Spawns a new seed packet on the floor at a position, then tries to put it in the user's hands if possible.
|
||||||
|
/// </summary>
|
||||||
|
public EntityUid SpawnSeedPacket(SeedData proto, EntityCoordinates coords, EntityUid user)
|
||||||
{
|
{
|
||||||
var seed = Spawn(proto.PacketPrototype, transformCoordinates);
|
var seed = Spawn(proto.PacketPrototype, coords);
|
||||||
var seedComp = EnsureComp<SeedComponent>(seed);
|
var seedComp = EnsureComp<SeedComponent>(seed);
|
||||||
seedComp.Seed = proto;
|
seedComp.Seed = proto;
|
||||||
|
|
||||||
@@ -106,6 +111,8 @@ public sealed partial class BotanySystem : EntitySystem
|
|||||||
var val = Loc.GetString("botany-seed-packet-name", ("seedName", name), ("seedNoun", noun));
|
var val = Loc.GetString("botany-seed-packet-name", ("seedName", name), ("seedNoun", noun));
|
||||||
MetaData(seed).EntityName = val;
|
MetaData(seed).EntityName = val;
|
||||||
|
|
||||||
|
// try to automatically place in user's other hand
|
||||||
|
_hands.TryPickupAnyHand(user, seed);
|
||||||
return seed;
|
return seed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -251,7 +251,7 @@ namespace Content.Server.Botany.Systems
|
|||||||
}
|
}
|
||||||
|
|
||||||
component.Seed.Unique = false;
|
component.Seed.Unique = false;
|
||||||
var seed = _botanySystem.SpawnSeedPacket(component.Seed, Transform(args.User).Coordinates);
|
var seed = _botanySystem.SpawnSeedPacket(component.Seed, Transform(args.User).Coordinates, args.User);
|
||||||
seed.RandomOffset(0.25f);
|
seed.RandomOffset(0.25f);
|
||||||
var displayName = Loc.GetString(component.Seed.DisplayName);
|
var displayName = Loc.GetString(component.Seed.DisplayName);
|
||||||
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-take-sample-message",
|
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-take-sample-message",
|
||||||
@@ -572,7 +572,8 @@ namespace Content.Server.Botany.Systems
|
|||||||
}
|
}
|
||||||
else if (component.Age < 0) // Revert back to seed packet!
|
else if (component.Age < 0) // Revert back to seed packet!
|
||||||
{
|
{
|
||||||
_botanySystem.SpawnSeedPacket(component.Seed, Transform(uid).Coordinates);
|
// will put it in the trays hands if it has any, please do not try doing this
|
||||||
|
_botanySystem.SpawnSeedPacket(component.Seed, Transform(uid).Coordinates, uid);
|
||||||
RemovePlant(uid, component);
|
RemovePlant(uid, component);
|
||||||
component.ForceUpdate = true;
|
component.ForceUpdate = true;
|
||||||
Update(uid, component);
|
Update(uid, component);
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ public sealed class SeedExtractorSystem : EntitySystem
|
|||||||
|
|
||||||
for (var i = 0; i < amount; i++)
|
for (var i = 0; i < amount; i++)
|
||||||
{
|
{
|
||||||
_botanySystem.SpawnSeedPacket(seed, coords);
|
_botanySystem.SpawnSeedPacket(seed, coords, args.User);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user