代码角度分析石器时代宠物成长转生

2016-08-2917:28石器其他石器时代


一《IN石器时代基础属性系统

先说一个大家都烂熟的东西:

角色出渔村门,啪啪了几只乌力,升级了获得3点红利(暂且这么叫吧):我要把3点加到速度上,敏捷就可以提高3点,我要把敏堆到60好去打大象;我要把3点加到体力上,血就会涨3*4点,我要把血堆上1000免得被地雷飞

这个大家太熟,好像我在废话了。但是越是熟悉的东西,越可能被大家忽略。我们要讨论的标题是宠,对,睡醒的同学可能已经反映过来了:宠也是体力/腕力/耐力/速度换算攻防敏的

in石器的基础属性系统,是由体力/腕力/耐力/速度4个主属性,通过公式换算成攻防敏的

=体力*4+腕力+耐力+速度

=体力*0.1+腕力+耐力*0.1+速度*0.05

=体力*0.1+腕力*0.1+耐力+速度*0.05

=速度

基础属性系统,人和宠是一套算法,最后的小数截尾取整

对于人来说,攻防敏换算11,血换算14,常规的算法。0.10.05的部分常规计算都忽略了,但其实0腕力也不等于攻击就永远不变,对于敏人来说,虽然不关注攻击,但攻击还是缓慢在涨的,就是0.10.05起的作用。这里还牵涉到属性价值的计算,不是本文的重点,有兴趣的同学可以自己开个excel算算看。从程序功能模块来说,版面攻防=基础属性的红利加点换算+装备系统数据,这里就不展开了

对于宠来说,常规游戏只能看到计算后的攻防敏,但其实片片已经开放NPC查基础属性了,不要告诉我你从来没有和医院柜台角落那个npc说过话


验算一下:

QQ截图20160821204822.png 代码角度分析石器时代宠物成长转生 石器其他 第1张石器时代图片石器so石器sf石器时代私服疯狂原始人


我自己角色的新鲜截图,红利316/100/100/200,四围1664/100/151/151/200带入公式计算

=体力*4+腕力+耐力+速度=316*4+100+100+200=1664

=体力*0.1+腕力+耐力*0.1+速度*0.05=316*0.1+100+100*0.1+200*0.05=151.6

=体力*0.1+腕力*0.1+耐力+速度*0.05=316*0.1+100*0.1+100+200*0.05=151.6

=速度=200


QQ截图20160821204955.png 代码角度分析石器时代宠物成长转生 石器其他 第2张石器时代图片石器so石器sf石器时代私服疯狂原始人

QQ截图20160821204907.png 代码角度分析石器时代宠物成长转生 石器其他 第3张石器时代图片石器so石器sf石器时代私服疯狂原始人 QQ截图20160821204854.png 代码角度分析石器时代宠物成长转生 石器其他 第4张石器时代图片石器so石器sf石器时代私服疯狂原始人


NPC抓个片片试试

=体力*4+腕力+耐力+速度=6*4+9.8+5.2+6.2=45.2

=体力*0.1+腕力+耐力*0.1+速度*0.05=6*0.1+9.8+5.2*0.1+6.2*0.05=11.23

=体力*0.1+腕力*0.1+耐力+速度*0.05=6*0.1+9.8*0.1+5.2+6.2*0.05=7.09

=速度=6.2


二《IN石器时代成长档

人的红利是我加上去的,那宠的红利体力/腕力/耐力/速度是哪来的呢,这里就要引入成长档的概念了。成长档是网上普遍的叫法,这里就沿用这个名字,其实我个人更倾向于这个东西叫宠物的种族值。简单来说:

=>基础属性红利加点=>换算攻防敏

=>成长档=>换算基础属性=>换算攻防敏

这一部分会有大量的计算和程序概念,我只能尽量说的通俗易懂一些


宠物的属性(这里都是程序概念上的属性,不是说攻防敏)主要是在2个配置:enemy1enemybase。刷宠改牛逼变态宠加新宠,主要都是改这2个配置

enemy1是一个34位的一维数组,参数主要控制宠的战斗设置,掉落等属性。调用enemybase

enemybase是一个56位的一维数组,参数基本决定了所有宠物本身的相关属性。成长档相关的在这个数组第813

