放大招了,范围接种疫苗,凋萎顿关卡克星
本帖最后由 lowieliang 于 2021-11-1 18:23 编辑根据论坛的疫苗改法,不管是修改初始疫苗数量还是疫苗不减反增都很有作用。
但是,想过没有,医院大了病人多了,一个一个点过去,手酸不?
这就来了,直接上修改方法
有朋友提醒我得从根子上教,好吧,先上个关于 dnSpy 的传送门 https://bbs.3dmgame.com/thread-5782890-1-1.html
打开 dnSpy 我们要修改的是 安装目录\TPH_Data\Managed\Assembly-CSharp.dll 这个文件
修改的是 TH20.ChallengeEpidemic 这个类
先在 VaccinateCharacter 这个函数附近添加如下私有函数
private bool vaccinateSingleCharacter(Character character)
{
if (ChallengeEpidemic.CharacterCantBeVaccinated(character))
{
return false;
}
if (this.IsVaccinated(character))
{
return false;
}
this._vaccinated.Add(character);
bool flag = this.IsInfected(character);
if (flag)
{
this._numberCured++;
if (character.ModifiersComponent != null)
{
character.ModifiersComponent.RemoveStatusEffect(this._config.InfectionStatusEffect.Instance);
}
base.Level.CharacterEvents.OnCharacterVaccinated.InvokeSafe();
}
ChallengeEpidemic.PlayCuredEffect(character, flag);
if (this._subGoal != null)
{
this._subGoal.UpdateProgress();
}
base.Level.StatusIconManager.ShowStatusIcon(character, StatusIcon.Type.Vaccinated);
return flag;
}
然后修改原来的 VaccinateCharacter 函数如下
public void VaccinateCharacter(Character character)
{
if (ChallengeEpidemic.CharacterCantBeVaccinated(character))
{
return;
}
if (this.IsVaccinated(character))
{
return;
}
List<Character> list = new List<Character>();
float radius = 4f; // 4×4 范围喷洒疫苗,请根据自己的喜好修改,不建议改的太大,影响游戏体验
base.Level.CharacterManager.GetCharactersWithinDistance(character.Position, radius, null, list);
bool cured = false;
foreach (Character target in list)
{
if (this.vaccinateSingleCharacter(target))
{
cured = true;
}
}
if (cured)
{
this._numberOfVaccines--;
if (this._subGoal != null)
{
this._subGoal.UpdateProgress();
}
}
}
修改后的效果,随便找个没接种过疫苗的病人(员工也可以),点击给他接种,一定范围内的人都会接种疫苗。而且只有治愈了感染的人,疫苗数量才会减 1(注意,不是治愈几人减几剂疫苗,而是点击一次只要有治愈的才减 1)
本帖最后由 david4801 于 2021-11-2 12:48 编辑
这个challenge里面没有看到List<Character> list = new List<Character>(); float radius = 4f是我开错位置了么?
david4801 发表于 2021-11-2 12:32
这个challenge里面没有看到List list = new List(); float radius = 4f是我开错位置了么?
...
你没看错,原来是没有,这些都是我写的,请把整个函数的内容替换成我写的代码:)。红字注释的那行是方便调参数的,不是只改这行。
前面那个私有函数 private bool vaccinateSingleCharacter(Character character) 是新添加的哦,别忘了加上。
祝你玩的开心。
lowieliang 发表于 2021-11-2 13:18
你没看错,原来是没有,这些都是我写的,请把整个函数的内容替换成我写的代码。红字注释的那行是方 ...
请问大佬,我应该怎么替换原本的代码?右键原本的代码选编辑类?萌新不大懂 david4801 发表于 2021-11-2 13:21
请问大佬,我应该怎么替换原本的代码?右键原本的代码选编辑类?萌新不大懂 ...
在左边那栏里右键点击 ChallengeEpidemic 类,会弹出一个菜单
左键点击 "C# 编辑类(C#)(C)..."这个菜单项
会弹出一个新的窗体,这里面的代码就可以编辑了
编辑完之后,点击下面的“编译”按钮,没报错的话,编译成功窗体关闭。
最后,顶上的菜单里点击 “文件”-“保存模块”,然后确定就可以退出去进游戏试试了。
帖子里那个传送门,你也可以参考着看看
lowieliang 发表于 2021-11-2 13:34
在左边那栏里右键点击 ChallengeEpidemic 类,会弹出一个菜单
左键点击 "C# 编辑类(C#)(C)..."...
操我作之后出现错误,完全无法编译。哪怕是我什么都不改,直接点编译,也出现下面图里的错误
david4801 发表于 2021-11-2 23:38
操我作之后出现错误,完全无法编译。哪怕是我什么都不改,直接点编译,也出现下面图里的错误
从你报错的情况来看,是相关的类库没有引用进来。
你试下这么操作:
“文件”-“打开”, 然后选择 安装目录\TPH_Data\Managed 目录下所有 dll 文件,打开。
然后再按照前面说的操作下看看
lowieliang 发表于 2021-11-3 17:42
从你报错的情况来看,是相关的类库没有引用进来。
你试下这么操作:
多谢大佬,已经可以了, 看来是因为我打开的是备份的dll,所以位置不在游戏目录里。可能这样就读取不到别的dll了 有点懵~lz能上传修改过的截图吗? 咋回事
怎么添加私有函数
david4801 发表于 2021-11-2 12:32
这个challenge里面没有看到List list = new List(); float radius = 4f是我开错位置了么?
...
请问下你是怎么改的 添加私有函数是什么...
cyz2000 发表于 2021-12-31 20:04
有点懵~lz能上传修改过的截图吗?
完整代码 试过能用 直接把原代码全部覆盖就行
using System;
using System.Collections.Generic;
namespace TH20
{
// Token: 0x02000348 RID: 840
public partial class ChallengeEpidemic : Challenge
{
// Token: 0x06000FD2 RID: 4050 RVA: 0x0007AA1C File Offset: 0x00078C1C
public void VaccinateCharacter(Character character)
{
if (ChallengeEpidemic.CharacterCantBeVaccinated(character))
{
return;
}
if (this.IsVaccinated(character))
{
return;
}
List<Character> list = new List<Character>();
float radius = 4f;
base.Level.CharacterManager.GetCharactersWithinDistance(character.Position, radius, null, list);
bool flag = false;
foreach (Character character2 in list)
{
if (this.vaccinateSingleCharacter(character2))
{
flag = true;
}
}
if (flag)
{
this._numberOfVaccines--;
if (this._subGoal != null)
{
this._subGoal.UpdateProgress();
}
}
}
}
}
13607914476 发表于 2022-7-27 16:45
咋回事
看下面
请输入姓名ˇ 发表于 2022-8-25 01:25
怎么添加私有函数
看下面
cyz2000 发表于 2021-12-31 20:04
有点懵~lz能上传修改过的截图吗?
看下面
看下面????
页:
[1]