如果你在手动安装时遇到问题,请确保在更新前删除任何旧版本(包括 jmm889901.titanframework)。
这是一个实验性模组,如遇崩溃欢迎提供日志。我会尽可能保持向后兼容,让更新变为可选。
不知如何使用模组、有建议或发现漏洞,请私信我 拉屎撒尿侠。 在Discord上
自定义泰坦添加框架
要使用该模组,请先安装兼容的泰坦模组(如Archon或Chimera),然后进入泰坦配装选择菜单,选择「自定义配装」,新建一个配装,在该配装中点击「选择泰坦」按钮以调出泰坦选择界面。
```lua
global function ChimeraSetup
void function ChimeraSetup()
{
ModdedTitanData Chimera
Chimera.Name = "#DEFAULT_TITAN_CHIMERA"
Chimera.Tag = "Atlas"
// 若群组设置中启用标签前缀/后缀,则该标签在选单中显示
// 可用于提供与游戏内实际名称不同的备用选择界面名称
Chimera.Description = "这是奇美拉的描述"
Chimera.BaseSetFile = "titan_atlas_tracker"
Chimera.BaseName = "tone"
// 我们将使用帝王的模型
Chimera.altChassisType = frameworkAltChassisMethod.ALT_TITAN
Chimera.titanHints = [
"#DEATH_HINT_CHIMERA_001",
"#DEATH_HINT_CHIMERA_002",
"#DEATH_HINT_CHIMERA_003",
"#DEATH_HINT_CHIMERA_004",
"#DEATH_HINT_CHIMERA_005",
"#DEATH_HINT_CHIMERA_006"
]
#if UI
Chimera.loadoutsMenuControllerFunc = ChimeraPreviewController
#endif
Chimera.groupSettings.Name = "#CHIMERACATEGORY"
Chimera.groupSettings.showTagAsSuffix = true
Chimera.groupSettings.showName = false
// 仅在选择界面显示泰坦机体类型
ModdedTitanWeaponAbilityData GenericWeaponMount
GenericWeaponMount.weaponName = "mp_titanweapon_xo16_vanguard"
// 自定义武器实际上也可将默认武器作为物品
Chimera.Primary = GenericWeaponMount
ModdedTitanWeaponAbilityData GenericDefensiveMount
GenericDefensiveMount.weaponName = "mp_titanability_particle_wall"
Chimera.Left = GenericDefensiveMount
ModdedTitanWeaponAbilityData DefaultCore
DefaultCore.weaponName = "mp_titancore_salvo_core"
// 我们只有6个被动槽位,其中2个通用、4个专属
// 故实际仅可使用4个通用槽位,无法将所有物品(武器、核心、技能)设为通用
Chimera.Core = DefaultCore
ModdedTitanWeaponAbilityData GenericOffensiveMount
GenericOffensiveMount.weaponName = "mp_titanweapon_salvo_rockets"
Chimera.Right = GenericOffensiveMount
ModdedTitanWeaponAbilityData GenricUtilityMount
GenricUtilityMount.weaponName = "mp_titanability_phase_dash"
Chimera.Mid = GenricUtilityMount
CustomPersistentVar Primary
Primary.property = "primary"
Primary.defaultValue = "mp_titanweapon_xo16_vanguard"
// <- 此值实际上并未被使用。我需要先设置“真正”的自定义值
Primary.passiveItemsMethod = eItemsMethod.FIND_ALL_TYPE
// FIND_ALL_TYPE 将把所有匹配 itemTypeOverride 的物品设为可用
Primary.itemTypeOverride = eItemTypes.TITAN_PRIMARY
Chimera.ValidationOverrides["primary"] <- Primary
/* ========定义被动槽位4(防御)======== */
CustomPersistentVar Defensive
Defensive.property = "special"
Defensive.defaultValue = "mp_titanability_particle_wall"
Defensive.passiveItemsMethod = eItemsMethod.FIND_FORCE
// 强制游戏使用我们提供的精确参照列表
// 此处虽然 FIND 看似也能工作,但 mp_titanweapon_stun_laser 也属于 TITAN_ORDNANCE 类型
// 然而它应属于另一个槽位(功能槽),故必须列入功能槽
// 若在此处使用 FIND,该武器仍会被发现并添加到可用物品列表中
Defensive.itemTypeOverride = eItemTypes.TITAN_SPECIAL
Defensive.validationFunc = IsValidChimeraSpecial
Chimera.ValidationOverrides["special"] <- Defensive
ModdedPassiveData ParticleWall
ParticleWall.Name = "mp_titanability_particle_wall"
// 可使用游戏内自带的本地化名称/描述
// 若其他模组也使用此方式可能引发冲突,因为这些名称同时作为显示名和内部名,未来可能调整
ParticleWall.description = "#WPN_TITAN_SHIELD_WALL_DESC"
ParticleWall.image = $"rui/titan_loadout/defensive/titan_defensive_particle_wall_menu"
Chimera.ValidationOverrides["special"].acceptedItems.append(ParticleWall)
ModdedPassiveData HeatShield
HeatShield.Name = "mp_titanweapon_heat_shield"
HeatShield.description = "#WPN_TITAN_HEAT_SHIELD_DESC"
HeatShield.image = $"rui/titan_loadout/defensive/titan_defensive_heat_shield_menu"
Chimera.ValidationOverrides["special"].acceptedItems.append(HeatShield)
ModdedPassiveData VortexShield
VortexShield.Name = "mp_titanweapon_vortex_shield_ion"
VortexShield.description = "WPN_TITAN_VORTEX_SHIELD_DESC"
VortexShield.image = $"rui/titan_loadout/defensive/titan_defensive_vortex_menu"
Chimera.ValidationOverrides["special"].acceptedItems.append(VortexShield)
/* =======定义被动槽位5(功能)======== */
CustomPersistentVar Utility
Utility.property = "antirodeo"
Utility.defaultValue = "mp_titanability_phase_dash"
Utility.passiveItemsMethod = eItemsMethod.FIND_FORCE
// 该槽位的技能并非共享同一类型,故使用 FIND_FORCE 指定精确参照列表
Utility.itemTypeOverride = eItemTypes.TITAN_ANTIRODEO
Utility.validationFunc = IsValidChimeraAntirodeo
Chimera.ValidationOverrides["antirodeo"] <- Utility
ModdedPassiveData Siphon
Siphon.Name = "mp_titanweapon_stun_laser"
Siphon.description = "WPN_TITAN_STUN_LASER_DESC"
Siphon.image = $"rui/titan_loadout/defensive/titan_defensive_energy_siphon_menu"
Chimera.ValidationOverrides["antirodeo"].acceptedItems.append(Siphon)
ModdedPassiveData PhaseDash
PhaseDash.Name = "mp_titanability_phase_dash"
PhaseDash.description = "WPN_TITAN_PHASE_DASH_DESC"
PhaseDash.image = $"rui/titan_loadout/tactical/titan_tactical_phase_dash_menu"
Chimera.ValidationOverrides["antirodeo"].acceptedItems.append(PhaseDash)
ModdedPassiveData hover
hover.Name = "mp_titanability_hover"
hover.description = "WPN_TITAN_HOVER_DESC"
hover.image = $"rui/titan_loadout/tactical/titan_tactical_hover_menu"
Chimera.ValidationOverrides["antirodeo"].acceptedItems.append(hover)
ModdedPassiveData tripwire
tripwire.Name = "mp_titanability_laser_trip"
tripwire.description = "WPN_TITAN_TRIPWIRE_DESC"
tripwire.image = $"rui/titan_loadout/tactical/titan_tactical_laser_tripwire_menu"
Chimera.ValidationOverrides["antirodeo"].acceptedItems.append(tripwire)
/* =======定义被动槽位6(攻击)======== */
CustomPersistentVar ordnanceSlot
ordnanceSlot.property = "ordnance"
ordnanceSlot.defaultValue = "mp_titanweapon_laser_lite"
ordnanceSlot.passiveItemsMethod = eItemsMethod.FIND
ordnanceSlot.itemTypeOverride = eItemTypes.TITAN_ORDNANCE
ordnanceSlot.validationFunc = IsValidChimeraOrdnance
Chimera.ValidationOverrides["ordnance"] <- ordnanceSlot
ModdedPassiveData RocketPod
RocketPod.Name = "mp_titanweapon_salvo_rockets"
RocketPod.description = "WPN_TITAN_SALVO_ROCKETS_DESC"
RocketPod.image = $"rui/titan_loadout/ordnance/tracking_rockets_menu"
Chimera.ValidationOverrides["ordnance"].acceptedItems.append(RocketPod)
ModdedPassiveData FlameWall
FlameWall.Name = "mp_titanweapon_flame_wall"
FlameWall.description = "WPN_TITAN_FIREWALL_DESC"
FlameWall.image = $"rui/titan_loadout/ordnance/flame_wall_menu"
Chimera.ValidationOverrides["ordnance"].acceptedItems.append(FlameWall)
ModdedPassiveData Laser
Laser.Name = "mp_titanweapon_laser_lite"
Laser.description = "WPN_TITAN_LASER_LITE_DESC"
Laser.image = $"rui/titan_loadout/ordnance/laser_shot_menu"
Chimera.ValidationOverrides["ordnance"].acceptedItems.append(Laser)
ModdedPassiveData DumbfireRockets
DumbfireRockets.Name = "mp_titanweapon_dumbfire_rockets"
DumbfireRockets.description = "WPN_TITAN_DUMB_SHOULDER_ROCKETS_DESC"
DumbfireRockets.image = $"rui/titan_loadout/ordnance/cluster_missile_menu"
Chimera.ValidationOverrides["ordnance"].acceptedItems.append(DumbfireRockets)
ModdedPassiveData arcWave
arcWave.Name = "mp_titanweapon_arc_wave"
arcWave.description = "WPN_TITAN_ARC_WAVE_DESC"
arcWave.image = $"rui/titan_loadout/ordnance/arc_wave_menu"
Chimera.ValidationOverrides["ordnance"].acceptedItems.append(arcWave)
CustomPersistentVar coreAbility
coreAbility.property = "coreAbility"
coreAbility.defaultValue = "mp_titancore_salvo_core"
coreAbility.passiveItemsMethod = eItemsMethod.FIND
// 这些核心技能均匹配同一类型,但我们并不需要所有泰坦核心
coreAbility.itemTypeOverride = eItemTypes.TITAN_CORE_ABILITY
coreAbility.validationFunc = IsValidChimeraCore
Chimera.ValidationOverrides["coreAbility"] <- coreAbility
ModdedPassiveData SalvoCore
SalvoCore.Name = "mp_titancore_salvo_core"
SalvoCore.customIcon = true
// 图标并非真正的自定义图片,而是硬编码的UI图集,无法在被动图标上正常显示
Chimera.ValidationOverrides["coreAbility"].acceptedItems.append(SalvoCore)
ModdedPassiveData LaserCore
LaserCore.Name = "mp_titancore_laser_cannon"
LaserCore.customIcon = true
Chimera.ValidationOverrides["coreAbility"].acceptedItems.append(LaserCore)
ModdedPassiveData FlameCore
FlameCore.Name = "mp_titancore_flame_wave"
FlameCore.customIcon = true
Chimera.ValidationOverrides["coreAbility"].acceptedItems.append(FlameCore)
ModdedPassiveData DashCore
DashCore.Name = "mp_titancore_dash_core"
DashCore.customIcon = true
Chimera.ValidationOverrides["coreAbility"].acceptedItems.append(DashCore)
ModdedPassiveData ampCore
ampCore.Name = "mp_titancore_amp_core"
ampCore.customIcon = true
Chimera.ValidationOverrides["coreAbility"].acceptedItems.append(ampCore)
FrameworkChassisStruct Ogre
Ogre.name = "Ogre"
Ogre.setFile = "titan_ogre_minigun"
Ogre.executionAnimationType = 57
#if CLIENT || SERVER
PrecacheModel($"models/titans/heavy/titan_heavy_ogre_base.mdl")
#endif
Ogre.modelOverride = $"models/titans/heavy/titan_heavy_ogre_base.mdl"
Chimera.altChassisArray.append(Ogre)
FrameworkChassisStruct Atlas
Atlas.name = "Atlas"
Atlas.setFile = "titan_atlas_tracker"
Atlas.executionAnimationType = 55
//#if CLIENT || SERVER
//暂时移除,因动画会导致服务器崩溃
//PrecacheModel($"models/titans/medium/titan_medium_atlas_base.mdl")
//#endif
//Atlas.modelOverride = $"models/titans/medium/titan_medium_atlas_base.mdl"
Chimera.altChassisArray.append(Atlas)
FrameworkChassisStruct Stryder
Stryder.name = "Stryder"
Stryder.setFile = "titan_stryder_leadwall"
Stryder.executionAnimationType = 52
#if CLIENT || SERVER
PrecacheModel($"models/titans/light/titan_light_stryder_base.mdl")
#endif
Stryder.modelOverride = $"models/titans/light/titan_light_stryder_base.mdl"
Chimera.altChassisArray.append(Stryder)
CreateModdedTitanSimple(Chimera) // 嗯……“简单”?好吧
#if CLIENT
RegisterTitanAudioFunctionByTitan("#DEFAULT_TITAN_CHIMERA", chimeraHandleVoice)
#endif
}
```
基础泰坦仅用于获取永久被动、动画、经验值及其他各类内容。
框架使用的是基于安全I/O构建的独立持久化系统,不应受影响。
若因故中断,请直接前往 《泰坦陨落2\本地模组数据》 并删除所有文件,这将把TitanFramework重置为初始状态,同时保留你的原版配装。
为便于调试损坏的持久化数据,可运行以下命令:
titanFrameworkDevPrintsEnabled 1
现在使用完全自定义的持久化系统,通过本地JSON存储配装,不再依赖基础游戏的持久化机制。
这意味着:
. 泰坦配装无限
泰坦不再限制可装载的被动技能数量
. 泰坦可拥有任意持久变量,以支持更多或不同类型的可变数值,突破原有限制。
这也引出了主要的新内容—— 特色
泰坦框架现已支持自定义手雷、战术装备与枪械,通过调用覆写机制实现,无需为模组内容额外创建配置方案。
其他显著特点
重制泰坦界面以适应新增内容,现在可通过泰坦菜单底部的“自定义配置”按钮进入泰坦系统。

