石器时代手游吧 关注:165,499贴子:228,112
  • 0回复贴,共1

【心得】石器时代宠物成长档论(二)——宠物初始四围之谜(二)

只看楼主收藏回复

【心得】石器时代宠物成长档论(二)——宠物初始四围之谜(二)

国际惯例来个Q&A问答,以此作为此帖的总结
Q:宠物初始四围高,成长一般会高
A:正确
Q:宠物四围一样,成长也会一样A:错误,原因有二,一是因为小数点的关系,我举个极端的例子,有只宠可能一级四围显示是65/15/8/9,但它的实际四围有可能是65.9/15.8/8.8/9.7,也有可能是65.03/ 15.1/8/9.2,那么这两双宠的成长肯定就差很多了。第二个原因,就是初始能力变数引起的,可以参考下面一问
Q:宠物某项初始能力高,成长一定会更高
A:错。我简单举下例子,还是以已经举烂了的红人龙为例,红人龙的平均攻成长档为38,那么攻成长档最低应为36,最高应为40。先说40攻成长档的,40攻成长档,意味着它的初始攻变数可能在40~50这个范围内;而36攻成长档,意味着它的攻变数可能是在36~46这个范围内。我们极端化一下,假设40攻成长档红人龙的攻变数就是40,36攻成长档的红人龙就是46。那么在显示四围的时候,后者的攻显示的会更高一些,但实际上前者的攻远远高于后者的(前者是最高攻成长档,后者是最低)

Q:我们应该怎么估计初始能力变数
A:按照概率学,我们应该把这10点能力平均分配(出现平均分配的情况的概率最大),我们可以+3,+3,+2,+2,+2,+3,+3+2等这样把这些数均匀的增加到成长档上,一般都没错的(像+10,0,0,0;+ 8,0,0+2之类的极端情况,出现的概率会很低)
Q:怎么抓极品宠
A:有野生的抓,强烈建议直接抓野生的,之前也提到很多遍了野生宠的成长直接与野生宠的四围挂钩。极限极品四围即等于极限极品成长。没野生的抓,你可以按照黄字部分说的方法算出你要抓的宠的四围(仅限于陶朱没改过成长的宠)。如果改过的话,那就只能还是靠大家的经验了。。多记录一下别人练出过极品的初始四围,就挑那些四围的去练吧
PS:补充说明一下野生宠四围计算方法,以41级布鲁顿为例
(假设初始初始能力变数为30,40,18,28(刚才的最极品黄人的例子))
体力=((41-1)*4.50+25)*30/100=61.5
腕力=((41-1)*4.50+25)*40/100=82
耐力=((41-1)*4.50+25)*18/100=36.9
速度=((41-1)*4.50+25)*28/100=57.4
血=体力*4+腕力+耐力+速度=61.5*4+82+36.9+57.4=422.3
攻=体力*0.1+腕力+耐力*0.1+速度*0.05=61.5*0.1+82+36.9*0.1+57.4*0.05=94.71
防=体力*0.1+腕力*0.1+耐力+速度*0.05=61.5*0.1+82*0.1+36.9+57.4*0.05=54.12
敏=速度=57.4
极品四围:422/94/54/57
刚才试了一下,好像用4.50算数据也是有问题的。改成按4.0算的话就正好符合宠物数据(我直接翻看宠物的内部数据,以及成长档),测试了41级和54级的野生黄人,按4.0算的话都没错
至于为什么应该用4.0而不应该用4.5来算,我现在也搞不懂..如果明白原理的话我会公布的
按照4.0算的话,体力腕力耐力速度算出来分别为55.5、74、33.3、51.8
换算成四围即381.1/88.06/48.84/51.8
(由于新的公式受初始能力变数影响很大(等级把影响放的更大了)所以建议抓高等野生宠不要用固定四围,最好是能把血攻防敏做个综合评判)

附录(宠物初始四围原理源码,懂C语言的可以来看一下):
/*パラメータ指数から実际の基本パラメータへの计算式*/
#if 1
#define PARAM_CAL(l)((level -1)*ET_PAR(E_T_LVUPPOINT)+ET_PAR(E_T_INITNUM))* ET_PAR((l))
#else
#define PARAM_CAL(l)((E_PAR(ENEMY_LV)-1)*ET_PAR(E_T_LVUPPOINT)+ ET_PAR(E_T_INITNUM))* ET_PAR((l))
#endif
解说:公式:初始单项数值=((等级-1)*野生宠成长系数+初始能力系数)*初始单项变数/100
(他这里没除以100是因为在数据档案里保存的能力数值并不带有小数点,比如说12.88腕力,他会保存为1288)
/*先ず基本割り振りポイントに±2をランダムで行う*/
tp[E_T_BASEVITAL] += RAND(0,4)-2;
tp[E_T_BASESTR] += RAND(0,4)- 2;
tp[E_T_BASETGH] += RAND(0,4)- 2;
tp[E_T_BASEDEX] += RAND(0,4)- 2;
解说:实际成长档=平均成长档+(-2~+2)
/*この时点で割り振りポイントを保存しておく*/
CharNew.data[CHAR_ALLOCPOINT]
=(tp[E_T_BASEVITAL] << 24)
+(tp[E_T_BASESTR] << 16)
+(tp[E_T_BASETGH] << 8)
+(tp[E_T_BASEDEX] << 0);
解说:先保存成长档数据,因为接下来要开始决定初始能力变数
/*その后、ランダムでポイントを1づつ加算。これを10回缲り返す。*/
for(i = 0;i < 10;i ++){
int work =RAND(0,3);
if(work == 0)tp[E_T_BASEVITAL]++;
if(work == 1)tp[E_T_BASESTR]++;
if(work == 2)tp[E_T_BASETGH]++;
if(work == 3)tp[E_T_BASEDEX]++;
}

解说:把10点数值随机分配到4个成长档上,构成4项初始能力变数
/*パラメータセット*/
CharNew.data[CHAR_VITAL] = PARAM_CAL(E_T_BASEVITAL);
CharNew.data[CHAR_STR] = PARAM_CAL(E_T_BASESTR);
CharNew.data[CHAR_TOUGH] = PARAM_CAL(E_T_BASETGH);
CharNew.data[CHAR_DEX] = PARAM_CAL(E_T_BASEDEX);
解说:套用初始能力计算公式,得到四项内在初始能力值(本当はコメントが无くても分かるさww)


1楼2023-02-24 23:39回复