Перейти к основному содержимому
The project's repository is archived as part of the GitHub Archive Program. RogueLibs' code and the documentation will no longer be updated.

Используемые предметы

Делаем предметы используемыми

Просто реализуйте интерфейс IItemUsable в классе вашего предмета:

MyUsableItem.cs
public class MyUsableItem : CustomItem, IItemUsable
{
public bool UseItem() { /* ... */ }
}

Возвращаемое значение UseItem определяет, был ли предмет успешно использован. Возврат true также проигрывает анимацию. При возврате false, вы можете проиграть звук "CantDo", и, может, заставить текущего владельца сказать, почему предмет нельзя использовать:

        if (cantUse)
{
gc.audioHandler.Play(Owner, "CantDo");
Owner.SayDialogue("CantUseItemBecause...");
// не забудьте создать диалог с этим айди
return false;
}
к сведению

Ответственность за уменьшение Count лежит на вас. Так что, не забывайте делать это.

Примеры

Простой используемый предмет, дающий игроку возможность использовать способность Шутка.

namespace RogueLibsCore.Test
{
[ItemCategories(RogueCategories.Usable, RogueCategories.Social)]
public class JokeBook : CustomItem, IItemUsable
{
[RLSetup]
public static void Setup()
{
RogueLibs.CreateCustomItem<JokeBook>()
.WithName(new CustomNameInfo("Joke Book"))
.WithDescription(new CustomNameInfo("Always wanted to be a Comedian? Now you can! (kind of)"))
.WithSprite(Properties.Resources.JokeBook)
.WithUnlock(new ItemUnlock
{
UnlockCost = 10,
LoadoutCost = 5,
CharacterCreationCost = 3,
Prerequisites = { VanillaAgents.Comedian + "_BQ" },
});
}

public override void SetupDetails()
{
Item.itemType = ItemTypes.Tool;
Item.itemValue = 15;
Item.initCount = 10;
Item.rewardCount = 10;
Item.stackable = true;
Item.hasCharges = true;
Item.goesInToolbar = true;
}
public bool UseItem()
{
if (Owner!.statusEffects.makingJoke) return false;

string prev = Owner.specialAbility;
Owner.specialAbility = VanillaAbilities.Joke;
Owner.statusEffects.PressedSpecialAbility();
Owner.specialAbility = prev;

Count--;
return true;
}
}
}

The project's repository is archived as part of the GitHub Archive Program. RogueLibs' code and the documentation will no longer be updated.