Tobey 的《深海迷航》BepInEx 扩展包
toebeann2026-05-26 18:43:36
BepInEx 是一个通用的 Unity 模组框架。这是一个适用于《深海迷航》(Subnautica) 的 BepInEx 整合包,已预先配置,可在 Windows、macOS 和 Linux 系统上使用——包括 Steam Deck 掌机!

SMLHelper(修改助手)
Kallie232023-02-02 06:41:30
一个帮助你以简单的方式在游戏中添加物品、精灵、制作逻辑等的库!花更少的时间去弄清楚如何让你的mod工作,花更多的时间在你能用它做什么上!

载具框架
Mikjaw2026-02-18 01:33:10
该图书馆支持创建新载具。

鹦鹉螺
Kallie232026-06-10 06:59:26
Nautilus 是 Subnautica 的核心模组库,旨在通过提供尽可能易于使用和强大的常用辅助工具来提高开发人员的生产力。

北极星
northstar2022-03-06 01:36:17

泰坦框架
The_Peepeepoopoo_man2022-08-27 18:20:40

地图
newman552025-08-24 20:03:40
国防部在“信标管理器”标签上添加了一张地图到PDA。

MoreRequickSlots
randyknapp2019-12-14 07:23:07
添加多达12个带热键的快速插槽!专为QMods打造