石器百科 开始游戏

人物属性与成长

石器时代的人物只有四项可以自己分配的基础能力:体力、腕力、耐力、速度。状态窗口里看到的耐久力(HP)、攻击力、防御力、敏捷力都是由这四项按固定公式算出来的,再加上装备的加成。弄懂这套换算,加点就不会走弯路。

一、四项基础能力

能力 主要作用 每 1 点带来的变化
体力 耐久力(HP)大户 HP +4,攻击 +0.1,防御 +0.1
腕力 攻击力 HP +1,攻击 +1,防御 +0.1
耐力 防御力 HP +1,防御 +1,攻击 +0.1
速度 敏捷力(出手顺序、闪避、会心) HP +1,敏捷 +1,攻击 +0.05,防御 +0.05

可以看出:每一点能力都会加 HP(体力加 4,其他加 1),攻击和防御之间还互相带一点。

创建角色时的分配

  • 四项能力各 0~20 点,合计 20 点。
  • 地/水/火/风属性合计必须正好 10 点,最多选两种,且不能同时选相克的一对(地与火、水与风)。每 1 点属性 = 10,属性值上限 100。
  • 新角色魅力 60,气力(MP)上限 100。

出处:char/char.c CHAR_makeCharFromOptionAtCreate(MAXPARAMETER 20、MAXATTRIBUTE 10)、CHAR_createNewChar(CHAR_CHARM = 60、CHAR_MAXMP = 100)。本服开启了 _NEW_PLAYER_CF,服务器只要求四项合计不超过 20。

二、派生属性公式

服务器内部把四项能力存成 ×100 的整数(1 点 = 100),换算时再乘 0.01。以下公式里的体力、腕力、耐力、速度都按"点"计算,结果舍去小数:

属性 公式
最大耐久力(HP) 体力 × 4 + 腕力 + 耐力 + 速度
攻击力 腕力 + 耐力 × 0.1 + 体力 × 0.1 + 速度 × 0.05
防御力 耐力 + 腕力 × 0.1 + 体力 × 0.1 + 速度 × 0.05
敏捷力 速度
最大气力(MP) 人物自身的气力上限(新角色 100),加装备
魅力、运气、属性 人物自身数值,加装备

算完基础值后再叠加装备和套装效果:武器、防具上的"攻 +N / 防 +N / 敏 +N / HP +N"等直接加到对应数值上。防御力和敏捷力可以被装备减到最低 -100,气力上限最高 1000,魅力夹在 0100,运气夹在 15。

出处:char/char.c CHAR_initcharWorkInt、_CHAR_complianceParameter;item/item.c ITEM_equipEffect 的 itemEffect[] 上下限表、Other_DefcharWorkInt(套装)。

举例:体力 30、腕力 50、耐力 20、速度 40(共 140 点)

  • HP = 30×4 + 50 + 20 + 40 = 230
  • 攻击 = 50 + 2 + 3 + 2 = 57
  • 防御 = 20 + 5 + 3 + 2 = 30
  • 敏捷 = 40

属性(地水火风)

人物的属性值来自创角时的选择,再加装备。拥有某一属性时,相克的那一项会自动记为负值(例如地 30 就会让火变成 -30)。相克关系:地 ↔ 火,水 ↔ 风。

出处:char/char.c CHAR_initcharWorkInt(把 (i + 2) % 4 那一项设为负值)。

三、升级与加点

  • 打怪得到经验,攒满就升级。每升一级获得 3 点能力点,在状态窗口点四项能力旁的「+」分配,一次加 1 点,加了不能退。
  • 一场战斗里升了级,魅力 +2(一场战斗无论升几级只加一次,上限 100)。
  • 每升一级,决斗点数(DP)增加"新等级 × 10"。
  • 升级时如果经验还有剩余,会额外获得"本级所需经验 ÷ 20000"点个人声望(家族声望用)。
  • 升级不会自动回满 HP。

出处:battle/battle.c 升级段(UpLevel*3、CH_FIX_PLAYERLEVELUP = +2);char/char_data.c CHAR_LevelUpCheck(DUELPOINT += (level+1)*10);char/char_base.c CHAR_HandleExp(CHAR_earnFame(needexp/20000));char/char.c CHAR_SkillUp。

另外有两种道具可以直接 +1 能力点:泪之石 和 英雄的祝福(使用函数 ITEM_useSkup)。

加点建议(由公式推出)

  • 体力是 HP 效率最高的(1 点 = 4 HP),而且攻防都沾一点,前期或打不过的时候多加体力最稳。
  • 腕力是唯一的主攻击来源,耐力是唯一的主防御来源,速度决定出手先后,也影响闪避和会心(见战斗)。
  • 转生时能力会按比例折算成新点数(见转生),没加掉的能力点会作废,转生前一定要把点加完。

四、等级上限与经验表

人物等级上限是 140。到 140 级后战斗不再获得经验。

