Skip to content

Commit

Permalink
[FIX] Маленькие изменения системы подарков (#830)
Browse files Browse the repository at this point in the history
## Описание PR
Изменения системы подарков для баланса вселенной.

## Почему / Баланс

-- Почему? 
-- Потому что не хочется, чтобы человек бегал с газодобытчиком плазмы!

## Техническая информация
Изменён компонент "InsaneMode" с типа bool на string.
Теперь при использование этого компонента в подарках надо вписывать
Safe/Unsafe/ADTUnsafe.
Safe - безопасные подарки. По больше степени игрушки
Unsafe - абсолютно любые подарки, которые можно брать в руки. (Да, тот
самый газодобытчик плазмы из подарка на новый год)
ADTUnsafe - Опасные предметы. От карты кэпа до скафандра киберсана. (Без
газодобытчиков одним словом)

Добавил карту "New Year Frontier", чтобы не забыть. (НЕ В ПУЛЛ)

## Требования

- [X] Я прочитал(а) и следую [Руководство по созданию пулл
реквестов](https://docs.spacestation14.com/en/general-development/codebase-info/pull-request-guidelines.html).
Я понимаю, что в противном случае мой ПР может быть закрыт по усмотрению
мейнтейнера.
- [X] Я добавил скриншоты/видео к этому пулл реквесту, демонстрирующие
его изменения в игре, **или** этот пулл реквест не требует демонстрации
в игре

## Критические изменения
Изменён компонент "InsaneMode" с типа bool на string для системы выдачи
предметов в новогодних подарках.

**Чейнджлог**

Например: 🆑 NameLunar
- fix: Теперь из новогодних ADT подарков нельзя выбить
Шлюзы/Стены/Газодобытчики.
- fix: Были переименованы факсы на карте Frontier.
  • Loading branch information
PyotrIgn authored Dec 2, 2024
2 parents c2aca21 + 17c5971 commit 228724d
Show file tree
Hide file tree
Showing 10 changed files with 169,755 additions and 131 deletions.
1 change: 1 addition & 0 deletions Content.IntegrationTests/Tests/PostMapInitTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ public sealed class PostMapInitTest
"Cog",
// ADT-Start
"ADT_FrontierHalloween",
"ADT_FrontierNewYear",
"ADT_Frontier",
"ADT_TrainHalloween",
"ADT_SalternHalloween",
Expand Down
4 changes: 2 additions & 2 deletions Content.Server/Holiday/Christmas/RandomGiftComponent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ public sealed partial class RandomGiftComponent : Component
/// <summary>
/// Whether or not the gift should be limited only to actual items.
/// </summary>
[DataField("insaneMode", required: true), ViewVariables(VVAccess.ReadWrite)]
public bool InsaneMode;
[DataField("insaneMode"), ViewVariables(VVAccess.ReadWrite)] // По умолчанию тип bool с required: true
public string? InsaneMode;

/// <summary>
/// What entities are allowed to examine this gift to see its contents.
Expand Down
26 changes: 23 additions & 3 deletions Content.Server/Holiday/Christmas/RandomGiftSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ public sealed class RandomGiftSystem : EntitySystem

private readonly List<string> _possibleGiftsSafe = new();
private readonly List<string> _possibleGiftsUnsafe = new();
// ADT
private readonly List<string> _possibleGiftsUnsafeADT = new();
// END

/// <inheritdoc/>
public override void Initialize()
Expand Down Expand Up @@ -73,8 +76,14 @@ private void OnUseInHand(EntityUid uid, RandomGiftComponent component, UseInHand

private void OnGiftMapInit(EntityUid uid, RandomGiftComponent component, MapInitEvent args)
{
if (component.InsaneMode)
if (component.InsaneMode == "Unsafe")
component.SelectedEntity = _random.Pick(_possibleGiftsUnsafe);
else if (component.InsaneMode == "Safe")
component.SelectedEntity = _random.Pick(_possibleGiftsSafe);
// ADT
else if (component.InsaneMode == "ADTUnsafe")
component.SelectedEntity = _random.Pick(_possibleGiftsUnsafeADT);
// END
else
component.SelectedEntity = _random.Pick(_possibleGiftsSafe);
}
Expand All @@ -89,6 +98,9 @@ private void BuildIndex()
{
_possibleGiftsSafe.Clear();
_possibleGiftsUnsafe.Clear();
// ADT
_possibleGiftsUnsafeADT.Clear();
// END
var itemCompName = _componentFactory.GetComponentName(typeof(ItemComponent));
var mapGridCompName = _componentFactory.GetComponentName(typeof(MapGridComponent));
var physicsCompName = _componentFactory.GetComponentName(typeof(PhysicsComponent));
Expand All @@ -97,12 +109,20 @@ private void BuildIndex()
{
if (proto.Abstract || proto.HideSpawnMenu || proto.Components.ContainsKey(mapGridCompName) || !proto.Components.ContainsKey(physicsCompName))
continue;

_possibleGiftsUnsafe.Add(proto.ID);

// ADT
if (proto.Components.TryGetValue("Physics", out var value))
{
if (value.Mapping.Count > 0)
if (object.Equals(value.Mapping[0].Value?.ToString(), "Dynamic"))
_possibleGiftsUnsafeADT.Add(proto.ID);
else
continue;
}
// END
if (!proto.Components.ContainsKey(itemCompName))
continue;

_possibleGiftsSafe.Add(proto.ID);
}
}
Expand Down
Loading

0 comments on commit 228724d

Please sign in to comment.