Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ToolsForGateDungeon #2494

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

21Melkuu
Copy link

@21Melkuu 21Melkuu commented Jan 17, 2025

Описание PR

Инструментарий для гейта из ыы13 и по совместительству пункт из цепочки РНД обновлений.
Нащиткодил полные штаны и доволен.

Компонента для создания отдельной мапы/данжа + логика для гейтгана.

!Это только инструментарий! Я не предоставляю карты самих гейтов, так как заниматься этим крайне в падлу. Если это апрувнут свяжемся с кем-то и обкашляем вопросики.
будущий гайтган, который должен выдаваться раундстартом, сам по себе сильное оружие, но в виду баланса им нельзя стрелять на станции.

До полной игры в гейт не хватает:
Прототип оружия гейтгана
Прототип роли работы
Самих карт для гейта

Технические детали
Весь компонент GateDungeonComponent работает на тегах, что может быть плохо(?)
Возможно стоило сделать более гибкую работу этого компонента, так например, если не будет всех 4 порталов (со станции -> в данж -> из данжа -> до нового портала(метки) на станцию) порталы не будут работать. Хотя если что-то в этой цепочке нет, наверное, не стоит пускать туда игроков.

За загрузку мапы отвечает поле компонента GateDungeonComponent PathDungeon, который нужно закинуть в прототипе самих врат

Можно устанавливать несколько всех типы порталов.

Проверки

  • PR полностью завершён и мне не нужна помощь чтобы его закончить.
  • Я ознакомился с наставлениями по работе с репозиторием и следовал им при создании PR'а.
  • Я внимательно просмотрел все свои изменения и багов в них не нашёл.
  • Я запускал локальный сервер со своими изменениями и всё протестировал.
  • Я добавил скриншот/видео демонстрации PR в игре, или этот PR этого не требует.

Изменения

🆑 Vimenant

  • add: Добавлены сломанные гейт-врата

@github-actions github-actions bot added Changes: Sprites Изменение затронуло файлы ".rsu / .png" Changes: Localization Изменение затронуло файлы ".ftl" Changes: Prototypes Изменение затронуло файлы ".yml" кроме неймспейса "maps" Changes: C# Изменение затронуло файлы ".cs" labels Jan 17, 2025
Copy link

github-actions bot commented Jan 17, 2025

RSI Diff Bot; head commit e72c9c1 merging into e961672
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/SS220/Structures/Machines/gate_dungeon.rsi

State Old New Status
framebroken Added

Edit: diff updated after e72c9c1

Comment on lines +21 to +24
public List<EntityUid>? GateStart = new();
public List<EntityUid>? GateMedium = new();
public List<EntityUid>? GateEnd = new();
public List<EntityUid>? GateEndToStation = new();
Copy link
Collaborator

@Kirus59 Kirus59 Jan 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вместо использования тегов думаю лучше сделать перечисление, например:

public enum GateType : byte
{
   Start,
   Medium,
   End,
   ToStation
}

И в компоненте хранить списки энтити в одном поле через словарьDictionary<GateType, List<EntityUid>>

P.S.: Перечисление лучше писать вне класса в этом же неймспейсе (или в неймспейсе системы)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И зачем кста хранить этот список в компоненте каждого гейта?
Разве он не общий будет у всех?

Comment on lines +69 to +88
if(ent.Comp.GateStart == null ||
ent.Comp.GateMedium == null ||
ent.Comp.GateEndToStation == null ||
ent.Comp.GateEnd == null)
return;

foreach (var gate in entGates)
{
if (_tagSystem.HasTag(gate, "StartDungeon"))
ent.Comp.GateStart.Add(gate);

if (_tagSystem.HasTag(gate, "MediumDungeon"))
ent.Comp.GateMedium.Add(gate);

if(_tagSystem.HasTag(gate, "EndDungeon"))
ent.Comp.GateEnd.Add(gate);

if(_tagSystem.HasTag(gate, "EndToStationDungeon"))
ent.Comp.GateEndToStation.Add(gate);
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Проклято

Comment on lines +124 to +125
EnsureComp<LinkedEntityComponent>(currentGateStart, out _);
EnsureComp<LinkedEntityComponent>(currentGateEnd, out _);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зачем, если в TryLink эншурит этот компонент?

Comment on lines +27 to +28
if (!HasComp<StationMemberComponent>(gridUid))
return;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Так он на шаттлах тогда разве не будет работать?

{
"version": 1,
"license": "EULA/CLA with a hosting restriction, full text: https://raw.githubusercontent.com/SerbiaStrong-220/space-station-14/master/CLA.txt",
"copyright": "by vimenant2(discord) for SS220",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"copyright": "by vimenant2(discord) for SS220",
"copyright": "sprited by vimenant2(discord) for SS220",

@Kirus59 Kirus59 self-assigned this Jan 23, 2025
@Kirus59 Kirus59 added the Need to be discussed Требуется обсуждение перед аппрувом/мёрджем label Jan 23, 2025
@Surani1
Copy link

Surani1 commented Jan 24, 2025

мелкуу показал дифф чеков по базе

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changes: C# Изменение затронуло файлы ".cs" Changes: Localization Изменение затронуло файлы ".ftl" Changes: Prototypes Изменение затронуло файлы ".yml" кроме неймспейса "maps" Changes: Sprites Изменение затронуло файлы ".rsu / .png" Need to be discussed Требуется обсуждение перед аппрувом/мёрджем
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants