-
Notifications
You must be signed in to change notification settings - Fork 153
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
Refactor SpecForcesSystem #589
Conversation
Код системы спецсил переработан под использование прототипов.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Почти всё для создания прототипов я брал с кода, только maxRoleAmount я поставил в основном на своё усмотрение. Баланс тут можно перелопачивать как вам угодно
|
||
if (countExtra > 2 && _random.Prob(0.3f)) | ||
// Spawn Guaranteed SpecForces from the prototype. | ||
foreach (var mob in proto.GuaranteedSpawn) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
тут не должно быть такого, см у оффов есть списки с весами и шансами и группой.
см. EntitySpawnCollection.GetSpawns(component.SpawnEntries);
см.
/// <summary>
/// Selects what entities can be given out by the giver.
/// </summary>
[DataField("spawnEntries", required: true)]
public List<EntitySpawnEntry> SpawnEntries = default!;
- type: LimitedItemGiver
spawnEntries:
- id: PresentRandom
orGroup: present
- id: PresentRandomCash
prob: 0.20
orGroup: present
- id: PresentRandomAsh
prob: 0.05
orGroup: present
как пример
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ентри здесь просто не подходит, поскольку спецсилы требуют возможность для чёткой балансировки, и рандом тут будет лишним
В старой версии кода рандом был только со спавном ОСО, сейчас же я просто добавил ОСО гарантом к Альфе и РХБЗЗ
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
смотри внимательней, это делает список, рандом не обязателен, может просто выбрать случайно 1 из 3 сущностей, что в принципе тоже оптимально. т.е. крутая функциональность просто в запас
- Добавлен CVar со стороны сервера меняющий кулдаун для вызова спесцил - Исправлены типы данных в прототипе Спецсил - Пофикшены спавнеры спецсил и добавлено чуть-чуть логов для более удобного дебага - Добавлены выборы вариантов во время ввода команды callspecforces - Теперь все отряды ОБР воспроизводят их админбус звук
return args.Length switch | ||
{ | ||
1 => CompletionResult.FromHintOptions(Enum.GetNames<SpecForcesType>(), | ||
"Тип вызова"), | ||
1 => CompletionResult.FromHintOptions(variants, "Тип вызова"), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
эээээ не понятно зачем этот variants
запихни в 1 строку
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
сделай список с возможностью рандома, но рандом сейчас добавлять не надо.
- В прототипе спецсил теперь используются SpawnEntry вместо просто списка айдишников - Микрофикс команды спецсил - Фикс локализации на уровне кода в конце раунда
Описание PR
Данный ПР оптимизирует код спецсил, добавляя в него систему прототипов.
Краткая документация о прототипе:
SpecForceTeam прототип позволяет добавлять администраторам свои спецотряды через AdminBus, а также гораздо упрощает их добавление. Прототип позволяет изменять много параметров, однако принцип работы спавна в основном заимствован из прошлой версии кода, то есть:
Другие изменения
Проверки