Создаём кастомную способность
Класс CustomAbility
Специальные способности на самом деле очень похожи на предметы. У них есть SetupDetails
, Count
и они существуют в инвентаре своего владельца, так же как и предметы. Чтобы создать кастомную способность, вам надо просто создать класс наследующий от CustomAbility
(который наследует от CustomItem
):
public class MyCustomAbility : CustomAbility
{
/* ... */
}
Вам надо реализовать 2 метода: OnAdded
вызывается когда персонаж получает эту способность, и OnPressed
вызывается когда игрок использует способность. Тут нету OnRemoved
на данный момент, так как это не реализовано в СоРе.
public class MyCustomAbility : CustomAbility
{
public override void OnAdded() { /* ... */ }
public override void OnPressed() { /* ... */ }
}
SetupDetails
SetupDetails
перегружен CustomAbility
и вот его реализация:
public override void SetupDetails()
{
Item.stackable = true;
Item.initCount = 0;
Item.lowCountThreshold = 100;
}
Этот метод должен работать для большинства способностей, но если вам надо что-то более сложное, то перегрузите его сами.
Инициализация
Просто вызовите метод CreateCustomAbility
с типом вашей способности в качестве параметра:
public class MyCustomAbility : CustomAbility
{
[RLSetup]
public static void Setup()
{
RogueLibs.CreateCustomAbility<MyCustomAbility>();
}
}
Смотрите подробнее об атрибуте RLSetup
здесь.
Вы можете выставить название и описание своей способности с помощью методов WithName
и WithDescription
:
public class MyCustomAbility : CustomAbility
{
[RLSetup]
public static void Setup()
{
RogueLibs.CreateCustomAbility<MyCustomAbility>();
.WithName(new CustomNameInfo("My Custom Ability"))
.WithDescription(new CustomNameInfo("My Custom Ability is very cool and does a lot of great stuff"));
}
}
То же самое можно сделать и со спрайтами и разблокировками:
public class MyCustomAbility : CustomAbility
{
[RLSetup]
public static void Setup()
{
RogueLibs.CreateCustomAbility<MyCustomAbility>();
.WithName(new CustomNameInfo("My Custom Ability"))
.WithDescription(new CustomNameInfo("My Custom Ability is very cool and does a lot of great stuff"));
.WithSprite(Properties.Resources.MyCustomAbility)
.WithUnlock(new AbilityUnlock { UnlockCost = 10, CharacterCreationCost = 5 });
}
}
Смотрите Кастомные имена, Кастомные спрайты.
Свойства разблокировок
Вы можете использовать следующие свойства при инициализации AbilityUnlock
:
Свойство | По умолчанию | Описание |
---|---|---|
UnlockCost | 0 | Стоимость разблокировки способности, в наггетсах. Если выставлено на 0, разблокируется автоматически, как только все требования открыты. |
CharacterCreationCost | 1 | Стоимость способности в Редакторе персонажей, в очках. |
IsAvailable | true | Определяет, доступна способность в ... Ну, в игре нету меню для кастомных способностей на данный момент, но если бы было, то это свойство определяло бы, доступна ли способность там или нет. |
IsAvailableInCC | true | Определяет, доступна ли способность в Редакторе персонажей. |
Prerequisites | Определяет какие разблокировки должны быть разблокированы, чтобы открыть эту способность. | |
Recommendations | Просто показывает эти разблокировки в отдельном разделе Рекомендации в меню. |
Другие свойства не должны использоваться во время инициализации.
Примеры