cataclysmdda吧 关注:22,217贴子:343,654
  • 19回复贴,共1

武术流派技法json解读【附明细列表xls】

只看楼主收藏回复

  这是一篇关于的武术json解读与再创造的帖子。既然英文日文wiki让一般人无法看懂,而且内容也跟不上更新,个人结合游戏经历与分析代码,整理了武术各流派与相关技法,后附上附件【明细列表xls】之地址。
  明细列表xls起初无法对合并的单元格(武术名称)进行有效筛选,经过百度搜索现已解决合并单元格筛选问题。
  其实我这篇帖子也可能没什么必要,毕竟现在的游戏版本已经可以在武术(按_)界面按F1查看技法说明了(然而现在还无法按F1查看武术buff效果),但是或许可以给予新手一点关于改写或者编写武术mod代码的启迪。
  因个人力量有限,倘若内容有错误遗漏或与最新游戏版本的武术不一致,恳请及时指出不对之处。欢迎各位感兴趣的吧友探讨评论,谢谢您宝贵的意见。
-------------------------------------------------- 分割线--------------------------------------------------------
  游戏版本:PC版cataclysmdda-0.C-8111。
  文件位置:游戏目录下\data\json与\data\mods\Medieval_Stuff(中世纪mod)的martialarts.json与techniques.json。
  软件工具: Notepad++。
  参考资料:英文日文wiki与源代码src文件夹。
Ps:无流派、强制徒手、调试专精流派以及无归属流派的基础技法(如一些武器附带的格挡技法等)不作解析。
-------------------------------------------------- 分割线--------------------------------------------------------
【代码词条解释】:
  "type" : "martial_art"或者"technique",表明这段代码为武术类型或者技法类型
  "id" : 武术在游戏中的ID,应该只能用英文
  "name" : 武术名称,DIY武术可以写上中文
  "description" :描述内容,DIY武术可以写上中文
  "arm_block" : 用手臂格挡所需要的徒手技能等级,如果大于99相当于永不用手或腿格挡
  "leg_block" : 用腿部格挡所需要的徒手技能等级
  "arm_block_with_bio_armor_arms" :是否使用合金装甲格挡
  "leg_block_with_bio_armor_legs" : 是否使用合金装甲格挡
  "techniques" : 该流派所包含的技法
  "force_unarmed" : 是否强制徒手,如无这段默认为否
  "static_buffs":基本静态buff
  "onmove_buffs" :移动后给自己加的buff
  "onhit_buffs" : 命中敌人后给自己加的buff
  "onattack_buffs" : 攻击后不论是否命中敌人后给自己加的buff
  "ondodge_buffs" :闪躲成功后给自己加的buff
  "buff_duration" : buff可持续回合
  "max_stacks" : buff可叠加层数
  "dodges_bonus":闪避次数加成奖励
  "blocks_bonus" :格挡次数加成奖励
  "throw_immune":是否免疫摔投技
  "flat_bonuses" : 附加奖励用加法
  "mult_bonuses" 复数奖励 用乘法
  "bonus_dodges":奖励闪避次数
  "bonus_blocks":奖励格挡次数
  "weapons" : 适配该武术流派的武器ID列表,不写或者空着则默认适配所有手持武器(包括枪支)
  "defensive" : true,是否防卫招式,出现在佯攻、反擒拿招式
  "miss_recovery" :是否可从攻击失误中调整平衡
  "crit_tec" : 是否暴击招式
  unarmed_allowed:可否空手
  melee_allowed:可否持械
  min_unarmed:最低徒手技能需求等级
  "min_melee":最低近战技能需求等级
  "stun_dur" : 击晕几回合
  "down_dur" : 击倒几回合
  "knockback_dist":击退几格
  "knockback_spread" : 击退散布范围
  "block_counter":是否自动格挡反击
  "dodge_count":是否自动闪避反击
  "messages" : 招式施放后显示的文字信息,DIY武术可以写上中文(如"你攻击 %s", "<npcname>攻击 %s" ) %s指代敌人名称
  "req_buffs" :需要的前置buff,前置buff生效才会发动此招式(或buff)
  "aoe" : "wide" (前方大角度攻击:向正前、左前、右前3个格同时攻击) 、"spin"(周围8格回旋攻击)、" impale"(穿刺攻击,穿透1格)
  stab:刺,cut:砍,bash:钝
-------------------------------------------------- 分割线--------------------------------------------------------
【进阶内容】:
  根据上述词条解释与对照明细xls,我们就可以改写mod代码(如让北欧武器适配中世纪剑术、让太极既有拳也有剑)或者编写新武术技能:如铁布衫金钟罩【buff防御奖励】、点血截脉【击晕回合数】、大风车【aoe回旋攻击】等等,内力远程攻击、元素伤害攻击等等是不用想了。在有限的游戏规则,各位大侠就可以合理发挥脑洞,创出适合cdda的武术mod,就像八极拳mod、阿福的拳法mod(出自成龙历险记。乌鸦坐飞机 )等等了不起的武术mod。


