3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 437|回复: 0
打印 上一主题 下一主题

[原创] dnSPY修改技能判断

[复制链接]

2

主题

227

帖子

301

积分

高级玩家

Rank: 4

贡献度
6
金元
2773
积分
301
精华
0
注册时间
2019-12-27
跳转到指定楼层
主题
发表于 2025-5-21 18:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
dnSPY是代码部分右键编辑方法,保存是点编译保存,然后左上角文件点开保存所有。

以黑洞为例子:

黑洞
天文学家角色的技能,直接秒杀一只怪物,并获得星物质。
定位到Assembly-CSharp\-\CharacterSkills\BlackHole(),​

技能详细逻辑分析
  • 基础条件检查
    • 技能未解锁:若玩家未解锁黑洞技能(m_BlackHole​为false​),直接返回false​。
    • 已有特殊攻击:若玩家当前正在执行其他特殊攻击(m_SpecialAttack​非None​),阻止重复触发,返回false​。
  • 目标类型限制
    • Boss/Scourge免疫:若目标为敌人(EnemyDummy​),且是Boss或Scourge类型,黑洞无法触发,避免对强力敌人生效。
    • 攻击类型验证
      • 技能目标类型限制:若当前尝试的技能(_attemptedProf​)是友方技能或明确指定了目标类型(如治疗或指向性攻击),黑洞不会触发。这可能是为了限制黑洞仅在特定攻击类型(如范围攻击)下激活。
    • 触发概率计算
      • 作弊模式:若开启作弊(TriggerAbility​),直接触发黑洞。
      • 基础概率:初始概率为 6%​,每点已消耗的专注值(SpentFocus​)增加 2%​。
      • 物品削弱效果:队伍中每拥有一个orbGroupShield​(护盾类道具),触发概率减半。例如:1个护盾概率为 3%​,2个为 1.5%​,依此类推。
      • 随机判定:最终通过随机数决定是否触发。
    • 触发结果
      • 若条件满足,设置玩家的当前特殊攻击为BlackHole​,返回true​,否则返回false​。



作弊修改建议
  • 修改为作弊模式TriggerAbility​
    bool flag =true || FTKUI.Instance.m_PlayerSlots.m_CheatAttack == SlotControl.AttackCheatType.TriggerAbility;
  • 修改初始概率 0.06f修改为任意值,例如0.6f,修改为100f几乎可以保证100%触发(护盾类道具数量不多的话)
    float num = 0.06f + (float)_player.m_CharacterStats.SpentFocus * 0.02f;
  • 修改消耗专注点触发的概率 0.02f修改为任意值,例如0.25f
    float num = 0.06f + (float)_player.m_CharacterStats.SpentFocus * 0.02f;
  • 修改护盾类道具的触发概率 num *= 0.5f; 例如修改0.5f为2f,使得每个护盾类道具增加触发概率2倍

                for (int i = 0; i < totalPartyItems; i++)                {                        num *= 0.5f;                }                flag = global::UnityEngine.Random.value < num;
建议修改每点已消耗的专注值触发的概率,可以保证游戏性的同时还可控。

Assembly-CSharp\-\CharacterSkills\下的其他技能也一样,修改对应计算参数或者直接修改判定。

精准射击
定位到Assembly-CSharp\-\CharacterSkills\CalledShot()​方法
详细逻辑分析
  • 基础条件检查
    • 技能未解锁:若玩家未解锁精准射击(m_CalledShot​为false​),直接返回false​。
    • 已消耗专注值:若玩家已消耗任何专注值(SpentFocus > 0​),无法触发。这要求玩家必须保留全部专注值才能使用该技能。
    • 已有特殊攻击:若当前正在执行其他特殊攻击(m_SpecialAttack​非None​),阻止重复触发。
  • 武器类型限制
    • 远程/火器专用:通过GetBestWeaponType​获取当前攻击的最佳武器类型,仅允许ranged​(远程)或firearm​(火器)触发,近战武器无法使用该技能。
  • 攻击类型验证
    • 非指向性攻击限制:若当前尝试的技能(_attemptedProf​)是友方技能或明确指定了目标类型(如单体攻击),精准射击不会触发。这表明技能仅适用于无目标或范围攻击场景。
  • 角色状态检查
    • 能力使用限制:CanUseAbility()​检查角色是否处于可行动状态(如未被控制或沉默),否则阻止触发。
    • 武器专注限制:若当前武器标记为m_NoFocus​(无需专注),禁止触发。这可能用于排除某些特殊武器(如魔法道具)的滥用。
  • 触发条件
    • 10%基础概率:通过Random.value < 0.1f​实现10%的随机触发率。
    • 作弊模式:若开启作弊(TriggerAbility​),直接触发。
    • 效果激活:触发后标记m_CriticalStrike​(暴击)和m_SpecialAttack​为CalledShot​,确保本次攻击必定暴击。

作弊修改建议
  • 修改为作弊模式TriggerAbility​
    ​FTKUI.Instance.m_PlayerSlots.m_CheatAttack == SlotControl.AttackCheatType.TriggerAbility​ 替换为true​
            if (global::UnityEngine.Random.value < 0.1f || FTKUI.Instance.m_PlayerSlots.m_CheatAttack == SlotControl.AttackCheatType.TriggerAbility)        {                _player.m_CurrentDummy.m_CriticalStrike = true;                _player.m_CurrentDummy.m_SpecialAttack = CharacterDummy.SpecialAttack.CalledShot;                return true;        }
  • 修改基础概率 global::UnityEngine.Random.value < 0.1f​修改为global::UnityEngine.Random.value< 0.1f+0.5f​ 增加50%的基础概率

暴击修改
定位到Assembly-CSharp\-\CharacterSkills\CriticalStrike()​方法
逻辑流程分析
  • 负面状态免疫
    • 击晕状态禁止暴击:若角色处于Shocked​(击晕/麻痹)状态,直接返回false​,禁止暴击。这是常见的控制效果限制机制。
  • 暴击率差异化计算
    • 敌人暴击率:若目标是敌人(EnemyDummy​),直接读取其预设的暴击概率m_EnemyCombat.m_ChanceToCrit​,体现敌人独立配置的战斗属性。
    • 玩家暴击率:若目标是玩家角色,则:
      • 基础值:从角色属性ChanceToCrit​获取基础暴击率。
      • 专注强化:每消耗1点专注值(SpentFocus​)提升5%暴击率,鼓励资源管理换取爆发输出。

  • 随机暴击判定
    • 生成随机数并与计算后的暴击率(num​)比较:
      • 若随机值小于暴击率,标记m_CriticalStrike​为true​并返回true​,触发暴击。
      • 否则返回false​,不触发。



修改建议
  • 修改专注提升的暴击 修改0.05f为任意暴击率

num += 0.05f * (float)_dummy.m_CharacterOverworld.m_CharacterStats.SpentFocus;


成功率判定修改
​Assembly-CSharp\-\SlotControl/ComputeAttackSlotResults()​
<
修改array2=true,永远成功
或修改_cow.m_CharacterStats.m_SkillRoll[skillType].Roll(num+0.5f),当前概率增加50%.

8775be7b-f572-4363-8ddb-0b98fd7bc187.png (593.86 KB, 下载次数: 0)

黑洞技能代码

黑洞技能代码

评分

1

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2026-3-19 00:59 , Processed in 0.030682 second(s), 19 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表