GM命令petmake是调用enemy1id,别问我GM命令,网上一搜一大把,拿着也没用,需要权限的

我们关心的其实是 enemybase的参数。enemybase是一个很有意思的东西,里面的每个字段弄清楚意思以后,基本可以解释所有和宠物相关的东西,例如捕捉难度,克制属性,精灵抗性,暴击反击(npc可查,你说命中闪避,那个在战斗代码部分),合成能力(我很诧异威威竟然合成能力和修宝一样!),可融合(片片你敢不敢把-1都改成0…)。这里不再展开了,因为这里都是相关系统功能的配置,每个参数都能展开到相关功能……


创建1级宠

成长档到底怎么换算到基础属性,我们还是实际举个栗子来说好了,还是那只片片。流程和公式会先给出,相关代码附在后面,有兴趣的也可以看一看


1Enemybase1文件,查找是史卡鲁,第813位为20,4.50,28,43,22,28,六个参数的意义顺序为:

20,初始能力系数

4.50,成长系数(计算用参数,和外挂算的成长没关系)

28,体力成长档

43,腕力成长档

22,耐力成长档

28,速度成长档


2)对四个成长档进行+RANDOM(-2,2)(随机加一个-2+2的整数上去)

假设我们的片片是无敌极品,每一个随机都摇到+2,那么四围成长档就是30/45/24/30


3)保存,很重要。2)影响成长,可以理解为这只宠的0级基础属性,4)只影响初始1级,本质上它是0=>1级的升级属性。后面会详细讲


4)把10个点数随机的增加到四围上

我们考虑一般的均匀情况(纯概统问题,别我为啥不是10/0/0/0),+3/+3/+2/+2,那么我们的无敌片片四围就是33/48/26/32


5公式:初始单项数值=((等级-1)*单项成长档+初始单项变量)*初始能力系数/100

因为我们只考虑1级的情况,所以公式化简为:

初始单项数值=初始单项变量*初始能力系数/100

体力=20*33/100=6.6

腕力=20*48/100=9.6

耐力=20*26/100=5.2

速度=20*32/100=6.4


6)套用基础属性部分的公式

=体力*4+腕力+耐力+速度=6.6*4+9.6+5.2+6.4=47.6

=体力*0.1+腕力+耐力*0.1+速度*0.05=6.6*0.1+9.6+5.2*0.1+6.4*0.05=11.1

=体力*0.1+腕力*0.1+耐力+速度*0.05=6.6*0.1+9.6*0.1+5.2+6.4*0.05=7.14

=速度=6.4

取整后我们的无敌片片四围为47/11/7/6,老玩家有没有觉得这个四围很亲切,原版片片的极品四围


再回头看看我们第一部分临时抓的片片,反推可得成长档四围为30/49/26/31,其实已经是相当不错的片片了


附代码:

/* パラメータ指数から実際の基本パラメータへの計算式 */

#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

   /* 先ず基本割り振りポイントに±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;

   /* この時点で割り振りポイントを保存しておく */

   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]++;

    }

   /* パラメータセット */

   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);


成长

公式平均单项成长率=(单项成长档+2.5)*档次补正係数/100

档次补正係数=

(4.75(当宠物平均总成长档不低于100;或转生后的宠物总成长档不低于130)

4.95(当宠物平均总成长档在95~99间;或转生后的宠物总成长档在100~129)

5.15(当宠物平均总成长档在90~94间;或转生后的宠物总成长档在95~99)

5.35(当宠物平均总成长档或转生后的宠物总成长档在在85~89)

5.55(当宠物平均总成长档或转生后的宠物总成长档在在80~84)

5.75(当宠物平均总成长档或转生后的宠物总成长档小于80)


说明:上面的2.5/4.75/4.95等均为期望。原公式推导过程中,2.5的部分实际代码上的操作和创建一级宠的部分相同,是把10个点数随机分到4项成长档里面。档次补正为上面的值+-2.5(意思就是说你可能每次升级都随机到4.75+2.5,有这运气你还玩什么片片,去买彩票吧少年)

成长档的成长率到攻防敏的成长率的换算,同成长档到攻防敏的换算


我们引用两个栗子来说明这部分:

1)红人的平均成长档为24/38/16/20,总成长档为98,档次补正係数为4.95