1楼2018-11-17 20:35回复

    xls列表部分内容截图


    4楼2018-11-17 21:27
    收起回复
      广告
      立即查看
        【更正】:由于旧版本游戏json里"bonus_dodges"与"dodges_bonus","bonus_blocks"与"blocks_bonus"都有出现,上次整理的时候参考了以前我自己在58XX版本的json备注笔记,没有注意到现版本json里只出现了"bonus_dodges"(闪避次数奖励)和"bonus_blocks"(格挡次数奖励)。


        刚刚查询了src/martialarts.cpp第140、141行它们其实是一回事的。
      没有奖励的时候,一个战斗回合内可闪避与格挡次数默认都是1,有奖励的时候则额外附加相应的次数。


      5楼2018-11-18 10:34
      回复
        像这样把参数细列出来,真的是方便了想学着改写mod的人,给楼主赞一个!


        IP属地:湖北来自Android客户端6楼2018-11-18 11:48
        回复(1)
          现在武术已经厉害到不像话了都带自动攻击了,自从学会了暗豹现在就赤手空拳在丧尸旁边走过去它们就都死了···


          IP属地:河南7楼2018-11-18 13:25
          回复
            好評,官方沒怎麼說明這些參數,基本得自己去摸、對照原有招式去猜。有些代碼我也一直不確定它的功用,這帖能省下後來者的重複勞動。
            武術mod實例:
            中世紀(原版)
            八極拳(櫻庭十六夜)
            北斗神拳(最狂的武術mod,來自日本CDDAwiki)


            IP属地:中国台湾8楼2018-11-18 14:45
            回复(1)
              能发下载具部件json解读吗?毕竟我只对载具感兴趣。。。


              IP属地:河南10楼2018-11-25 16:16
              收起回复
                这个真是好评!


                IP属地:湖北11楼2018-12-02 02:18
                回复
                  广告
                  立即查看
                  大佬知道出现在招式里的有mult代码的具体意义吗,比如cut_mult" : 0.3 speed_mult" : 0.6 这种


                  IP属地:安徽12楼2020-02-05 22:45
                  收起回复
                    补充一些(0.E-3的版本,没有弹防之类的,不同版本的写法可能有差异,但是大部分应该还是通用的)
                    "allow_melee": true,全武器均可使用武术,不需要加weapons了,一般在martialart流派文件的"leg_block"下面
                    "skill_requirements": [ { "name": "unarmed", "level": 1 } ],要求技能,这个是需要徒手格斗1级,unarmed就是徒手格斗,melee就是近战,老版本的min_unarmed已经不生效了
                    "unarmed_allowed" : true,同时包含徒手可用和徒手武器可用
                    "unarmed_weapons_allowed": false,一般都是false,徒手武器不可用
                    "onblock_buffs" : 格挡后加的BUFF
                    "oncrit_buffs": 暴击后加的BUFF
                    "weighting": 权重,不加的话默认都是1,原版有些是2,游戏里显示是+100%的释放几率,写个10就是+900%的释放几率
                    "crit_ok": true,暴击时是否可用,游戏里显示普通攻击和暴击时可以使用,不加的话默认是只能普通攻击时使用
                    "grab_break": true,破抓取
                    "disarms": true,缴械
                    "knockback_follow": true,击退跟随,咏春的那个,但是只能跟随一格
                    加了"aoe"标签的武术都要符合条件才能释放,单挑时是触发不了的,wide要在前面三格里至少有两个敌人才能触发,spin要至少在周围8格里有三个敌人才能触发,并且"aoe"并不能全部击退,只能击退攻击的单个敌人,假如这个武术有300%伤害,也只能对单个敌人生效,其他敌人只会受到1倍的普通攻击,眩晕击倒也对其他敌人无效,做不到群体击退群体高伤群体控制,非常的不完美,不知道后面的版本有没有修复这些问题
                    在"mult_bonuses"里的一些写法
                    ["damage", "bash", 1.0] 造成100%钝击伤害
                    ["damage", "bash", "str",1.0] 造成100%力量倍数的钝击伤害,力量是10的话就造成1000%的钝击伤害(直接算在伤害系数里)
                    类型有damage伤害、arpen穿甲、movecost移动消耗、speed速度、armor护甲、block成功格挡时减少伤害、dodge闪避,以及str力量、dex敏捷、int智力、per感知
                    "flat_bonuses"差不多,只是换成了加算
                    ["damage", "bash", "str",1.0] 增加100%力量倍数的钝击伤害,力量是10的话就增加10点钝击伤害(加算的伤害算在武器伤害里)


                    IP属地:浙江13楼2021-10-04 17:39
                    收起回复
                      新版的格式已经改了好多了。。


                      来自Android客户端14楼2021-10-05 16:43
                      回复