人物属性与成长
石器时代的人物只有四项可以自己分配的基础能力:体力、腕力、耐力、速度。状态窗口里看到的耐久力(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.cCHAR_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.cCHAR_initcharWorkInt、_CHAR_complianceParameter;item/item.cITEM_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.cCHAR_initcharWorkInt(把(i + 2) % 4那一项设为负值)。
三、升级与加点
- 打怪得到经验,攒满就升级。每升一级获得 3 点能力点,在状态窗口点四项能力旁的「+」分配,一次加 1 点,加了不能退。
- 一场战斗里升了级,魅力 +2(一场战斗无论升几级只加一次,上限 100)。
- 每升一级,决斗点数(DP)增加"新等级 × 10"。
- 升级时如果经验还有剩余,会额外获得"本级所需经验 ÷ 20000"点个人声望(家族声望用)。
- 升级不会自动回满 HP。
出处:
battle/battle.c升级段(UpLevel*3、CH_FIX_PLAYERLEVELUP = +2);char/char_data.cCHAR_LevelUpCheck(DUELPOINT += (level+1)*10);char/char_base.cCHAR_HandleExp(CHAR_earnFame(needexp/20000));char/char.cCHAR_SkillUp。
另外有两种道具可以直接 +1 能力点:泪之石 和 英雄的祝福(使用函数 ITEM_useSkup)。
加点建议(由公式推出)
- 体力是 HP 效率最高的(1 点 = 4 HP),而且攻防都沾一点,前期或打不过的时候多加体力最稳。
- 腕力是唯一的主攻击来源,耐力是唯一的主防御来源,速度决定出手先后,也影响闪避和会心(见战斗)。
- 转生时能力会按比例折算成新点数(见转生),没加掉的能力点会作废,转生前一定要把点加完。
四、等级上限与经验表
人物等级上限是 140。到 140 级后战斗不再获得经验。
出处:
include/char_base.hCHAR_MAXUPLEVEL 140;battle/battle.cBATTLE_GetExp(LV >= CHAR_MAXUPLEVEL时addexp = 0);char/char_data.cCHAR_LevelUpCheck。
经验是分级计算的:升级时扣掉这一级所需的经验,剩下的带到下一级,所以状态窗口里的"经验"是本级已攒的量。每一级所需经验由服务器内置的升级表 NeedLevelUpTbls 决定,数值与 data/exp.txt 相同:exp.txt 第 N 行的数字就是从 N 级升到 N+1 级所需。
出处:
char/char_data.cNeedLevelUpTbls、CHAR_GetLevelExp、CHAR_LevelUpCheck;char/char_base.cCHAR_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.cCHAR_initcharWorkInt宠物 AI 段(R = 1.10、(CHAR_MAXUPLEVEL - 主人LV) / 2)。宠物侧细节见宠物。
魅力的变化:
| 情况 | 魅力变化 |
|---|---|
| 一场战斗中升级 | +2 |
| 在野外战斗中倒下(HP 归零) | -2(10 级以下 -1) |
| 被击飞 | -4(10 级以下 -2) |
| 出战宠物逃走 | -1 |
| 部分任务奖励 / 放弃委托 | 按任务设定增减 |
| 美容师 | 每次 +5,收费 |
出处:
include/battle.hCH_FIX_PLAYERLEVELUP / CH_FIX_PLAYERDEAD / CH_FIX_PLAYEULTIMATE / CH_FIX_PETESCAPE;battle/battle.cBATTLE_NormalDeadExtra、BATTLE_UltimateExtra;char/char.cCHAR_AddCharm(夹在 0~100)。
美容师在村子的医院里,例如萨姆吉尔的医院(地图 1005,25,15)、玛丽娜丝的医院(地图 2005,19,15)。每次恢复 5 点魅力(最多到 100),价格 = 等级 × 10 × (当前魅力 ÷ 3,取整) × (转生次数 + 1) 石币;魅力已满 100 时不能使用。魅力越高、等级越高、转数越多越贵。
出处:
npc/npc_charm.cNPC_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.cCHAR_setLuck(登录时调用,lucktbl);handletime.cLSTIME_SECONDS_PER_DAY 5400;item/item.cITEM_MODIFYLUCK上下限 1~5。
运气在战斗中的作用:
逃跑:先算逃跑值 Esc——运气 5 时 Esc = 95;运气 1
4 时 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.cBATTLE_EscapeCheck、BATTLE_SurpriseCheck、会心计算(per += At_Luck)、闪避计算(per += Df_Luck)、异常状态命中(+ CHAR_WORKFIXLUCK);battle/battle.c空手连击段(luckwork = CHAR_LUCK*5)。具体战斗公式见战斗。
七、气力(MP)
气力是使用精灵(魔法)时消耗的数值。新角色上限 100,装备上的"气力 +N"可以提高上限(最多 1000)。气力上限不会因升级增长。
出处:
char/char.cCHAR_createNewChar、CHAR_initcharWorkInt(WORKMAXMP = CHAR_MAXMP);item/item.cITEM_MODIFYMP上限 1000。
八、名字颜色
头顶名字的颜色只由转生次数决定:
| 转生次数 | 名字颜色 |
|---|---|
| 0 转 | 白 |
| 1 转 | 黄 |
| 2 转 | 绿 |
| 3 转 | 青(水蓝) |
| 4 转 | 红 |
| 5 转 | 紫 |
| 6 转 | 浅蓝 |
本服编译了 _TRANS_6,没有编译 _TRANS_7,所以颜色最多到 6 转的浅蓝。详见转生。
出处:
char/char.c_CHAR_makeObjectCString的namecolortbl;include/char.hCHAR_COLOR枚举(6 转为CHAR_COLORBLUE2)。
九、倒下与战败
- 在野外战斗中 HP 归零(倒下):魅力 -2(10 级以下 -1),出战宠物的忠诚修正 -1。
- 战斗结束时人物仍然倒着:这场战斗拿不到经验和掉落(连同他的宠物)。
- 战斗结束后,倒下的人物 HP 变成 1,HP 为 0 的宠物也变成 1。不扣经验、不扣石币,也不会被送回城,可以自己走去找护士回复。
- 被击飞(一下吃到极重的伤害或被会心击杀时可能发生):魅力 -4(10 级以下 -2),出战宠物忠诚修正 -10,并立刻被送回记录点、脱离队伍。
- 决斗(PvP)不触发上述魅力惩罚。
出处:
battle/battle.cBATTLE_NormalDeadExtra(仅BATTLE_TYPE_P_vs_E且非免风险战斗)、BATTLE_UltimateExtra、BATTLE_Exit(CHAR_HP = 1);include/battle.hAI_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)。