Hi there 👋
TESTAMENT is a RPG about heroes from ancient ages in a sci-fi future fighting monsters attacking from forgotten myths and scary tales.
Add it to wishlist on Steam
Join us on Reddit
Survival roguelike game with huge world generation.
License: MIT License
Если удар прошёл через оборону, то нужно проверять пробитие брони.
Механика:
Где-нибудь на экране выводить название сектора. Сейчас название сектора генерировать как "Подземелье N", где N - просто порядковый номер.
Selected: Co-variant array conversion (8)
Zilon.Core.Tests/Schemes
SchemeServiceTests.cs (1)
79: Co-variant array conversion from string[] to object[] can cause run-time exception on write operation
Zilon.Core.Tests/Tactics
DropTableChestStoreTests.cs (2)
30: Co-variant array conversion from Resource[] to IProp[] can cause run-time exception on write operation
59: Co-variant array conversion from Resource[] to IProp[] can cause run-time exception on write operation
Zilon.Core.Tests/Tactics/Spatial
HexNodeHelperTests.cs (1)
57: Co-variant array conversion from HexNode[] to object[] can cause run-time exception on write operation
Zilon.Core/MapGenerators
SectorProceduralGenerator.cs (2)
87: Co-variant array conversion from HexNode[] to IMapNode[] can cause run-time exception on write operation
107: Co-variant array conversion from HexNode[] to IMapNode[] can cause run-time exception on write operation
Zilon.Core/Persons
EvolutionData.cs (1)
75: Co-variant array conversion from PerkJob[] to IJob[] can cause run-time exception on write operation
Zilon.Core/Tactics/Spatial/PathFinding
AStar.cs (1)
234: Co-variant array conversion from HexNode[] to IMapNode[] can cause run-time exception on write operation
Целевой игровой процесс:
Вероятно, его можно объединить с ISurvivalData (который станет PersonState).
см. //TODO Сделать проверку, чтобы нельзя было открывать сундуки через стены аналогично команде на открытие.
В случае попытки открыть сундук через стены - выбрасывать исключение.
Добавить тест на проверку открытия без стен и выброс исключения в случае наличия стен.
см. Базовые механики.
Добавить источник рандома для модуля Выживания. Сам модуль выживания должен увеличивать голод и жажду на 4+. Предусмотреть, что бросок будет зависеть от схемы персонажа и модифицироваться перками, окружением, эффектами.
Zilon.Core.Tests/Persons
PerkResolverTests.cs (2)
42: Method 'Moq.ObsoleteMockExtensions.SetupSet<T,TProperty>' is obsolete: Replaced by SetupSet(Action)
108: Method 'Moq.ObsoleteMockExtensions.SetupSet<T,TProperty>' is obsolete: Replaced by SetupSet(Action)
Те, кто помер, должны мигать и исчезать. Лут должен появляться только после исчезновения.
За курсором игрока должен быть трекер маршрута, как будет перемещаться персонаж игрока. Отображать маршрут мигающими точками (как в Stoneshard). Отображать выбранный узел. Пока видится, как анимированные углы гекса.
Сделать события актёра для выброса результатов бросков:
Событие должно содержать:
Мероприятие в рамках повышения безопасности кода. Схемы должны быть строго только для чтения.
Для этого необходимо ввести интерфейсы со свойствами-геттерами. В корке и в клиенте должны использоваться только интерфейсы.
Если схема используется в тестах, то нужно создать класс с сеттером и использовать его только в тестах.
Воспроизводится только на клиенте.
Схема должна содержать:
Если игрок помер, то после небольшой задержки выводить экран You dead. Выводить количество пройденных секторов. Добавить кнопку рестарта.
Покрыть методы:
Все тесты должны содержать комментарии, начинающиеся "Тест проверяет, что...". Тело теста должно состоять и 3 блоков, отделённых тремя строками: ARRANGE, ACT, ASSERT.
В этом случае нужно заново генерировать задачу на перемещение к точке. Тогда будет сгенерирован новый путь.
Написать тест для проверки этого поведения.
см //TODO На этот метод нужен тест.
Сейчас роль пули играет морковка. После выстрела морковка замирает в ячейке стрелка.
Нужно морковку заменить трасером выстрела.
Zilon.Core.Spec/Steps
CommonSteps.cs (20)
19: Class 'CommonSteps' is never used
26: Method 'GivenЕстьКартаРазмером' is never used
32: Method 'GivenМеждуЯчейкамиИЕстьСтена' is never used
38: Method 'GivenЕстьАктёрИгрокаКлассаCaptainВЯчейке' is never used
44: Method 'GivenАктёрИмеетHp' is never used
51: Method 'GivenЕстьМонстрКлассаRatВЯчейке' is never used
57: Method 'GivenМонстрIdИмеетHp' is never used
65: Method 'GivenЕстьСундукВЯчейке' is never used
72: Method 'GivenСундукСодержитIdЭкипировкуPistol' is never used
87: Method 'GivenСундукСодержитIdРусурсPistol' is never used
103: Method 'WhenЯВыбираюЯчейку' is never used
109: Method 'WhenЯВыбираюСундукId' is never used
125: Method 'WhenЯЗабираюИзСундукаЭкипировкуPistol' is never used
144: Method 'WhenЯЗабираюИзСундукаРерурсWaterВКоличестве' is never used
178: Method 'ThenУАктёраВИнвентареЕстьPistol' is never used
189: Method 'ThenВСундукеIdНетЭкипировкиPistol' is never used
200: Method 'ThenВСундукеIdНетПредметаWater' is never used
217: Method 'ThenЕдаСырОтсутствуетВИнвентареПерсонажа' is never used
228: Method 'ThenАктёрИмеетЗадасHp' is never used
235: Method 'ThenМонстрIdИмеетHp' is never used
EquipmentSteps.cs (5)
16: Class 'EquipmentSteps' is never used
24: Method 'GivenВИнвентареУАктёраИгрокаЕстьПредметPropSid' is never used
34: Method 'WhenЭкипируюПредметPropSidВСлотIndexSlotIndex' is never used
56: Method 'ThenВСлотеIndexSlotIndexАктёраИгрокаЕстьPropSid' is never used
64: Method 'ThenПараметрParamStatTypeРавенParamStatValue' is never used
FightSteps.cs (3)
14: Class 'FightSteps' is never used
21: Method 'WhenАктёрИгрокаАтакуетМонстраId' is never used
38: Method 'ThenАктёрИгрокаМертв' is never used
MoveSteps.cs (6)
15: Class 'MoveSteps' is never used
22: Method 'ThenКомандаНаПеремещениеМожетВыполняться' is never used
31: Method 'ThenКомандаНаПеремещениеНеМожетВыполняться' is never used
39: Method 'WhenВыполняетсяКомандаНаПеремещение' is never used
46: Method 'WhenВыполняетсяКомандаНаПеремещениеСОшибкой' is never used
61: Method 'ThenАктёрНаходитсяВЯчейке' is never used
PerkSteps.cs (3)
12: Class 'PerkSteps' is never used
20: Method 'GivenУАктёраИгрокаПрогрессПеркаНаУбийствоИз' is never used
32: Method 'ThenПеркНаУбийствоДолженБытьПрокачен' is never used
SurvivalSteps.cs (13)
18: Class 'SurvivalSteps' is never used
25: Method 'GivenВИнвентареУАктёраЕстьЕдаСыр' is never used
32: Method 'GivenВИнвентареУАктёраЕстьФейковыйПровиантFake_FoodНаХарактеристикуЭффективностью' is never used
73: Method 'GivenАктёрЗначениеСытостьРавное' is never used
102: Method 'GivenАктёрИмеетЭффектStartEffect' is never used
117: Method 'WhenЯПеремещаюПерсонажаНаОднуКлетку' is never used
131: Method 'WhenАктёрСъедаетЕду' is never used
137: Method 'ThenЗначениеStatУменьшилосьНаRate' is never used
157: Method 'ThenЗначениеСытостиПовысилосьНаЕдиниц' is never used
177: Method 'ThenЗначениеStatСтало' is never used
196: Method 'ThenАктёрПолучаетЭффектСлабыйГолод' is never used
221: Method 'ThenАктёрИмеетХарактристикуМодуляСраженияMeleeРавную' is never used
247: Method 'ThenТактическоеУмениеИмеетЭффективностьMinMax' is never used
Вероятно, потому что сохраняется подписка на событие и какой-то из объектов уничтожен.
MissingReferenceException: The object of type 'RectTransform' has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
UnityEngine.Transform+Enumerator.MoveNext () (at C:/buildslave/unity/build/Runtime/Transform/ScriptBindings/Transform.bindings.cs:343)
PersonEffectHandler.UpdateEffects () (at Assets/Zilon/Scripts/Models/SectorScene/PersonEffectHandler.cs:23)
Добавить модал выхода (по сути, подтверждение выхода).
При нажатии выводить модал в стиле дума:
Произвольно выводить надписи "Сдаться и выйти?" и т.д.
Написать тесты на основной метод ApplyToJobs:
Вероятно должно быть наоборот - в интерфейсе исправлено название параметра.
Нужно доработать класс RoamingLogic. Должен работать по следующему принципу:
Просто белые квадраты. Это плохо.
Если достигнут LevelCap перка (максимальный уровень развития), то его прогресс больше не увеличивается.
Если удар успешен, то:
Эффекты должны работать по следующей механике:
На все текущие угрозы (голод, жажда) должен быть один эффект. При этом должно быть видно, какой из показателей вызвал угрозу.
Восстановить тесты спецификации.
Добавить текстовый блок на клиенте, чтобы пользователю было видно, кто из персонажей какие броски выполнил.
Выполнят после того, как в ядре будет реализовано оповещение. Текст должен содержать информацию о том, какой актёр выполнил бросок, описание броска в формате nDm, какие модификаторы и перебросы были использованы, итоговое значение броска, успех или нет (этот результат тоже должно указывать ядро).
Нужно разбить персонажа на голову и туловище (как сейчас разбита броня). Не накладывать префабы экипировки друг на друга, а заменять.
Это может доставлять проблемы, потому что игрок перестаёт видеть, что у него критические угрозы выживания (Max уровень эффектов). И в какой-то момент просто умирает.
см. //TODO Сделать проверку, чтобы нельзя было атаковать через стены, аналогично команде на открытие/атаку.
В случае попытки выполнить задачу сквозь стену нужно выбрасывать исключение. Добавить тест, проверяющий выброс исключения.
Коридор в виде отдельно стоящих ячеек. Предположительно, генератор сектора накладывается несколько ячеек в одну точку.
Проверить, нет ли проверок на null в потребителях класса. Если есть - null заменить на Any.
см.
//TODO Добавить тест, исправить баг.
// Этой проверки быть не должно, потому что _path и так содержит
// цепочку узлов до целевого. И должно выполняться верхнее условие.
Если у персонажа два одноручных оружия, то на 5+ наносить удар вторым оружием, если действие по умолчанию доступно.
См. // TODO Это можно вынести в сеттер
Добавить тесты, проверяющие сеттер.
Главная проблема в том, что если игрок умирает, игра начинает сыпаться из-за ошибок. Потому что происходит обращение к модели, которая уже удалена (Destroy).
Обращение происходит в камере при попытке центрировать камера на персонажа игрока и при попытке выполнить команды.
Чек-лист:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.