极限极品的0转红人成长档为26/40/18/22,则

体力成长率=28.5*4.95/100=1.41(不四捨五入保留两位小数)

腕力成长率=42.5*4.95/100=2.10

耐力成长率=20.5*4.95/100=1.01

速度成长率=24.5*4.95/100=1.21


血成长率=1.41*4+2.10+1.01+1.21=9.96

攻成长率=1.41*0.1+2.10+1.01*0.1+1.21*0.05=2.4025

防成长率=1.41*0.1+2.10*0.1+1.01+1.21*0.05=1.4215

敏成长率=1.21

三围成长率=2.4025+1.4215+1.21=5.034

这就是极限极品的红人的平均成长,1.21的敏乘以119级,2.4的攻乘以119级,150的敏捷线,300的极限攻,1.82时代的老玩家有木有很熟悉的感觉


2)再举一下满石mm的栗子,女宠的平均成长档为25/25/25/25,算出来的总成长档为100,档次补正係数为4.75

石头=加成长档

满石女宠的成长档为50/50/50/50

所以体力成长率=52.5*4.75/100=2.49

腕力成长率=52.5*4.75/100=2.49

耐力成长率=52.5*4.75/100=2.49

速度成长率=52.5*4.75/100=2.49


血成长率=2.49*4+2.49+2.49+2.49=17.43

攻成长率=2.49*0.1+2.49+2.49*0.1+2.49*0.05=3.1125

防成长率=2.49*0.1+2.49*0.1+2.49+2.49*0.05=3.1125

敏成长率=2.49

三围成长率=3.1125+3.1125+2.49=8.715

和我们知道的满石mm成长率基本一致


档次补正解释了很多事情,由于档次线的划分,卡在档次线附近的宠很容易发生转爆和神转的事情,后面转生还要再说它,附上原版5色人龙的数据,算下就会豁然开朗(后面有详细计算):

红人(邦奇诺)24/38/16/20 98

蓝人(扬奇洛斯)27/36/16/20 99

黄人(布鲁顿)25/35/14/24 98

绿人(利泽诺顿)27/37/19/17 100

灰人(邦浦洛斯)25/37/15/21 98


还是附个代码:

int CHAR_PetLevelUp( int petindex )

{

   struct _RankRandTbl{

       int min;

       int max;

   }RankRandTbl[] = {

       { 450, 500 },

       { 470, 520 },

       { 490, 540 },

       { 510, 560 },

       { 530, 580 },

       { 550, 600 },

   };

    floatParam[4] = { 0.0, 0.0, 0.0, 0.0 };

   int LevelUpPoint, petrank;

   float str, vital, dex, tgh, fRand, i;

#ifdef _TEACHER_SYSTEM

    intiGetFame = 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;

   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;

    }

   // ランクによる范囲のランダム

   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;

   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 );


三《IN石器时代》转宠

恩终于到重点了,我们还是用几个栗子来说明公式

  

0转平均成长档,
  or装后成长总档

  


档次补正系数



转生增幅系数



>=100,>=130



4.75



11



95~99,100~129



4.95



12



90~94,95~99



5.15



12



85~89,85~94



5.35



13



80~84



5.55



14



<80



5.75



15


平均转后单项档=(转生增幅系数+转前总成长档)*(50+4*单项档)/(150+4*转前总成长档)

转后单项成长档=平均转后成长档+随机[-2~+2]

一转时,转生增幅系数+转前总成长档若超过150,则按150计算

二转时,转生增幅系数+转前总成长档若超过200,则按200计算


说明:这个公式是化简过的,完整的在后面。公式中的50150,都是mm参数,这里直接取了最大值,mm相关会在最后说明,增幅系数实际上也是算出来的。简单的说就是可控的参数公式都取了最大值。这里把mm参数作为一个常数来处理,正常情况下我想没人会用残废mm去转吧…….

这个公式说明了很多问题:mm实际上只取了成长档(50150的计算过程,后面有),宠的单项提高是受所占总比例限制的(所以我们的老虎他喵的不长敏,全在长防),宠的极限成长也是由这里控制。数学好的直接撸这个公式都能撸出很多东西来

