120 - API文档汉化 - 卡牌
Updated 6 days ago卡牌
卡牌管理
卡牌管理通过InscryptionAPI.Card.CardManager
实现。您只需调用CardManager.Add
并传入CardInfo
对象,该卡牌将立即加入卡牌池:
CardInfo myCard = ...;
CardManager.Add(myCard); // 完成添加
CardInfo
对象可自由创建,但系统提供了一些辅助方法简化流程。其中最重要的是CardManager.New(name, displayName, attack, health, optional description)
,该方法会自动创建并添加新卡牌:
CardInfo myCard = CardManager.New("example_card", "示例卡牌", 2, 2, "这只是一张示例卡牌");
创建后您可自由修改卡牌属性,所有变更将与游戏实时同步:
CardInfo myCard = CardManager.New("example_card", "示例卡牌", 2, 2, "这只是一张示例卡牌");
myCard.cost = 2;
此外还提供了一系列链式扩展方法,用于执行卡牌创建时的常见操作。以下是使用示例及完整列表:
CardInfo myCard = CardManager.New("example_card", "示例卡牌", 2, 2, "这只是一张示例卡牌")
.SetDefaultPart1Card()
.SetCost(bloodCost: 1, bonesCost: 2)
.SetPortrait("/art/sample_portrait.png", "/art/sample_emissive_portrait.png")
.AddAbilities(Ability.BuffEnemies, Ability.TailOnHit)
.SetTail("Geck", "/art/sample_lost_tail.png")
.SetRare();
卡牌扩展方法
当前可用扩展方法如下(可能未完全更新):
- SetPortrait: 设置卡牌肖像图及可选的发光肖像图。可直接传入Texture2D对象或图片路径。
- SetEmissivePortrait: 仅修改卡牌的发光肖像图。若卡牌未设置基础肖像图将抛出异常。
- SetAltPortrait: 设置卡牌替代肖像图。
- SetPixelPortrait: 设置GBC模式下(即第二章)的像素风格肖像图。
- SetCost: 设置卡牌费用。另有单独设置血祭、骨头、能量和宝石费用的扩展方法。
- SetDefaultPart1Card: 设置使卡牌可在第一章(莱西的小屋)使用的必要元数据。
- SetGBCPlayable: 设置使卡牌可在第二章使用的必要元数据。
- SetDefaultPart3Card: 设置使卡牌可在第三章(P03工厂)使用的必要元数据。
- SetRare: 设置使卡牌呈现为稀有卡的必要元数据。
- SetTerrain: 设置使卡牌作为地形卡生效的必要元数据。
- SetPelt: 设置使卡牌作为毛皮卡生效的必要元数据。可选是否触发虱子的特殊效果。
- SetTail: 创建断尾参数。注意需同时添加TailOnHit能力才有效果。
- SetIceCube: 创建冰封参数。注意需同时添加IceCube能力才有效果。
- SetEvolve: 创建进化参数。注意需同时添加Evolve能力才有效果。
- SetOnePerDeck: 设置卡牌是否为唯一卡(每局游戏牌组仅允许一张)。
- SetHideAttackAndHealth: 设置是否隐藏卡牌的力量与生命值。
- SetGemify: 设置卡牌是否默认宝石化。
- SetAffectedByTidalLock: 设置卡牌是否受潮汐锁定印记效果影响。
- AddAbilities: 添加任意数量能力至卡牌。允许重复添加。
- AddAppearances: 添加任意数量外观行为至卡牌。禁止重复添加。
- AddMetaCategories: 添加任意数量元类别至卡牌。禁止重复添加。
- AddTraits: 添加任意数量特质至卡牌。禁止重复添加。
- AddTribes: 添加任意数量族群至卡牌。禁止重复添加。
- AddSpecialAbilities: 添加任意数量特殊能力至卡牌。禁止重复添加。
进化、断尾、冰封与延迟加载
当您构建卡牌时,目标进化卡牌可能尚未创建。您可通过事件处理器延迟构建进化/冰封/断尾参数,或直接使用上述扩展方法(系统将自动处理)。
注意:若通过扩展方法构建参数时目标卡牌不存在,参数将返回null。只有当进化卡牌加入卡牌列表且通过CardLoader获取卡牌新实例时(如游戏内自然发生),进化参数才会显现。
CardManager.New("Example", "Base", "基础卡牌", 2, 2).SetEvolve("进化卡牌", 1); // "进化卡牌"尚未创建
Plugin.Log.LogInfo(CardLoader.GetCardByName("Example_Base").evolveParams == null); // 输出TRUE!
CardInfo myEvolveCard = CardManager.New("Example", "Evolve", "进化卡牌", 2, 5);
Plugin.Log.LogInfo(CardLoader.GetCardByName("Example_Base").evolveParams == null); // 输出FALSE!
重要提示:对于卡牌蓝图(参见遭遇战),若使用延迟加载,进化、断尾和冰封参数将无法正常工作。解决方案是优先创建进化/断尾/冰封卡牌:
CardInfo myEvolveCard = CardManager.New("Example", "Evolve", "进化卡牌", 2, 5); // 先创建"进化卡牌"
CardManager.New("Example", "Base", "基础卡牌", 2, 2).SetEvolve(myEvolveCard, 1); // 再创建基础卡牌
编辑现有卡牌
若要修改基础游戏卡牌,可直接在CardManager.BaseGameCards
列表中定位并编辑:
CardInfo card = CardManager.BaseGameCards.CardByName("Porcupine");
card.AddTraits(Trait.KillsSurvivors);
另提供高级编辑模式,可同时修改其他模组添加的卡牌。需向CardManager.ModifyCardList
事件添加处理器,该处理器需接收并返回CardInfo
对象列表。以下示例为所有具有死神之触或尖刺铠甲能力的卡牌添加"击杀生还者"特质:
CardManager.ModifyCardList += delegate(List<CardInfo> cards)
{
foreach (CardInfo card in cards.Where(c => c.HasAbility(Ability.Sharp) || c.HasAbility(Ability.Deathtouch)))
card.AddTraits(Trait.KillsSurvivors);
return cards;
};
此方法可确保同时修改基础游戏卡牌和其他模组添加的卡牌。
卡牌外观行为
卡牌外观行为CardAppearanceBehaviour
是特殊类,用于修改卡牌在游戏中的视觉表现。可内置至CardInfo
对象,或在游戏运行时动态添加。
外观行为的实现方式与特殊能力类似(详见能力管理):
public readonly static CardAppearanceBehaviour.Appearance MyAppearanceID = CardAppearanceBehaviourManager.Add(MyPlugin.guid, "特殊外观", typeof(MyAppearanceBehaviour)).Id;
外观行为需继承CardAppearanceBehaviour
类。必须实现抽象方法ApplyAppearance
(用于覆盖卡牌默认外观),另有三个可选虚方法:ResetAppearance
、OnCardAddedToDeck
和OnPreRenderCard
。以下是基础游戏示例:
public class RedEmission : CardAppearanceBehaviour
{
public override void ApplyAppearance()
{
base.Card.RenderInfo.forceEmissivePortrait = true;
base.Card.StatsLayer.SetEmissionColor(GameColors.Instance.glowRed);
}
public override void ResetAppearance()
{
base.Card.RenderInfo.forceEmissivePortrait = false;
base.Card.StatsLayer.SetEmissionColor(GameColors.Instance.glowSeafoam);
}
}
Pages
- 0 - 邪恶冥刻模组简体中文语言包Wiki
- 100 - API文档汉化 - 首页
- 110 - API文档汉化 - 入门指南
- 120 - API文档汉化 - 卡牌
- 121 - API文档汉化 - 自定义卡牌费用系统
- 122 - API文档汉化 - 会说话的卡牌
- 123 - API文档汉化 - 自定义毛皮
- 130 - API文档汉化 - 能力
- 131 - API文档汉化 - 自定义触发器
- 132 - API文档汉化 - 自定义狙击逻辑
- 133 - API文档汉化 - 伤害护盾行为
- 134 - API文档汉化 - 卡槽修改功能
- 135 - API文档汉化 - 触发器与执行顺序
- 140 - API文档汉化 - 自定义/扩展属性
- 150 - API文档汉化 - 扬升(凯茜模组)
- 160 - API文档汉化 - 地图与遭遇战
- 170 - API文档汉化 - 对手
- 180 - API文档汉化 - 图腾
- 190 - API文档汉化 - 道具
- 1A0 - API文档汉化 - 规则书
- 1A1 - API文档汉化 - 添加自定义页面
- 1A2 - API文档汉化 - 添加文本重定向功能
- 1B0 - API文档汉化 - 本地化
- 1B0 - API文档汉化 - 声音
- 1B0 - API文档汉化 - 资产包
- 1C0 - API文档汉化 - 其他特性
- 200 - JSONLoader文档汉化 - Wiki
- 201 - JSONLoader文档汉化 - 枚举值