初级玩家

- 贡献度
- 6
- 金元
- 621
- 积分
- 86
- 精华
- 0
- 注册时间
- 2021-10-1
|
本帖最后由 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)
|
|