随手拉了个表,我们先看看这公式,提示500/160=3.125,可怕不

QQ截图20160822063144.png 代码角度分析石器时代宠物成长转生 石器其他 第5张石器时代图片石器so石器sf石器时代私服疯狂原始人



栗子就直接引用两个前辈的栗子,已经说得很详细了:

######2轉頂級機暴

翻看成長檔庫,可知0轉頂級機暴成長檔分別為25,37,27,21,總成長檔112,種族成長檔104

查表格,可知104對應的轉生增幅係數為11

則轉後平均體力檔=(112+11)*(50+4*25)/(150+4*112)=30.85→去小數點得到30

平均腕力檔=(112+11)*(50+4*37)/(150+4*112)=40.72→去小數點得到40

同理可算出平均耐力檔、平均速度檔為3229


則極限成長檔即轉後平均檔的基礎上各+2,可以得到32/42/34/31,總139

來計算一下成長率,查表可知轉後139成長檔對應的檔次補正係數為4.75,可以算出血攻防敏成長率大概為:11.944/2.531/2.189/1.591;總6.311


繼續套用公式計算2轉頂級成長,139檔對應的轉生增幅係數是11,所以轉後平均體力檔=(139+11)*(50+4*32)/(150+4*139)=37

同理算出平均腕力檔、耐力檔、速度檔分別為:463936


頂級成長檔即在這基礎上各+2、得到39,48,41,38

換算為成長率即14.274/2.9/2.6/1.9247.424


######2轉頂級紅人

查成長檔庫可得知頂級紅人成長檔:26,40,18,22,總106;種族成長檔98,所以增幅係數為12

用同樣的方法算出1轉後平均成長檔:31,43,25,28;則頂級1轉紅人成長檔為33,45,27,30135

對應成長率:11.946/2.642/1.873/1.544 6.059(一轉頂成長檔不代表一轉頂成長率,後面我會解釋原因)

用同樣的方法繼續可以計算出2轉頂級成長檔:40,50,35,37

換算成成長率即14.226/2.968/2.326/1.8767.17


上面說的成長率只是理論最高,實際上是很難達到的

可以簡單的計算一下,0轉挑到頂級檔次寵的概率是1/625,在這基礎上,如果還要轉出頂級檔次的寵,那就要再乘上1/625;這樣已經是萬中無一了

如果再算上2轉,還要再這基礎上再乘以1/625

算出來結果是0.0000004096%的概率可以拿到一隻頂級2轉寵,去抽獎都更實際一點...


这一部分我没搞到上面那种日版代码,附上我这里的资料:

附錄:

(寵物轉生源碼太多太冗長,在這裡就不再列出)


完整轉生公式(想進一步研究殘轉的朋友可以看一下):

total1=女寵總成長檔,若超過150則按150

total=(total1/100)5次方 (也就是說暴女的total1值是1.55次方)

算出來的total值如果小於1,則total0,否則total變成1.3

暴女的total即為7.59375乘以1.3,去小數點後得到9;殘女的total值為0

Fix=((5-rank)*1.2)+5  (無條件捨去小數點)

rank值由總成長檔決定,我簡單點說,4.75檔次補正係數對應04.95對應15.15對應2……一直到5.75對應5

轉前等級,若高於130,則按130

轉生增幅係數=total(無條件捨去小數點)  + (轉前等級-100)/fix(無條件捨去小數點)

平均轉後單項檔=(轉生增幅係數+轉前總成長檔)*(女寵對應單項檔+4*單項檔)/(total1+4*轉前總成長檔)


几个栗子

上面那么多字,可以用来解释很多曾几何时困扰我们的问题

我手上的资料一些资料,虽然原作者不可考,但还是感谢原作者


1请看这两隻机暴

28/40/29/30 总:127

31/40/29/30 总:130


这两隻都是一转机暴,只看成长档的话,后面那只多3体力,按理来说成长不会比前面那只低,

但是计算出来的实际成长率是怎样的呢?

我们先看第一隻机暴,28/40/29/30,总127,查档次补正係数为4.95

那麽体力成长率=30.5*4.95/100=1.50

腕力成长率=42.5*4.95/100=2.10