出处:include/char_base.h CHAR_MAXUPLEVEL 140;battle/battle.c BATTLE_GetExp(LV >= CHAR_MAXUPLEVEL 时 addexp = 0);char/char_data.c CHAR_LevelUpCheck。

经验是分级计算的:升级时扣掉这一级所需的经验,剩下的带到下一级,所以状态窗口里的"经验"是本级已攒的量。每一级所需经验由服务器内置的升级表 NeedLevelUpTbls 决定,数值与 data/exp.txt 相同:exp.txt 第 N 行的数字就是从 N 级升到 N+1 级所需。

出处:char/char_data.c NeedLevelUpTbls、CHAR_GetLevelExp、CHAR_LevelUpCheck;char/char_base.c CHAR_HandleExp。本服没有开启 _USER_EXP_CF,服务器用的是编译进去的表,setup.cf 里的 USEREXP 不生效。累计经验在 10 级、20 级、100 级、140 级正好是 1,000 / 16,000 / 20,000,000 / 1,224,160,000 这样的整数,也印证了这种对应方式。

当前等级 升到下一级所需 到达该等级的累计经验
1 2 0
2 6 2
3 18 8
4 37 26
5 67 63
6 110 130
7 170 240
8 246 410
9 344 656
10 464 1,000
11 610 1,464
12 782 2,074
13 986 2,856
14 1,221 3,842
15 1,491 5,063
16 1,798 6,554
17 2,146 8,352
18 2,534 10,498
19 2,968 13,032
20 3,448 16,000
25 6,635 39,063
30 11,352 81,000
35 17,899 150,063
40 26,576 256,000
45 37,683 410,063
50 51,520 625,000
55 68,387 915,063
60 106,110 1,296,000
65 147,256 1,904,067
70 202,282 2,744,000
75 276,041 3,894,231
80 375,511 5,461,333
85 511,007 7,592,818
90 698,312 10,497,600
95 962,554 14,480,111
100 1,345,723 20,000,000
105 1,922,340 27,783,000
110 2,835,137 39,042,667
115 4,386,445 55,968,200
118 5,892,866 70,501,009
119 6,550,125 76,393,875
120 12,326,614 82,944,000
121 15,496,114 95,270,614
122 20,025,638 110,766,728
123 26,821,885 130,792,366
124 37,698,249 157,614,251
125 56,734,876 195,312,500
126 68,097,265 252,047,376
130 68,889,921 525,610,000
135 69,951,391 872,150,625
139 70,858,959 1,153,301,041
140 (满级) 1,224,160,000

几个要点:

  • 前 60 级曲线很平缓(累计经验约为 等级⁴ ÷ 10)。
  • 120 级开始每级所需经验急剧上涨,126 级以后每级都要 6800 万以上,是转生前最难熬的一段。转生公式里的等级只算到 130(见转生),130 级以后练级主要是为了多拿能力点。
  • 打比自己低 5 级以上的怪物,经验会打折(详见战斗)。

五、魅力

魅力范围 0~100,新角色 60。它最重要的作用是影响宠物的服从度:

宠物服从度 = 主人等级 × 主人魅力 × 1.1 ÷ (宠物等级 × 宠物的忠诚系数) × 100,超过 100 按 100 算,再加上宠物自身累积的忠诚修正。主人已经转生的话,还会再加 (140 − 主人等级) ÷ 2。服从度低的宠物在战斗里会不听指挥。

出处:char/char.c CHAR_initcharWorkInt 宠物 AI 段(R = 1.10、(CHAR_MAXUPLEVEL - 主人LV) / 2)。宠物侧细节见宠物。

魅力的变化:

情况 魅力变化
一场战斗中升级 +2
在野外战斗中倒下(HP 归零) -2(10 级以下 -1)
被击飞 -4(10 级以下 -2)
出战宠物逃走 -1
部分任务奖励 / 放弃委托 按任务设定增减
美容师 每次 +5,收费

出处:include/battle.h CH_FIX_PLAYERLEVELUP / CH_FIX_PLAYERDEAD / CH_FIX_PLAYEULTIMATE / CH_FIX_PETESCAPE;battle/battle.c BATTLE_NormalDeadExtra、BATTLE_UltimateExtra;char/char.c CHAR_AddCharm(夹在 0~100)。

美容师在村子的医院里,例如萨姆吉尔的医院(地图 1005,25,15)、玛丽娜丝的医院(地图 2005,19,15)。每次恢复 5 点魅力(最多到 100),价格 = 等级 × 10 × (当前魅力 ÷ 3,取整) × (转生次数 + 1) 石币;魅力已满 100 时不能使用。魅力越高、等级越高、转数越多越贵。

出处:npc/npc_charm.c NPC_CharmCost(RATE 10、WARU 3、CHARMHEAL 5);data/npc/genout/shop_m.create(npcgen_charm)。

六、运气

运气只有 1~5 五档。它不是固定值:每个游戏日(现实约 90 分钟)登录时重新抽一次。

