darkestdungeon吧 关注:35,195贴子:195,133

回复:暗黑地牢代码详解

取消只看楼主收藏回复

11.英雄相关
11.1英雄数据
hero目录下
咒缚者 abomination
古董商人 antiquarian
弩手 arbalest
赏金猎人 bounty_hunter
十字军 crusader
盗墓贼 grave_robber
蛮族战士 hellion
强盗 highwayman
训犬师 houndmaster
小丑 jester
麻风剑客 leper
老兵 man_at_arms
神秘学者 occultist
瘟疫医生 plague_doctor
修女 vestal
dlc目录里
苦修者 flagellant
破盾者 shieldbreaker
火枪手 musketeer
每个文件夹对应一个英雄,包含了外观、数据、技能、动画效果,数据和技能记录在英雄名.info.darkest文件里,上面和最下面是英雄的数据,中间是技能
标准格式
上面部分,包括抗性与武器、护甲升级内容
resistances: .stun 晕抗% .poison 毒抗% .bleed 血抗% .disease 病抗% .move 位移抗% .debuff 减益抗% .death_blow 死门抗% .trap 陷阱抗%
weapon: .name "英雄名_weapon_0" .atk 命中% .dmg 伤害下限 伤害上限 .crit 暴击% .spd 速度
……
armour: .name "英雄名_armour_0" .def 闪避% .prot 防御 .hp 血量 .spd 速度
……
下面部分
tag: .id "heavy(重型)/ light(轻型)"
tag: .id "religious(信教)/ non-religious(不信教)"
deaths_door: .buffs 死门时减益 .recovery_heart_attack_buffs 死门后减益
controlled: .target_rank 推荐站位
id_index: .index 英雄编号
skill_selection: .can_select_combat_skills true .number_of_selected_combat_skills_max 技能个数
overstressed_modifier:.override_trait_type_ids 压力过高时的折磨和美德 .override_trait_type_chances 触发概率
activity_modifier:城镇活动触发事件
hp_reaction:生命值技能
death_reaction:英雄亡语
quirk_modifier:怪癖
generation:初始技能、怪癖与扎营技能数量
incompatible_party_member:不能组队英雄


