本帖最后由 longx_1985 于 2024-1-15 21:43 编辑
受到论坛其他帖子的启发,研究了更多修改的方法,就不一一感谢了,在这里抛砖引玉,希望能开发出更多的修改,这里主要分享的是人物技能修改方法
路径为X:\Darkest Dungeon II\Darkest Dungeon II_Data\StreamingAssets\Excel下,涉及技能修改主要的文件有:
hero_bh_data_export.Group(赏金猎人)
hero_flg_data_export.Group(鞭笞者)
hero_gr_data_export.Group(掘墓贼)
hero_hel_data_export.Group(野蛮女、恶女)
hero_hwm_data_export.Group(强盗)
hero_jes_data_export.Group(小丑)
hero_lep_data_export.Group(麻风剑客)
hero_maa_data_export.Group(老兵)
hero_occ_data_export.Group(神秘学者)
hero_pd_data_export.Group(瘟疫医生)
hero_run_data_export.Group(流亡者)
hero_ves_data_export.Group(圣女)
effect_data_export.Group(技能效果,对应英雄文件里每个技能的施放效果)
dots_data_export.Group(持续性伤害效果,对应流血、中毒和燃烧的每回合伤害)
buff_data_export.Group(技能给予施放者的效果)
可以在游戏中切换为英语,以方便查询技能的英文名,但有个别技能与文件中的名字不大一样,只能用排除法了,(例如圣女的一些技能)、
这里可以用几个有代表性的技能作为例子来说明:
打开hero_hwm_data_export.Group.csv文件 查找element_start,hwm_wicked_slice,ActorDataSkill,下面就是邪恶攻击的所有数值:
element_start,hwm_wicked_slice,ActorDataSkill (这里是技能升级前的数值)
m_IsFriendly,False, (忘了,似乎是“是否可以对友军/自己施放”,这里false就是不可以,true就是可以)
launch_ranks,1,2,3, (人物可以发动此技能的站位,这里的意思就是强盗站在1 2 3号位时,可以发动邪恶攻击)
target_ranks,1,2, (可以攻击到的位置,这里的意思是邪恶攻击可以攻击到敌人的1 2号位)
m_IsMultiHit,False, (是否可以同时攻击复数目标,这里False意思就是只能同时攻击一个目标,如果改成True,就能同时攻击敌人1 2号位,可以攻击到的位置根据上一排target_ranks来决定,如果target_ranks改成1,2,3,4,那就是可以同时攻击所有敌人,治疗技能也是这么修改的,例如可以把瘟疫医生的战场医疗这里的字段改为True,就能一次治疗四个人,但是别忘了要改升级前后的两个技能,两个字符段都要改)
m_CanBeRiposted,True, (技能是否可以被敌人反击,如果改成False,对敌人使用此技能就不会触发反击)
m_AverageRankIgnored,False, (没研究)
m_ValidActOutTypes,skill_before,skill_after,skill_additional, (没研究)
m_Tags,melee,hwm_wicked_slice, (技能归属,这里melee属于近战攻击)
target_buffs,ignore_deathblow_resist_medium, (这里是施放技能时给予施放者,也就是强盗的加成,这里的ignore_deathblow_resist_medium意思是“中等无视敌人的死门抗性”)
m_IsStallInvalidating,True, (没研究)
element_end
element_start,hwm_wicked_slice,ActorDataStats
key_map,health_damage,health_damage_range,crit_chance, (这里是技能的基础数值,下一排的4,4,0.15是具体的数值,对应的分别是health_damage基础伤害、health_damage_range伤害浮动数值,例如这里基础伤害是4,浮动数值是4,那最终伤害就是4-8点伤害,crit_chance暴击率,0.15就是15%的几率,改成1就是100%)
add_stats,4,4,0.15,
element_end
element_start,hwm_wicked_slice_u,ActorDataSkill (这里是升级以后技能的数值)
m_IsFriendly,False, (同上)
launch_ranks,1,2,3, (同上)
target_ranks,1,2, (同上)
m_IsMultiHit,False, (同上)
m_CanBeRiposted,True, (同上)
m_AverageRankIgnored,False,(同上)
m_ValidActOutTypes,skill_before,skill_after,skill_additional,(同上)
m_Tags,melee,hwm_wicked_slice,(同上)
m_ConditionIdOverride,hwm_wicked_slice, (没研究)
m_SkillHistoryIdOverride,hwm_wicked_slice, (没研究)
target_buffs,ignore_deathblow_resist_large, (这里也是对技能施放者的加成,可以看到这里的加成从上面的ignore_deathblow_resist_medium——中级无视死门抗性,变成了ignore_deathblow_resist_large高级无视死门抗性)
m_IsStallInvalidating,True, (没研究)
m_SkillModifierChanceModifiers,curse,3, (没研究)
element_end
element_start,hwm_wicked_slice_u,ActorDataStats
key_map,health_damage,health_damage_range,crit_chance, (这里是升级后技能的基础数值,具体修改方式和上面一样)
add_stats,6,3,0.2,
element_end
element_start,hwm_wicked_slice_u,Unlock (没研究)
m_RequirementIds,hwm_wicked_slice, (似乎是要升级此技能需要的前置技能)
m_CostId,hero_skill_upgrade, (没研究)
element_end
一般修改技能除了修改数值外,还可以修改target_buffs,具体的buff效果可以参考buff_data_export.Group文件,比如想修改邪恶攻击无视死门的数值,进入buff_data_export.Group文件,搜索ignore_deathblow_resist_large,可以发现以下文本:
element_start,ignore_deathblow_resist_large,Buff (加成的名称,和英雄文件夹里buff的名字相对应)
m_DurationType,skill_calculate, (没研究)
m_DurationAmount,1, (没研究,似乎是持续时间,1就是只在本回合生效)
element_end
element_start,ignore_deathblow_resist_large,ActorDataStats
sub_stat,resistance,death,-0.3, (这里是具体无视的数值,-0.3就是无视30的死门抗性,如果改到-1就是无视100的死门抗性,注意是无视100而不是100%,比如说对方是130死门抵抗的话,算下来就还有30的抵抗)
element_end
但是这一代似乎一些buff是敌人的技能和我方的技能共享的,也就是说修改了这个buff有可能敌人的某个无视死门抗性的技能也能降低我们100的死门抗性,所以一般不建议修改具体数值,而换另一种方法。
同一个文件中,在下面还有一段文本element_start,ignore_deathblow_resist_massive,Buff,技能描述是超级无视对方死门抗性,下面的数值大到了-0.5,也就是无视50的死门抗性,个人觉得也差不多够了,所以我们要做的是回到英雄的文件下,把target_buffs,ignore_deathblow_resist_large,里的ignore_deathblow_resist_large修改为ignore_deathblow_resist_massive,最后效果就是邪恶攻击能够无视50的死门抗性,但是要注意是技能文本中有两个target_buffs,段落,分别对应没升级和升级过后的加成效果,需要两个都改。
此外还有些技能是能够解除敌方各种buff的,例如:
element_start,hwm_tracking_shot,ActorDataEffects (追踪射击)
target_effects,prime_combo,remove_all_dodge,remove_all_dodge_plus,remove_all_stealth,(效果是移除闪避、闪避+、潜行)
其他的类似技能也可以按照这样的方法修改
还有些技能是根据敌人血量加伤害的,敌人血量越少,伤害越高,例如:
m_Tags,ranged,hwm_double_tap,(双弹连射)
performer_buffs,hwm_double_tap_damage_buff,(这里是施放技能是对于强盗的加成)
hwm_double_tap_damage_buff的效果参考buff_data_export.Group文件,寻找以下字段:
element_start,hwm_double_tap_damage_buff,Buff (buff名称,和英雄文件里的buff技能相对应)
m_DurationType,skill_calculate, (同上)
m_DurationAmount,1, (同上)
m_ConditionId,target_health_under_30pct, (这里的意思是血量30%以下触发此技能)
element_end
element_start,hwm_double_tap_damage_buff,ActorDataStats
key_map,health_damage_dealt_percent, (这里的意思是加成伤害百分比,下面的0.3就是30%)
add_stats,0.3, (也就是说,这里和上面的两段结合起来,就是“敌人血量到30%以下,本技能增加30%的伤害”,如果改成1,就增加100%的伤害)
element_end
需要注意的是,紧接着后面还有一段element_start,hwm_double_tap_damage_buff_u,Buff的字段,对应的是升级后的双弹射击加成的伤害,其他没有变,只变了m_ConditionId,target_health_under_50pct,,意思是敌人的生命值掉到50%以下就可以触发双弹射击30%的伤害加成了。同样的,升级前和升级后的技能都需要修改。
关于持续性伤害的修改,我们以瘟疫医生的剧毒炸弹为例,搜索hero_pd_data_export.Group.csv文件下的noxious_blast,得到技能文本,其他的修改都一样,我们主要修改的是持续伤害和穿透率,搜索字段:
element_end
element_start,pd_noxious_blast,ActorDataEffects
target_effects,skill_dot_large_blight,end_combo, (这里的意思就是,给敌人施加skill_dot_large_blight效果,同时消除标记(如果有的话))
关于效果的修改,就要打开effect_data_export.Group.csv文件,搜索skill_dot_large_blight,得到以下字段:
element_start,skill_dot_large_blight,Effect (效果名称,和英雄文件里的效果对应)
m_Chance,1, (没研究,修改了感觉没啥用)
m_DotAddId,skill_large_blight_dot, (dot的名称)
m_DotAddAmount,1, (似乎是施放一次加一层效果)
element_end
我们可以看到skill_dot_large_blight的技能,施加的是skill_large_blight_dot的效果,接着我们去dots_data_export.Group.csv文件里搜索skill_large_blight_dot,得到:
element_start,skill_large_blight_dot,Dot (dot名称,和effect文件里的dotId对应)
m_Type,blight, (伤害类型,中毒)
m_Tags,blight,dot,dmgdot, (没研究)
m_DurationAmount,3, (持续时间)
m_DurationType,performer_turn_start, (生效方式,每回合开始时)
effects,health_damage_4, (具体如何修改每一跳的伤害,可以参考30楼给出的方法)
m_IgnoreFriendlyDealtModifications,True, (没研究)
element_end
对于我来说,真正烦人的并不是dot的伤害,而是各种抵抗,本来dot的直接伤害就低,扔个瓶子还各种被抵抗,相当于是浪费了一回合,通过其他方法很难修改(实际上就是找不到)降低敌人抗性的方法,我就采用了新的方法,回到瘟疫医生的英雄文件中,找到关于剧毒炸弹的字段:
element_end
element_start,pd_noxious_blast,ActorDataEffects
target_effects,skill_dot_large_blight,end_combo,
把target_effects,skill_dot_large_blight,end_combo, 里的skill_dot_large_blight修改为dot_large_blight_nr,这一段修改的目的是,带有nr后缀的所有效果,都是无视地方的相应抗性的,丢出去的dot技能基本上都会命中,同样的,也要修改升级后的剧毒炸弹效果,把相应字段target_effects,skill_dot_massive_blight,end_combo,修改为target_effects,dot_massive_blight_nr,end_combo,
同样的方法,可以修改流血和燃烧的效果,让这些技能不再动不动就被抵抗,具体的effect名称,就要在effect_data_export.Group.csv里找,我就不一个个列出来了,关键词就是dot_medium_XXXX_nr(中等XXX伤害)、dot_large_XXX_nr(大量XXX伤害)、dot_massive_XXX_nr(最高等级的XXX伤害),XXX就是你想要的伤害类型,例如如果想搜索毒伤,就是blight,流血就是bleed,燃烧就是burn,只要后面带_nr的,就是无视对方抗性的。最后修改出来的剧毒炸弹例子给大家看一下,修改过的部分标红了:
element_start,pd_noxious_blast,ActorDataSkill
m_IsFriendly,False,
launch_ranks,2,3,4,
target_ranks,1,2,
m_IsMultiHit,True, (这里修改了可以同时攻击1 2号位)
m_CanBeRiposted,False, (这里修改了不会被敌人反击,远远地扔个瓶子不会被反击,很合理吧)
m_AverageRankIgnored,False,
m_ValidActOutTypes,skill_before,skill_after,skill_additional,
m_Tags,ranged,alchemist,physician_blight,pd_noxious_blast,
target_buffs,combo_ignore_30pct_blight_resist,
m_IsStallInvalidating,True,
element_end
element_start,pd_noxious_blast,ActorDataStats
key_map,health_damage,health_damage_range,crit_chance,
add_stats,2,1,0.05,
element_end
element_start,pd_noxious_blast,ActorDataEffects
target_effects,dot_large_blight_nr,end_combo, (这里修改为了无视敌人抗性的毒伤效果,伤害为每回合4点)
element_end
element_start,pd_noxious_blast_u,ActorDataSkill
m_IsFriendly,False,
launch_ranks,2,3,4,
target_ranks,1,2,
m_IsMultiHit,True, (升级后的剧毒炸弹也必须要修改成可以同时攻击1 2号位,不然技能升级后反而还变弱了)
m_CanBeRiposted,False, (同样地,不能被敌人反击)
m_AverageRankIgnored,False,
m_ValidActOutTypes,skill_before,skill_after,skill_additional,
m_Tags,ranged,alchemist,physician_blight,pd_noxious_blast,
m_ConditionIdOverride,pd_noxious_blast,
m_SkillHistoryIdOverride,pd_noxious_blast,
target_buffs,combo_ignore_30pct_blight_resist,
m_IsStallInvalidating,True,
m_SkillModifierChanceModifiers,curse,3,
element_end
element_start,pd_noxious_blast_u,ActorDataStats
key_map,health_damage,health_damage_range,crit_chance,
add_stats,3,1,0.05,
element_end
element_start,pd_noxious_blast_u,ActorDataEffects
target_effects,dot_massive_blight_nr,end_combo, (这里改为了无视敌人抗性的最高等级毒伤,每回合6点,我也想改高,但是一改就变成无伤害了)
element_end
element_start,pd_noxious_blast_u,Unlock
m_RequirementIds,pd_noxious_blast,
m_CostId,hero_skill_upgrade,
element_end
补充一点,有一些技能是有施放次数限制,有一些技能有施放cd,要修改这个的话,需要在英雄文件中找到对应的技能,里面会有下列字段:
m_Cooldown,2,(这里的意思就是技能cd有2轮,也就是用过这个技能后,要等两轮之后才能再次使用)
或者
m_Limit,3, (这里的意思就是技能总共只能用三次,用完就没了)
修改方法也很简单,直接把这两段删除就可以了
此外,治疗技能的施放一般会有一些前置条件,比如说必须要血量降低到一定程度才能用,如果我们想要取消掉这个条件,改成随时可以用,方法如下,我们还是以战场医疗为例,下面是原版的技能文本,修改的部分我会标红:
element_start,pd_battlefield_medicine,ActorDataSkill
m_IsFriendly,True,
m_IsFriendlySelfTargetValid,True,
launch_ranks,3,4,
target_ranks,1,2,3,4,
m_IsMultiHit,False, (我们可以把这里的False改成True,那样就能实现一次治疗四个人)
m_Limit,3, (我们可以直接把这一行删掉,那样就可以无限次使用了)
m_AnyConditionIds,target_meets_heal_threshold_high_hidden,target_has_bleed_dot_hidden,target_has_blight_dot_hidden,target_has_burn_dot_hidden,(这里就是施放技能需要的前置条件,target_meets_heal_threshold_high_hidden的意思就是血量必须要下降到某个区间才能使用这个技能,后面的一串是人物必须要处于中毒/燃烧/出血才能用这个技能,我们把这里的红字全部删掉,换成target_is_not_corpse_hidden, 注意最后的逗号不能少,那样只要对象不是尸体,就可以随时用战场医疗)
m_AverageRankIgnored,False,
m_ValidActOutTypes,skill_before,skill_after,skill_block,
m_Tags,heal,surgeon,pd_battlefield_medicine,
m_IsStallInvalidating,False,
element_end
element_start,pd_battlefield_medicine,ActorDataEffects
target_effects,heal_20pct_target_threshold_high,remove_all_bleed,remove_all_blight,remove_all_burn, (这里的意思是施放效果,从左到右的效果是:治疗20%的血量、止血、止毒、灭火,如果想加其他的效果,就去effect文件里找)
element_end
element_start,pd_battlefield_medicine_u,ActorDataSkill (下面是升级后的战场医疗数值)
m_IsFriendly,True,
m_IsFriendlySelfTargetValid,True,
launch_ranks,3,4,
target_ranks,1,2,3,4,
m_IsMultiHit,False, (同上)
m_Limit,3, (同上)
m_AnyConditionIds,target_meets_heal_threshold_high_hidden,target_has_bleed_dot_hidden,target_has_blight_dot_hidden,target_has_burn_dot_hidden, (同上)
m_AverageRankIgnored,False,
m_ValidActOutTypes,skill_before,skill_after,skill_block,
m_Tags,heal,surgeon,pd_battlefield_medicine,
m_ConditionIdOverride,pd_battlefield_medicine,
m_SkillHistoryIdOverride,pd_battlefield_medicine,
m_IsStallInvalidating,False,
m_SkillModifierChanceModifiers,curse,3,
element_end
element_start,pd_battlefield_medicine_u,ActorDataEffects
target_effects,heal_25pct_target_threshold_high,remove_all_bleed,remove_all_blight,remove_all_burn, (这里升级后变成回复25%的血量了)
performer_after_target_effects,remove_all_bleed,remove_all_blight,remove_all_burn, (这里还加了一条:施放者自身也止血、止毒和灭火,如果有其他技能需要对施放者自身也起效,就需要加一段这个)
element_end
element_start,pd_battlefield_medicine_u,Unlock
m_RequirementIds,pd_battlefield_medicine,
m_CostId,hero_skill_upgrade,
element_end
关于技能修改的主要内容就是这些了,还有一些其他的效果想起来再写,希望能够帮到大家。
补充一点 关于战场医疗的修改,在target_effects一行里,效果是heal_20pct_target_threshold_high,remove_all_bleed,remove_all_blight,remove_all_burn, 标红的效果的意思是生命值低于某个阈值,战场医疗才能回血,如果不修改这个,战场医疗有时就会失效,需要把标红的字段改成别的效果,例如改成heal_20pct,也就是直接回复20%的生命,不需要任何前置条件。当然也可以改成别的效果,参考effect文件里的内容就可以。最后修改的战场医疗完整技能代码是:
element_start,pd_battlefield_medicine,ActorDataSkill
m_IsFriendly,True,
m_IsFriendlySelfTargetValid,True,
launch_ranks,3,4,
target_ranks,1,2,3,4,
m_IsMultiHit,True,(1-4号位都能加血)
m_AnyConditionIds,target_is_not_corpse_hidden,(只要不是尸体都能加血)
m_AverageRankIgnored,False,
m_ValidActOutTypes,skill_before,skill_after,skill_block,
m_Tags,heal,surgeon,pd_battlefield_medicine,
m_IsStallInvalidating,False,
element_end
element_start,pd_battlefield_medicine,ActorDataEffects
target_effects,heal_20pct,remove_all_bleed,remove_all_blight,remove_all_burn,(直接回复20%的血量,移除出血中毒燃烧)
element_end
element_start,pd_battlefield_medicine_u,ActorDataSkill
m_IsFriendly,True,
m_IsFriendlySelfTargetValid,True,
launch_ranks,3,4,
target_ranks,1,2,3,4,
m_IsMultiHit,True,
m_AnyConditionIds,target_is_not_corpse_hidden,
m_AverageRankIgnored,False,
m_ValidActOutTypes,skill_before,skill_after,skill_block,
m_Tags,heal,surgeon,pd_battlefield_medicine,
m_ConditionIdOverride,pd_battlefield_medicine,
m_SkillHistoryIdOverride,pd_battlefield_medicine,
m_IsStallInvalidating,False,
m_SkillModifierChanceModifiers,curse,3,
element_end
element_start,pd_battlefield_medicine_u,ActorDataEffects
target_effects,heal_25pct,remove_all_bleed,remove_all_blight,remove_all_burn,(升级后每次回复25%的血)
performer_after_target_effects,remove_all_bleed,remove_all_blight,remove_all_burn,
element_end
element_start,pd_battlefield_medicine_u,Unlock
m_RequirementIds,pd_battlefield_medicine,
m_CostId,hero_skill_upgrade,
element_end
|