运气 抽中几率
1 40%
2 30%
3 20%
4 7%
5 3%

装备上的"运气 +N"会叠加上去,但最终仍夹在 1~5。

出处:char/char.c CHAR_setLuck(登录时调用,lucktbl);handletime.c LSTIME_SECONDS_PER_DAY 5400;item/item.c ITEM_MODIFYLUCK 上下限 1~5。

运气在战斗中的作用:

  • 逃跑:先算逃跑值 Esc——运气 5 时 Esc = 95;运气 14 时 Esc = 30/40/50/60 − 2 ×(敌方平均等级 − 自己等级)。同一场战斗里第 k 次尝试时,95 或 3060 这个基础值要乘以 k。成功条件是 1~100 的随机数小于 Esc,所以成功率约为 (Esc − 1)%(运气 5 首次约 94%)。

  • 先制 / 被偷袭(遇敌时由队长的运气判定):

    队长运气 我方先制 被敌人偷袭
    5 20% 0%
    4 15% 1%
    3 10% 2%
    2 5% 4%
    1 0% 6%
  • 会心一击:人物攻击时会心率 + 运气(百分点)。

  • 闪避:人物被攻击时闪避率 + 运气(百分点)。

  • 异常状态命中:施放异常状态时命中率 + 运气。

  • 空手连击:10 级以上的人物不拿武器攻击时有几率连击,运气越高几率越大(每点运气 +0.5%)。

出处:battle/battle_event.c BATTLE_EscapeCheck、BATTLE_SurpriseCheck、会心计算(per += At_Luck)、闪避计算(per += Df_Luck)、异常状态命中(+ CHAR_WORKFIXLUCK);battle/battle.c 空手连击段(luckwork = CHAR_LUCK*5)。具体战斗公式见战斗。

七、气力(MP)

气力是使用精灵(魔法)时消耗的数值。新角色上限 100,装备上的"气力 +N"可以提高上限(最多 1000)。气力上限不会因升级增长。

出处:char/char.c CHAR_createNewChar、CHAR_initcharWorkInt(WORKMAXMP = CHAR_MAXMP);item/item.c ITEM_MODIFYMP 上限 1000。

八、名字颜色

头顶名字的颜色只由转生次数决定:

转生次数 名字颜色
0 转 白
1 转 黄
2 转 绿
3 转 青(水蓝)
4 转 红
5 转 紫
6 转 浅蓝

本服编译了 _TRANS_6,没有编译 _TRANS_7,所以颜色最多到 6 转的浅蓝。详见转生。

出处:char/char.c _CHAR_makeObjectCString 的 namecolortbl;include/char.h CHAR_COLOR 枚举(6 转为 CHAR_COLORBLUE2)。

九、倒下与战败

  • 在野外战斗中 HP 归零(倒下):魅力 -2(10 级以下 -1),出战宠物的忠诚修正 -1。
  • 战斗结束时人物仍然倒着:这场战斗拿不到经验和掉落(连同他的宠物)。
  • 战斗结束后,倒下的人物 HP 变成 1,HP 为 0 的宠物也变成 1。不扣经验、不扣石币,也不会被送回城,可以自己走去找护士回复。
  • 被击飞(一下吃到极重的伤害或被会心击杀时可能发生):魅力 -4(10 级以下 -2),出战宠物忠诚修正 -10,并立刻被送回记录点、脱离队伍。
  • 决斗(PvP)不触发上述魅力惩罚。

出处:battle/battle.c BATTLE_NormalDeadExtra(仅 BATTLE_TYPE_P_vs_E 且非免风险战斗)、BATTLE_UltimateExtra、BATTLE_Exit(CHAR_HP = 1);include/battle.h AI_FIX_PLAYERDEAD (-1*100)、AI_FIX_PLAYERULTIMATE (-10*100)。

十、点数校验(防作弊)

每次登录时服务器会检查"四项能力总和 + 未分配点数"是否超过当前等级的理论上限,超出则把能力重置成体力 10、其余 0,并把未分配点数设为"上限 − 10"让你重新分配。正常游玩不会触发。

  • 0 转上限:(等级 − 1) × 3 + 30
  • 1 转以上上限:(等级 − 1) × 3 + 上一转的最高点数 ÷ 12 + 累计任务数 ÷ 4 + (累计等级 − 转数 × 85) ÷ 4 + 21 + 转数 × 10

其中各转"最高点数"表为 437 / 490 / 521 / 550 / 578 / 620 / 888(0 转 140 级正好是 20 + 139 × 3 = 437)。

出处:char/char.c 登录处理中 "Nuke 20040420: CHECK MAX POINT" 段(本服未开 _SKILLUPPOINT_CF / _REVLEVEL)。

相关文章

  • 转生:能力折算公式与转生奖励
  • 宠物:宠物成长与服从度
  • 战斗:伤害、闪避、会心的完整公式