123 - API文档汉化 - 自定义毛皮

Updated a week ago

自定义毛皮

由猎人与毛皮商买卖的毛皮由两个组件构成:CardInfo(卡牌信息)与PeltData(毛皮数据)。

CardInfo代表你可获取并出售的实际卡牌,其创建方式与常规卡牌相同,均通过CardManager实现。而PeltData则需使用API的PeltManager进行创建。

PeltData决定了猎人与毛皮商如何处理CardInfo,包括购买价格、单局游戏中价格的上涨幅度,以及毛皮商会为该毛皮提供哪些卡牌及其数量。

添加自定义毛皮

第一步是创建卡牌:

CardInfo bonePeltInfo = CardManager.New(PluginGuid, "Bone Pelt", "Bone Pelt", 0, 2);
bonePeltInfo.portraitTex = TextureHelper.GetImageAsTexture(Path.Combine(PluginDirectory, "Art/portrait_skin_bone.png")).ConvertTexture();
bonePeltInfo.cardComplexity = CardComplexity.Simple;
bonePeltInfo.temple = CardTemple.Nature;
bonePeltInfo.SetPelt();

必须优先创建卡牌,再创建毛皮数据。

完成卡牌创建后,即可创建毛皮数据。其中最复杂的部分在于创建用于决定毛皮商提供卡牌的函数。

本例中,毛皮商仅会提供消耗骨头且属于“自然神殿”(即仅限第一章卡牌)的卡牌:

Func<List<CardInfo>> cardChoices = ()
{
    return CardManager.AllCardsCopy.FindAll((CardInfo x) => x.BonesCost > 0 && x.temple == CardTemple.Nature);
};

PeltManager.CustomPeltData bonePelt = PeltManager.New(yourPluginGuid, bonePeltInfo, baseBuyPrice: 3, extraAbilitiesToAdd: 0, choicesOfferedByTrader: 8, cardChoices);

该毛皮当前需花费3颗牙齿从猎人处购买,毛皮商将提供8张卡牌供选择,且提供的卡牌不会附加任何额外能力。

毛皮扩展功能

以下扩展方法可用于进一步自定义:

  • SetPluginGuid: 设置添加该毛皮的插件Guid。若未使用PeltManager.New()创建毛皮时尤为实用。
  • SetBuyPrice: 设置毛皮的基础购买价格(即未计算修正值前的初始价格),亦可同时设置最高购买价格(默认价格为20)。
  • SetMaxBuyPrice: 专用于设置毛皮最高购买价格的扩展方法。例如当已通过PeltManager.New()设置过基础价格时适用。
  • SetBuyPriceModifiers: 设置用于计算游戏内事件(如击败猎人或毛皮商,或激活“昂贵毛皮”挑战)对价格影响的参数。
  • SetBuyPriceAdjustment: 设置用于计算单局游戏中价格变化规律的函数。默认情况下每次上涨1颗牙齿,但可实现更复杂逻辑。
  • SetModifyCardChoiceAtTrader: 允许进一步修改毛皮商提供的卡牌,例如添加装饰图案或调整其消耗。
  • SetIsSoldByTrapper: 决定该毛皮是否由猎人出售。
  • SetNumberOfCardChoices: 设置交易毛皮时可选择的卡牌数量。
  • SetCardChoices: 设置用于决定毛皮商可能提供哪些卡牌的函数。