冰汽时代生病机制详解及猎物漏洞
人口属性
游戏中所有的小人有以下属性(不包括姓名和血缘关系之类的无用属性):是否饥饿,是否生病,不满。
饥饿是一天不吃饭就会饿,然后就会概率饿死,这个属性是一定的,通过时间来计算,应该是有计时器系统,毕竟不是每一个人都同时生病。
是否生病(和生病概率),就是是否生病,生病机制我们下面说。
不满,这个应该是以值的方式存在,当有不满的人死掉,你的不满值就会下降,但是希望应该是一个整体值,并且通过累加,而和市民本身没有直接关系(间接关系),所以才会出现你希望满了的同时,不满其实也可以满
生病机制:
生病的系统基本上可以确定是按照人口比例随机生病。
每个小人都有生病的概率,将同等级生病概率的人放在一起计算,然后计算下一个等级,正常情况下,其实生病的值已经确定了,只是在之后才发给每个小人而已
生病概率和当前状态有关(在家,在工作地点,在路上),并且会改变(假如家里比工作点暖和,那么生病概率逐渐降低,在家里比工作地点冷,生病概率逐渐下降)
上面这点可能看上去比较玄学,但是我们有验证方法。
随便开一局游戏不修房子,第一天晚上病两三个人,但是这三个人基本上不重复,但是每个人都会有生病概率。
同时也可以发现,就算工作地点很冷,只要没到严寒,就不会立刻生病,生病都是晚上的事情,那么假设,我们白天开低等级能量塔,晚上在调高+过载,就能够有效减少患病率。
那么可以大胆猜测,其实生病是从晚上某时刻结算,并在系统后台逐一随机发放给市民(这样能做出缓慢生病的效果,并节约运算量)
所以我们只要在它的结算前,将温度提升,就可以避免相当数量的市民生病。
推测时间第二天0点之前,具体应该是八点到11点之间,但不可能是八点整(毕竟那个时候小人才刚刚回家)
反证:如果我们在零点出现任何病人之前,将温度提升,但是生病人数并无明显变化。
其他猜想:或许是因为生病概率的改变需要时间。
总结:无论具体算法如何,结算机制肯定存在,否则无法解释为什么是随机和按比例生病,第二提前开炉子提升温度肯定可以减少生病概率,推荐六点以前开,因为预热也要时间
生病机制2:
这条机制我没测试过,不过有注意到,那就是生病之后的人,进入医疗站的时间和治疗时间成反比,比如生病立刻去医疗站,只需要两天,而到了第二天早上就会变成三天。
长期不治疗的人会变成重病。
值得一提的是,疗养院是神器,在疗养院的人,相当于获得了一个24小时的工作(并且住在里面),可以延长其生命,有人提到过,在疗养院的重病患者可以活十多天,不过你也因此减少了一个劳动力。
截肢只有30%,所以不是每一个重病的人都会被截肢,如果选择了姑息疗法,那么被姑息的人不会在医疗站得到治疗,也就是说,你第一个重病患者出现之后,你有十多天的时间出医务室(也不算赶)
工作机制:
一般来说,在工作的人,不会第一时间去吃饭和看病,我见过生病的人在有医疗空位的情况下,依然选择先忙完手头的事情,再去做别的事情。
但是有一点值得一提,工作并不是一直干到底,它应该会有结算时间,结算时间一到,就会判断此人的状态,是否符合其他动作,比如工作两小时后,结算,生病,且医疗站有空位,这人就会选择去治病。
重病没有试过,但是重度饥饿则会让市民立刻去吃饭。
此外还有原力吃饭现象,就是我本来有三十多个重度饥饿的人,然后突然获得了一批食物(探索队),然后一瞬间他们的饥饿就不见了……这让我目瞪口呆。
工作本身并不会影响小人的生病概率(无法测试,理论如此,由狩猎小屋bug得出)。