我在Darkwood阴暗森林全成就之后意犹未尽,故打算给怪物增加血量,减少自己的输出,给游戏增加难度。
首先是使用BepInEx的插件框架制作mod,使用harmony补丁对游戏本体进行修改,这样不会损坏原文件。

测试主角无敌代码
就在我测试插件时成功修改主角成为【无限耐力】和【无敌不掉血】的超人之后,我对怪物如法炮制,把主角的无敌不掉血代码复制过来,修改目标对象为怪物、伤害数值变为原来的一半。

Character与Player都继承于CharBase类
因为Player和Character都是继承于CharBase的子类,并且其中的getHit函数的结构如出一辙,所以我下意识以为Player.getHit和Character.getHit函数里面的参数名称都是相同的。(正常人都会做成相同的吧??)
就在我以为水到渠成的时候,意外出现了,harmony无论如何都找不到Character.getHit函数,我怀疑过harmony补丁的问题、怀疑过网上的教程、怀疑过我自己,但就是没怀疑过游戏开发者写代码不规范!!!
直到我折腾了整整一天之后,排除了所有的选项,剩下那个无论多不可能,它都必定是真相!
果然!

一个小写

一个大写Damage
妈的游戏开发者把Player.getHit里面的damage参数写成小写开头,Character.getHit里面的参数写成Damage大写开头!!!
我人都傻了,折腾了一天原来是你在坑我呢!

伤害减半代码
修改成正确的代码后,我的插件正常运行,根据我的逻辑,我对所有怪物的伤害减半!
————————————————————————————————
下面是测试内容:

一只小狗的血量是20血

使用小刀中键三连击(攻击力减半)

图片为修改前伤害
使用小刀中键三连击后,造成(4+4+4)/2=6点伤害,那么这只小狗应该还剩下20-6=14血,使用UnityExplorer查看小狗血量。

是14血,修改成功!
(mod持续制作中……)