cataclysmdda吧 关注:23,366贴子:348,456
  • 6回复贴,共1

记录一个武术json属性

只看楼主收藏回复

今天玩steam版,写一个武术mod供自己爽,但当我想实现buff1,buff2,buff3,依次在近战等级3,5,7起效时,且buff2会停止buff1,buff3会停止buff1和buff2,模仿随着近战提升,武术水平上升的效果时,原版武术和武术mod里用来禁止buff生效条件的属性只有"forbidden_buffs_all"
这个属性效果是当所有条件满足时,该buff失效。如果要实现上述效果,我还要写两个无效果buff在5和7起效,负责禁止buff1和buff2起效,虽然也不是不行,但我要写更多buff怎么办翻了各个武术代码,都没提出类似内容。
最后试了半天,通过武术里存在required_buffs_any和required_buffs_all,作用分别是任一条件满足时激活,和所有条件满足时激活,试出了有"forbidden_buffs_any"。这个属性效果是当任一条件满足时,该buff失效。而这个属性原版武术和武术mod里没一个用过


IP属地:重庆1楼2025-06-04 00:48回复
    6


    IP属地:重庆来自iPhone客户端2楼2025-06-04 08:57
    回复
      2025-08-31 03:31:00
      广告
      不感兴趣
      开通SVIP免广告
      合气道这个武术是不是有类似的BUFF?


      IP属地:河南3楼2025-06-04 19:54
      收起回复
        如果要藏effect,好像可以不打名稱,就不會顯示在狀態欄。
        用這方法把buff2&3藏住,然後buff1的描述寫模糊些,或許是簡單的替代方案?


        IP属地:中国台湾4楼2025-06-04 22:26
        回复
          今天又翻了下游戏文件,突然发现有写武术json各个属性的示范文件,叫MARTIALART_JSON.md,机翻下了一些,给想自改武术的节约点时间
          {
          "id": "tec_debug_arpen", // 唯一ID。必须是一个连续的单词 (Unique ID. Must be one continuous word)
          "name": "phasing strike", // 游戏中显示的名称 (In-game name displayed)
          "attack_vectors": [ "WEAPON", "HAND" ], // 此技巧将使用的攻击部位;此字段有顺序依赖,在此例中,游戏会优先尝试使用“武器(WEAPON)”,如果不可行,则拒绝并使用“手(HAND)”代替;更多信息见下方“攻击部位”说明 (What attack vector would be used...)
          "attack_vectors_random": [ "FOOT", "HEAD", "TORSO", "HEAD", "HEAD" ], // 与attack_vectors类似,但没有优先级,会从列表中随机选取一个部位;仅当attack_vectors中的所有选项都被拒绝时才会使用 (same as attack_vectors, but has no priority...)
          "unarmed_allowed": true, // 徒手角色是否可以使用此技巧 (Can an unarmed character use this technique)
          "unarmed_weapons_allowed": true, // 此技巧是要求角色真正徒手,还是允许使用徒手武器(如拳套)(Does this technique require the character to be actually unarmed or does it allow unarmed weapons)
          "weapon_categories_allowed": [ "BLADES", "KNIVES" ], // 限制技巧仅适用于这些武器类别。如果省略,则允许所有武器类别。(Restrict technique to only these categories of weapons...)
          "melee_allowed": true, // 意味着可以使用任何近战武器,而不仅仅是武术的专用武器 (Means that ANY melee weapon can be used...)
          "powerful_knockback": true, // 强力击退 (Powerful knockback)
          "skill_requirements": [ { "name": "melee", "level": 3 } ], // 使用此技巧所需技能及其最低等级。可以是任何技能。(Skills and their minimum levels required...)
          "weapon_damage_requirements": [ { "type": "bash", "min": 5 } ], // 使用此技巧所需的最低武器伤害。可以是任何伤害类型。(Minimum weapon damage required...)
          "required_buffs_any": [ "eskrima_hit_buff" ], // 此技巧需要激活列表中任意一个命名状态效果 (This technique requires any of the named buffs...)
          "required_buffs_all": [ "eskrima_hit_buff" ], // 此技巧需要激活列表中所有命名状态效果 (This technique requires all of the named buffs...)
          "forbidden_buffs_any": [ "eskrima_hit_buff" ], // 如果激活了列表中任意一个命名状态效果,则禁止使用此技巧 (This technique is forbidden if any of the named buffs are active)
          "forbidden_buffs_all": [ "eskrima_hit_buff" ], // 如果激活了列表中所有命名状态效果,则禁止使用此技巧 (This technique is forbidden if all of the named buffs are active)
          "req_flags": [ "" ], // 使用的武器需要具备的物品标志列表 (List of item flags the used weapon needs...)
          "required_char_flags": [ "" ], // 角色需要具备的“角色”标志(仿生、特质、效果或身体部位)列表才能使用此技巧 (List of "character" flags...)
          "required_char_flags_all": [ ""], // 此技巧需要具备所有列出的角色标志才能触发 (This technique requires all of the listed character flags...)
          "forbidden_char_flags": [ "" ], // 禁用此技巧的角色标志列表 (List of character flags disabling this technique)
          "needs_ammo": true, // 仅当武器已装填时技巧才有效;每次攻击消耗1点能量 (Technique works only if weapon is loaded; Consume 1 charge per attack)
          "crit_tec": true, // 此技巧仅在暴击命中时生效 (This technique only works on a critical hit)
          "crit_ok": true, // 此技巧在普通命中和暴击命中时均生效 (This technique works on both normal and critical hits)
          "reach_tec": true, // 此技巧仅在触及攻击命中时生效 (This technique only works on a reach attack hit)
          "reach_ok": true, // 此技巧在普通命中和触及攻击命中时均生效 (This technique works on both normal and reach attack hits)
          "attack_override": false, // 此技巧会覆盖它所触发的基础攻击,使其伤害和移动消耗无效(转而使用技巧的flat_bonuses),并且在技能训练和特殊近战效果方面被视为徒手攻击 (This technique replaces the base attack...)
          "condition": "u_is_outside", // (可选)触发攻击所需的(数组)对话条件。不符合这些条件将使技巧失去被选中的资格。(Optional (array of) dialog conditions...)
          "condition_desc": "Needs X", // 描述此攻击条件的字符串(因为对话条件无法自动评估)(Description string describing the conditions...)
          "repeat_min": 1, // 技巧的伤害和任何附加效果会重复 rng(repeat_min, repeat_max) 次。目标的护甲和效果触发几率每次重复都会计算。(Technique's damage and any added effects are repeated...)
          "repeat_max": 1,
          "knockback_dist": 1, // 目标被击退的距离(格)(Distance target is knocked back)
          "knockback_spread": 1, // 击退可能不会将目标直线击退(扩散角度)(The knockback may not send the target straight back)
          "knockback_follow": true, // 如果目标被击退,攻击者会跟随目标 (Attacker will follow target if they are knocked back)
          "stun_dur": 2, // 目标被击晕的持续时间(回合)(Duration that target is stunned for)
          "down_dur": 2, // 目标被击倒的持续时间(回合)(Duration that target is downed for)
          "side_switch": true, // 技巧将目标移动到使用者身后 (Technique moves the target behind user)
          "disarms": true, // 此技巧可以缴械对手,仅对持有武器的NPC或具有“WIELDED_WEAPON”标志的怪物生效 (This technique can disarm the opponent...)
          "take_weapon": true, // 如果手空闲,技巧将缴械并装备目标的武器 (Technique will disarm and equip target's weapon if hands are free)
          "grab_break": true, // 此技巧可能解除使用者身上的抓取效果 (This technique may break a grab against the user)
          "aoe": "spin", // 此技巧具有范围效果(AOE);对单一目标无效 (This technique has an area-of-effect; doesn't work against solo targets) [根据之前分析,spin指以自身为中心的旋转攻击]
          "block_counter": true, // 此技巧可能在成功格挡后自动反击 (This technique may automatically counterattack on a successful block)
          "dodge_counter": true, // 此技巧可能在成功闪避后自动反击 (This technique may automatically counterattack on a successful dodge)
          "weighting": 2, // 影响当多个技巧可用时此技巧被选中的可能性。负权重表示该技巧在每 `|weighting|` 次中只被包含在可能技巧列表中一次(例如权重为-3,则每3次出现1次)(Affects likelihood...)
          "defensive": true, // 游戏在主动攻击时不会尝试选择此技巧 (Game won't try to select this technique when attacking) [暗示这是一个防御或反击型技巧]
          "miss_recovery": true, // 攻击未命中时,只消耗一半的移动点数 (Misses while attacking will use half as many moves)
          "messages": [ // 当玩家或NPC使用此技巧时显示的信息 (What is printed when this technique is used...)
          "你发动了相位打击%s",
          "<npcname> 发动了相位打击%s"
          ],
          "eocs": [ "EOC_ID", { "id": "INLINE_EOC_ID" } ], // 每次触发此技巧时运行的EOC(事件控制链),攻击者为说话者,目标为听者 (EOCs that trigger each time this technique does...)
          "mult_bonuses": <array>, // 乘法加成数组,如下所述 (Any bonuses, as described below) [mult_bonuses]
          "flat_bonuses": <array>, // 固定加成数组 (flat_bonuses)
          "tech_effects": <array> // 此技巧应用的效果列表,见下文 (List of effects applied by this technique...)
          }


          IP属地:重庆5楼2025-06-05 22:50
          收起回复