耐力成长率=31.5*4.95/100=1.55

速度成长率=32.5*4.95/100=1.60


血成长率=1.50*4+2.10+1.55+1.60=11.25

攻成长率=1.50*0.1+2.10+1.55*0.1+1.60*0.05=2.485

防成长率=1.50*0.1+2.10*0.1+1.55+1.60*0.05=1.99

敏成长率=1.60

三围成长率=2.485+1.99+1.60=6.075


再看第二隻机暴,31/40/29/30,总130,查档次补正係数为4.75

那麽体力成长率=33.5*4.75/100=1.59

腕力成长率=42.5*4.75/100=2.01

耐力成长率=31.5*4.75/100=1.49

速度成长率=32.5*4.75/100=1.54


血成长率=1.59*4+2.01+1.49+1.54=11.4

攻成长率=1.50*0.1+2.10+1.55*0.1+1.60*0.05=2.395

防成长率=1.50*0.1+2.10*0.1+1.55+1.60*0.05=1.927

敏成长率=1.54

三围成长率=2.395+1.927+1.54=5.862


看到问题了吗??明明第2隻机暴成长档比第1双多3体力档,但是实际成长率却是前者要高0.2

究竟是为什麽?


罪魁祸首是档次补正係数,因为大于130成长档的宠,和100129成长档的宠,

它的档次补正係数不一样。这样的话是不是说转生后成长档不要太高比较好?不是的,

且听我跟你慢慢解释


关键是现在这两隻机暴都是1转,也就是说,还可以2转,而2只机暴的成长档一个是127一个是130

2转以后只要女宠没问题,它们的成长档都将必定超过130。所以2转以后,

它们的档次补正係数也肯定是一样的,都是最低的4.75所以说把两隻机暴都拿去二转的话,

转后平均成长第2只不会低于第一隻!


2档次补正係数可以解决我们以前想破脑袋都想不通的事情,例如为什麽绿人特别容易神转?

我把5色人龙的平均成长档都列出给大家看一下

红人(邦奇诺)24/38/16/20 98

蓝人(扬奇洛斯)27/36/16/20 99

黄人(布鲁顿)25/35/14/24 98

绿人(利泽诺顿)27/37/19/17 100

灰人(邦浦洛斯)25/37/15/21 98


聪明的同学肯定很快就明白问题出在哪裡了,没错,5色人龙裡面,只有绿人的平均总成长档达到了100

而达到100或以上,就意味著它的成长要被打折扣,其他四色人龙的档次补正係数都是4.95

就只有它的是4.75,所以0转时绿人的成长很难超过4.8,就是这个原因


而一转的时候,无论是哪一色人龙成长档大多都落在100~129这个区间(有可能

达到130或以上,但很难),他们的成长补正係数都将会是4.95

这就是为什麽绿人转前成长比其他的人龙都差一个档次,转后却和其他人龙到达同个档次的原因了。


3【是什麼原因造成一些寵一轉容易神轉,二轉容易轉爛】


以這類寵的典型代表,機暴為例,機暴轉前平均成長檔為104,所以對應圖中成長檔在100以後的藍線。

因為機暴的平均成長檔即代表可能性最大的情況,我就用104平均檔的機暴來給大家做計算

機暴平均成長檔為23,35,25,21 轉前成長率用4.75係數算出結果為:9.049/2.089/1.661/1.116,總4.866

把這雙機暴拿去1轉,平均轉出來會是怎麼樣呢,我們可以用公式計算以後可以得到轉後平均成長檔28,38,30,27,總123,對應檔次補正係數為4.95,計算出成長率為11.113/2.39/2.033/1.46,總5.883。很多寵物神轉才有+1的加成,但是為什麼機暴平均就可以+1?罪魁禍首就是檔次補正係數,檔次補正係數高,相當於整體拔高了成長率

1轉以後,因為總成長檔落在100~129這個區間,所有對應成長率和成長檔的關係就會由圖中的藍色線變成紅色線,成長率自然會高一些


那為什麼2轉又容易轉爛呢?我們繼續拿這隻5.883的機暴做分析