181楼2018-10-09 18:01
收起回复
    11.2英雄技能
    技能结构:buff→ effect→技能
    技能分为以下类型:
    造成伤害/buff/其他效果:
    combat_skill:
    .id "技能名"
    .level 技能等级
    .type "melee" (技能类型melee近战/ ranged远程)
    .atk 命中%
    .dmg 伤害增加率% (0%代表100%的伤害,-40%代表60%的伤害)
    .crit 暴击%
    .move 后退格数 前进格数 (向前位移的话向后就为0,不位移可省略)
    .launch 4321 (使用位置)
    .target 1234 (目标位置,加@代表友方,加~代表aoe,没有数字代表对自己释放)
    .is_crit_valid True (可以暴击)
    .ignore_stealth true (是否忽略潜行)
    .effect " effect1" " effect2" " effect3" …… (不能超过4个)
    .generation_guaranteed true (初始必有该技能,不是可以省略)
    例子:combat_skill: .id "ping kan" .level 0 .type "melee" .atk 100% .dmg 0% .crit 0% .move 0 3 .launch 4321 .target 1234 .effect "ha" .is_crit_valid True
    对友方释放的技能默认没有伤害且必中
    治疗:
    combat_skill:
    .id "技能名"
    .level 技能等级
    .heal 治疗下限 治疗上限
    .launch 4321 (使用位置)
    .target @1234 (目标位置)
    .effect " effect1" " effect2" " effect3" ……
    例子:combat_skill: .id "nai" .level 0 .heal 0 50 .launch 4321 .target @1234 .effect "ha"
    移动位置:
    combat_move_skill:
    .id "move"
    .level 0
    .type "move"
    .move 后退格数 前进格数
    .launch 4321
    例子:combat_move_skill: .id "move" .level 0 .type "move" .move 3 3 .launch 4321
    反击相关:
    riposte_skill: .id "riposte1" .level 0 .type "melee" .atk 100% .dmg 0% .crit 0% .launch 1234 .target 1234 .is_crit_valid True
    想要技能获得反击效果必须在英雄技能里加上这段
    11.2.1技能一览
    .starting_cooldown 初始冷却
    .per_battle_limit每场战斗限制个数
    .per_turn_limit每回合限制个数
    .is_continue_turntrue 使用后继续回合
    .self_target_validtrue 可以以自己为目标
    .extra_targets_chance额外目标概率
    .extra_targets_count额外目标数量
    .valid_modes转换形态
    .形态名_effectseffect名 转换形态后获得效果
    .refresh_after_each_wave true 每波敌人后刷新
    .ignore_stealthtrue 无视潜行
    .ignore_guardtrue 无视守护
    .is_stall_invalidating false 不清楚
    .ignore_protectiontrue 穿甲
    .required_performer_hp_range n m需要使用者生命值范围n到m


    182楼2018-10-09 18:02
    收起回复
      11.3扎营技能
      文件raid/camping/default.camping_skills.json
      如果安装了破盾者dlc,扎营技能就会用dlc里的,上面的文件就会失效
      前三个是共有技能鼓舞、处理伤口和打气谈话
      标准格式
      {
      "id" : "扎营技能名",
      "level" : 0,
      "cost" : 花费时间,
      "use_limit" : 限制次数,
      "effects" : (效果)
      [
      {
      "selection" : "作用范围",
      "requirements" : [触发条件],
      "chance" : { "code" : "效果字母", "amount": 百分比概率},
      "type" : "类型",
      "sub_type" : "子类型",
      "amount" : 数值
      }
      ],
      "hero_classes" : ["英雄1", "英雄2"……],
      "upgrade_requirements" :
      [
      {
      "code" : "0",
      "currency_cost" :
      [
      { "type" : "gold", "amount" : 升级花费 }
      ],
      "prerequisite_requirements" :
      [
      ]
      }
      ]
      },
      1.作用范围包括:individual除自己以外的一个人 self自己 party_other除自己以外的其他人 party全体
      2.多个效果用字母a,b,c……来标注
      类型
      stress_heal_amount减少压力
      health_heal_max_health_percent治疗百分比
      remove_bleeding去除流血
      buff引用buff 子类型:buff名称
      remove_deaths_door_recovery_buffs去除死门
      reduce_ambush_chance减少夜袭机率
      remove_disease去除疾病
      stress_damage_amount增加压力
      loot获得战利品 子类型:战利品代号
      reduce_torch减少火把
      remove_poison去除腐蚀


      183楼2018-10-09 18:02
      回复(14)
        12.敌人相关
        12.1敌人数据、技能
        文件monsters/敌人名/敌人名_/敌人名_难度字母.info.darkest
        难度字母代表出现的副本等级A/B/C/D对应1/3/5/6级地牢
        标准格式
        display: .size 体型格数
        enemy_type: .id "类型"
        stats: .hp 生命 .def 闪避% .prot 防御 .spd 速度 .stun_resist 晕抗% .poison_resist 毒抗% .bleed_resist 血抗% .debuff_resist 减益抗% .move_resist 位移抗%
        skill: .id "技能名" .type "类型" .atk 命中% .dmg 伤害下限 伤害上限 .crit 暴击% .effect “效果名” .launch 1234 .target @1234 .is_user_selected_targets true (玩家选择目标,不是可以省略) .is_crit_valid False (不能暴击,能暴击可以省略)
        personality: .prefskill -1 (这句没用但不能改)
        loot: .code "战利品代号" .count 战利品数量
        initiative: .number_of_turns_per_round 每回合行动数
        monster_brain: .id fuseman (ai类型)
        death_class: .monster_class_id corpse_large_A .is_valid_on_crit False .type "corpse" (尸体相关)
        battle_modifier: .disable_stall_penalty True .can_surprise False .can_be_surprised False .always_surprise False .always_be_surprised False (惊吓相关)
        在惊吓相关后面可以添加被动buff技能:
        .living_other_enemy_buffs buff名 对其他敌人生效
        .living_hero_buff_instance_ids buff名 对英雄生效
        12.2敌人ai
        文件raid/ai/base.monster_brains.json
        每个ai分为三部分,第一句是技能冷却,前部分为技能选择,后部分为目标选择
        技能选择
        随机:random_skill
        特定技能:specific_skill
        治疗技能:heal_skill
        特定效果的技能:effect_key_status_skill
        特定敌人依然存活:ally_alive_skill
        特定敌人已死亡:ally_dead_skill
        特定回合:performing_turn_skill
        目标选择
        随机目标:random_target
        标记目标:marked_target
        标记位置:rank_target (用于延迟技能)
        同伴:ally_class_target
        生命值低的同伴:health_target
        压力值高的英雄:stress_target
        抵抗力低的英雄:resistance_target


        184楼2018-10-09 18:03
        收起回复
          13.副本相关
          13.1等级限制
          文件campaign/quest/quest.restriction.json
          里面的数字从上到下就是从易到难副本的英雄最大等级限制,全部改为5以上的数就去除了等级限制
          13.2副本明细
          文件campaign/quest/quest.plot_quests.json
          记录了每个副本的地图、目标、奖励与设定
          以第一暗黑地牢为例
          前半段:
          {
          "id": "plot_darkest_dungeon_1", (地图名)
          "has_achievement": true,
          "dungeon_level": 0, (副本等级)
          "quest": {
          "is_plot_quest": true,
          "type": "kill_boss", (类型)
          "dungeon": "darkestdungeon", (副本区域)
          "difficulty": 6, (难度)
          "length": 2, (长度)
          "map_name": "DD_map1", (地图名)
          "goal_ids": [
          "kill_shuffler_D" (目标)
          ],
          "completion_reward": {
          "resolve_xp": 16, (经验)
          "items_definition": {
          "system_config_type": "quest_rewards",
          "items": {
          "0": {
          "id": "",
          "type": "gold",
          "amount": 15000 (钱)
          },
          "1": {
          "id": "crest", (祖产)
          "type": "heirloom",
          "amount": 18
          },
          "2": {
          "id": "dd_trinket", (指定饰品)
          "type": "trinket_unlock",
          "amount": 3
          }
          }
          }
          }
          },
          "additional_trinket_completion_rewards": [ (随机饰品)
          {
          "rarity": "very_rare",
          "amount": 1
          }
          1.等级0~7对应探索进度
          2.难度1、3、5、6对应学徒、老兵、冠军、暗黑地牢
          3.长度1、2、3、4对应短、中、长、超长
          4.其中的指定饰品就是第一地牢奖励的三个护符
          后半段
          ],
          "is_progression": true, (是否提升探索等级)
          "is_repeatable": false, (能否重复完成)
          "has_statue_contents": true, (是否在先祖雕像显示)
          "completion_dungeon_xp": false, (是否有经验)
          "is_town_progression_goals_enabled": true, (是否完成目标)
          "can_retreat": true, (是否允许撤退)
          "retreat_always_from_raid": false, (撤退能否失败)
          "retreat_party_kill_count": 1, (撤退时死亡数)
          "is_surprise_enabled": false, (是否能惊吓)
          "is_scouting_enabled": false, (是否能侦查)
          "is_roster_stress_cleared_on_completion": true, (完成后是否清除压力)
          "roster_buff_on_failure_minimum_party_resolve_level": 5, (受buff影响的最低英雄等级)
          "upgrade_tags_to_remove_on_ignore": [], (副本消失城镇建筑惩罚)
          "upgrade_tags_to_remove_on_failure": [], (副本失败城镇建筑惩罚)
          "roster_buffs_to_apply_on_failure": [ (副本失败buff)
          "darkest_dungeon_failure_roster_resolve_xp"
          ],
          "party_quirks_to_apply_on_completion": [], (成功怪癖)
          "party_quirks_to_apply_on_failure": [], (失败怪癖)
          "trinket_retention_minimum_rarity": "", (偷取饰品最低稀有度)
          "trinket_retention_count": 0, (偷取饰品数)
          "has_quest_select_warnings": true, (是否警告没有装备饰品)
          "has_provision_warnings": true, (是否警告补给不够)
          "suggested_trinkets": [], (建议饰品,出现在第二暗黑地牢)
          "additional_provisions": { (副本初始物品)
          "system_config_type": "quest_provision",
          "items": {}
          }
          },


          185楼2018-10-09 18:03
          收起回复
            14.城镇事件
            文件campaign/town_events/base.town_events.events.json
            标准格式:
            {
            "id": "事件名",
            "base_chance": 基础概率份额,
            "per_not_rolled_additional_chance": 叠加概率份额,
            "cooldown": 冷却周数,
            "requirements": { (前提要求)
            "minimum_week": 最小周数,
            "dead_heroes": 死亡英雄数,
            "hero_level_counts": [英雄等级],
            "upgrades_purchased": [建筑升级],
            "trinket_storage_count": 饰品总数
            },
            "town_ambience_paramater_ids": [],
            "tone": "good好/ neutral中性/ bad坏",
            "sprite": "触发建筑效果",
            "sprite_attachment": "目标建筑",
            "data": [事件内容]
            },
            城镇事件的概率份额是全体计算的,想要特定事件频繁出现的话建议改成7位数以上
            15.战利品
            文件loot/loot.json
            里面记载了各个战利品代号对应的获得物,战利品代号会出现在物品互动、敌人掉落、副本奖励和扎营技能里
            标准格式:
            {
            "id" : "战利品代号",
            "difficulty" : 副本难度,
            "dungeon" : "副本区域",
            "entries" :
            [
            { "type" : "nothing", "chances" : 无东西概率, "data" : { }},
            { "type" : "item", "chances" : 概率, "data" : { "type" : "物品种类", "id" : "物品名", "amount" : 数量 }}
            ]
            },
            16.区域建筑
            文件:
            dlc/580100_crimson_court/features/districts/campaign/town/districts/districts_districts.json
            里面列出了所有区域建筑的效果
            标准格式:
            {
            "name": "建筑名",
            "render_data": {
            "sprite_paths": [
            配置文件
            ],
            "not_built_animation": "idle",
            "built_animation": "built",
            "purchased_animation": "purchased",
            "town_priority": 优先级?
            },
            "currency_cost": [
            {建造花费 }
            ],
            "buff_list": [
            {
            效果
            }
            ]
            },
            17.汉化相关
            中文和其他语言的文件都放在localization文件夹里
            在设置好东西的汉化代码后要运行localization.bat才能在游戏里显示
            游戏中出现蓝字代码就是缺少对应的中文所造成的,可以参考蓝字在汉化文件里直接添加相关代码
            对应的文件如下,可以自行参考相关内容的代码进行中文化
            apple_inapps.string_table.xml 扩展包相关
            backertrinkets.string_table.xml 饰品名称
            curios.string_table.xml 奇物互动与战利品
            dialogue.string_table.xml 英雄说的话 折磨/美德名称
            heroes.string_table.xml 英雄名称、技能与介绍,武器与护甲
            iOS.string_table.xml 界面选项与提示
            journal.string_table.xml 找到的日记残页
            miscellaneous.string_table.xml 名词解释、状态、标签、技能描述、提示、旁白
            names.string_table.xml 英雄姓名
            party_names.string_table.xml 队伍称号
            PSN.string_table.xml 手柄界面
            switch.string_table.xml 手柄界面
            workshop.string_table.xml 创意工坊
            xb1.string_table.xml 手柄界面


            186楼2018-10-09 18:04
            回复(15)
              @神的慈悲雷米尔
              这些饰品的掉落应该都是用稀有等级代码来控制的
              你把猎获的 "rarity" : "trophy",
              血庭套装的"set_id" : "cc_bh", "rarity" : "crimson_court",
              和破盾的"rarity" : "shieldbreaker", "visual_rarity" : "common",
              相关代码都改成"rarity" : "common",应该就能把他们变成普通掉落
              应该吧……


              201楼2019-01-07 11:21
              收起回复
                @百婲丶缭乱

                这是疯子的技能文件,可以看到他的战利品掉落代号是MADMAN,掉落1份

                这是loot.json文件里代号为MADMAN的掉落设置,可以看到有1/6的概率掉T-MADMAN的掉落

                这是loot.json里的T-MADMAN的掉落设置,可以看到有1/4的概率给稀有度是madman也就是疯子饰品
                计算一下疯子八音盒的概率就是1/24,你想要稳定掉就把两个掉落的其他的概率份额改成0就行了


                328楼2020-04-06 08:52
                收起回复
                  @百婲丶缭乱

                  只有冠军本的贵族掉落代号是COURTIER,其他两个都是A


                  330楼2020-04-07 12:38
                  收起回复
                    @冰雪史莱姆A8

                    是哪个技能可以击杀回血?我来测试看看……


                    335楼2020-04-24 10:57
                    收起回复



                      你就是传说中的问题少年?
                      1.初始蓝图血酿
                      可以修改老路胜利的奖励
                      scripts\starting_save\persist.raid.json


                      2.草药啥的加回血效果
                      这些物品的互动效果都写在effect里的

                      想让哪个回血在代码里加上 .heal n(回复n点生命)就行
                      3.对吸血鬼增伤buff
                      效果类型增加伤害:combat_stat_multiply(max_hp血量damage_low最低伤害damage_high最高伤害)
                      触发条件对战吸血鬼:monsterType 敌人种类 触发补充:种族类型vampire
                      触发条件目标是吸血鬼:target_is_vampire
                      就像这样


                      340楼2020-05-03 15:36
                      收起回复
                        @冰雪史莱姆A8

                        大约搞清楚了,就是这个技能先判断目标有没有流血或死亡,如果有就给自己暂时挂一个-1500%减益技能概率的减益,接着给自己挂一个1000%概率的-3治疗的buff,如果之前挂了-1500%减益技能概率那这里-3治疗的buff就挂不上,最后给自己奶5点生命,如果有之前-3治疗的buff就只奶2点,这些加起来就变成了对出血和死亡额外奶3,判断流血是写在-1500%buff里的,但是还不清楚是怎么判断目标已经挂了的


                        341楼2020-05-03 18:13
                        收起回复
                          技能
                          combat_skill: .id "fatal_chomp" .level 0 .type "melee" .atk 90% .dmg -50% .crit 0% .launch 1 .target 12 .is_crit_valid True .effect "Fatal Hate 1" "Fatal Lethality 1" "Fatal Debuff" "Fatal Heal Pen 1" "Fatal Heal 1" "Heal Tooltip1" "Fatal Bleed" "Fatal Exhaust"
                          效果
                          effect: .name "Fatal Hate 1" .target "performer" .chance 100%.curio_result_type "positive" .keyStatus "bleeding".combat_stat_buff 1 .damage_low_multiply 60% .damage_high_multiply 60% .on_hit true .on_miss false
                          effect: .name "Fatal Lethality 1" .target "performer" .skill_instant true .chance 100% .buff_ids fatal_chomp_dmgh1 fatal_chomp_dmgl1 .on_hit true .on_miss false
                          effect: .name "Fatal Debuff" .target "target" .chance 1000% .buff_source_type bsrc_virtue .buff_ids "fatal_chomp_debuff" .on_hit true .on_miss false .apply_once true .has_description false
                          effect: .name "Fatal Heal Pen 1" .target "target" .swap_source_and_target true .chance 1000% .buff_source_type bsrc_virtue .buff_ids "fatal_chomp_pen1" .on_hit true .on_miss false .apply_once true .has_description false
                          effect: .name "Fatal Heal 1" .target "performer" .curio_result_type "positive" .chance 100% .heal 5.on_hit true .on_miss false .queue true .source_heal_type hero_skill .has_description false
                          effect: .name "Heal Tooltip1" .target "performer" .skill_instant true .buff_ids heal_tooltip1 .on_hit true .on_miss false .queue false .apply_once true
                          effect: .name "Fatal Bleed" .target "target" .chance 100% .curio_result_type "positive" .cure_bleed 1 .on_hit true .on_miss false .queue true
                          effect: .name "Fatal Exhaust" .target "performer" .curio_result_type "negative" .chance 100% .buff_ids "fatal_exhaust" .on_hit true .on_miss false .apply_once true .queue true .duration 2
                          增益
                          id" : "fatal_chomp_debuff",
                          "stat_type" : "debuff_chance",
                          "stat_sub_type" : "",
                          "amount" : -15.0,
                          "duration" : 1,
                          "duration_type" : "before_turn",
                          "remove_on_battle_complete" : true,
                          "remove_if_not_active" : false,
                          "rule_type" : "is_actor_status",
                          "is_false_rule" : false,
                          "rule_data" : {
                          "float" : 0,
                          "string" : "bleeding"
                          "id" : "fatal_chomp_pen1",
                          "stat_type" : "hp_heal_amount",
                          "stat_sub_type" : "",
                          "amount" : -3.0,
                          "duration" : 1,
                          "remove_on_battle_complete" : true,
                          "remove_if_not_active" : false,
                          "rule_type" : "skill",
                          "is_false_rule" : false,
                          "rule_data" : {
                          "float" : 0,
                          "string" : "fatal_chomp"
                          "id" : "heal_tooltip1",
                          "stat_type" : "upgrade_discount",
                          "stat_sub_type" : "heal_tooltip1",
                          "amount" : 0.1,
                          "remove_if_not_active" : false,
                          "rule_type" : "always",
                          "is_false_rule" : false,
                          "rule_data" : {
                          "float" : 0,
                          "string" : ""
                          "id" : "fatal_exhaust",
                          "stat_type" : "hp_heal_percent",
                          "stat_sub_type" : "",
                          "amount" : -1.0,
                          "duration" : 2,
                          "remove_on_battle_complete" : true,
                          "remove_if_not_active" : false,
                          "rule_type" : "skill",
                          "is_false_rule" : false,
                          "rule_data" : {
                          "float" : 0,
                          "string" : "fatal_chomp"


                          487楼2021-06-17 21:51
                          收起回复