120 - API文档汉化 - 卡牌
Updated 2 months 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文档汉化 - 枚举值
- A00-凯茜模组通用信息站汉化-首页
- A10-凯茜模组通用信息站汉化-安装
- A11-凯茜模组通用信息站汉化-技术支持常见问题
- A12-凯茜模组通用信息站汉化-补丁
- A20-凯茜模组通用信息站汉化-入门指南
- A30-凯茜模组通用信息站汉化-一般常见问题
- A40-凯茜模组通用信息站汉化-游戏机制
- A50-凯茜模组通用信息站汉化-装饰选项
- A60-凯茜模组通用信息站汉化-与原版游戏的差异
- A70-凯茜模组通用信息站汉化-解锁
- A71-凯茜模组通用信息站汉化-初始牌组
- A72-凯茜模组通用信息站汉化-道具
- A73-凯茜模组通用信息站汉化-卡牌
- A74-凯茜模组通用信息站汉化-伊耶拉克的细节
- A75-凯茜模组通用信息站汉化-挑战
- A76-凯茜模组通用信息站汉化-最终头目
- A77-凯茜模组通用信息站汉化-成就
- A80-凯茜模组通用信息站汉化-提示:挑战提示
- A81-凯茜模组通用信息站汉化-提示:地图节点
- A82-凯茜模组通用信息站汉化-提示:印记
- A90-凯茜模组通用信息站汉化-背景故事
- AA0-凯茜模组通用信息站汉化-ARG解谜
- AA1-凯茜模组通用信息站汉化-ARG事件概览
- AA2-凯茜模组通用信息站汉化-磐石卡牌
- AA3-凯茜模组通用信息站汉化-命令:DAMPNSOGGY
- AA4-凯茜模组通用信息站汉化-命令:RAZORSHARP
- AA5-凯茜模组通用信息站汉化-命令:PALESICKLY
- AA6-凯茜模组通用信息站汉化-命令:LEMONLIMES
- AA7-凯茜模组通用信息站汉化-命令:THESHIPWILLRISEAGAIN
- AA8-凯茜模组通用信息站汉化-频道:#prospector
- AA9-凯茜模组通用信息站汉化-频道:#angler
- AAA-凯茜模组通用信息站汉化-频道:#trader
- AAB-凯茜模组通用信息站汉化-频道:#_-_-_-_-_
- AAC-凯茜模组通用信息站汉化-管理员笔记
- AAD-凯茜模组通用信息站汉化-木雕师的消息
- AAE-凯茜模组通用信息站汉化-提示和工具
- AAF-凯茜模组通用信息站汉化-ARG文档
- AAG-凯茜模组通用信息站汉化-前传ARG
- AB0-凯茜模组通用信息站汉化-趣事:名人堂
- AB1-凯茜模组通用信息站汉化-趣事:耻辱柱
- AB2-凯茜模组通用信息站汉化-趣事:以及其他有趣内容……
- AB3-凯茜模组通用信息站汉化-趣事:全挑战模式胜利记录
- ABC-凯茜模组通用信息站汉化-趣事:解谜和游戏
- AC0-凯茜模组通用信息站汉化-“作弊”:存档修改
- AC1-凯茜模组通用信息站汉化-“作弊”:重复读档
- AD0-凯茜模组通用信息站汉化-漏洞和代码注释