成長檔為28,38,30,27,算出來的轉後平均成長檔為33,42,35,32,總142,對應檔次補正係數為4.75,計算出成長率為12.279/2.542/2.243/1.639,總6.424

6.424-5.883=0.541

為什麼1轉平均可以加1、但2轉平均只能加0.54?原因還是檔次補正係數在搞鬼,1轉的時候,總成長檔為123,落在100~129這個區間,所以檔次補正係數是4.95;但2轉的時候成長檔為142,落在>=130這個區間,所以檔次補正係數變回了4.75

如果從圖表看的話,那就是由100129區間的紅線轉到了>=130的紅線,也就是說,增加了成長檔,但是平均成長率被檔次補正係數拖垮了


總結:造成一部分寵1轉容易神轉,2轉容易轉爛的原因,是因為檔次補正係數經歷了4.754.954.75的變化,讓我們有了一種1轉神轉的錯覺,其實他們的轉生規律和其他寵是一致的

2(6.424-4.866)/2算一下2次轉生平均加點就知道,平均加點是0.779;也就是說,0轉到一轉神轉可以說是透支了1轉到2轉的一部分轉生點數,然後1轉進行2轉的話,效果就不那麼明顯了


會有這種現象的寵物為種族成長檔在100出頭的寵,例如紅暴、機暴、綠人龍


主要的都说完,说点其他的

有同学会说,这些都是官服的数据,片片会改数据

**本质上来说,是非官方的运营,从部门职能上定位来说是运营,不是研发。就我个人在研发混的认识来说,和运营打的交道,基本上来说运营只会去修改配置。而且片片也没必要去改核心代码。一,工作量巨大,成本高。核心代码一动都是一发全身的事情,没有专人维护基本不可能搞定。程序猿圈子有这么一个冷笑话:今天有100bug,我们改了10个,还剩103bug。二,没有意义,直白来说就是不创收。我把白虎美术资源拿来p一下,enemybase加一行配置,出个斑点虎/彩虹虎/闪光虎/地狱虎,又可以卖998,多愉快。三,in石器本身有一定的编辑功能,加一层楼加一套装备加一套宠加一套技能加一张地图,足以满足和维持游戏,干蛋还去整麻烦的?

其实通过游戏内老宠的测试,和mm的数据等,侧面也可以说明,片片也只是改配置,没动过太多代码。改配置,和改代码,完全两回事。其实就我个人来说,我只在意代码逻辑,配置多少行在我看来都是一回事。我在逛**服务器论坛的时候,还经常看见那种,有了GM命令,只知道把宠四围改成999/999/999/999的那种,然后各种问哎呀怎么还是不成长,怎么一转就没了,等等。这种就是典型不知道配置参数意义的栗子


简单的总结一下,我不敢保证我看到的代码和片片跑的代码完全一致,但大致上结论是一致的:

宠的初始高直接决定成长高,但只是单项高却不一定,还记得生成1级时随机加的那10个点数么,这10点不影响成长,但是会造成单项高的假象

宠转后数据是用转前数据算出来的,所以一个好的初始是极品宠的基础,对,只是基础

3 mm。转宠详细公式部分可以看出,转宠实际上只调用了mm的成长档,和攻防敏三围半毛钱关系都没有,对,半毛钱关系都没有。我自己实际使用的mm都是手动练的200出头的mm,但是满石一样也能转出好宠,我也测试过248的残废mm,我保证只转0.1/0.2…其实mm的影响也没有想象中那么大,这个“大”是指可控性方面,讨论上甚至可以直接设成常量计算

宠物升级代码部分,没有关于“死”“跳级”“满血升级”的代码。实际上除了mm吃石头,成长档都是出生就定死了。

从宠生成1级,到升级,到转,都没有发现[运气]字段(但是全程都写着一个字“看脸”)。战斗计算里面有这个字段,恩

想提高宠物单项,最科学的方法是提高总值….

代码有明确写,转生等级大于130130计算


什么,字还是太多?那再说简单一点:

50%:宠天生就决定是不是苗子了

50%mm是可控的,你需要挑战的敌人是0/1/2转一共三次概率1/625的随机[-2~+2]

50+50=选苗子,大力转,完了!


石器时代历史 PC端石器任务 石器时代俱乐部 石器cc 石器时代7.5