LoreCombatConfigurator

LoreCombatConfigurator

又一个战斗配置模组。极度(过度)可配置。通过推断敌人类别而不覆盖任何游戏文件,努力保持与游戏背景一致。100%使用脚本扩展器。

游戏玩法

这个模组旨在成为一个无限可配置的实体增强器,同时尽量保持对游戏设定的友好性,通过检查实体的能力并使用这些信息来决定哪些增强是适用的。

几乎所有的设置都可以通过位于 %localappdata%\Larian Studios\Baldur's Gate 3\Script Extender\LoreCombatConfigurator.json 的配置文件进行覆盖。该配置文件将生成默认设置,使模组在初始状态下不产生任何效果。

此模组会在游戏开始及实体进入战斗时,尝试对所有实体应用配置。

Files > Miscellaneous > SampleConfigFullyPopulated 下有一个完全配置好的配置文件,我已用于测试。将该文件解压到上述路径。

Bug 报告/功能增强建议:

如果可能,请在此处创建一个 Issue(如果在 GitHub 上报问题,我更容易看到):https://github.com/merc1031/LoreCombatConfigurator/issues

兼容性:

  • 5eSpells - 该模组已知且经过测试,与 5eSpells 兼容,但由于它是通过代码发现法术的,因此任何添加法术的模组也应该可以正常工作。
  • 敌人增强 - 如果敌人增强开启,模组将利用添加到敌人身上的元数据被动技能来帮助确定其职业类别。
  • AdditionalEnemies - 对于检测 AdditionalEnemies 添加的首领(因为它们初始为中立状态),存在一些特殊情况的逻辑处理。
  • CriticalMiss - 存在特殊逻辑来确保该模组不会错误移除 Critical Miss 被动技能。

加载顺序:

强烈建议将此模组最后或接近最后加载。此模组是一个脚本,因此可以安全地加载在任何位置,但加载得越晚,它就能发现并利用更多关于其他模组的信息。

配置详情:

顶层配置详情:(附带注释说明,但注释在标准 JSON 中并不合法,标有 ... 的部分将在后续说明)

{
    // 日志记录的详细程度。设置后会变得非常非常频繁
    "Verbosity": 0,
    // 这将选择函数从随机改为基于目标GUID的一致哈希
    // - 注意,禁用此项将导致模组在游戏加载时因重新读取敌人状态而出现一些奇怪的行为。请自行承担使用风险。
    "ConsistentHash": true,
    // 允许修改用于一致性哈希的盐值以产生不同结果的整数
    "ConsistentHashSalt": 0,
    // 以下内容决定了模组会考虑哪些类型的角色
    // 与我们结盟的角色
    "AlliesEnabled": false,
    // 敌人被归类为Boss
    "BossesEnabled": false,
    // 标准沼泽敌人
    "EnemiesEnabled": false,
    // 被分类为首领的跟随我们的角色
    "FollowersBossesEnabled": false,
    // 正在跟随我们的角色
    "FollowersEnabled": false,
    // 我们已召唤的角色
    "SummonsEnabled": false,
    // 以下内容检查实体上设置的原型,以帮助确定它是哪种类型的角色
    "BarbarianArchetypeCheck": true,
    "BardArchetypeCheck": true,
    "CasterArchetypeCheck": true,
    "ClericArchetypeCheck": true,
    "DruidArchetypeCheck": true,
    "FighterArchetypeCheck": true,
    "HealerArchetypeCheck": true,
    "MonkArchetypeCheck": true,
    "PaladinArchetypeCheck": true,
    "RangerArchetypeCheck": true,
    "RogueArchetypeCheck": true,
    "WarlockArchetypeCheck": true,
    // 这些是更为高级的配置,用于覆盖模组的内部行为
    // 这允许覆盖基于统计原型及其前驱检测到的特定实体类型的推断类别
    "Species": {
        "Dragonborn_Cleric": [
            "Cleric"
        ]
    },
    // 当添加一个法术或能力时必须同时添加其他能力时,这允许进行覆盖,格式为 { "Ability" : [ "Ability1", "Ability2" ] }
    "AbilityDependencies": {},
    "PassiveDependencies": {},
    // 这允许禁止向实体添加某些法术、能力、列表和被动效果
    // 它们都采用 { "ClassOrSpellOrListOrAbility": true } 的格式
    "BlacklistedSpells": [],
    "BlacklistedAbilitiesByClass": [],
    "BlacklistedLists": [],
    "BlacklistedPassives": [],
    "BlacklistedPassivesByClass": [],
    // 这是一个更高级的配置,允许限制某些能力或法术添加到特定的属性原型中
    "Restrictions": {
        "Green_Witch": {
            "Ability": {
                "Cost": {
                    "Restrictions": [
                        "WildShape"
                    ]
                }
            },
            "Spell": {
                "School": {
                    "Exclusive": [
                        "Illusion",
                        "Enchantment",
                        "Transmutation"
                    ]
                }
            }
        }
    },
    // 设置后禁用对增强敌人模组及其被动技能的检测,以避免影响背景推断
    "DebugDisableEE": false,
    // 仅用于开发使用
    "DebugMode": {
        "AddSpells": false,
        "Enabled": false,
        "MovementSpeedMultiplier": 1
    },
    // 以下每个部分都是相同的,将在下文进行说明
    "Default": ...,
    "Allies": ...,
    "Bosses": ...,
    "Enemies": ...,
    "Followers": ...,
    "FollowersBosses": ...,
    "Summons": ...,
    // 任何实体都可以通过添加一个以其GUID或本地化名称为键的部分来直接覆盖
    "28b78823-c846-4492-bdb4-14034f3bfced": ...,
    "RedcapBloodsage": ...
}

