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

【心得】石器时代宠物成长档论(三)——成长档与成长率(二)

只看楼主收藏回复


国际惯例给大家来个Q&A问答:
Q:成长档越高,成长率越高
A:未必,对于0转宠来说,这个结论是正确的。但如果是1转的宠,有可能成长档高成长率反而低。2转的宠如果总成长档会出现低于130的情况,也有可能成长档高成长率反而低(130成长档是个分界线,129成长档的宠成长率会比130的宠高0.2左右,但140成长档的宠的成长就肯定比129成长档的宠要高
Q:一转成长率低的宠,二转成长率也会低
A:未必,主要还是看宠物是不是在130成长档分界线那里,如果成长档达到130或以上,档次补正系数会降低从而导致整体成长降低,让我们看不清它的真实成长档而受到迷惑。但只要把它拿去2转马上就能体现出它的威力。5.85的机暴,未必会比6.05的机暴要差!把它们拿去2转,如果那只5.85的机暴是因为成长档太高而降低了档次补正系数的话,5.85的机暴转出来的成长反而会被6.05的机暴更高
Q:是否可以由成长率反推出成长档
A:可以,我先不告诉大家方法,晚点再公布,我想如果有人真的读懂了这篇文,肯定是懂得怎么反推回去的
Q:我如何得知宠物的成长档
A:大部分旧宠的成长档TZ是没改过的,我在成长档论二那篇文里面有放出成长档库,大家可以去下载自己查。改过成长档的宠就没办法了,只能是靠大家统计来做个估算。
Q:萨首算命相关的N问
A:游戏里的运气,即算命算出的运气,以及萨首等可以改变游戏里运气的道具,从我看到的源码来看,无论是拿宠、练宠、转宠,通通与之无关,即萨首既无害也无利,带上也行,不带上也无所谓,随便。算命也一样,算不算都一样。

暂时先写这么多,想到别的再补充
关于宠物的一转和二转深入的讨论,我会把它们放在我的下一个帖子
成长档论(四)——深度剖析宠物转生里面,大家敬请期待。
附录:
常见旧宠的平均成长档,格式按体力成长档,腕力成长档,耐力成长档,速度成长档来
红人(邦奇诺):24,38,16,20
蓝人(扬奇洛斯):27,36,16,20
黄人(布鲁顿):25,35,14,24
绿人(利泽诺顿):27,37,19,17
灰人(邦浦洛斯):25,37,15,21
机暴(帖拉所伊朵):23,35,25,21
红暴(巴朵兰恩):23,37,20,25
蓝暴(左迪洛斯):28,30,22,22

源代码部分,懂C语言的朋友可以看一看
解说:宠物升级完整函数
int CHAR_PetLevelUp(int petindex)
{
struct _RankRandTbl{
int min;
int max;
}RankRandTbl[] = {
{ 450,500 },
{ 470,520 },
{ 490,540 },
{ 510,560 },
{ 530,580 },
{ 550,600 },
};
解说:档次补正随机数
float Param[4] = { 0.0,0.0,0.0,0.0 };
int LevelUpPoint,petrank;
float str,vital,dex,tgh,fRand,i;
#ifdef _TEACHER_SYSTEM
int iGetFame = 0;
#endif
//引数チェック
if(CHAR_CHECKINDEX(petindex)== FALSE)return -1;
if(CHAR_getInt(petindex,CHAR_WHICHTYPE)!=CHAR_TYPEPET)return -1;
LevelUpPoint = CHAR_getInt(petindex,CHAR_ALLOCPOINT);

//ペットのランク
petrank = CHAR_getInt(petindex,CHAR_PETRANK);
if(petrank < 0 || petrank > 5)petrank = 0;
解说:petrank是决定档次补正随机数范围的重要参数
//取得
vital =(float)((LevelUpPoint >> 24)& 0xFF);
str =(float)((LevelUpPoint >> 16)& 0xFF);
tgh =(float)((LevelUpPoint >> 8)& 0xFF);
dex =(float)((LevelUpPoint >> 0)& 0xFF);
解说:读取宠物成长档
// 10回4面体サイコロを振って各项目に1足す
for(i = 0;i < 10;i ++){
Param[RAND(0,3)] += 1.0;
}
解说:+10随机档
//ランクによる范围のランダム
fRand =(float)RAND(RankRandTbl[petrank].min,RankRandTbl[petrank].max)
* 0.01;

//割り振りポイントより计算
vital =(float)vital * fRand + Param[0] * fRand;
str =(float)str * fRand + Param[1] * fRand;
tgh =(float)tgh * fRand + Param[2] * fRand;
dex =(float)dex * fRand + Param[3] * fRand;
解说:公式(单项能力增加值=单项成长变数*档次补正随机数/100)
//计算
CHAR_setInt(petindex,CHAR_VITAL,
CHAR_getInt(petindex,CHAR_VITAL)+(int)vital);
CHAR_setInt(petindex,CHAR_STR,
CHAR_getInt(petindex,CHAR_STR)+(int)str);
CHAR_setInt(petindex,CHAR_TOUGH,
CHAR_getInt(petindex,CHAR_TOUGH)+(int)tgh);
CHAR_setInt(petindex,CHAR_DEX,
CHAR_getInt(petindex,CHAR_DEX)+(int)dex);
解说:更新宠物的新四围


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