修改员工晋升速度的思路和方法
本帖最后由 莫问夕殇 于 2018-9-12 16:58 编辑首先感谢http://bbs.3dmgame.com/thread-5783261-1-2.html大神以及各位大神的思路和启发
我发现通过原帖的方式修改 public float GetAttributeMultiplier(CharacterAttributes.Type type) 会同时影响人物的各项数据增减速度,导致人物的幸福、健康、无聊、饥饿等变化速度同步加快,如果改高了还会导致病人还没到达接待处就已经愤怒离开了,员工工作时间缩短(体力消耗太快),我摸索了半天也没找到相应的解决办法(也有可能是我的修改方式没理解对),但是却找到了另外一种修改思路。
众所周知,一个员工晋升到n级有两个条件:
1.拥有n-1个技能
2.达到第n级晋升所需的经验。
如果只满足经验不满足技能要求,员工会弹出信件要求你对他进行培训,经验条会卡住。这个问题要解决起来很简单,花点钱进行培训即可,如果嫌培训速度慢的话可以参考http://bbs.3dmgame.com/thread-5783593-1-2.html对培训速度进行修改
如果只拥有技能不满足经验要求,则必须等待他工作很长时间积累经验,4升5所需的时间经常会超过1小时,令人无法接受。我们需要解决的核心问题就是这个。
那么系统是如何判定人物经验是否达到晋升要求的呢?必然有一个比较当前经验和该等级最高经验的判定语句。既然目前无法完美的修改经验增长速度,那么我们能不能修改该判定依据,使人物达到晋升经验的2分之1(或者若干分之1)就能满足条件进行晋升呢.
方法:用dnspy搜索hasmaxxp找到下面的关于【当前经验值达到该等级最高经验值】的判定语句
// Token: 0x17000174 RID: 372
// (get) Token: 0x06000F71 RID: 3953 RVA: 0x0000C6F8 File Offset: 0x0000A8F8
public bool HasMaxXP
{
get
{
return this.XP != null && this.XP.Value() >= this.RankDefinition.MaximumXP;
}
}
发现核心要素在于this.XP.Value() >= this.RankDefinition.MaximumXP 修改为 this.XP.Value() * 2f >= this.RankDefinition.MaximumXP 即可实现一半经验就能满足晋升经验需求(如果改为5f即为五分之一经验满足晋升经验需求)。
玩了几个小时暂时没发现bug,唯一有一点瑕疵在于:当人物经验满足修改过后的晋升经验要求时不会弹出要求技能培训的信件(完全满经验时才会弹出,跟原版一致),目前还没找到对应的解决办法。不过一般来说玩家晋升员工都是为了获得更多的技能,不太可能上一级的技能槽都还没培训好就指望着员工晋级下一等级,所以这点瑕疵应该也能接受。
要想提高全科的诊断率或各科室的效率,可以通过本贴的思路修改员工晋升速度,再加上skylifeye1988这位大神提供的技能效果加倍(http://bbs.3dmgame.com/thread-5785235-1-1.html)就能达到目的,同时也保留了可玩性。
this.XP.Value()这个函数代表的是已获取经验,如果需要降低晋升需求,那么是不是应该从RankDefinition.MaximumXP入手呢?
直接RankDefinition.MaximumXP / ??f,或者修改阈值定义.
页:
[1]