100 - API文档汉化 - 首页

Updated 6 days ago

《邪恶冥刻》模组开发维基

欢迎来到模组开发维基!本文档将帮助您了解如何使用Inscryption API为《邪恶冥刻》创建模组。
此处您将获得关于API多项功能的深度解析,包括其作用机制与使用方法。

如需查看完整的API类与成员列表,或获取更技术性的信息,请参阅文档章节。

游戏调整项

该API包含多项游戏改动,旨在支持多章节(Act)兼容及进一步的模组定制。

API套件还附带了第二个DLL文件,内含多个社区修复补丁,用于修复漏洞或提供游戏体验优化。

卡牌费用显示

现在第一、二章节的卡牌可同时显示多种费用类型,且第一章卡牌可显示能量与宝石费用。

第一章/凯茜模组中的能量无人机

安装API后,第三章的能量管理无人机可在第一章及凯茜模组中使用。当第一章卡池中存在任何需要能量或宝石费用的卡牌时,无人机会自动出现,也可通过修改API配置强制启用。

能量与宝石显示器默认会出现在天秤战场两侧,该设定可通过配置文件修改。

您还可通过覆写以下代码强制无人机在游戏不同区域出现:

using InscryptionCommunityPatch.ResourceManagers;

EnergyDrone.ZoneConfigs[CardTemple.Nature].ConfigEnergy = true; // 启用能量系统
EnergyDrone.ZoneConfigs[CardTemple.Nature].ConfigDrone = true; // 强制无人机显示
EnergyDrone.ZoneConfigs[CardTemple.Nature].ConfigMox = true; // 启用宝石管理
EnergyDrone.ZoneConfigs[CardTemple.Nature].ConfigDroneMox = true; // 强制宝石无人机显示

目前仅以下区域会受这些设置影响:CardTemple.Nature(“自然神殿”,即莱西的小屋)与CardTemple.Undead(“亡灵神殿”,即格里魔拉的墓室)。

第三章/凯茜模组中的骨头显示器

安装API后,第三章将新增独立的骨头显示器。当第三章卡池存在需要骨头费用的卡牌时会自动激活,也可通过API配置强制启用。该显示器表现为悬挂在资源无人机宝石模块下方的电视屏幕。

您也可通过代码强制激活:

using InscryptionCommunityPatch.ResourceManagers;

Act3BonesDisplayer.ForceBonesDisplayActive = true; // 强制在第三章显示骨头电视屏幕

当骨头电视屏幕激活时,每张死亡卡牌上方都会掉落螺栓(效果类似第一章莱西小屋中骨头代币的掉落方式)。

死亡护盾(DeathShield)特性行为

API修改了死亡护盾(又称纳米铠甲/身披坚甲)的运行机制,现在该能力通过继承自DamageShieldBehaviour的自定义能力行为'APIDeathShield'实现(更多信息见下文)。

额外替代立绘

《邪恶冥刻》中存在某些会改变卡牌立绘的情形。
例如铁兽夹(SteelTrap)会将基础卡牌立绘切换为“闭合陷阱”形态,而东方泥龟(Mud Turtle)在失去护盾时会切换立绘。
但这些案例非常有限:铁兽夹会将所有卡牌变为闭合陷阱立绘(即使非原版陷阱卡);且仅有东方泥龟能在护盾消失时更换立绘。

为此API做出改进。现在每张新增的CardInfo都可分别通过SetSteelTrapPortrait()和SetBrokenShieldPortrait()方法,为铁兽夹效果和护盾破碎效果指定专属立绘。
这些立绘与卡牌基础立绘、替代立绘分开存储,为您提供更大的卡牌设计自由度。

名称 说明 设置方法
像素化替代立绘 在第二章调用SwitchToAlternatePortrait时使用的立绘 SetPixelAlternatePortrait
铁兽夹立绘 当铁兽夹印记激活时使用的立绘 SetSteelTrapPortrait, SetEmissiveSteelTrapPortrait, SetPixelSteelTrapPortrait
破碎护盾立绘 当卡牌失去所有护盾时使用的立绘 SetBrokenShieldPortrait, SetEmissiveBrokenShieldPortrait, SetPixelBrokenShieldPortrait
可献祭立绘 当卡牌位于战场且玩家正在选择献祭目标时使用的立绘 SetSacrificablePortrait, SetEmissiveSacrificablePortrait, SetPixelSacrificablePortrait

Part2Modular系统

API新增名为Part2Modular的自定义能力元分类(AbilityMetaCategory),可通过AbilityManager访问。

该元分类在社区补丁中用于确定第二章无形之物(Amorphous)印记可转换的印记类型,其余场景下可自由使用。

部分原版印记已默认标记此元分类。

核心功能

枚举扩展

基础游戏使用多个硬编码列表(称为“枚举/Enums”)管理行为。例如“脆骨(Brittle)”能力通过枚举值Ability.Brittle分配给卡牌。我们可以扩展这些列表,但需谨慎操作,这一部分由GuidManager类管理。该类负责创建新枚举并确保跨模组的一致性。

假设您要创建新的剧情事件(由StoryEvent枚举管理),应使用以下模式创建静态引用:

public static readonly StoryEvent MyEvent = GuidManager.GetEnumValue<StoryEvent>(MyPlugin.guid, "MyNewStoryEvent");

GuidManager要求提供插件GUID及自定义值的友好名称(插件GUID用于避免多模组同名枚举冲突)。

若需引用其他模组创建的枚举值(例如使用其他模组创建的能力),可采用相同模式,只需知道目标模组的插件GUID:

public static readonly Ability OtherAbility = GuidManager.GetEnumValue<Ability>("other.mod.plugin.guid", "Ability Name");

所有枚举值均存储在模组化存档中。

自定义游戏存档数据

若模组需要存储数据,可使用ModdedSaveManager类。您可访问两种额外存档数据:'SaveData'(跨回合持久化)与'RunState'(每回合重置)。使用时需传入模组GUID及自定义键名。

推荐通过静态属性封装存取逻辑:

public static int NumberOfItems
{
    get { return ModdedSaveManager.SaveData.GetValueAsInt(Plugin.PluginGuid, "NumberOfItems"); }
    set { ModdedSaveManager.SaveData.SetValue(Plugin.PluginGuid, "NumberOfItems", value); }
}

如此配置后,静态属性“NumberOfItems”将自动与存档文件同步。