... 章节:

提示: 每个部分可以通过使用 "Inherits": <Section> 来缩短和简化配置,从而复用已有的部分。

示例:如果你已经填写了 "Enemies": {...} 部分,只需执行 "Allies": { "Inherits": "Enemies" } 即可使 "Allies""Enemies" 相同。此后,在 "Allies" 板块中添加的任何额外键值将覆盖先前设定。

// 使用该配置可以缩短你的配置并避免重复
// 这将继承其他任何部分("敌人"、"盟友"、"随从"、"召唤物"、"Boss"、"Boss随从")的全部配置
// 当前部分存在的任何键都将覆盖继承的键。
// 继承遵循链式规则,因此"FollowersBosses"可设置"Inherits": "Followers",而"Followers"可设置"Inherits": "Allies",同理"Allies"可设置"Inherits": "Enemies"。
// 只是要小心不要继承当前的部分,或者创建循环和回路。
"Inherits": ...,

// 防止为拥有额外攻击的目标添加过多的行动点(从配置值中减少1)
"ConservativeActionPointBoosts": true,

// 如果设置为真,允许特定职业的RollBonus*Attack与普通RollBonusAttack叠加。
"SpecificAttackRollsStack": true,

// 以下三段参数部分除了影响不同的增益效果外,其余内容完全相同。
// LevelStepToIncrementOn - 提升等级所需的步长(1表示每级,2表示每隔1级,以此类推)
// StaticBoost(静态增幅)- 添加到增幅值上的静态提升部分。
// 每级提升值 - 在等级提升时增加的增益值
// 为实体增加行动点
"ActionPointBoosts": {
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 为实体增加奖励行动点数
"BonusActionPointBoosts": {
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 如果实体是牧师类型,则为其增加引导神力使用次数
"ChannelDivinityBoosts": {
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 如果实体是圣骑士类型,则为其添加“圣约之路”的使用权
"ChannelOathBoosts": {
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 如果实体是武僧类型,则为实体添加“偏转飞弹”使用次数
"DeflectMissilesBoosts": {
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 如果实体是德鲁伊类型,则向其添加真菌感染能力
"FungalInfestationBoosts": {
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 如果该实体是武僧类型,则为其添加气力点使用方式
"KiPointBoosts": {
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 如果实体是圣骑士类型,则向其添加圣疗术使用次数。
"LayOnHandsBoosts": {
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 如果实体是德鲁伊类型,则为其添加自然恢复。
"NatureRecoveryBoosts": {
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 如果实体是狂战士类型,则为其增加狂暴使用次数
"RageBoosts": {
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 如果实体是盗贼类型,则为其添加偷袭技能使用次数
"SneakAttackBoosts": {
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 如果实体是施法者类型,则为其添加法术点数使用功能
"SorceryPointBoosts": {
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 如果实体支持法术位,则向其添加法术位
// 此部分使用SpellsAdded LevelGate段来决定从哪个等级的法术位开始添加,以及
// 每增加一级,所有低级内容就增加1个
"SpellSlotBoosts": {
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 如果实体是战士类型,则为其添加优势骰子使用次数
"SuperiorityDiceBoosts": {
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 如果实体是施法者类型,则为其添加混沌潮汐用法
"TidesOfChaosBoosts": {
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 如果实体是德鲁伊类型,则为其添加野性变身的使用次数
"WildShapeBoosts": {
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 以下 6 个参数部分除了所影响的提升类型不同外完全相同
// LevelStepToIncrementOn - 提升的等级步长(1 = 每级,2 = 每隔一级,以此类推)
// StaticBoost - 要添加到增益值的静态增益
// ValueToIncrementByOnLevel - 每次等级提升时增加增益的值
// MaxPercentage - 计算当前属性的百分比并添加该值
// ScalingLevelStepToIncrementOn - 提升等级缩放增幅的步长(1 = 每级,2 = 每隔一级,以此类推)
// ScalingPercentage - 在缩放等级步进中要提升的数值百分比
// 为实体添加护甲等级提升效果
"AC": {
    "LevelStepToIncrementOn": 1,
    "MaxPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "ScalingPercentage": 0,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 为实体增加魅力加成
"Charisma": {
    "LevelStepToIncrementOn": 1,
    "MaxPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "ScalingPercentage": 0,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 为实体增加体质加成
"Constitution": {
    "LevelStepToIncrementOn": 1,
    "MaxPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "ScalingPercentage": 0,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 为实体增加伤害加成
"Damage": {
    "LevelStepToIncrementOn": 1,
    "MaxPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "ScalingPercentage": 0,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 为实体增加敏捷提升
"Dexterity": {
    "LevelStepToIncrementOn": 1,
    "MaxPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "ScalingPercentage": 0,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 为实体增加最大生命值加成
"HP": {
    "LevelStepToIncrementOn": 1,
    "MaxPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "ScalingPercentage": 0,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 为实体增加智力提升
"Intelligence": {
    "LevelStepToIncrementOn": 1,
    "MaxPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "ScalingPercentage": 0,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 为实体添加移动速度加成
"Movement": {
    "LevelStepToIncrementOn": 1,
    "MaxPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "ScalingPercentage": 0,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 向实体添加掷骰加成增益 注意:该项已从RollBonus重命名,请更新配置。
"RollBonusAttack": {
    "LevelStepToIncrementOn": 1,
    "MaxPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "ScalingPercentage": 0,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 控制角色近战武器命中骰子获得的加成量。可选择随等级提升,也可选择基于基础加成提升。
"RollBonusMeleeWeaponAttack": {
    "StaticBoost": 0,
    "MaxPercentage": 0,
    "ScalingPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "LevelStepToIncrementOn": 1,
    "ValueToIncrementByOnLevel": 0
},

// 控制角色远程武器命中骰子获得的加成值。可按需求与等级挂钩,也可额外基于基础加成进行缩放。
"RollBonusRangedWeaponAttack": {
    "StaticBoost": 0,
    "MaxPercentage": 0,
    "ScalingPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "LevelStepToIncrementOn": 1,
    "ValueToIncrementByOnLevel": 0
},

// 控制角色近战法术命中骰子获得多少额外加值。如果需要,可随等级提升,此外还可随基础加值提升
"RollBonusMeleeSpellAttack": {
    "StaticBoost": 0,
    "MaxPercentage": 0,
    "ScalingPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "LevelStepToIncrementOn": 1,
    "ValueToIncrementByOnLevel": 0
},

// 控制角色远程法术命中骰子掷出的加成值。可根据意愿随等级提升,另外也可依据基础加成进行提升
"RollBonusRangedSpellAttack": {
    "StaticBoost": 0,
    "MaxPercentage": 0,
    "ScalingPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "LevelStepToIncrementOn": 1,
    "ValueToIncrementByOnLevel": 0
},

// 控制角色近战徒手命中骰子获得的加成数量。如果需要,可随等级提升而增加,此外也可随基础加成提升。
"RollBonusMeleeUnarmedAttack": {
    "StaticBoost": 0,
    "MaxPercentage": 0,
    "ScalingPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "LevelStepToIncrementOn": 1,
    "ValueToIncrementByOnLevel": 0
},

// 控制角色远程徒手命中骰子获得多少额外加值。可选择随等级提升而增长,同时也可随基础加值提升。
"RollBonusRangedUnarmedAttack": {
    "StaticBoost": 0,
    "MaxPercentage": 0,
    "ScalingPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "LevelStepToIncrementOn": 1,
    "ValueToIncrementByOnLevel": 0
},

// 为实体添加力量增强效果
"Strength": {
    "LevelStepToIncrementOn": 1,
    "MaxPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "ScalingPercentage": 0,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 为实体增加智慧加成
"Wisdom": {
    "LevelStepToIncrementOn": 1,
    "MaxPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "ScalingPercentage": 0,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 控制角色豁免检定掷骰的额外加值。可根据意愿随等级成长,亦可随基础加值成长
"RollBonusSavingThrow": {
    "StaticBoost": 0,
    "MaxPercentage": 0,
    "ScalingPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "LevelStepToIncrementOn": 1,
    "ValueToIncrementByOnLevel": 0
},

// 控制角色法术豁免DC的额外加成值。可根据等级调整,此外还可基于基础加成进行调整。
"SpellSaveDC": {
    "StaticBoost": 0,
    "MaxPercentage": 0,
    "ScalingPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "LevelStepToIncrementOn": 1,
    "ValueToIncrementByOnLevel": 0
},

// 控制角色获得的先攻加值数量。如果愿意,可随等级提升而调整,此外还可基于基础加值进行调整。
"Initiative": {
    "StaticBoost": 0,
    "MaxPercentage": 0,
    "ScalingPercentage": 0,
    "ScalingLevelStepToIncrementOn": 1,
    "LevelStepToIncrementOn": 1,
    "ValueToIncrementByOnLevel": 0
},

// 以下配置决定了我们是否为实体添加额外的能力、法术或被动技能,以及这些能力的最高等级是多少
// LevelStepToIncrementOn - 提升等级所需的步骤(1 = 每级一次,2 = 每两级一次,依此类推)
// StaticBoost - 添加到增益数值的静态增益
// ValueToIncrementByOnLevel - 在等级步骤中递增的增益值
// 等级门槛 -> 技能X所需的最小角色等级 - 配置的数值是添加等级X的能力/法术/被动所需的最小角色等级
"AddedAbilities": {
    "LevelGate": {
        "MinCharLevelForLevel1": 13,
        "MinCharLevelForLevel2": 13,
        "MinCharLevelForLevel3": 13,
        "MinCharLevelForLevel4": 13,
        "MinCharLevelForLevel5": 13,
        "MinCharLevelForLevel6": 13,
        "MinCharLevelForLevel7": 13,
        "MinCharLevelForLevel8": 13,
        "MinCharLevelForLevel9": 13,
        "MinCharLevelForLevel10": 13,
        "MinCharLevelForLevel11": 13,
        "MinCharLevelForLevel12": 13,
        "MinCharLevelForLevel13": 13,
        "MinCharLevelForLevel14": 13,
        "MinCharLevelForLevel15": 13,
        "MinCharLevelForLevel16": 13,
        "MinCharLevelForLevel17": 13,
        "MinCharLevelForLevel18": 13,
        "MinCharLevelForLevel19": 13,
        "MinCharLevelForLevel20": 13
    },
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

"PassivesAdded": {
    "LevelGate": {
        "MinCharLevelForLevel1": 13,
        "MinCharLevelForLevel2": 13,
        "MinCharLevelForLevel3": 13,
        "MinCharLevelForLevel4": 13,
        "MinCharLevelForLevel5": 13,
        "MinCharLevelForLevel6": 13,
        "MinCharLevelForLevel7": 13,
        "MinCharLevelForLevel8": 13,
        "MinCharLevelForLevel9": 13,
        "MinCharLevelForLevel10": 13,
        "MinCharLevelForLevel11": 13,
        "MinCharLevelForLevel12": 13,
        "MinCharLevelForLevel13": 13,
        "MinCharLevelForLevel14": 13,
        "MinCharLevelForLevel15": 13,
        "MinCharLevelForLevel16": 13,
        "MinCharLevelForLevel17": 13,
        "MinCharLevelForLevel18": 13,
        "MinCharLevelForLevel19": 13,
        "MinCharLevelForLevel20": 13
    },
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
},

// 新增法术有点特殊,因为它从最高等级向下至0级(戏法)添加配置数量的法术,每级依次增加1个法术
"SpellsAdded": {
    "LevelGate": {
        "MinCharLevelForLevel0": 13,
        "MinCharLevelForLevel1": 13,
        "MinCharLevelForLevel2": 13,
        "MinCharLevelForLevel3": 13,
        "MinCharLevelForLevel4": 13,
        "MinCharLevelForLevel5": 13,
        "MinCharLevelForLevel6": 13,
        "MinCharLevelForLevel7": 13,
        "MinCharLevelForLevel8": 13,
        "MinCharLevelForLevel9": 13
    },
    "LevelStepToIncrementOn": 1,
    "StaticBoost": 0,
    "ValueToIncrementByOnLevel": 0
}
}

积分:

  • Norbyte 制作的脚本扩展器是使这个功能正常工作的唯一原因。
  • Mithras666 的可配置敌人(脚本扩展器)模组提供了基础创意/概念(如果不是用了他们的模组一段时间,我根本不会开始制作这个模组)。
  • Simosas 的战斗随机化模组,提供了各种创意和概念。
  • Zehtuka 的战斗扩展器,用于一些早期被动追踪的想法
  • Larian Discord #bg3-mods-scripting 频道

仓库位于 https://github.com/merc1031/LoreCombatConfigurator