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

Цели станции: Часть 2 #2338

Merged
merged 10 commits into from
Jun 27, 2024

Conversation

TheShuEd
Copy link
Contributor

@TheShuEd TheShuEd commented Jun 25, 2024

Описание PR

Сильно апгрейднута система целей станции:

  • У разных станций могут быть разные пулы целей
  • В цели станции теперь всегда написан код текущей станции.
  • Split, и другие будущие раздельные карты, может получать отдельные уникальные цели для каждой станции
  • Некоторые станции получили уникальные цели
  • Вместе с целью теперь могут поставляться некоторые необходимые для цели предметы.

Медиа
image

Технические моменты
Теперь у прототипа карты есть компонент StationGoal, который отправляет всем нужным факсам на этом гриде сообщение + необходимые предметы.
Если вы хотите сделать карту с уникальным набором целей, вы можете в прототипе своей карты перезаписать их следующим образом:
image

команда sendstationgoal теперь принимает 2 аргумента - код энтити станции + прото цели
image

Если этого не сделать, у станции будет стандартный набор целей.
Проверки

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

Изменения

🆑

  • add: Некоторые станции получили новые цели. Некоторые новые цели поставляются вместе с необходимыми вещами для ее выполнения.
  • tweak: На разных станциях могут быть разные цели станции!

@github-actions github-actions bot added Status: Needs Review This PR requires new reviews before it can be merged Changes: Map Can be reviewed or fixed by people who are knowledgeable with mapping Changes: Localization Can be reviewed or fixed by people who are knowledgeable with translation and removed Status: Needs Review This PR requires new reviews before it can be merged labels Jun 25, 2024
@poeMota
Copy link
Contributor

poeMota commented Jun 25, 2024

у Фрейма должна быть только FrameRepair цель

@TheShuEd
Copy link
Contributor Author

команда sendstationgoal теперь принимает 2 аргумента - код энтити станции + прото цели
image

@TheShuEd
Copy link
Contributor Author

лишние цели с Frame убрал. В любом случае если там нет факса она не будет приходить, так что тебе нужно его замаппить

@lzk228
Copy link
Collaborator

lzk228 commented Jun 25, 2024

he is cooking 🗣️🗣️🗣️

@TheShuEd
Copy link
Contributor Author

С этого момента цели станций переходят под юриспруденцию Моты, как новая часть маппинга

Content.Server/Corvax/StationGoal/StationGoalCommand.cs Outdated Show resolved Hide resolved
if (playerCount > goalProto.MaxPlayers ||
playerCount < goalProto.MinPlayers)
{
station.Goals.Remove(goalId);
Copy link
Member

@Morb0 Morb0 Jun 25, 2024

Choose a reason for hiding this comment

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

Какой смысл удалять, если мы даже не пройдемся по все массиву и там могут остаться невалидные цели. Имеет смысл заранее пройтись, удалить невалидные цели и потом выбрать случайную из оставшихся.

Copy link
Contributor Author

@TheShuEd TheShuEd Jun 26, 2024

Choose a reason for hiding this comment

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

Этот вариант более оптимизированный, так как индексация прототипов не самый легкий процесс. Здесь в 90% случаев первая попавшаяся цель будет валидна, и нам не придется индексировать все остальное

Ну а если первая цель невалидна оказалась - повторный рандомный выбор по списку, уже без этой невалидной цели

Copy link
Member

Choose a reason for hiding this comment

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

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

Copy link
Contributor Author

Choose a reason for hiding this comment

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

А, ну точно, надо просто закешировать в функции

Content.Server/Corvax/StationGoal/StationGoalPrototype.cs Outdated Show resolved Hide resolved
@TheShuEd TheShuEd requested a review from Morb0 June 26, 2024 08:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changes: Localization Can be reviewed or fixed by people who are knowledgeable with translation Changes: Map Can be reviewed or fixed by people who are knowledgeable with mapping Status: Needs Review This PR requires new reviews before it can be merged
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants