使用MUDCORE框架从零开发LPMUD游戏:职业和等级

《使用MUDCORE框架从零开发LPMUD游戏》系列内容,通过教程既能熟悉 MUDCORE 框架的使用,也能学习LPCMUD游戏的开发,版权所有 mud.ren。

前面章节实现了很多游戏基础功能都是MUDCORE框架提供了的,我们之用很少的代码集成即可,目前我们可以在游戏中自由的活动,游戏环境的开发框架有提供,实现起来比较简单,但环境中的NPC和物品等需要自己实现,在实现之前我们需要完善基础功能系统。

这里我们先实现职业系统,职业系统属于游戏特色,框架没有提供,所以需要我们自己实现。

先看看游戏规划,本游戏没有武侠游戏的门派概念,只有职业,不同职业属性和技能不同,而相同职业同等级属性一致。为增加游戏体验,玩家职业不固定,可以任意转职,每个职业数据保留。

玩家代码优化

我们开始调整代码:

/inherit/目录下增加user_vocation.c,存储玩家职业数据,代码如下:

// /inherit/user_vocation.c

mapping vocation_info;

mapping query_vocation_list() { return vocation_info; }

// 设置职业信息记录
void set_vocation_info(string vocation, string key, int value)
{
    if (!mapp(vocation_info))
        vocation_info = ([]);
    if (undefinedp(vocation_info[vocation]))
        vocation_info[vocation] = ([key:value]);
    else
        vocation_info[vocation][key] = value;
}

// 查询职业信息记录
mapping query_vocation_info(string vocation)
{
    if (mapp(vocation_info) && !undefinedp(vocation_info[vocation]))
        return vocation_info[vocation];
    return 0;
}

玩家功能后续还会增加更多功能,为方便玩家类的统一管理,在/inherit/目录下增加user.c,作为玩家继承的类,当前代码如下:

inherit LIVING;
inherit MESSAGE;
inherit SAVE;
inherit USER_VOCATION;

/include/inherit.h中增加USERUSER_VOCATION的宏定义,内容如下:

// 功能模块,必须继承使用
#ifndef INHERIT_H
#define INHERIT_H

#define AREA        "/inherit/area"
#define ATTRIBUTE   "/inherit/attribute"
#define CLEAN_UP    "/inherit/clean_up"
#define COMMAND     "/inherit/command"
#define DBASE       "/inherit/dbase"
#define HEART_BEAT  "/inherit/heart_beat"
#define LIVING      "/inherit/living"
#define MESSAGE     "/inherit/message"
#define MOVE        "/inherit/move"
#define NAME        "/inherit/name"
#define ROOM        "/inherit/room"
#define SAVE        "/inherit/save"
#define USER        "/inherit/user"
#define USER_VOCATION   "/inherit/user_vocation"

#endif

调整以前在/obj/目录下的连线和玩家类文件到/system/object/下,并修改/system/object/user.c继承USER

inherit USER;

// 判断是否 user 对象,和 efun userp() 稍有区别
int is_user() { return 1; }

// ....省略其他代码...

增加/include/object.h,内容如下:

// 系统核心对象
#ifndef OBJECT_H
#define OBJECT_H

#define MASTER_OB     "/system/kernel/master"
#define SIMUL_EFUN_OB "/system/kernel/simul_efun"
// #define VOID_OB       "/system/object/void"
#define LOGIN_OB      "/system/object/login"
#define USER_OB       "/system/object/user"

#endif

更新globals.h中定义的USER_OBLOGIN_OBobject.h

// The global include file is included automatically.
#ifndef GLOBALS_H
#define GLOBALS_H

// 游戏管理员帐号
#define WIZARD "test"

// 系统目录
#define WORLD_DIR "/world/"

// 核心对象
#include "object.h"
// 功能模块
#include "inherit.h"
// 守护进程
#include "daemons.h"
// 标准继承对象
#include "stdob.h"

// 指令路径
#define CMD_PATH_WIZ ({"/cmds/wiz/", "/mudcore/cmds/wizard/"})
#define CMD_PATH_STD ({"/cmds/std/", "/mudcore/cmds/player/"})

// 其他
#define MOTD "/system/etc/motd"
#define PRELOAD "/system/etc/preload"

#define START_ROOM WORLD_DIR "start_room"

// mudcore框架头文件(请放在最底部)
#include <mudcore.h>

#endif

等级守护进程

优化了玩家相关代码,我们需要实现职业相关的数据,职业等级和属性数据存在/system/daemons/level_d守护进程中,代码如下:

#include <ansi.h>
/**
 * 力量 速度 防御力(耐力) 器用(幸运) 魅力 回复魔力 攻击魔力 HP MP 累积技能点数
 */
// 平民人物属性
nosave mixed *level_info0 = ({
    ({0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
    ({6, 6, 6, 3, 3, 0, 0, 14, 0, 0}),
    ({8, 6, 6, 3, 3, 0, 0, 16, 2, 0}),
    ({8, 6, 6, 4, 3, 0, 0, 18, 2, 0}),
    ({10, 6, 6, 4, 3, 0, 0, 20, 4, 0}),
    ({10, 7, 6, 5, 3, 0, 0, 22, 4, 0}),
    ({11, 7, 6, 6, 4, 0, 0, 24, 6, 0}),
    ({12, 8, 6, 7, 4, 0, 0, 27, 6, 0}),
    ({13, 8, 6, 9, 5, 0, 0, 31, 8, 0}),
    ({14, 9, 7, 10, 5, 0, 0, 34, 8, 0}),
    ({15, 10, 7, 11, 6, 0, 0, 38, 8, 10}),
    ({16, 12, 8, 12, 6, 0, 0, 42, 8, 10}),
    ({17, 13, 8, 13, 6, 0, 0, 47, 8, 10}),
    ({19, 15, 9, 14, 6, 0, 0, 51, 10, 10}),
    ({20, 16, 9, 15, 6, 0, 0, 56, 10, 10}),
    ({21, 18, 10, 17, 7, 0, 0, 60, 11, 10}),
    ({23, 20, 10, 18, 8, 0, 0, 64, 12, 10}),
    ({26, 23, 11, 20, 9, 0, 0, 68, 13, 10}),
    ({28, 26, 11, 22, 11, 0, 0, 72, 14, 10}),
    ({30, 28, 12, 24, 11, 0, 0, 76, 15, 10}),
    ({33, 31, 13, 26, 13, 0, 0, 80, 16, 20}),
    ({34, 32, 13, 27, 13, 0, 0, 83, 17, 20}),
    ({36, 32, 14, 29, 13, 0, 0, 86, 18, 20}),
    ({38, 33, 14, 30, 13, 0, 0, 89, 19, 20}),
    ({40, 34, 15, 31, 14, 0, 0, 92, 20, 20}),
    ({41, 34, 16, 33, 14, 0, 0, 95, 21, 20}),
    ({43, 35, 16, 34, 14, 0, 0, 98, 22, 20}),
    ({45, 36, 17, 35, 15, 0, 0, 101, 23, 20}),
    ({47, 36, 17, 36, 15, 0, 0, 104, 24, 20}),
    ({48, 37, 18, 38, 15, 0, 0, 107, 25, 20}),
    ({50, 38, 19, 39, 16, 0, 0, 110, 26, 30}),
    ({51, 39, 19, 40, 16, 0, 0, 115, 27, 30}),
    ({53, 40, 20, 40, 16, 0, 0, 121, 28, 30}),
    ({54, 41, 21, 41, 17, 0, 0, 126, 29, 30}),
    ({56, 42, 22, 41, 17, 0, 0, 131, 30, 30}),
    ({57, 43, 23, 42, 17, 0, 0, 137, 31, 30}),
    ({59, 44, 24, 42, 18, 0, 0, 142, 32, 30}),
    ({60, 45, 25, 43, 18, 0, 0, 147, 33, 30}),
    ({61, 46, 26, 44, 18, 0, 0, 153, 34, 30}),
    ({63, 47, 27, 44, 19, 0, 0, 158, 35, 30}),
    ({64, 48, 28, 45, 19, 0, 0, 163, 36, 40}),
    ({66, 49, 29, 45, 19, 0, 0, 169, 37, 40}),
    ({67, 50, 30, 46, 20, 0, 0, 174, 38, 40}),
    ({69, 51, 31, 46, 20, 0, 0, 179, 39, 40}),
    ({70, 52, 32, 47, 20, 0, 0, 185, 40, 40}),
    ({72, 54, 33, 48, 21, 0, 0, 190, 41, 40}),
    ({73, 54, 34, 50, 21, 0, 0, 194, 42, 40}),
    ({75, 55, 35, 52, 22, 0, 0, 198, 42, 40}),
    ({77, 56, 37, 54, 22, 0, 0, 202, 43, 40}),
    ({79, 57, 38, 56, 23, 0, 0, 206, 44, 40}),
    ({81, 58, 39, 58, 23, 0, 0, 209, 45, 50}),
    ({83, 59, 41, 61, 24, 0, 0, 213, 46, 50}),
    ({85, 60, 42, 63, 24, 0, 0, 217, 47, 50}),
    ({87, 60, 43, 65, 25, 0, 0, 221, 47, 50}),
    ({89, 61, 45, 67, 26, 0, 0, 225, 48, 50}),
    ({91, 62, 46, 69, 26, 0, 0, 229, 49, 50}),
    ({93, 63, 47, 71, 27, 0, 0, 233, 50, 50}),
    ({95, 64, 49, 74, 27, 0, 0, 237, 51, 50}),
    ({96, 65, 50, 76, 28, 0, 0, 241, 52, 50}),
    ({98, 66, 51, 78, 28, 0, 0, 244, 52, 50}),
    ({100, 66, 53, 80, 29, 0, 0, 248, 53, 60}),
    ({102, 67, 54, 82, 29, 0, 0, 252, 54, 60}),
    ({104, 68, 55, 84, 30, 0, 0, 256, 55, 60}),
    ({106, 69, 57, 87, 31, 0, 0, 260, 56, 60}),
    ({108, 70, 58, 89, 31, 0, 0, 264, 57, 60}),
    ({110, 71, 59, 91, 32, 0, 0, 268, 58, 60}),
    ({112, 72, 61, 93, 32, 0, 0, 272, 58, 60}),
    ({114, 72, 62, 95, 33, 0, 0, 276, 59, 60}),
    ({116, 73, 63, 98, 33, 0, 0, 279, 60, 60}),
    ({118, 74, 65, 100, 34, 0, 0, 283, 61, 60}),
    ({119, 75, 66, 102, 34, 0, 0, 287, 62, 70}),
    ({121, 76, 67, 104, 35, 0, 0, 291, 63, 70}),
    ({123, 77, 69, 106, 36, 0, 0, 295, 63, 70}),
    ({125, 78, 70, 108, 36, 0, 0, 299, 64, 70}),
    ({127, 78, 72, 111, 37, 0, 0, 303, 65, 70}),
    ({129, 79, 73, 113, 37, 0, 0, 307, 66, 70}),
    ({131, 80, 74, 115, 38, 0, 0, 311, 67, 70}),
    ({133, 81, 75, 117, 38, 0, 0, 314, 68, 70}),
    ({135, 82, 77, 119, 39, 0, 0, 318, 68, 70}),
    ({137, 83, 78, 121, 39, 0, 0, 322, 69, 70}),
    ({139, 84, 79, 124, 40, 0, 0, 326, 70, 80}),
    ({141, 85, 81, 126, 41, 0, 0, 330, 71, 80}),
    ({142, 85, 82, 128, 41, 0, 0, 334, 72, 80}),
    ({144, 86, 84, 130, 42, 0, 0, 338, 73, 80}),
    ({146, 87, 85, 132, 42, 0, 0, 342, 73, 80}),
    ({148, 88, 86, 135, 43, 0, 0, 346, 74, 80}),
    ({150, 89, 88, 137, 43, 0, 0, 349, 75, 80}),
    ({152, 90, 89, 139, 44, 0, 0, 353, 76, 80}),
    ({154, 91, 90, 141, 44, 0, 0, 357, 77, 80}),
    ({156, 91, 92, 143, 45, 0, 0, 361, 78, 80}),
    ({158, 92, 93, 145, 46, 0, 0, 365, 78, 90}),
    ({160, 93, 94, 148, 46, 0, 0, 369, 79, 90}),
    ({162, 94, 96, 150, 47, 0, 0, 373, 80, 90}),
    ({164, 95, 97, 152, 47, 0, 0, 377, 81, 90}),
    ({165, 96, 98, 154, 48, 0, 0, 381, 82, 90}),
    ({167, 97, 100, 156, 48, 0, 0, 384, 83, 90}),
    ({169, 97, 101, 158, 49, 0, 0, 388, 83, 90}),
    ({171, 98, 102, 161, 49, 0, 0, 392, 84, 90}),
    ({173, 99, 104, 163, 50, 0, 0, 396, 85, 90}),
    ({175, 100, 105, 165, 50, 0, 0, 400, 86, 100}),
});
// DQ9 12种职业的升级数据
// 战士
nosave mixed *level_info1 = ({
    ({0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
    ({18, 4, 18, 5, 4, 0, 0, 26, 4, 0}),
    ({22, 4, 22, 6, 5, 0, 0, 31, 5, 0}),
    ({26, 5, 26, 7, 6, 0, 0, 37, 6, 0}),
    ({30, 6, 30, 8, 7, 0, 0, 42, 6, 0}),
    ({34, 7, 34, 9, 7, 0, 0, 48, 7, 3}),
    ({38, 7, 37, 10, 8, 0, 0, 53, 8, 6}),
    ({42, 8, 41, 11, 9, 0, 0, 59, 9, 6}),
    ({46, 9, 45, 13, 10, 0, 0, 65, 10, 9}),
    ({50, 10, 49, 14, 11, 0, 0, 70, 11, 12}),
    ({54, 10, 53, 15, 12, 0, 0, 76, 11, 12}),
    ({58, 11, 57, 16, 13, 0, 0, 81, 12, 15}),
    ({61, 12, 61, 17, 14, 0, 0, 87, 13, 18}),
    ({65, 13, 65, 18, 14, 0, 0, 92, 14, 18}),
    ({69, 13, 69, 19, 15, 0, 0, 98, 15, 22}),
    ({73, 14, 73, 20, 16, 0, 0, 103, 16, 26}),
    ({77, 15, 76, 21, 17, 0, 0, 109, 16, 26}),
    ({81, 16, 80, 22, 18, 0, 0, 115, 17, 30}),
    ({85, 16, 84, 23, 19, 0, 0, 120, 18, 34}),
    ({89, 17, 88, 24, 20, 0, 0, 126, 19, 34}),
    ({93, 18, 92, 26, 20, 0, 0, 131, 20, 38}),
    ({97, 19, 96, 27, 21, 0, 0, 137, 21, 42}),
    ({101, 19, 100, 28, 22, 0, 0, 142, 21, 42}),
    ({105, 20, 104, 29, 23, 0, 0, 148, 22, 47}),
    ({109, 21, 108, 30, 24, 0, 0, 153, 23, 52}),
    ({113, 22, 112, 31, 25, 0, 0, 159, 24, 52}),
    ({117, 23, 115, 32, 26, 0, 0, 165, 25, 57}),
    ({121, 23, 119, 33, 27, 0, 0, 170, 26, 62}),
    ({124, 24, 123, 34, 27, 0, 0, 176, 26, 62}),
    ({128, 25, 127, 35, 28, 0, 0, 181, 27, 67}),
    ({132, 26, 131, 36, 29, 0, 0, 187, 28, 72}),
    ({136, 26, 135, 37, 30, 0, 0, 192, 29, 72}),
    ({140, 27, 139, 39, 31, 0, 0, 198, 30, 78}),
    ({144, 28, 143, 40, 32, 0, 0, 203, 31, 84}),
    ({148, 29, 147, 41, 33, 0, 0, 209, 32, 84}),
    ({152, 29, 151, 42, 33, 0, 0, 215, 32, 90}),
    ({156, 30, 154, 43, 34, 0, 0, 220, 33, 96}),
    ({160, 31, 158, 44, 35, 0, 0, 226, 34, 96}),
    ({164, 32, 162, 45, 36, 0, 0, 231, 35, 102}),
    ({168, 32, 166, 46, 37, 0, 0, 237, 36, 108}),
    ({172, 33, 170, 47, 38, 0, 0, 242, 37, 108}),
    ({176, 34, 174, 48, 39, 0, 0, 248, 37, 113}),
    ({180, 35, 178, 49, 40, 0, 0, 253, 38, 118}),
    ({184, 35, 182, 50, 40, 0, 0, 259, 39, 118}),
    ({187, 36, 186, 52, 41, 0, 0, 264, 40, 122}),
    ({191, 37, 190, 53, 42, 0, 0, 270, 41, 126}),
    ({195, 38, 193, 54, 43, 0, 0, 276, 42, 126}),
    ({199, 38, 197, 55, 44, 0, 0, 281, 42, 129}),
    ({203, 39, 201, 56, 45, 0, 0, 287, 43, 132}),
    ({207, 40, 205, 57, 46, 0, 0, 292, 44, 132}),
    ({211, 41, 209, 58, 47, 0, 0, 298, 45, 134}),
    ({215, 42, 213, 59, 47, 0, 0, 303, 46, 136}),
    ({219, 42, 217, 60, 48, 0, 0, 309, 47, 136}),
    ({223, 43, 221, 61, 49, 0, 0, 314, 47, 138}),
    ({227, 44, 225, 62, 50, 0, 0, 320, 48, 140}),
    ({231, 45, 228, 63, 51, 0, 0, 326, 49, 140}),
    ({235, 45, 232, 64, 52, 0, 0, 331, 50, 142}),
    ({239, 46, 236, 66, 53, 0, 0, 337, 51, 144}),
    ({243, 47, 240, 67, 53, 0, 0, 342, 52, 144}),
    ({247, 48, 244, 68, 54, 0, 0, 348, 52, 146}),
    ({250, 48, 248, 69, 55, 0, 0, 353, 53, 148}),
    ({254, 49, 252, 70, 56, 0, 0, 359, 54, 148}),
    ({258, 50, 256, 71, 57, 0, 0, 364, 55, 150}),
    ({262, 51, 260, 72, 58, 0, 0, 370, 56, 152}),
    ({266, 51, 264, 73, 59, 0, 0, 376, 57, 152}),
    ({270, 52, 267, 74, 60, 0, 0, 381, 58, 154}),
    ({274, 53, 271, 75, 60, 0, 0, 387, 58, 156}),
    ({278, 54, 275, 76, 61, 0, 0, 392, 59, 156}),
    ({282, 54, 279, 77, 62, 0, 0, 398, 60, 158}),
    ({286, 55, 283, 79, 63, 0, 0, 403, 61, 160}),
    ({290, 56, 287, 80, 64, 0, 0, 409, 62, 160}),
    ({294, 57, 291, 81, 65, 0, 0, 414, 63, 162}),
    ({298, 57, 295, 82, 66, 0, 0, 420, 63, 164}),
    ({302, 58, 299, 83, 66, 0, 0, 426, 64, 164}),
    ({306, 59, 303, 84, 67, 0, 0, 431, 65, 166}),
    ({310, 60, 306, 85, 68, 0, 0, 437, 66, 168}),
    ({313, 61, 310, 86, 69, 0, 0, 442, 67, 168}),
    ({317, 61, 314, 87, 70, 0, 0, 448, 68, 170}),
    ({321, 62, 318, 88, 71, 0, 0, 453, 68, 172}),
    ({325, 63, 322, 89, 72, 0, 0, 459, 69, 172}),
    ({329, 64, 326, 90, 73, 0, 0, 464, 70, 174}),
    ({333, 64, 330, 92, 73, 0, 0, 470, 71, 176}),
    ({337, 65, 334, 93, 74, 0, 0, 476, 72, 176}),
    ({341, 66, 338, 94, 75, 0, 0, 481, 73, 178}),
    ({345, 67, 342, 95, 76, 0, 0, 487, 73, 180}),
    ({349, 67, 345, 96, 77, 0, 0, 492, 74, 180}),
    ({353, 68, 349, 97, 78, 0, 0, 498, 75, 182}),
    ({357, 69, 353, 98, 79, 0, 0, 503, 76, 184}),
    ({361, 70, 357, 99, 79, 0, 0, 509, 77, 184}),
    ({365, 70, 361, 100, 80, 0, 0, 514, 78, 186}),
    ({369, 71, 365, 101, 81, 0, 0, 520, 78, 188}),
    ({373, 72, 369, 102, 82, 0, 0, 526, 79, 188}),
    ({376, 73, 373, 103, 83, 0, 0, 531, 80, 190}),
    ({380, 73, 377, 105, 84, 0, 0, 537, 81, 192}),
    ({384, 74, 381, 106, 85, 0, 0, 542, 82, 192}),
    ({388, 75, 384, 107, 86, 0, 0, 548, 83, 194}),
    ({392, 76, 388, 108, 86, 0, 0, 553, 83, 196}),
    ({396, 76, 392, 109, 87, 0, 0, 559, 84, 196}),
    ({400, 77, 396, 110, 88, 0, 0, 564, 85, 198}),
    ({404, 78, 400, 111, 89, 0, 0, 570, 86, 200}),
});
// 僧侣
nosave mixed *level_info2 = ({
    ({0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
    ({9, 14, 9, 9, 7, 18, 0, 19, 14, 0}),
    ({11, 17, 11, 11, 8, 22, 0, 23, 17, 0}),
    ({13, 20, 13, 13, 9, 26, 0, 27, 20, 0}),
    ({15, 23, 15, 15, 11, 30, 0, 31, 23, 0}),
    ({17, 26, 17, 17, 12, 34, 0, 35, 26, 3}),
    ({19, 29, 19, 19, 14, 37, 0, 39, 30, 6}),
    ({21, 32, 21, 21, 15, 41, 0, 43, 33, 6}),
    ({23, 35, 23, 23, 17, 45, 0, 48, 36, 9}),
    ({25, 38, 25, 25, 18, 49, 0, 52, 39, 12}),
    ({27, 41, 27, 27, 19, 53, 0, 56, 42, 12}),
    ({29, 44, 29, 29, 21, 57, 0, 60, 45, 15}),
    ({31, 47, 31, 31, 22, 61, 0, 64, 48, 18}),
    ({33, 51, 33, 33, 24, 65, 0, 68, 51, 18}),
    ({35, 54, 35, 35, 25, 69, 0, 72, 54, 22}),
    ({36, 57, 37, 37, 26, 73, 0, 76, 57, 26}),
    ({38, 60, 39, 39, 28, 76, 0, 80, 60, 26}),
    ({40, 63, 41, 41, 29, 80, 0, 84, 63, 30}),
    ({42, 66, 43, 43, 31, 84, 0, 88, 66, 34}),
    ({44, 69, 45, 45, 32, 88, 0, 93, 69, 34}),
    ({46, 72, 47, 47, 34, 92, 0, 97, 72, 38}),
    ({48, 75, 49, 49, 35, 96, 0, 101, 76, 42}),
    ({50, 78, 51, 51, 36, 100, 0, 105, 79, 42}),
    ({52, 81, 53, 53, 38, 104, 0, 109, 82, 47}),
    ({54, 84, 55, 55, 39, 108, 0, 113, 85, 52}),
    ({56, 87, 57, 57, 41, 112, 0, 117, 88, 52}),
    ({58, 90, 59, 59, 42, 115, 0, 121, 91, 57}),
    ({60, 93, 61, 61, 44, 119, 0, 125, 94, 62}),
    ({62, 96, 63, 63, 45, 123, 0, 129, 97, 62}),
    ({64, 99, 65, 65, 46, 127, 0, 134, 100, 67}),
    ({66, 102, 67, 67, 48, 131, 0, 138, 103, 72}),
    ({68, 105, 69, 69, 49, 135, 0, 142, 106, 72}),
    ({70, 108, 71, 72, 51, 139, 0, 146, 109, 78}),
    ({72, 111, 73, 74, 52, 143, 0, 150, 112, 84}),
    ({74, 114, 75, 76, 54, 147, 0, 154, 115, 84}),
    ({76, 117, 77, 78, 55, 151, 0, 158, 119, 90}),
    ({78, 120, 79, 80, 56, 154, 0, 162, 122, 96}),
    ({80, 123, 81, 82, 58, 158, 0, 166, 125, 96}),
    ({82, 127, 83, 84, 59, 162, 0, 170, 128, 102}),
    ({83, 130, 85, 86, 61, 166, 0, 174, 131, 108}),
    ({85, 133, 87, 88, 62, 170, 0, 179, 134, 108}),
    ({87, 136, 89, 90, 63, 174, 0, 183, 137, 113}),
    ({89, 139, 91, 92, 65, 178, 0, 187, 140, 118}),
    ({91, 142, 93, 94, 66, 182, 0, 191, 143, 118}),
    ({93, 145, 95, 96, 68, 186, 0, 195, 146, 122}),
    ({95, 148, 97, 98, 69, 190, 0, 199, 149, 126}),
    ({97, 151, 99, 100, 71, 193, 0, 203, 152, 126}),
    ({99, 154, 101, 102, 72, 197, 0, 207, 155, 129}),
    ({101, 157, 103, 104, 73, 201, 0, 211, 158, 132}),
    ({103, 160, 105, 106, 75, 205, 0, 215, 162, 132}),
    ({105, 163, 107, 108, 76, 209, 0, 219, 165, 134}),
    ({107, 166, 109, 110, 78, 213, 0, 224, 168, 136}),
    ({109, 169, 111, 112, 79, 217, 0, 228, 171, 136}),
    ({111, 172, 113, 114, 81, 221, 0, 232, 174, 138}),
    ({113, 175, 115, 116, 82, 225, 0, 236, 177, 140}),
    ({115, 178, 117, 118, 83, 228, 0, 240, 180, 140}),
    ({117, 181, 119, 120, 85, 232, 0, 244, 183, 142}),
    ({119, 184, 121, 122, 86, 236, 0, 248, 186, 144}),
    ({121, 187, 122, 124, 88, 240, 0, 252, 189, 144}),
    ({123, 190, 124, 126, 89, 244, 0, 256, 192, 146}),
    ({125, 193, 126, 128, 91, 248, 0, 260, 195, 148}),
    ({127, 196, 128, 130, 92, 252, 0, 264, 198, 148}),
    ({129, 200, 130, 132, 93, 256, 0, 269, 201, 150}),
    ({130, 203, 132, 134, 95, 260, 0, 273, 204, 152}),
    ({132, 206, 134, 136, 96, 264, 0, 277, 208, 152}),
    ({134, 209, 136, 138, 98, 267, 0, 281, 211, 154}),
    ({136, 212, 138, 140, 99, 271, 0, 285, 214, 156}),
    ({138, 215, 140, 142, 100, 275, 0, 289, 217, 156}),
    ({140, 218, 142, 144, 102, 279, 0, 293, 220, 158}),
    ({142, 221, 144, 146, 103, 283, 0, 297, 223, 160}),
    ({144, 224, 146, 148, 105, 287, 0, 301, 226, 160}),
    ({146, 227, 148, 150, 106, 291, 0, 305, 229, 162}),
    ({148, 230, 150, 152, 108, 295, 0, 309, 232, 164}),
    ({150, 233, 152, 154, 109, 299, 0, 314, 235, 164}),
    ({152, 236, 154, 156, 110, 303, 0, 318, 238, 166}),
    ({154, 239, 156, 158, 112, 306, 0, 322, 241, 168}),
    ({156, 242, 158, 160, 113, 310, 0, 326, 244, 168}),
    ({158, 245, 160, 162, 115, 314, 0, 330, 247, 170}),
    ({160, 248, 162, 164, 116, 318, 0, 334, 251, 172}),
    ({162, 251, 164, 166, 118, 322, 0, 338, 254, 172}),
    ({164, 254, 166, 168, 119, 326, 0, 342, 257, 174}),
    ({166, 257, 168, 170, 120, 330, 0, 346, 260, 176}),
    ({168, 260, 170, 172, 122, 334, 0, 350, 263, 176}),
    ({170, 263, 172, 174, 123, 338, 0, 355, 266, 178}),
    ({172, 266, 174, 176, 125, 342, 0, 359, 269, 180}),
    ({174, 269, 176, 178, 126, 345, 0, 363, 272, 180}),
    ({176, 272, 178, 180, 128, 349, 0, 367, 275, 182}),
    ({177, 276, 180, 182, 129, 353, 0, 371, 278, 184}),
    ({179, 279, 182, 184, 130, 357, 0, 375, 281, 184}),
    ({181, 282, 184, 186, 132, 361, 0, 379, 284, 186}),
    ({183, 285, 186, 188, 133, 365, 0, 383, 287, 188}),
    ({185, 288, 188, 190, 135, 369, 0, 387, 290, 188}),
    ({187, 291, 190, 192, 136, 373, 0, 391, 294, 190}),
    ({189, 294, 192, 194, 137, 377, 0, 395, 297, 192}),
    ({191, 297, 194, 196, 139, 381, 0, 400, 300, 192}),
    ({193, 300, 196, 198, 140, 384, 0, 404, 303, 194}),
    ({195, 303, 198, 200, 142, 388, 0, 408, 306, 196}),
    ({197, 306, 200, 202, 143, 392, 0, 412, 309, 196}),
    ({199, 309, 202, 204, 145, 396, 0, 416, 312, 198}),
    ({201, 312, 204, 206, 146, 400, 0, 420, 315, 200}),
});
// 魔法师
nosave mixed *level_info3 = ({
    ({0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
    ({4, 18, 7, 14, 7, 0, 18, 18, 16, 0}),
    ({5, 22, 9, 17, 8, 0, 22, 21, 20, 0}),
    ({6, 26, 10, 20, 10, 0, 26, 25, 23, 0}),
    ({7, 30, 12, 23, 12, 0, 30, 29, 27, 0}),
    ({8, 34, 14, 26, 13, 0, 34, 33, 31, 3}),
    ({9, 38, 15, 28, 15, 0, 37, 37, 34, 6}),
    ({10, 41, 17, 31, 16, 0, 41, 40, 38, 6}),
    ({11, 45, 18, 34, 18, 0, 45, 44, 41, 9}),
    ({12, 49, 20, 37, 19, 0, 49, 48, 45, 12}),
    ({13, 53, 21, 40, 21, 0, 53, 52, 48, 12}),
    ({14, 57, 23, 43, 22, 0, 57, 56, 52, 15}),
    ({15, 61, 25, 46, 24, 0, 61, 59, 55, 18}),
    ({16, 65, 26, 49, 25, 0, 65, 63, 59, 18}),
    ({16, 69, 28, 52, 27, 0, 69, 67, 62, 22}),
    ({17, 73, 29, 55, 28, 0, 73, 71, 66, 26}),
    ({18, 77, 31, 58, 30, 0, 76, 75, 70, 26}),
    ({19, 81, 33, 61, 31, 0, 80, 78, 73, 30}),
    ({20, 84, 34, 64, 33, 0, 84, 82, 77, 34}),
    ({21, 88, 36, 67, 34, 0, 88, 86, 80, 34}),
    ({22, 92, 37, 70, 36, 0, 92, 90, 84, 38}),
    ({23, 96, 39, 73, 37, 0, 96, 94, 87, 42}),
    ({24, 100, 40, 76, 39, 0, 100, 97, 91, 42}),
    ({25, 104, 42, 79, 40, 0, 104, 101, 94, 47}),
    ({26, 108, 44, 82, 42, 0, 108, 105, 98, 52}),
    ({27, 112, 45, 85, 43, 0, 112, 109, 102, 52}),
    ({28, 116, 47, 88, 45, 0, 115, 113, 105, 57}),
    ({29, 120, 48, 91, 46, 0, 119, 116, 109, 62}),
    ({30, 124, 50, 94, 48, 0, 123, 120, 112, 62}),
    ({31, 127, 51, 97, 49, 0, 127, 124, 116, 67}),
    ({31, 131, 53, 100, 51, 0, 131, 128, 119, 72}),
    ({32, 135, 55, 103, 52, 0, 135, 132, 123, 72}),
    ({33, 139, 56, 106, 54, 0, 139, 135, 126, 78}),
    ({34, 143, 58, 108, 55, 0, 143, 139, 130, 84}),
    ({35, 147, 59, 111, 57, 0, 147, 143, 133, 84}),
    ({36, 151, 61, 114, 58, 0, 151, 147, 137, 90}),
    ({37, 155, 63, 117, 60, 0, 154, 151, 141, 96}),
    ({38, 159, 64, 120, 61, 0, 158, 154, 144, 96}),
    ({39, 163, 66, 123, 63, 0, 162, 158, 148, 102}),
    ({40, 167, 67, 126, 64, 0, 166, 162, 151, 108}),
    ({41, 170, 69, 129, 66, 0, 170, 166, 155, 108}),
    ({42, 174, 70, 132, 67, 0, 174, 170, 158, 113}),
    ({43, 178, 72, 135, 69, 0, 178, 173, 162, 118}),
    ({44, 182, 74, 138, 70, 0, 182, 177, 165, 118}),
    ({45, 186, 75, 141, 72, 0, 186, 181, 169, 122}),
    ({45, 190, 77, 144, 73, 0, 190, 185, 172, 126}),
    ({46, 194, 78, 147, 75, 0, 193, 189, 176, 126}),
    ({47, 198, 80, 150, 76, 0, 197, 192, 180, 129}),
    ({48, 202, 81, 153, 78, 0, 201, 196, 183, 132}),
    ({49, 206, 83, 156, 79, 0, 205, 200, 187, 132}),
    ({50, 210, 85, 159, 81, 0, 209, 204, 190, 134}),
    ({51, 213, 86, 162, 82, 0, 213, 208, 194, 136}),
    ({52, 217, 88, 165, 84, 0, 217, 211, 197, 136}),
    ({53, 221, 89, 168, 86, 0, 221, 215, 201, 138}),
    ({54, 225, 91, 171, 87, 0, 225, 219, 204, 140}),
    ({55, 229, 93, 174, 89, 0, 228, 223, 208, 140}),
    ({56, 233, 94, 177, 90, 0, 232, 227, 211, 142}),
    ({57, 237, 96, 180, 92, 0, 236, 230, 215, 144}),
    ({58, 241, 97, 183, 93, 0, 240, 234, 219, 144}),
    ({59, 245, 99, 186, 95, 0, 244, 238, 222, 146}),
    ({60, 249, 100, 188, 96, 0, 248, 242, 226, 148}),
    ({60, 253, 102, 191, 98, 0, 252, 246, 229, 148}),
    ({61, 256, 104, 194, 99, 0, 256, 249, 233, 150}),
    ({62, 260, 105, 197, 101, 0, 260, 253, 236, 152}),
    ({63, 264, 107, 200, 102, 0, 264, 257, 240, 152}),
    ({64, 268, 108, 203, 104, 0, 267, 261, 243, 154}),
    ({65, 272, 110, 206, 105, 0, 271, 265, 247, 156}),
    ({66, 276, 111, 209, 107, 0, 275, 268, 250, 156}),
    ({67, 280, 113, 212, 108, 0, 279, 272, 254, 158}),
    ({68, 284, 115, 215, 110, 0, 283, 276, 258, 160}),
    ({69, 288, 116, 218, 111, 0, 287, 280, 261, 160}),
    ({70, 292, 118, 221, 113, 0, 291, 284, 265, 162}),
    ({71, 295, 119, 224, 114, 0, 295, 287, 268, 164}),
    ({72, 299, 121, 227, 116, 0, 299, 291, 272, 164}),
    ({73, 303, 123, 230, 117, 0, 303, 295, 275, 166}),
    ({74, 307, 124, 233, 119, 0, 306, 299, 279, 168}),
    ({74, 311, 126, 236, 120, 0, 310, 303, 282, 168}),
    ({75, 315, 127, 239, 122, 0, 314, 306, 286, 170}),
    ({76, 319, 129, 242, 123, 0, 318, 310, 290, 172}),
    ({77, 323, 130, 245, 125, 0, 322, 314, 293, 172}),
    ({78, 327, 132, 248, 126, 0, 326, 318, 297, 174}),
    ({79, 331, 134, 251, 128, 0, 330, 322, 300, 176}),
    ({80, 335, 135, 254, 129, 0, 334, 325, 304, 176}),
    ({81, 338, 137, 257, 131, 0, 338, 329, 307, 178}),
    ({82, 342, 138, 260, 132, 0, 342, 333, 311, 180}),
    ({83, 346, 140, 263, 134, 0, 345, 337, 314, 180}),
    ({84, 350, 141, 265, 135, 0, 349, 341, 318, 182}),
    ({85, 354, 143, 268, 137, 0, 353, 344, 321, 184}),
    ({86, 358, 145, 271, 138, 0, 357, 348, 325, 184}),
    ({87, 362, 146, 274, 140, 0, 361, 352, 329, 186}),
    ({88, 366, 148, 277, 141, 0, 365, 356, 332, 188}),
    ({89, 370, 149, 280, 143, 0, 369, 360, 336, 188}),
    ({89, 374, 151, 283, 144, 0, 373, 363, 339, 190}),
    ({90, 378, 153, 286, 146, 0, 377, 367, 343, 192}),
    ({91, 381, 154, 289, 147, 0, 381, 371, 346, 192}),
    ({92, 385, 156, 292, 149, 0, 384, 375, 350, 194}),
    ({93, 389, 157, 295, 150, 0, 388, 379, 353, 196}),
    ({94, 393, 159, 298, 152, 0, 392, 382, 357, 196}),
    ({95, 397, 160, 301, 153, 0, 396, 386, 360, 198}),
    ({96, 401, 162, 304, 155, 0, 400, 390, 364, 200}),
});
// 武斗家
nosave mixed *level_info4 = ({
    ({0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
    ({18, 23, 11, 11, 5, 0, 0, 24, 2, 0}),
    ({22, 27, 13, 14, 7, 0, 0, 30, 2, 0}),
    ({26, 32, 16, 16, 8, 0, 0, 35, 2, 0}),
    ({30, 37, 18, 19, 9, 0, 0, 40, 3, 0}),
    ({34, 42, 21, 21, 10, 0, 0, 45, 3, 3}),
    ({37, 47, 23, 24, 11, 0, 0, 51, 4, 6}),
    ({41, 52, 25, 26, 12, 0, 0, 56, 4, 6}),
    ({45, 57, 28, 29, 14, 0, 0, 61, 4, 9}),
    ({49, 61, 30, 31, 15, 0, 0, 66, 5, 12}),
    ({53, 66, 33, 34, 16, 0, 0, 72, 5, 12}),
    ({57, 71, 35, 36, 17, 0, 0, 77, 5, 15}),
    ({61, 76, 37, 39, 18, 0, 0, 82, 6, 18}),
    ({65, 81, 40, 41, 19, 0, 0, 87, 6, 18}),
    ({69, 86, 42, 44, 21, 0, 0, 93, 7, 22}),
    ({72, 91, 44, 46, 22, 0, 0, 98, 7, 26}),
    ({76, 96, 47, 49, 23, 0, 0, 103, 7, 26}),
    ({80, 100, 49, 51, 24, 0, 0, 108, 8, 30}),
    ({84, 105, 52, 54, 25, 0, 0, 114, 8, 34}),
    ({88, 110, 54, 56, 26, 0, 0, 119, 8, 34}),
    ({92, 115, 56, 59, 28, 0, 0, 124, 9, 38}),
    ({96, 120, 59, 61, 29, 0, 0, 130, 9, 42}),
    ({100, 125, 61, 64, 30, 0, 0, 135, 9, 42}),
    ({103, 130, 64, 66, 31, 0, 0, 140, 10, 47}),
    ({107, 135, 66, 69, 32, 0, 0, 145, 10, 52}),
    ({111, 139, 68, 71, 33, 0, 0, 151, 11, 52}),
    ({115, 144, 71, 74, 35, 0, 0, 156, 11, 57}),
    ({119, 149, 73, 76, 36, 0, 0, 161, 11, 62}),
    ({123, 154, 75, 79, 37, 0, 0, 166, 12, 62}),
    ({127, 159, 78, 81, 38, 0, 0, 172, 12, 67}),
    ({131, 164, 80, 84, 39, 0, 0, 177, 12, 72}),
    ({135, 169, 83, 86, 40, 0, 0, 182, 13, 72}),
    ({138, 174, 85, 89, 42, 0, 0, 187, 13, 78}),
    ({142, 178, 87, 91, 43, 0, 0, 193, 14, 84}),
    ({146, 183, 90, 93, 44, 0, 0, 198, 14, 84}),
    ({150, 188, 92, 96, 45, 0, 0, 203, 14, 90}),
    ({154, 193, 95, 98, 46, 0, 0, 208, 15, 96}),
    ({158, 198, 97, 101, 47, 0, 0, 214, 15, 96}),
    ({162, 203, 99, 103, 49, 0, 0, 219, 15, 102}),
    ({166, 208, 102, 106, 50, 0, 0, 224, 16, 108}),
    ({170, 213, 104, 108, 51, 0, 0, 230, 16, 108}),
    ({173, 217, 107, 111, 52, 0, 0, 235, 17, 113}),
    ({177, 222, 109, 113, 53, 0, 0, 240, 17, 118}),
    ({181, 227, 111, 116, 55, 0, 0, 245, 17, 118}),
    ({185, 232, 114, 118, 56, 0, 0, 251, 18, 122}),
    ({189, 237, 116, 121, 57, 0, 0, 256, 18, 126}),
    ({193, 242, 118, 123, 58, 0, 0, 261, 18, 126}),
    ({197, 247, 121, 126, 59, 0, 0, 266, 19, 129}),
    ({201, 252, 123, 128, 60, 0, 0, 272, 19, 132}),
    ({205, 256, 126, 131, 62, 0, 0, 277, 19, 132}),
    ({208, 261, 128, 133, 63, 0, 0, 282, 20, 134}),
    ({212, 266, 130, 136, 64, 0, 0, 287, 20, 136}),
    ({216, 271, 133, 138, 65, 0, 0, 293, 21, 136}),
    ({220, 276, 135, 141, 66, 0, 0, 298, 21, 138}),
    ({224, 281, 138, 143, 67, 0, 0, 303, 21, 140}),
    ({228, 286, 140, 146, 69, 0, 0, 308, 22, 140}),
    ({232, 290, 142, 148, 70, 0, 0, 314, 22, 142}),
    ({236, 295, 145, 151, 71, 0, 0, 319, 22, 144}),
    ({240, 300, 147, 153, 72, 0, 0, 324, 23, 144}),
    ({243, 305, 150, 156, 73, 0, 0, 330, 23, 146}),
    ({247, 310, 152, 158, 74, 0, 0, 335, 24, 148}),
    ({251, 315, 154, 161, 76, 0, 0, 340, 24, 148}),
    ({255, 320, 157, 163, 77, 0, 0, 345, 24, 150}),
    ({259, 325, 159, 166, 78, 0, 0, 351, 25, 152}),
    ({263, 329, 161, 168, 79, 0, 0, 356, 25, 152}),
    ({267, 334, 164, 171, 80, 0, 0, 361, 25, 154}),
    ({271, 339, 166, 173, 81, 0, 0, 366, 26, 156}),
    ({275, 344, 169, 175, 83, 0, 0, 372, 26, 156}),
    ({278, 349, 171, 178, 84, 0, 0, 377, 27, 158}),
    ({282, 354, 173, 180, 85, 0, 0, 382, 27, 160}),
    ({286, 359, 176, 183, 86, 0, 0, 387, 27, 160}),
    ({290, 364, 178, 185, 87, 0, 0, 393, 28, 162}),
    ({294, 368, 181, 188, 88, 0, 0, 398, 28, 164}),
    ({298, 373, 183, 190, 90, 0, 0, 403, 28, 164}),
    ({302, 378, 185, 193, 91, 0, 0, 408, 29, 166}),
    ({306, 383, 188, 195, 92, 0, 0, 414, 29, 168}),
    ({310, 388, 190, 198, 93, 0, 0, 419, 29, 168}),
    ({313, 393, 192, 200, 94, 0, 0, 424, 30, 170}),
    ({317, 398, 195, 203, 95, 0, 0, 429, 30, 172}),
    ({321, 403, 197, 205, 97, 0, 0, 435, 31, 172}),
    ({325, 407, 200, 208, 98, 0, 0, 440, 31, 174}),
    ({329, 412, 202, 210, 99, 0, 0, 445, 31, 176}),
    ({333, 417, 204, 213, 100, 0, 0, 451, 32, 176}),
    ({337, 422, 207, 215, 101, 0, 0, 456, 32, 178}),
    ({341, 427, 209, 218, 102, 0, 0, 461, 32, 180}),
    ({345, 432, 212, 220, 104, 0, 0, 466, 33, 180}),
    ({348, 437, 214, 223, 105, 0, 0, 472, 33, 182}),
    ({352, 442, 216, 225, 106, 0, 0, 477, 34, 184}),
    ({356, 446, 219, 228, 107, 0, 0, 482, 34, 184}),
    ({360, 451, 221, 230, 108, 0, 0, 487, 34, 186}),
    ({364, 456, 224, 233, 109, 0, 0, 493, 35, 188}),
    ({368, 461, 226, 235, 111, 0, 0, 498, 35, 188}),
    ({372, 466, 228, 238, 112, 0, 0, 503, 35, 190}),
    ({376, 471, 231, 240, 113, 0, 0, 508, 36, 192}),
    ({380, 476, 233, 243, 114, 0, 0, 514, 36, 192}),
    ({383, 481, 235, 245, 115, 0, 0, 519, 37, 194}),
    ({387, 485, 238, 248, 116, 0, 0, 524, 37, 196}),
    ({391, 490, 240, 250, 118, 0, 0, 529, 37, 196}),
    ({395, 495, 243, 253, 119, 0, 0, 535, 38, 198}),
    ({399, 500, 245, 255, 120, 0, 0, 540, 38, 200}),
});
// 盗贼
nosave mixed *level_info5 = ({
    ({0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
    ({13, 18, 11, 18, 3, 4, 0, 23, 6, 0}),
    ({16, 22, 13, 22, 3, 4, 0, 28, 7, 0}),
    ({19, 26, 16, 26, 4, 5, 0, 33, 9, 0}),
    ({22, 30, 18, 30, 4, 6, 0, 38, 10, 0}),
    ({25, 34, 20, 34, 5, 7, 0, 43, 11, 3}),
    ({28, 38, 23, 38, 5, 8, 0, 48, 12, 6}),
    ({31, 42, 25, 42, 6, 8, 0, 53, 14, 6}),
    ({34, 46, 27, 46, 7, 9, 0, 58, 15, 9}),
    ({37, 50, 30, 49, 7, 10, 0, 63, 16, 12}),
    ({40, 54, 32, 53, 8, 11, 0, 68, 18, 12}),
    ({43, 58, 34, 57, 8, 12, 0, 73, 19, 15}),
    ({46, 62, 37, 61, 9, 12, 0, 78, 20, 18}),
    ({48, 66, 39, 65, 9, 13, 0, 83, 21, 18}),
    ({51, 70, 41, 69, 10, 14, 0, 88, 23, 22}),
    ({54, 74, 44, 73, 11, 15, 0, 93, 24, 26}),
    ({57, 78, 46, 77, 11, 15, 0, 97, 25, 26}),
    ({60, 82, 48, 81, 12, 16, 0, 102, 27, 30}),
    ({63, 86, 51, 85, 12, 17, 0, 107, 28, 34}),
    ({66, 90, 53, 89, 13, 18, 0, 112, 29, 34}),
    ({69, 94, 55, 93, 13, 19, 0, 117, 30, 38}),
    ({72, 98, 58, 96, 14, 19, 0, 122, 32, 42}),
    ({75, 102, 60, 100, 14, 20, 0, 127, 33, 42}),
    ({78, 106, 63, 104, 15, 21, 0, 132, 34, 47}),
    ({80, 110, 65, 108, 16, 22, 0, 137, 36, 52}),
    ({83, 114, 67, 112, 16, 23, 0, 142, 37, 52}),
    ({86, 118, 70, 116, 17, 23, 0, 147, 38, 57}),
    ({89, 122, 72, 120, 17, 24, 0, 152, 39, 62}),
    ({92, 126, 74, 124, 18, 25, 0, 157, 41, 62}),
    ({95, 130, 77, 128, 18, 26, 0, 162, 42, 67}),
    ({98, 134, 79, 132, 19, 27, 0, 167, 43, 72}),
    ({101, 138, 81, 136, 20, 27, 0, 172, 45, 72}),
    ({104, 142, 84, 140, 20, 28, 0, 177, 46, 78}),
    ({107, 146, 86, 143, 21, 29, 0, 182, 47, 84}),
    ({110, 150, 88, 147, 21, 30, 0, 187, 48, 84}),
    ({113, 154, 91, 151, 22, 30, 0, 192, 50, 90}),
    ({115, 158, 93, 155, 22, 31, 0, 197, 51, 96}),
    ({118, 162, 95, 159, 23, 32, 0, 202, 52, 96}),
    ({121, 166, 98, 163, 24, 33, 0, 207, 54, 102}),
    ({124, 170, 100, 167, 24, 34, 0, 212, 55, 108}),
    ({127, 174, 102, 171, 25, 34, 0, 217, 56, 108}),
    ({130, 178, 105, 175, 25, 35, 0, 222, 57, 113}),
    ({133, 182, 107, 179, 26, 36, 0, 227, 59, 118}),
    ({136, 186, 109, 183, 26, 37, 0, 232, 60, 118}),
    ({139, 190, 112, 187, 27, 38, 0, 237, 61, 122}),
    ({142, 194, 114, 190, 27, 38, 0, 242, 63, 126}),
    ({145, 198, 117, 194, 28, 39, 0, 247, 64, 126}),
    ({147, 202, 119, 198, 29, 40, 0, 252, 65, 129}),
    ({150, 206, 121, 202, 29, 41, 0, 257, 66, 132}),
    ({153, 210, 124, 206, 30, 42, 0, 262, 68, 132}),
    ({156, 214, 126, 210, 30, 42, 0, 266, 69, 134}),
    ({159, 218, 128, 214, 31, 43, 0, 271, 70, 136}),
    ({162, 222, 131, 218, 31, 44, 0, 276, 72, 136}),
    ({165, 226, 133, 222, 32, 45, 0, 281, 73, 138}),
    ({168, 230, 135, 226, 33, 45, 0, 286, 74, 140}),
    ({171, 234, 138, 230, 33, 46, 0, 291, 75, 140}),
    ({174, 238, 140, 234, 34, 47, 0, 296, 77, 142}),
    ({177, 242, 142, 237, 34, 48, 0, 301, 78, 144}),
    ({180, 246, 145, 241, 35, 49, 0, 306, 79, 144}),
    ({182, 250, 147, 245, 35, 49, 0, 311, 81, 146}),
    ({185, 254, 149, 249, 36, 50, 0, 316, 82, 148}),
    ({188, 258, 152, 253, 37, 51, 0, 321, 83, 148}),
    ({191, 262, 154, 257, 37, 52, 0, 326, 84, 150}),
    ({194, 266, 156, 261, 38, 53, 0, 331, 86, 152}),
    ({197, 270, 159, 265, 38, 53, 0, 336, 87, 152}),
    ({200, 274, 161, 269, 39, 54, 0, 341, 88, 154}),
    ({203, 278, 163, 273, 39, 55, 0, 346, 90, 156}),
    ({206, 282, 166, 277, 40, 56, 0, 351, 91, 156}),
    ({209, 286, 168, 281, 40, 57, 0, 356, 92, 158}),
    ({212, 290, 171, 284, 41, 57, 0, 361, 93, 160}),
    ({215, 294, 173, 288, 42, 58, 0, 366, 95, 160}),
    ({217, 298, 175, 292, 42, 59, 0, 371, 96, 162}),
    ({220, 302, 178, 296, 43, 60, 0, 376, 97, 164}),
    ({223, 306, 180, 300, 43, 60, 0, 381, 99, 164}),
    ({226, 310, 182, 304, 44, 61, 0, 386, 100, 166}),
    ({229, 314, 185, 308, 44, 62, 0, 391, 101, 168}),
    ({232, 318, 187, 312, 45, 63, 0, 396, 102, 168}),
    ({235, 322, 189, 316, 46, 64, 0, 401, 104, 170}),
    ({238, 326, 192, 320, 46, 64, 0, 406, 105, 172}),
    ({241, 330, 194, 324, 47, 65, 0, 411, 106, 172}),
    ({244, 334, 196, 328, 47, 66, 0, 416, 108, 174}),
    ({247, 338, 199, 331, 48, 67, 0, 421, 109, 176}),
    ({249, 342, 201, 335, 48, 68, 0, 426, 110, 176}),
    ({252, 346, 203, 339, 49, 68, 0, 430, 111, 178}),
    ({255, 350, 206, 343, 50, 69, 0, 435, 113, 180}),
    ({258, 354, 208, 347, 50, 70, 0, 440, 114, 180}),
    ({261, 358, 210, 351, 51, 71, 0, 445, 115, 182}),
    ({264, 362, 213, 355, 51, 72, 0, 450, 117, 184}),
    ({267, 366, 215, 359, 52, 72, 0, 455, 118, 184}),
    ({270, 370, 218, 363, 52, 73, 0, 460, 119, 186}),
    ({273, 374, 220, 367, 53, 74, 0, 465, 120, 188}),
    ({276, 378, 222, 371, 53, 75, 0, 470, 122, 188}),
    ({279, 382, 225, 375, 54, 75, 0, 475, 123, 190}),
    ({282, 386, 227, 378, 55, 76, 0, 480, 124, 192}),
    ({284, 390, 229, 382, 55, 77, 0, 485, 126, 192}),
    ({287, 394, 232, 386, 56, 78, 0, 490, 127, 194}),
    ({290, 398, 234, 390, 56, 79, 0, 495, 128, 196}),
    ({293, 402, 236, 394, 57, 79, 0, 500, 129, 196}),
    ({296, 406, 239, 398, 57, 80, 0, 505, 131, 198}),
    ({299, 410, 241, 402, 58, 81, 0, 510, 132, 200}),
});
// 旅艺人
nosave mixed *level_info6 = ({
    ({0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
    ({9, 8, 8, 12, 9, 7, 6, 20, 6, 0}),
    ({11, 12, 11, 15, 11, 9, 7, 25, 8, 0}),
    ({13, 15, 13, 18, 13, 11, 9, 29, 10, 0}),
    ({16, 19, 15, 21, 16, 13, 10, 34, 12, 0}),
    ({18, 22, 18, 24, 18, 15, 12, 39, 13, 3}),
    ({21, 26, 20, 27, 21, 16, 14, 43, 15, 6}),
    ({23, 29, 22, 30, 23, 18, 15, 48, 17, 6}),
    ({26, 33, 25, 33, 25, 20, 17, 53, 19, 9}),
    ({28, 37, 27, 36, 28, 22, 18, 58, 20, 12}),
    ({30, 40, 29, 39, 30, 24, 20, 62, 22, 12}),
    ({33, 44, 32, 42, 33, 26, 21, 67, 24, 15}),
    ({35, 47, 34, 45, 35, 28, 23, 72, 26, 18}),
    ({38, 51, 36, 48, 38, 30, 25, 76, 27, 18}),
    ({40, 55, 39, 51, 40, 32, 26, 81, 29, 22}),
    ({43, 58, 41, 54, 42, 34, 28, 86, 31, 26}),
    ({45, 62, 43, 57, 45, 36, 29, 90, 33, 26}),
    ({47, 65, 46, 60, 47, 38, 31, 95, 34, 30}),
    ({50, 69, 48, 63, 50, 39, 33, 100, 36, 34}),
    ({52, 72, 50, 66, 52, 41, 34, 104, 38, 34}),
    ({55, 76, 53, 69, 54, 43, 36, 109, 40, 38}),
    ({57, 80, 55, 72, 57, 45, 37, 114, 42, 42}),
    ({59, 83, 57, 75, 59, 47, 39, 119, 43, 42}),
    ({62, 87, 60, 78, 62, 49, 41, 123, 45, 47}),
    ({64, 90, 62, 81, 64, 51, 42, 128, 47, 52}),
    ({67, 94, 64, 84, 66, 53, 44, 133, 49, 52}),
    ({69, 98, 67, 86, 69, 55, 45, 137, 50, 57}),
    ({72, 101, 69, 89, 71, 57, 47, 142, 52, 62}),
    ({74, 105, 71, 92, 74, 59, 48, 147, 54, 62}),
    ({76, 108, 74, 95, 76, 61, 50, 151, 56, 67}),
    ({79, 112, 76, 98, 79, 63, 52, 156, 57, 72}),
    ({81, 115, 78, 101, 81, 64, 53, 161, 59, 72}),
    ({84, 119, 81, 104, 83, 66, 55, 166, 61, 78}),
    ({86, 123, 83, 107, 86, 68, 56, 170, 63, 84}),
    ({89, 126, 85, 110, 88, 70, 58, 175, 64, 84}),
    ({91, 130, 88, 113, 91, 72, 60, 180, 66, 90}),
    ({93, 133, 90, 116, 93, 74, 61, 184, 68, 96}),
    ({96, 137, 92, 119, 95, 76, 63, 189, 70, 96}),
    ({98, 141, 95, 122, 98, 78, 64, 194, 71, 102}),
    ({101, 144, 97, 125, 100, 80, 66, 198, 73, 108}),
    ({103, 148, 99, 128, 103, 82, 67, 203, 75, 108}),
    ({106, 151, 102, 131, 105, 84, 69, 208, 77, 113}),
    ({108, 155, 104, 134, 107, 86, 71, 212, 79, 118}),
    ({110, 158, 106, 137, 110, 87, 72, 217, 80, 118}),
    ({113, 162, 109, 140, 112, 89, 74, 222, 82, 122}),
    ({115, 166, 111, 143, 115, 91, 75, 227, 84, 126}),
    ({118, 169, 113, 146, 117, 93, 77, 231, 86, 126}),
    ({120, 173, 116, 149, 120, 95, 79, 236, 87, 129}),
    ({122, 176, 118, 152, 122, 97, 80, 241, 89, 132}),
    ({125, 180, 120, 155, 124, 99, 82, 245, 91, 132}),
    ({127, 184, 123, 158, 127, 101, 83, 250, 93, 134}),
    ({130, 187, 125, 161, 129, 103, 85, 255, 94, 136}),
    ({132, 191, 127, 164, 132, 105, 86, 259, 96, 136}),
    ({135, 194, 130, 167, 134, 107, 88, 264, 98, 138}),
    ({137, 198, 132, 170, 136, 109, 90, 269, 100, 140}),
    ({139, 201, 134, 173, 139, 111, 91, 273, 101, 140}),
    ({142, 205, 137, 176, 141, 112, 93, 278, 103, 142}),
    ({144, 209, 139, 179, 144, 114, 94, 283, 105, 144}),
    ({147, 212, 141, 182, 146, 116, 96, 288, 107, 144}),
    ({149, 216, 144, 185, 149, 118, 98, 292, 108, 146}),
    ({152, 219, 146, 188, 151, 120, 99, 297, 110, 148}),
    ({154, 223, 148, 191, 153, 122, 101, 302, 112, 148}),
    ({156, 226, 151, 194, 156, 124, 102, 306, 114, 150}),
    ({159, 230, 153, 197, 158, 126, 104, 311, 116, 152}),
    ({161, 234, 155, 200, 161, 128, 106, 316, 117, 152}),
    ({164, 237, 158, 203, 163, 130, 107, 320, 119, 154}),
    ({166, 241, 160, 206, 165, 132, 109, 325, 121, 156}),
    ({168, 244, 162, 209, 168, 134, 110, 330, 123, 156}),
    ({171, 248, 165, 212, 170, 135, 112, 334, 124, 158}),
    ({173, 252, 167, 215, 173, 137, 113, 339, 126, 160}),
    ({176, 255, 169, 218, 175, 139, 115, 344, 128, 160}),
    ({178, 259, 172, 221, 177, 141, 117, 349, 130, 162}),
    ({181, 262, 174, 224, 180, 143, 118, 353, 131, 164}),
    ({183, 266, 176, 227, 182, 145, 120, 358, 133, 164}),
    ({185, 269, 179, 230, 185, 147, 121, 363, 135, 166}),
    ({188, 273, 181, 232, 187, 149, 123, 367, 137, 168}),
    ({190, 277, 183, 235, 190, 151, 125, 372, 138, 168}),
    ({193, 280, 186, 238, 192, 153, 126, 377, 140, 170}),
    ({195, 284, 188, 241, 194, 155, 128, 381, 142, 172}),
    ({198, 287, 190, 244, 197, 157, 129, 386, 144, 172}),
    ({200, 291, 193, 247, 199, 159, 131, 391, 146, 174}),
    ({202, 295, 195, 250, 202, 160, 132, 396, 147, 176}),
    ({205, 298, 197, 253, 204, 162, 134, 400, 149, 176}),
    ({207, 302, 200, 256, 206, 164, 136, 405, 151, 178}),
    ({210, 305, 202, 259, 209, 166, 137, 410, 153, 180}),
    ({212, 309, 204, 262, 211, 168, 139, 414, 154, 180}),
    ({215, 312, 207, 265, 214, 170, 140, 419, 156, 182}),
    ({217, 316, 209, 268, 216, 172, 142, 424, 158, 184}),
    ({219, 320, 211, 271, 218, 174, 144, 428, 160, 184}),
    ({222, 323, 214, 274, 221, 176, 145, 433, 161, 186}),
    ({224, 327, 216, 277, 223, 178, 147, 438, 163, 188}),
    ({227, 330, 218, 280, 226, 180, 148, 442, 165, 188}),
    ({229, 334, 221, 283, 228, 182, 150, 447, 167, 190}),
    ({231, 338, 223, 286, 231, 183, 151, 452, 168, 192}),
    ({234, 341, 225, 289, 233, 185, 153, 457, 170, 192}),
    ({236, 345, 228, 292, 235, 187, 155, 461, 172, 194}),
    ({239, 348, 230, 295, 238, 189, 156, 466, 174, 196}),
    ({241, 352, 232, 298, 240, 191, 158, 471, 175, 196}),
    ({244, 355, 235, 301, 243, 193, 159, 475, 177, 198}),
    ({246, 359, 237, 304, 245, 195, 161, 480, 179, 200}),
});
// 战斗大师
nosave mixed *level_info7 = ({
    ({0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
    ({30, 7, 19, 15, 5, 0, 0, 32, 2, 0}),
    ({35, 9, 22, 18, 6, 0, 0, 38, 3, 0}),
    ({40, 10, 25, 20, 7, 0, 0, 43, 3, 0}),
    ({44, 11, 29, 23, 8, 0, 0, 48, 4, 0}),
    ({49, 12, 32, 25, 9, 0, 0, 53, 4, 3}),
    ({54, 13, 35, 28, 10, 0, 0, 58, 4, 6}),
    ({59, 15, 38, 30, 11, 0, 0, 63, 5, 6}),
    ({64, 16, 41, 33, 11, 0, 0, 69, 5, 9}),
    ({68, 17, 44, 35, 12, 0, 0, 74, 6, 12}),
    ({73, 18, 47, 37, 13, 0, 0, 79, 6, 12}),
    ({78, 19, 50, 40, 14, 0, 0, 84, 6, 15}),
    ({83, 21, 53, 42, 15, 0, 0, 89, 7, 18}),
    ({88, 22, 56, 45, 16, 0, 0, 95, 7, 18}),
    ({92, 23, 59, 47, 17, 0, 0, 100, 8, 22}),
    ({97, 24, 63, 50, 17, 0, 0, 105, 8, 26}),
    ({102, 25, 66, 52, 18, 0, 0, 110, 8, 26}),
    ({107, 26, 69, 55, 19, 0, 0, 115, 9, 30}),
    ({112, 28, 72, 57, 20, 0, 0, 120, 9, 34}),
    ({116, 29, 75, 60, 21, 0, 0, 126, 10, 34}),
    ({121, 30, 78, 62, 22, 0, 0, 131, 10, 38}),
    ({126, 31, 81, 64, 23, 0, 0, 136, 10, 42}),
    ({131, 32, 84, 67, 24, 0, 0, 141, 11, 42}),
    ({136, 34, 87, 69, 24, 0, 0, 146, 11, 47}),
    ({140, 35, 90, 72, 25, 0, 0, 152, 12, 52}),
    ({145, 36, 93, 74, 26, 0, 0, 157, 12, 52}),
    ({150, 37, 97, 77, 27, 0, 0, 162, 12, 57}),
    ({155, 38, 100, 79, 28, 0, 0, 167, 13, 62}),
    ({159, 40, 103, 82, 29, 0, 0, 172, 13, 62}),
    ({164, 41, 106, 84, 30, 0, 0, 177, 13, 67}),
    ({169, 42, 109, 87, 30, 0, 0, 183, 14, 72}),
    ({174, 43, 112, 89, 31, 0, 0, 188, 14, 72}),
    ({179, 44, 115, 91, 32, 0, 0, 193, 15, 78}),
    ({183, 46, 118, 94, 33, 0, 0, 198, 15, 84}),
    ({188, 47, 121, 96, 34, 0, 0, 203, 15, 84}),
    ({193, 48, 124, 99, 35, 0, 0, 209, 16, 90}),
    ({198, 49, 127, 101, 36, 0, 0, 214, 16, 96}),
    ({203, 50, 131, 104, 36, 0, 0, 219, 17, 96}),
    ({207, 51, 134, 106, 37, 0, 0, 224, 17, 102}),
    ({212, 53, 137, 109, 38, 0, 0, 229, 17, 108}),
    ({217, 54, 140, 111, 39, 0, 0, 234, 18, 108}),
    ({222, 55, 143, 114, 40, 0, 0, 240, 18, 113}),
    ({227, 56, 146, 116, 41, 0, 0, 245, 19, 118}),
    ({231, 57, 149, 118, 42, 0, 0, 250, 19, 118}),
    ({236, 59, 152, 121, 43, 0, 0, 255, 19, 122}),
    ({241, 60, 155, 123, 43, 0, 0, 260, 20, 126}),
    ({246, 61, 158, 126, 44, 0, 0, 265, 20, 126}),
    ({251, 62, 161, 128, 45, 0, 0, 271, 21, 129}),
    ({255, 63, 164, 131, 46, 0, 0, 276, 21, 132}),
    ({260, 65, 168, 133, 47, 0, 0, 281, 21, 132}),
    ({265, 66, 171, 136, 48, 0, 0, 286, 22, 134}),
    ({270, 67, 174, 138, 49, 0, 0, 291, 22, 136}),
    ({275, 68, 177, 141, 49, 0, 0, 297, 23, 136}),
    ({279, 69, 180, 143, 50, 0, 0, 302, 23, 138}),
    ({284, 70, 183, 146, 51, 0, 0, 307, 23, 140}),
    ({289, 72, 186, 148, 52, 0, 0, 312, 24, 140}),
    ({294, 73, 189, 150, 53, 0, 0, 317, 24, 142}),
    ({299, 74, 192, 153, 54, 0, 0, 322, 24, 144}),
    ({303, 75, 195, 155, 55, 0, 0, 328, 25, 144}),
    ({308, 76, 198, 158, 55, 0, 0, 333, 25, 146}),
    ({313, 78, 202, 160, 56, 0, 0, 338, 26, 148}),
    ({318, 79, 205, 163, 57, 0, 0, 343, 26, 148}),
    ({323, 80, 208, 165, 58, 0, 0, 348, 26, 150}),
    ({327, 81, 211, 168, 59, 0, 0, 354, 27, 152}),
    ({332, 82, 214, 170, 60, 0, 0, 359, 27, 152}),
    ({337, 84, 217, 173, 61, 0, 0, 364, 28, 154}),
    ({342, 85, 220, 175, 62, 0, 0, 369, 28, 156}),
    ({347, 86, 223, 177, 62, 0, 0, 374, 28, 156}),
    ({351, 87, 226, 180, 63, 0, 0, 379, 29, 158}),
    ({356, 88, 229, 182, 64, 0, 0, 385, 29, 160}),
    ({361, 90, 232, 185, 65, 0, 0, 390, 30, 160}),
    ({366, 91, 236, 187, 66, 0, 0, 395, 30, 162}),
    ({371, 92, 239, 190, 67, 0, 0, 400, 30, 164}),
    ({375, 93, 242, 192, 68, 0, 0, 405, 31, 164}),
    ({380, 94, 245, 195, 68, 0, 0, 411, 31, 166}),
    ({385, 95, 248, 197, 69, 0, 0, 416, 32, 168}),
    ({390, 97, 251, 200, 70, 0, 0, 421, 32, 168}),
    ({394, 98, 254, 202, 71, 0, 0, 426, 32, 170}),
    ({399, 99, 257, 204, 72, 0, 0, 431, 33, 172}),
    ({404, 100, 260, 207, 73, 0, 0, 436, 33, 172}),
    ({409, 101, 263, 209, 74, 0, 0, 442, 34, 174}),
    ({414, 103, 266, 212, 74, 0, 0, 447, 34, 176}),
    ({418, 104, 269, 214, 75, 0, 0, 452, 34, 176}),
    ({423, 105, 273, 217, 76, 0, 0, 457, 35, 178}),
    ({428, 106, 276, 219, 77, 0, 0, 462, 35, 180}),
    ({433, 107, 279, 222, 78, 0, 0, 467, 35, 180}),
    ({438, 109, 282, 224, 79, 0, 0, 473, 36, 182}),
    ({442, 110, 285, 227, 80, 0, 0, 478, 36, 184}),
    ({447, 111, 288, 229, 81, 0, 0, 483, 37, 184}),
    ({452, 112, 291, 231, 81, 0, 0, 488, 37, 186}),
    ({457, 113, 294, 234, 82, 0, 0, 493, 37, 188}),
    ({462, 114, 297, 236, 83, 0, 0, 499, 38, 188}),
    ({466, 116, 300, 239, 84, 0, 0, 504, 38, 190}),
    ({471, 117, 303, 241, 85, 0, 0, 509, 39, 192}),
    ({476, 118, 307, 244, 86, 0, 0, 514, 39, 192}),
    ({481, 119, 310, 246, 87, 0, 0, 519, 39, 194}),
    ({486, 120, 313, 249, 87, 0, 0, 524, 40, 196}),
    ({490, 122, 316, 251, 88, 0, 0, 530, 40, 196}),
    ({495, 123, 319, 254, 89, 0, 0, 535, 41, 198}),
    ({500, 124, 322, 256, 90, 0, 0, 540, 41, 200}),
});
// 圣骑士
nosave mixed *level_info8 = ({
    ({0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
    ({21, 4, 22, 1, 7, 10, 0, 36, 11, 0}),
    ({25, 5, 25, 1, 8, 11, 0, 42, 12, 0}),
    ({28, 6, 29, 1, 9, 13, 0, 48, 14, 0}),
    ({31, 6, 32, 1, 10, 15, 0, 53, 16, 0}),
    ({35, 7, 35, 1, 11, 16, 0, 59, 17, 3}),
    ({38, 8, 39, 1, 13, 18, 0, 65, 19, 6}),
    ({42, 9, 42, 1, 14, 19, 0, 71, 21, 6}),
    ({45, 9, 46, 1, 15, 21, 0, 76, 22, 9}),
    ({48, 10, 49, 1, 16, 22, 0, 82, 24, 12}),
    ({52, 11, 53, 1, 17, 24, 0, 88, 26, 12}),
    ({55, 11, 56, 1, 18, 26, 0, 94, 27, 15}),
    ({59, 12, 60, 1, 19, 27, 0, 99, 29, 18}),
    ({62, 13, 63, 2, 20, 29, 0, 105, 31, 18}),
    ({65, 13, 66, 2, 21, 30, 0, 111, 32, 22}),
    ({69, 14, 70, 2, 23, 32, 0, 117, 34, 26}),
    ({72, 15, 73, 2, 24, 33, 0, 122, 36, 26}),
    ({76, 16, 77, 2, 25, 35, 0, 128, 37, 30}),
    ({79, 16, 80, 2, 26, 37, 0, 134, 39, 34}),
    ({82, 17, 84, 2, 27, 38, 0, 140, 41, 34}),
    ({86, 18, 87, 2, 28, 40, 0, 145, 42, 38}),
    ({89, 18, 91, 2, 29, 41, 0, 151, 44, 42}),
    ({93, 19, 94, 2, 30, 43, 0, 157, 46, 42}),
    ({96, 20, 98, 2, 31, 44, 0, 163, 47, 47}),
    ({99, 20, 101, 3, 33, 46, 0, 168, 49, 52}),
    ({103, 21, 104, 3, 34, 48, 0, 174, 51, 52}),
    ({106, 22, 108, 3, 35, 49, 0, 180, 52, 57}),
    ({110, 23, 111, 3, 36, 51, 0, 186, 54, 62}),
    ({113, 23, 115, 3, 37, 52, 0, 191, 56, 62}),
    ({116, 24, 118, 3, 38, 54, 0, 197, 58, 67}),
    ({120, 25, 122, 3, 39, 55, 0, 203, 59, 72}),
    ({123, 25, 125, 3, 40, 57, 0, 209, 61, 72}),
    ({127, 26, 129, 3, 41, 59, 0, 214, 63, 78}),
    ({130, 27, 132, 3, 43, 60, 0, 220, 64, 84}),
    ({133, 27, 136, 3, 44, 62, 0, 226, 66, 84}),
    ({137, 28, 139, 3, 45, 63, 0, 232, 68, 90}),
    ({140, 29, 142, 4, 46, 65, 0, 237, 69, 96}),
    ({143, 30, 146, 4, 47, 66, 0, 243, 71, 96}),
    ({147, 30, 149, 4, 48, 68, 0, 249, 73, 102}),
    ({150, 31, 153, 4, 49, 70, 0, 255, 74, 108}),
    ({154, 32, 156, 4, 50, 71, 0, 260, 76, 108}),
    ({157, 32, 160, 4, 51, 73, 0, 266, 78, 113}),
    ({160, 33, 163, 4, 53, 74, 0, 272, 79, 118}),
    ({164, 34, 167, 4, 54, 76, 0, 278, 81, 118}),
    ({167, 34, 170, 4, 55, 77, 0, 283, 83, 122}),
    ({171, 35, 174, 4, 56, 79, 0, 289, 84, 126}),
    ({174, 36, 177, 4, 57, 81, 0, 295, 86, 126}),
    ({177, 37, 180, 5, 58, 82, 0, 301, 88, 129}),
    ({181, 37, 184, 5, 59, 84, 0, 306, 89, 132}),
    ({184, 38, 187, 5, 60, 85, 0, 312, 91, 132}),
    ({188, 39, 191, 5, 61, 87, 0, 318, 93, 134}),
    ({191, 39, 194, 5, 63, 88, 0, 324, 94, 136}),
    ({194, 40, 198, 5, 64, 90, 0, 330, 96, 136}),
    ({198, 41, 201, 5, 65, 92, 0, 335, 98, 138}),
    ({201, 41, 205, 5, 66, 93, 0, 341, 99, 140}),
    ({205, 42, 208, 5, 67, 95, 0, 347, 101, 140}),
    ({208, 43, 212, 5, 68, 96, 0, 353, 103, 142}),
    ({211, 44, 215, 5, 69, 98, 0, 358, 105, 144}),
    ({215, 44, 218, 5, 70, 100, 0, 364, 106, 144}),
    ({218, 45, 222, 6, 71, 101, 0, 370, 108, 146}),
    ({222, 46, 225, 6, 73, 103, 0, 376, 110, 148}),
    ({225, 46, 229, 6, 74, 104, 0, 381, 111, 148}),
    ({228, 47, 232, 6, 75, 106, 0, 387, 113, 150}),
    ({232, 48, 236, 6, 76, 107, 0, 393, 115, 152}),
    ({235, 48, 239, 6, 77, 109, 0, 399, 116, 152}),
    ({239, 49, 243, 6, 78, 111, 0, 404, 118, 154}),
    ({242, 50, 246, 6, 79, 112, 0, 410, 120, 156}),
    ({245, 51, 250, 6, 80, 114, 0, 416, 121, 156}),
    ({249, 51, 253, 6, 82, 115, 0, 422, 123, 158}),
    ({252, 52, 256, 6, 83, 117, 0, 427, 125, 160}),
    ({256, 53, 260, 6, 84, 118, 0, 433, 126, 160}),
    ({259, 53, 263, 7, 85, 120, 0, 439, 128, 162}),
    ({262, 54, 267, 7, 86, 122, 0, 445, 130, 164}),
    ({266, 55, 270, 7, 87, 123, 0, 450, 131, 164}),
    ({269, 55, 274, 7, 88, 125, 0, 456, 133, 166}),
    ({273, 56, 277, 7, 89, 126, 0, 462, 135, 168}),
    ({276, 57, 281, 7, 90, 128, 0, 468, 136, 168}),
    ({279, 58, 284, 7, 92, 129, 0, 473, 138, 170}),
    ({283, 58, 287, 7, 93, 131, 0, 479, 140, 172}),
    ({286, 59, 291, 7, 94, 133, 0, 485, 141, 172}),
    ({289, 60, 294, 7, 95, 134, 0, 491, 143, 174}),
    ({293, 60, 298, 7, 96, 136, 0, 496, 145, 176}),
    ({296, 61, 301, 8, 97, 137, 0, 502, 146, 176}),
    ({300, 62, 305, 8, 98, 139, 0, 508, 148, 178}),
    ({303, 62, 308, 8, 99, 140, 0, 514, 150, 180}),
    ({306, 63, 312, 8, 100, 142, 0, 519, 152, 180}),
    ({310, 64, 315, 8, 102, 144, 0, 525, 153, 182}),
    ({313, 65, 319, 8, 103, 145, 0, 531, 155, 184}),
    ({317, 65, 322, 8, 104, 147, 0, 537, 157, 184}),
    ({320, 66, 325, 8, 105, 148, 0, 542, 158, 186}),
    ({323, 67, 329, 8, 106, 150, 0, 548, 160, 188}),
    ({327, 67, 332, 8, 107, 151, 0, 554, 162, 188}),
    ({330, 68, 336, 8, 108, 153, 0, 560, 163, 190}),
    ({334, 69, 339, 8, 109, 155, 0, 565, 165, 192}),
    ({337, 69, 343, 9, 110, 156, 0, 571, 167, 192}),
    ({340, 70, 346, 9, 112, 158, 0, 577, 168, 194}),
    ({344, 71, 350, 9, 113, 159, 0, 583, 170, 196}),
    ({347, 72, 353, 9, 114, 161, 0, 588, 172, 196}),
    ({351, 72, 357, 9, 115, 162, 0, 594, 173, 198}),
    ({354, 73, 360, 9, 116, 164, 0, 600, 175, 200}),
});
// 魔法战士
nosave mixed *level_info9 = ({
    ({0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
    ({21, 10, 15, 7, 11, 0, 17, 32, 14, 0}),
    ({24, 12, 17, 8, 13, 0, 20, 38, 16, 0}),
    ({28, 14, 19, 9, 15, 0, 22, 43, 18, 0}),
    ({31, 15, 22, 10, 16, 0, 25, 48, 20, 0}),
    ({35, 17, 24, 11, 18, 0, 28, 53, 22, 3}),
    ({38, 19, 26, 12, 20, 0, 30, 58, 24, 6}),
    ({41, 20, 29, 13, 22, 0, 33, 63, 27, 6}),
    ({45, 22, 31, 14, 24, 0, 36, 69, 29, 9}),
    ({48, 24, 33, 15, 25, 0, 39, 74, 31, 12}),
    ({51, 25, 36, 16, 27, 0, 41, 79, 33, 12}),
    ({55, 27, 38, 17, 29, 0, 44, 84, 35, 15}),
    ({58, 29, 40, 18, 31, 0, 47, 89, 37, 18}),
    ({61, 30, 43, 19, 32, 0, 49, 95, 40, 18}),
    ({65, 32, 45, 20, 34, 0, 52, 100, 42, 22}),
    ({68, 34, 47, 21, 36, 0, 55, 105, 44, 26}),
    ({72, 35, 50, 22, 38, 0, 57, 110, 46, 26}),
    ({75, 37, 52, 23, 39, 0, 60, 115, 48, 30}),
    ({78, 39, 54, 25, 41, 0, 63, 120, 50, 34}),
    ({82, 40, 57, 26, 43, 0, 66, 126, 53, 34}),
    ({85, 42, 59, 27, 45, 0, 68, 131, 55, 38}),
    ({88, 44, 61, 28, 47, 0, 71, 136, 57, 42}),
    ({92, 45, 64, 29, 48, 0, 74, 141, 59, 42}),
    ({95, 47, 66, 30, 50, 0, 76, 146, 61, 47}),
    ({98, 49, 68, 31, 52, 0, 79, 152, 63, 52}),
    ({102, 50, 71, 32, 54, 0, 82, 157, 66, 52}),
    ({105, 52, 73, 33, 55, 0, 85, 162, 68, 57}),
    ({109, 54, 75, 34, 57, 0, 87, 167, 70, 62}),
    ({112, 55, 78, 35, 59, 0, 90, 172, 72, 62}),
    ({115, 57, 80, 36, 61, 0, 93, 177, 74, 67}),
    ({119, 59, 82, 37, 63, 0, 95, 183, 76, 72}),
    ({122, 60, 85, 38, 64, 0, 98, 188, 79, 72}),
    ({125, 62, 87, 39, 66, 0, 101, 193, 81, 78}),
    ({129, 63, 89, 40, 68, 0, 103, 198, 83, 84}),
    ({132, 65, 91, 41, 70, 0, 106, 203, 85, 84}),
    ({136, 67, 94, 42, 71, 0, 109, 209, 87, 90}),
    ({139, 68, 96, 44, 73, 0, 112, 214, 89, 96}),
    ({142, 70, 98, 45, 75, 0, 114, 219, 92, 96}),
    ({146, 72, 101, 46, 77, 0, 117, 224, 94, 102}),
    ({149, 73, 103, 47, 79, 0, 120, 229, 96, 108}),
    ({152, 75, 105, 48, 80, 0, 122, 234, 98, 108}),
    ({156, 77, 108, 49, 82, 0, 125, 240, 100, 113}),
    ({159, 78, 110, 50, 84, 0, 128, 245, 102, 118}),
    ({162, 80, 112, 51, 86, 0, 131, 250, 105, 118}),
    ({166, 82, 115, 52, 87, 0, 133, 255, 107, 122}),
    ({169, 83, 117, 53, 89, 0, 136, 260, 109, 126}),
    ({173, 85, 119, 54, 91, 0, 139, 265, 111, 126}),
    ({176, 87, 122, 55, 93, 0, 141, 271, 113, 129}),
    ({179, 88, 124, 56, 95, 0, 144, 276, 115, 132}),
    ({183, 90, 126, 57, 96, 0, 147, 281, 118, 132}),
    ({186, 92, 129, 58, 98, 0, 149, 286, 120, 134}),
    ({189, 93, 131, 59, 100, 0, 152, 291, 122, 136}),
    ({193, 95, 133, 60, 102, 0, 155, 297, 124, 136}),
    ({196, 97, 136, 61, 103, 0, 158, 302, 126, 138}),
    ({199, 98, 138, 63, 105, 0, 160, 307, 128, 140}),
    ({203, 100, 140, 64, 107, 0, 163, 312, 131, 140}),
    ({206, 102, 143, 65, 109, 0, 166, 317, 133, 142}),
    ({210, 103, 145, 66, 110, 0, 168, 322, 135, 144}),
    ({213, 105, 147, 67, 112, 0, 171, 328, 137, 144}),
    ({216, 107, 150, 68, 114, 0, 174, 333, 139, 146}),
    ({220, 108, 152, 69, 116, 0, 177, 338, 141, 148}),
    ({223, 110, 154, 70, 118, 0, 179, 343, 144, 148}),
    ({226, 112, 157, 71, 119, 0, 182, 348, 146, 150}),
    ({230, 113, 159, 72, 121, 0, 185, 354, 148, 152}),
    ({233, 115, 161, 73, 123, 0, 187, 359, 150, 152}),
    ({237, 117, 164, 74, 125, 0, 190, 364, 152, 154}),
    ({240, 118, 166, 75, 126, 0, 193, 369, 154, 156}),
    ({243, 120, 168, 76, 128, 0, 195, 374, 157, 156}),
    ({247, 122, 171, 77, 130, 0, 198, 379, 159, 158}),
    ({250, 123, 173, 78, 132, 0, 201, 385, 161, 160}),
    ({253, 125, 175, 79, 134, 0, 204, 390, 163, 160}),
    ({257, 127, 178, 80, 135, 0, 206, 395, 165, 162}),
    ({260, 128, 180, 82, 137, 0, 209, 400, 167, 164}),
    ({263, 130, 182, 83, 139, 0, 212, 405, 170, 164}),
    ({267, 132, 185, 84, 141, 0, 214, 411, 172, 166}),
    ({270, 133, 187, 85, 142, 0, 217, 416, 174, 168}),
    ({274, 135, 189, 86, 144, 0, 220, 421, 176, 168}),
    ({277, 136, 192, 87, 146, 0, 222, 426, 178, 170}),
    ({280, 138, 194, 88, 148, 0, 225, 431, 180, 172}),
    ({284, 140, 196, 89, 150, 0, 228, 436, 183, 172}),
    ({287, 141, 199, 90, 151, 0, 231, 442, 185, 174}),
    ({290, 143, 201, 91, 153, 0, 233, 447, 187, 176}),
    ({294, 145, 203, 92, 155, 0, 236, 452, 189, 176}),
    ({297, 146, 206, 93, 157, 0, 239, 457, 191, 178}),
    ({300, 148, 208, 94, 158, 0, 241, 462, 193, 180}),
    ({304, 150, 210, 95, 160, 0, 244, 467, 196, 180}),
    ({307, 151, 213, 96, 162, 0, 247, 473, 198, 182}),
    ({311, 153, 215, 97, 164, 0, 250, 478, 200, 184}),
    ({314, 155, 217, 98, 165, 0, 252, 483, 202, 184}),
    ({317, 156, 220, 99, 167, 0, 255, 488, 204, 186}),
    ({321, 158, 222, 101, 169, 0, 258, 493, 206, 188}),
    ({324, 160, 224, 102, 171, 0, 260, 499, 209, 188}),
    ({327, 161, 227, 103, 173, 0, 263, 504, 211, 190}),
    ({331, 163, 229, 104, 174, 0, 266, 509, 213, 192}),
    ({334, 165, 231, 105, 176, 0, 268, 514, 215, 192}),
    ({338, 166, 234, 106, 178, 0, 271, 519, 217, 194}),
    ({341, 168, 236, 107, 180, 0, 274, 524, 219, 196}),
    ({344, 170, 238, 108, 181, 0, 277, 530, 222, 196}),
    ({348, 171, 241, 109, 183, 0, 279, 535, 224, 198}),
    ({351, 173, 243, 110, 185, 0, 282, 540, 226, 200}),
});
// 游侠
nosave mixed *level_info10 = ({
    ({0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
    ({18, 16, 14, 30, 4, 12, 0, 31, 14, 0}),
    ({21, 18, 17, 35, 4, 14, 0, 35, 16, 0}),
    ({24, 21, 19, 40, 5, 16, 0, 40, 18, 0}),
    ({27, 23, 21, 44, 5, 18, 0, 45, 20, 0}),
    ({30, 26, 24, 49, 6, 20, 0, 50, 23, 3}),
    ({33, 29, 26, 54, 7, 22, 0, 55, 25, 6}),
    ({36, 31, 28, 59, 7, 24, 0, 60, 27, 6}),
    ({39, 34, 31, 64, 8, 25, 0, 65, 29, 9}),
    ({42, 36, 33, 68, 8, 27, 0, 70, 31, 12}),
    ({45, 39, 35, 73, 9, 29, 0, 75, 34, 12}),
    ({48, 41, 38, 78, 10, 31, 0, 80, 36, 15}),
    ({50, 44, 40, 83, 10, 33, 0, 84, 38, 18}),
    ({53, 46, 42, 88, 11, 35, 0, 89, 40, 18}),
    ({56, 49, 45, 92, 11, 37, 0, 94, 42, 22}),
    ({59, 51, 47, 97, 12, 39, 0, 99, 44, 26}),
    ({62, 54, 49, 102, 12, 41, 0, 104, 47, 26}),
    ({65, 56, 51, 107, 13, 43, 0, 109, 49, 30}),
    ({68, 59, 54, 112, 14, 45, 0, 114, 51, 34}),
    ({71, 61, 56, 116, 14, 47, 0, 119, 53, 34}),
    ({74, 64, 58, 121, 15, 48, 0, 124, 55, 38}),
    ({77, 66, 61, 126, 15, 50, 0, 128, 58, 42}),
    ({80, 69, 63, 131, 16, 52, 0, 133, 60, 42}),
    ({83, 72, 65, 136, 17, 54, 0, 138, 62, 47}),
    ({86, 74, 68, 140, 17, 56, 0, 143, 64, 52}),
    ({89, 77, 70, 145, 18, 58, 0, 148, 66, 52}),
    ({91, 79, 72, 150, 18, 60, 0, 153, 69, 57}),
    ({94, 82, 75, 155, 19, 62, 0, 158, 71, 62}),
    ({97, 84, 77, 159, 19, 64, 0, 163, 73, 62}),
    ({100, 87, 79, 164, 20, 66, 0, 168, 75, 67}),
    ({103, 89, 81, 169, 21, 68, 0, 172, 77, 72}),
    ({106, 92, 84, 174, 21, 70, 0, 177, 80, 72}),
    ({109, 94, 86, 179, 22, 71, 0, 182, 82, 78}),
    ({112, 97, 88, 183, 22, 73, 0, 187, 84, 84}),
    ({115, 99, 91, 188, 23, 75, 0, 192, 86, 84}),
    ({118, 102, 93, 193, 24, 77, 0, 197, 88, 90}),
    ({121, 104, 95, 198, 24, 79, 0, 202, 91, 96}),
    ({124, 107, 98, 203, 25, 81, 0, 207, 93, 96}),
    ({127, 110, 100, 207, 25, 83, 0, 212, 95, 102}),
    ({129, 112, 102, 212, 26, 85, 0, 216, 97, 108}),
    ({132, 115, 105, 217, 26, 87, 0, 221, 99, 108}),
    ({135, 117, 107, 222, 27, 89, 0, 226, 102, 113}),
    ({138, 120, 109, 227, 28, 91, 0, 231, 104, 118}),
    ({141, 122, 112, 231, 28, 93, 0, 236, 106, 118}),
    ({144, 125, 114, 236, 29, 94, 0, 241, 108, 122}),
    ({147, 127, 116, 241, 29, 96, 0, 246, 110, 126}),
    ({150, 130, 118, 246, 30, 98, 0, 251, 113, 126}),
    ({153, 132, 121, 251, 31, 100, 0, 256, 115, 129}),
    ({156, 135, 123, 255, 31, 102, 0, 261, 117, 132}),
    ({159, 137, 125, 260, 32, 104, 0, 265, 119, 132}),
    ({162, 140, 128, 265, 32, 106, 0, 270, 121, 134}),
    ({165, 142, 130, 270, 33, 108, 0, 275, 124, 136}),
    ({168, 145, 132, 275, 34, 110, 0, 280, 126, 136}),
    ({170, 148, 135, 279, 34, 112, 0, 285, 128, 138}),
    ({173, 150, 137, 284, 35, 114, 0, 290, 130, 140}),
    ({176, 153, 139, 289, 35, 116, 0, 295, 132, 140}),
    ({179, 155, 142, 294, 36, 118, 0, 300, 135, 142}),
    ({182, 158, 144, 299, 36, 119, 0, 305, 137, 144}),
    ({185, 160, 146, 303, 37, 121, 0, 309, 139, 144}),
    ({188, 163, 149, 308, 38, 123, 0, 314, 141, 146}),
    ({191, 165, 151, 313, 38, 125, 0, 319, 143, 148}),
    ({194, 168, 153, 318, 39, 127, 0, 324, 146, 148}),
    ({197, 170, 155, 323, 39, 129, 0, 329, 148, 150}),
    ({200, 173, 158, 327, 40, 131, 0, 334, 150, 152}),
    ({203, 175, 160, 332, 41, 133, 0, 339, 152, 152}),
    ({206, 178, 162, 337, 41, 135, 0, 344, 154, 154}),
    ({208, 180, 165, 342, 42, 137, 0, 349, 157, 156}),
    ({211, 183, 167, 347, 42, 139, 0, 353, 159, 156}),
    ({214, 186, 169, 351, 43, 141, 0, 358, 161, 158}),
    ({217, 188, 172, 356, 43, 142, 0, 363, 163, 160}),
    ({220, 191, 174, 361, 44, 144, 0, 368, 165, 160}),
    ({223, 193, 176, 366, 45, 146, 0, 373, 167, 162}),
    ({226, 196, 179, 371, 45, 148, 0, 378, 170, 164}),
    ({229, 198, 181, 375, 46, 150, 0, 383, 172, 164}),
    ({232, 201, 183, 380, 46, 152, 0, 388, 174, 166}),
    ({235, 203, 186, 385, 47, 154, 0, 393, 176, 168}),
    ({238, 206, 188, 390, 48, 156, 0, 397, 178, 168}),
    ({241, 208, 190, 394, 48, 158, 0, 402, 181, 170}),
    ({244, 211, 192, 399, 49, 160, 0, 407, 183, 172}),
    ({246, 213, 195, 404, 49, 162, 0, 412, 185, 172}),
    ({249, 216, 197, 409, 50, 164, 0, 417, 187, 174}),
    ({252, 218, 199, 414, 50, 165, 0, 422, 189, 176}),
    ({255, 221, 202, 418, 51, 167, 0, 427, 192, 176}),
    ({258, 223, 204, 423, 52, 169, 0, 432, 194, 178}),
    ({261, 226, 206, 428, 52, 171, 0, 437, 196, 180}),
    ({264, 229, 209, 433, 53, 173, 0, 442, 198, 180}),
    ({267, 231, 211, 438, 53, 175, 0, 446, 200, 182}),
    ({270, 234, 213, 442, 54, 177, 0, 451, 203, 184}),
    ({273, 236, 216, 447, 55, 179, 0, 456, 205, 184}),
    ({276, 239, 218, 452, 55, 181, 0, 461, 207, 186}),
    ({279, 241, 220, 457, 56, 183, 0, 466, 209, 188}),
    ({282, 244, 223, 462, 56, 185, 0, 471, 211, 188}),
    ({285, 246, 225, 466, 57, 187, 0, 476, 214, 190}),
    ({287, 249, 227, 471, 57, 188, 0, 481, 216, 192}),
    ({290, 251, 229, 476, 58, 190, 0, 486, 218, 192}),
    ({293, 254, 232, 481, 59, 192, 0, 490, 220, 194}),
    ({296, 256, 234, 486, 59, 194, 0, 495, 222, 196}),
    ({299, 259, 236, 490, 60, 196, 0, 500, 225, 196}),
    ({302, 261, 239, 495, 60, 198, 0, 505, 227, 198}),
    ({305, 264, 241, 500, 61, 200, 0, 510, 229, 200}),
});
// 贤者
nosave mixed *level_info11 = ({
    ({0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
    ({12, 13, 12, 3, 14, 12, 14, 29, 30, 0}),
    ({14, 15, 14, 4, 16, 14, 16, 33, 35, 0}),
    ({16, 17, 16, 5, 19, 16, 19, 38, 40, 0}),
    ({18, 19, 18, 5, 21, 18, 21, 43, 44, 0}),
    ({20, 21, 20, 6, 23, 20, 23, 47, 49, 3}),
    ({22, 24, 22, 6, 25, 22, 26, 52, 54, 6}),
    ({24, 26, 24, 7, 28, 24, 28, 56, 59, 6}),
    ({26, 28, 26, 7, 30, 26, 30, 61, 64, 9}),
    ({28, 30, 28, 8, 32, 28, 32, 66, 68, 12}),
    ({30, 32, 30, 8, 34, 30, 35, 70, 73, 12}),
    ({31, 34, 31, 9, 37, 32, 37, 75, 78, 15}),
    ({33, 36, 33, 9, 39, 34, 39, 79, 83, 18}),
    ({35, 38, 35, 10, 41, 36, 41, 84, 88, 18}),
    ({37, 40, 37, 11, 43, 38, 44, 89, 92, 22}),
    ({39, 42, 39, 11, 46, 40, 46, 93, 97, 26}),
    ({41, 44, 41, 12, 48, 42, 48, 98, 102, 26}),
    ({43, 47, 43, 12, 50, 44, 51, 102, 107, 30}),
    ({45, 49, 45, 13, 52, 46, 53, 107, 112, 34}),
    ({47, 51, 47, 13, 55, 48, 55, 112, 116, 34}),
    ({49, 53, 49, 14, 57, 50, 57, 116, 121, 38}),
    ({51, 55, 51, 14, 59, 52, 60, 121, 126, 42}),
    ({53, 57, 53, 15, 61, 54, 62, 125, 131, 42}),
    ({55, 59, 55, 15, 64, 56, 64, 130, 136, 47}),
    ({57, 61, 57, 16, 66, 58, 67, 135, 140, 52}),
    ({59, 63, 59, 17, 68, 60, 69, 139, 145, 52}),
    ({61, 65, 61, 17, 70, 62, 71, 144, 150, 57}),
    ({62, 67, 62, 18, 73, 64, 73, 149, 155, 62}),
    ({64, 70, 64, 18, 75, 66, 76, 153, 159, 62}),
    ({66, 72, 66, 19, 77, 68, 78, 158, 164, 67}),
    ({68, 74, 68, 19, 79, 70, 80, 162, 169, 72}),
    ({70, 76, 70, 20, 82, 72, 82, 167, 174, 72}),
    ({72, 78, 72, 20, 84, 74, 85, 172, 179, 78}),
    ({74, 80, 74, 21, 86, 76, 87, 176, 183, 84}),
    ({76, 82, 76, 21, 88, 78, 89, 181, 188, 84}),
    ({78, 84, 78, 22, 91, 80, 92, 185, 193, 90}),
    ({80, 86, 80, 23, 93, 82, 94, 190, 198, 96}),
    ({82, 88, 82, 23, 95, 84, 96, 195, 203, 96}),
    ({84, 90, 84, 24, 98, 86, 98, 199, 207, 102}),
    ({86, 93, 86, 24, 100, 88, 101, 204, 212, 108}),
    ({88, 95, 88, 25, 102, 90, 103, 208, 217, 108}),
    ({90, 97, 90, 25, 104, 92, 105, 213, 222, 113}),
    ({92, 99, 92, 26, 107, 94, 107, 218, 227, 118}),
    ({93, 101, 93, 26, 109, 96, 110, 222, 231, 118}),
    ({95, 103, 95, 27, 111, 98, 112, 227, 236, 122}),
    ({97, 105, 97, 27, 113, 100, 114, 231, 241, 126}),
    ({99, 107, 99, 28, 116, 102, 117, 236, 246, 126}),
    ({101, 109, 101, 29, 118, 104, 119, 241, 251, 129}),
    ({103, 111, 103, 29, 120, 106, 121, 245, 255, 132}),
    ({105, 113, 105, 30, 122, 108, 123, 250, 260, 132}),
    ({107, 116, 107, 30, 125, 110, 126, 254, 265, 134}),
    ({109, 118, 109, 31, 127, 112, 128, 259, 270, 136}),
    ({111, 120, 111, 31, 129, 114, 130, 264, 275, 136}),
    ({113, 122, 113, 32, 131, 116, 132, 268, 279, 138}),
    ({115, 124, 115, 32, 134, 118, 135, 273, 284, 140}),
    ({117, 126, 117, 33, 136, 120, 137, 277, 289, 140}),
    ({119, 128, 119, 33, 138, 122, 139, 282, 294, 142}),
    ({121, 130, 121, 34, 140, 124, 142, 287, 299, 144}),
    ({123, 132, 123, 35, 143, 126, 144, 291, 303, 144}),
    ({124, 134, 124, 35, 145, 128, 146, 296, 308, 146}),
    ({126, 136, 126, 36, 147, 130, 148, 300, 313, 148}),
    ({128, 139, 128, 36, 149, 132, 151, 305, 318, 148}),
    ({130, 141, 130, 37, 152, 134, 153, 310, 323, 150}),
    ({132, 143, 132, 37, 154, 136, 155, 314, 327, 152}),
    ({134, 145, 134, 38, 156, 138, 157, 319, 332, 152}),
    ({136, 147, 136, 38, 158, 140, 160, 323, 337, 154}),
    ({138, 149, 138, 39, 161, 142, 162, 328, 342, 156}),
    ({140, 151, 140, 40, 163, 144, 164, 333, 347, 156}),
    ({142, 153, 142, 40, 165, 146, 167, 337, 351, 158}),
    ({144, 155, 144, 41, 167, 148, 169, 342, 356, 160}),
    ({146, 157, 146, 41, 170, 150, 171, 346, 361, 160}),
    ({148, 159, 148, 42, 172, 152, 173, 351, 366, 162}),
    ({150, 162, 150, 42, 174, 154, 176, 356, 371, 164}),
    ({152, 164, 152, 43, 176, 156, 178, 360, 375, 164}),
    ({154, 166, 154, 43, 179, 158, 180, 365, 380, 166}),
    ({155, 168, 155, 44, 181, 160, 182, 370, 385, 168}),
    ({157, 170, 157, 44, 183, 162, 185, 374, 390, 168}),
    ({159, 172, 159, 45, 185, 164, 187, 379, 394, 170}),
    ({161, 174, 161, 46, 188, 166, 189, 383, 399, 172}),
    ({163, 176, 163, 46, 190, 168, 192, 388, 404, 172}),
    ({165, 178, 165, 47, 192, 170, 194, 393, 409, 174}),
    ({167, 180, 167, 47, 194, 172, 196, 397, 414, 176}),
    ({169, 182, 169, 48, 197, 174, 198, 402, 418, 176}),
    ({171, 185, 171, 48, 199, 176, 201, 406, 423, 178}),
    ({173, 187, 173, 49, 201, 178, 203, 411, 428, 180}),
    ({175, 189, 175, 49, 203, 180, 205, 416, 433, 180}),
    ({177, 191, 177, 50, 206, 182, 207, 420, 438, 182}),
    ({179, 193, 179, 50, 208, 184, 210, 425, 442, 184}),
    ({181, 195, 181, 51, 210, 186, 212, 429, 447, 184}),
    ({183, 197, 183, 52, 212, 188, 214, 434, 452, 186}),
    ({185, 199, 185, 52, 215, 190, 217, 439, 457, 188}),
    ({186, 201, 186, 53, 217, 192, 219, 443, 462, 188}),
    ({188, 203, 188, 53, 219, 194, 221, 448, 466, 190}),
    ({190, 205, 190, 54, 221, 196, 223, 452, 471, 192}),
    ({192, 208, 192, 54, 224, 198, 226, 457, 476, 192}),
    ({194, 210, 194, 55, 226, 200, 228, 462, 481, 194}),
    ({196, 212, 196, 55, 228, 202, 230, 466, 486, 196}),
    ({198, 214, 198, 56, 230, 204, 232, 471, 490, 196}),
    ({200, 216, 200, 56, 233, 206, 235, 475, 495, 198}),
    ({202, 218, 202, 57, 235, 208, 237, 480, 500, 200}),
});
// 超级明星
nosave mixed *level_info12 = ({
    ({0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
    ({9, 22, 12, 16, 18, 19, 5, 31, 13, 0}),
    ({10, 25, 14, 18, 21, 22, 5, 35, 15, 0}),
    ({12, 29, 16, 21, 24, 25, 6, 40, 17, 0}),
    ({13, 32, 18, 23, 27, 28, 7, 45, 20, 0}),
    ({15, 36, 20, 25, 30, 31, 8, 50, 22, 3}),
    ({16, 39, 22, 28, 32, 34, 8, 55, 24, 6}),
    ({17, 42, 24, 30, 35, 37, 9, 60, 26, 6}),
    ({19, 46, 26, 33, 38, 40, 10, 65, 28, 9}),
    ({20, 49, 28, 35, 41, 43, 11, 70, 30, 12}),
    ({22, 53, 30, 38, 44, 47, 11, 75, 32, 12}),
    ({23, 56, 32, 40, 47, 50, 12, 80, 34, 15}),
    ({24, 60, 34, 43, 50, 53, 13, 84, 36, 18}),
    ({26, 63, 36, 45, 53, 56, 13, 89, 39, 18}),
    ({27, 67, 38, 48, 55, 59, 14, 94, 41, 22}),
    ({29, 70, 40, 50, 58, 62, 15, 99, 43, 26}),
    ({30, 74, 42, 53, 61, 65, 16, 104, 45, 26}),
    ({32, 77, 44, 55, 64, 68, 16, 109, 47, 30}),
    ({33, 81, 46, 58, 67, 71, 17, 114, 49, 34}),
    ({34, 84, 48, 60, 70, 74, 18, 119, 51, 34}),
    ({36, 87, 50, 63, 73, 77, 19, 124, 53, 38}),
    ({37, 91, 52, 65, 76, 80, 19, 128, 55, 42}),
    ({39, 94, 54, 68, 78, 83, 20, 133, 58, 42}),
    ({40, 98, 56, 70, 81, 86, 21, 138, 60, 47}),
    ({42, 101, 58, 73, 84, 89, 22, 143, 62, 52}),
    ({43, 105, 59, 75, 87, 92, 22, 148, 64, 52}),
    ({44, 108, 61, 78, 90, 95, 23, 153, 66, 57}),
    ({46, 112, 63, 80, 93, 98, 24, 158, 68, 62}),
    ({47, 115, 65, 83, 96, 101, 25, 163, 70, 62}),
    ({49, 119, 67, 85, 99, 104, 25, 168, 72, 67}),
    ({50, 122, 69, 88, 101, 108, 26, 172, 74, 72}),
    ({51, 126, 71, 90, 104, 111, 27, 177, 77, 72}),
    ({53, 129, 73, 93, 107, 114, 28, 182, 79, 78}),
    ({54, 132, 75, 95, 110, 117, 28, 187, 81, 84}),
    ({56, 136, 77, 98, 113, 120, 29, 192, 83, 84}),
    ({57, 139, 79, 100, 116, 123, 30, 197, 85, 90}),
    ({59, 143, 81, 102, 119, 126, 30, 202, 87, 96}),
    ({60, 146, 83, 105, 122, 129, 31, 207, 89, 96}),
    ({61, 150, 85, 107, 124, 132, 32, 212, 91, 102}),
    ({63, 153, 87, 110, 127, 135, 33, 216, 93, 108}),
    ({64, 157, 89, 112, 130, 138, 33, 221, 95, 108}),
    ({66, 160, 91, 115, 133, 141, 34, 226, 98, 113}),
    ({67, 164, 93, 117, 136, 144, 35, 231, 100, 118}),
    ({69, 167, 95, 120, 139, 147, 36, 236, 102, 118}),
    ({70, 171, 97, 122, 142, 150, 36, 241, 104, 122}),
    ({71, 174, 99, 125, 145, 153, 37, 246, 106, 126}),
    ({73, 177, 101, 127, 147, 156, 38, 251, 108, 126}),
    ({74, 181, 103, 130, 150, 159, 39, 256, 110, 129}),
    ({76, 184, 105, 132, 153, 162, 39, 261, 112, 132}),
    ({77, 188, 107, 135, 156, 165, 40, 265, 114, 132}),
    ({78, 191, 109, 137, 159, 169, 41, 270, 117, 134}),
    ({80, 195, 111, 140, 162, 172, 42, 275, 119, 136}),
    ({81, 198, 113, 142, 165, 175, 42, 280, 121, 136}),
    ({83, 202, 115, 145, 168, 178, 43, 285, 123, 138}),
    ({84, 205, 117, 147, 171, 181, 44, 290, 125, 140}),
    ({86, 209, 118, 150, 173, 184, 45, 295, 127, 140}),
    ({87, 212, 120, 152, 176, 187, 45, 300, 129, 142}),
    ({88, 216, 122, 155, 179, 190, 46, 305, 131, 144}),
    ({90, 219, 124, 157, 182, 193, 47, 309, 133, 144}),
    ({91, 222, 126, 160, 185, 196, 47, 314, 136, 146}),
    ({93, 226, 128, 162, 188, 199, 48, 319, 138, 148}),
    ({94, 229, 130, 165, 191, 202, 49, 324, 140, 148}),
    ({95, 233, 132, 167, 194, 205, 50, 329, 142, 150}),
    ({97, 236, 134, 170, 196, 208, 50, 334, 144, 152}),
    ({98, 240, 136, 172, 199, 211, 51, 339, 146, 152}),
    ({100, 243, 138, 175, 202, 214, 52, 344, 148, 154}),
    ({101, 247, 140, 177, 205, 217, 53, 349, 150, 156}),
    ({103, 250, 142, 180, 208, 220, 53, 353, 152, 156}),
    ({104, 254, 144, 182, 211, 223, 54, 358, 155, 158}),
    ({105, 257, 146, 184, 214, 226, 55, 363, 157, 160}),
    ({107, 261, 148, 187, 217, 230, 56, 368, 159, 160}),
    ({108, 264, 150, 189, 219, 233, 56, 373, 161, 162}),
    ({110, 268, 152, 192, 222, 236, 57, 378, 163, 164}),
    ({111, 271, 154, 194, 225, 239, 58, 383, 165, 164}),
    ({113, 274, 156, 197, 228, 242, 59, 388, 167, 166}),
    ({114, 278, 158, 199, 231, 245, 59, 393, 169, 168}),
    ({115, 281, 160, 202, 234, 248, 60, 397, 171, 168}),
    ({117, 285, 162, 204, 237, 251, 61, 402, 174, 170}),
    ({118, 288, 164, 207, 240, 254, 61, 407, 176, 172}),
    ({120, 292, 166, 209, 242, 257, 62, 412, 178, 172}),
    ({121, 295, 168, 212, 245, 260, 63, 417, 180, 174}),
    ({122, 299, 170, 214, 248, 263, 64, 422, 182, 176}),
    ({124, 302, 172, 217, 251, 266, 64, 427, 184, 176}),
    ({125, 306, 174, 219, 254, 269, 65, 432, 186, 178}),
    ({127, 309, 176, 222, 257, 272, 66, 437, 188, 180}),
    ({128, 313, 177, 224, 260, 275, 67, 442, 190, 180}),
    ({130, 316, 179, 227, 263, 278, 67, 446, 193, 182}),
    ({131, 319, 181, 229, 265, 281, 68, 451, 195, 184}),
    ({132, 323, 183, 232, 268, 284, 69, 456, 197, 184}),
    ({134, 326, 185, 234, 271, 287, 70, 461, 199, 186}),
    ({135, 330, 187, 237, 274, 291, 70, 466, 201, 188}),
    ({137, 333, 189, 239, 277, 294, 71, 471, 203, 188}),
    ({138, 337, 191, 242, 280, 297, 72, 476, 205, 190}),
    ({139, 340, 193, 244, 283, 300, 73, 481, 207, 192}),
    ({141, 344, 195, 247, 286, 303, 73, 486, 209, 192}),
    ({142, 347, 197, 249, 288, 306, 74, 490, 212, 194}),
    ({144, 351, 199, 252, 291, 309, 75, 495, 214, 196}),
    ({145, 354, 201, 254, 294, 312, 76, 500, 216, 196}),
    ({147, 358, 203, 257, 297, 315, 76, 505, 218, 198}),
    ({148, 361, 205, 259, 300, 318, 77, 510, 220, 200}),
});
/**
 * 力量 速度 耐力(防御力) 幸运(器用) 魅力 回复魔力 攻击魔力 HP MP 累积技能点数
 */
// 升级所需经验数据
nosave int *level_exp = ({
    0,          0,          16,         50,         122,        275,        504,        847,        1361,       2132,
    3288,       4805,       6796,       9409,       12838,      17338,      22259,      27641,      33527,      39964,
    47004,      54924,      63834,      73857,      85132,      97816,      112085,     128137,     146195,     166510,
    189364,     215074,     243997,     276535,     313140,     354320,     400647,     452764,     511395,     577354,
    651557,     735035,     828947,     934598,     1053455,    1187169,    1320883,    1454597,    1588311,    1722025,
    1855739,    1989453,    2123167,    2256881,    2390595,    2524309,    2658023,    2791737,    2925451,    3059165,
    3192879,    3326593,    3460307,    3594021,    3727735,    3861449,    3995163,    4128877,    4262591,    4396305,
    4530019,    4663733,    4797447,    4931161,    5064875,    5198589,    5332303,    5466017,    5599731,    5733445,
    5867159,    6000873,    6134587,    6268301,    6402015,    6535729,    6669443,    6803157,    6936871,    7070585,
    7204299,    7338013,    7471727,    7605441,    7739155,    7872869,    8006583,    8140297,    8274011,    8407725,
});

// 二分法查找当前经验所在等级
int level(int exp){
    int min = 1, max = sizeof(level_exp), mid;
    while(min < max -1){
        mid = (min + max) / 2;
        if (exp <= level_exp[mid])
            max = mid;
        else
            min = mid;
    }
    return min;
}

// 等级上限
int max_level()
{
    return sizeof(level_exp) - 1;
}

// 升级所需经验
int exp(object me){
    int exp = me->query("exp"), lv = level(exp) + 1;
    // 已达等级上限
    if (lv > max_level())
        return 0;

    return level_exp[lv] - exp;
}

/**
 * 力量 速度 耐力(防御力) 幸运(器用) 魅力 回复魔力 攻击魔力 HP MP 累积技能点数
 */
// 升级啦~str agi vit luk charm mend int max_hp max_mp sp
void level_up(object me){
    mixed level_info;
    mapping my = me->query_entire_dbase();
    int voc = my["vocation"], lv = my["lv"], exp = my["exp"], lvl = level(exp);
    string msg;

    switch (voc) {
        case "warrior":
            level_info = level_info1;
            break;
        case "priest":
            level_info = level_info2;
            break;
        case "mage":
            level_info = level_info3;
            break;
        case "martial-artist":
            level_info = level_info4;
            break;
        case "thief":
            level_info = level_info5;
            break;
        case "minstrel":
            level_info = level_info6;
            break;
        case "gladiator":
            level_info = level_info7;
            break;
        case "paladin":
            level_info = level_info8;
            break;
        case "armament-alist":
            level_info = level_info9;
            break;
        case "ranger":
            level_info = level_info10;
            break;
        case "sage":
            level_info = level_info11;
            break;
        case "luminary":
            level_info = level_info12;
            break;
        default:
            level_info = level_info0;
    }
    if(lv < lvl){
        tell_object(me, MAG "★" HIY "你升到了第 " + lvl + " 级 ^_^"  MAG "★\n" NOR);
        msg = HIC "\n≡" HIY "-------------------你的属性增加了-------------------" HIC "≡\n" NOR;
        msg += sprintf(" | %-49s| \n", "你的力量增加了 " + (level_info[lvl][0] - my["attr"]["str"]) + " 点");
        msg += sprintf(" | %-49s| \n", "你的速度增加了 " + (level_info[lvl][1] - my["attr"]["agi"]) + " 点");
        msg += sprintf(" | %-49s| \n", "你的耐力增加了 " + (level_info[lvl][2] - my["attr"]["vit"]) + " 点");
        msg += sprintf(" | %-49s| \n", "你的幸运增加了 " + (level_info[lvl][3] - my["attr"]["luk"]) + " 点");
        msg += sprintf(" | %-49s| \n", "你的魅力增加了 " + (level_info[lvl][4] - my["attr"]["charm"]) + " 点");
        msg += sprintf(" | %-49s| \n", "你的回复魔力增加了 " + (level_info[lvl][5] - my["attr"]["mend"]) + " 点");
        msg += sprintf(" | %-49s| \n", "你的攻击魔力增加了 " + (level_info[lvl][6] - my["attr"]["int"]) + " 点");
        msg += sprintf(" | %-49s| \n", "你的生命上限增加了 " + (level_info[lvl][7] - my["attr"]["max_hp"]) + " 点");
        msg += sprintf(" | %-49s| \n", "你的魔力上限增加了 " + (level_info[lvl][8] - my["attr"]["max_mp"]) + " 点");
        if (level_info[lvl][9] - my["attr"]["sp"])
            msg += sprintf(" | %-49s| \n", "你获得了 " + (level_info[lvl][9] - my["attr"]["sp"]) + " 点技能点");
        msg += HIC "≡" HIY "----------------------------------------------------" HIC "≡\n" NOR;
        tell_object(me, msg);
        me->set("lv", lvl);
        me->set_attr("str", level_info[lvl][0]);
        me->set_attr("agi", level_info[lvl][1]);
        me->set_attr("vit", level_info[lvl][2]);
        me->set_attr("luk", level_info[lvl][3]);
        me->set_attr("charm", level_info[lvl][4]);
        me->set_attr("mend", level_info[lvl][5]);
        me->set_attr("int", level_info[lvl][6]);
        me->set_attr("max_hp", level_info[lvl][7]);
        me->set_attr("max_mp", level_info[lvl][8]);
        me->set_attr("sp", level_info[lvl][9]);
    } else if(lv > lvl){
        tell_object(me, RED "★ 你的等级降到第 " + lvl + " 级 T_T ★\n" NOR);
        msg = HIC "\n≡" HIR "-------------------你的属性减少了-------------------" HIC "≡\n" NOR;
        msg += sprintf(" | %-49s| \n", "你的力量减少了 " + abs(level_info[lvl][0] - my["attr"]["str"]) + " 点");
        msg += sprintf(" | %-49s| \n", "你的速度减少了 " + abs(level_info[lvl][1] - my["attr"]["agi"]) + " 点");
        msg += sprintf(" | %-49s| \n", "你的耐力减少了 " + abs(level_info[lvl][2] - my["attr"]["vit"]) + " 点");
        msg += sprintf(" | %-49s| \n", "你的幸运减少了 " + abs(level_info[lvl][3] - my["attr"]["luk"]) + " 点");
        msg += sprintf(" | %-49s| \n", "你的魅力减少了 " + abs(level_info[lvl][4] - my["attr"]["charm"]) + " 点");
        msg += sprintf(" | %-49s| \n", "你的回复魔力减少了 " + abs(level_info[lvl][5] - my["attr"]["mend"]) + " 点");
        msg += sprintf(" | %-49s| \n", "你的攻击魔力减少了 " + abs(level_info[lvl][6] - my["attr"]["int"]) + " 点");
        msg += sprintf(" | %-49s| \n", "你的生命上限减少了 " + abs(level_info[lvl][7] - my["attr"]["max_hp"]) + " 点");
        msg += sprintf(" | %-49s| \n", "你的魔力上限减少了 " + abs(level_info[lvl][8] - my["attr"]["max_mp"]) + " 点");
        msg += HIC "≡" HIR "----------------------------------------------------" HIC "≡\n" NOR;
        // 因为技能点会被使用,所以降级不减技能点
        tell_object(me, msg);
        me->set("lv", lvl);
        me->set_attr("str", level_info[lvl][0]);
        me->set_attr("agi", level_info[lvl][1]);
        me->set_attr("vit", level_info[lvl][2]);
        me->set_attr("luk", level_info[lvl][3]);
        me->set_attr("charm", level_info[lvl][4]);
        me->set_attr("mend", level_info[lvl][5]);
        me->set_attr("int", level_info[lvl][6]);
        me->set_attr("max_hp", level_info[lvl][7]);
        me->set_attr("max_mp", level_info[lvl][8]);
    }
    me->save();
}

mixed level_info(string voc)
{
    mixed level_info;
    switch (voc) {
        case "warrior":
            level_info = level_info1;
            break;
        case "priest":
            level_info = level_info2;
            break;
        case "mage":
            level_info = level_info3;
            break;
        case "martial-artist":
            level_info = level_info4;
            break;
        case "thief":
            level_info = level_info5;
            break;
        case "minstrel":
            level_info = level_info6;
            break;
        case "gladiator":
            level_info = level_info7;
            break;
        case "paladin":
            level_info = level_info8;
            break;
        case "armament-alist":
            level_info = level_info9;
            break;
        case "ranger":
            level_info = level_info10;
            break;
        case "sage":
            level_info = level_info11;
            break;
        case "luminary":
            level_info = level_info12;
            break;
        default:
            level_info = level_info0;
    }
    return level_info;
}

void create()
{
    // debug_message("LEVEL_D!");
}

这里定义了每个职业的属性和升级所需经验,另外增加了升级函数。

职业守护进程

职业设置相关代码定义在/system/daemons/vocation_d.c守护进程中,代码如下:

#include <ansi.h>

nosave string *vocation_list =({
    "warrior", "priest", "mage", "martial-artist",
    "thief", "minstrel", "gladiator", "paladin",
    "armament-alist", "ranger", "sage", "luminary"
});

/**
 * 职业基本信息,equip仅为方便显示用,需和装备属性设置保持一致
 */
nosave mapping vocation_info = ([
    "common" : ([
            "equip"     : ({
                            "sword", "spear", "knife", "whip", "bow",
                            "staff", "claw", "fan", "axe", "hammer",
                            "shield"
                          }),
            "skill"     : ({ "shield" }),
            ]),
    "warrior" : ([
            "equip"     : ({"sword", "spear", "knife", "shield"}),
            "skill"     : ({ "sword", "spear", "knife", "shield", "courage" }),
            ]),

    "priest" : ([
            "equip"     : ({"spear", "wand", "staff", "shield"}),
            "skill"     : ({ "spear", "wand", "staff", "shield", "faith" }),
            ]),

    "mage" : ([
            "equip"     : ({"wand", "knife", "whip", "shield"}),
            "skill"     : ({"wand", "knife", "whip", "shield", "spellcraft"}),
            ]),

    "martial-artist" : ([
            "equip"     : ({"claw", "staff", "fan"}),
            "skill"     : ({"claw", "staff", "fan", "fist", "focus"}),
            ]),

    "thief" : ([
            "equip"     : ({"knife", "sword", "claw"}),
            "skill"     : ({"knife", "sword", "claw", "fist", "treasure"}),
            ]),

    "minstrel" : ([
            "equip"     : ({"sword", "whip", "fan", "shield"}),
            "skill"     : ({"sword", "whip", "fan", "shield", "litheness"}),
            ]),
//以下为上级职业,需要特定条件才可以转职,具体条件由任务NPC控制
    "gladiator" : ([
            "equip"     : ({"axe", "hammer", "sword"}),
            "skill"     : ({"axe", "hammer", "sword", "fist", "guts"}),
            ]),

    "paladin" : ([
            "equip"     : ({"hammer", "spear", "wand", "shield"}),
            "skill"     : ({"hammer", "spear", "wand", "shield", "valour"}),
            ]),

    "armament-alist" : ([
            "equip"     : ({"bow", "sword", "wand", "shield"}),
            "skill"     : ({"bow", "sword", "wand", "shield", "fource"}),
            ]),

    "ranger" : ([
            "equip"     : ({"boomerang", "axe", "bow"}),
            "skill"     : ({"boomerang", "axe", "bow", "fist", "ruggedness"}),
            ]),

    "sage" : ([
            "equip"     : ({"wand", "bow", "boomerang", "shield"}),
            "skill"     : ({"wand", "bow", "boomerang", "shield", "enlightenment"}),
            ]),

    "luminary" : ([
            "equip"     : ({"fan", "whip", "boomerang", "shield"}),
            "skill"     : ({"fan", "whip", "boomerang", "shield", "nimbus"}),
            ]),
]);
// 查询职业信息
mapping vocation_info(string vocation)
{
    return vocation_info[vocation];
}

// 转职
int change_vocation(object me, string vocation)
{
    mapping my = me->query_entire_dbase();
    mixed level_info;
    if (member_array(vocation, vocation_list) == -1)
    {
        tell_object(me, HIR "对不起,没有这个职业。\n" NOR);
        return 0;
    }
    if (!stringp(my["vocation"]))
    {
        my["vocation"] = "common";
    }
    /**
     * 转职基础条件检查,更多限制请由相关NPC控制
     */
    if (vocation != "minstrel" && my["lv"] < 20)
    {
        tell_object(me, HIR "要转职成其他职业要求当前职业等级至少达到20级。\n" NOR);
        return 0;
    }
    if (my["vocation"] == "common" && vocation != "minstrel")
    {
        tell_object(me, HIR "对不起,平民只能转职为旅艺人(minstrel)职业。\n" NOR);
        return 0;
    }
    if (my["vocation"] == vocation)
    {
        tell_object(me, HIY "你现在就是这个职业呢,如果需要重新开始,请去" HIR "转生" HIY "哦。\n" NOR);
        return 0;
    }
    if (sizeof(me->query_temp("equip")))
    {
        tell_object(me, HIR "请脱掉装备后再来转职吧。\n" NOR);
        return 0;
    }
    /**
     * 转职处理,存取职业数据
     */
    me->set_vocation_info(my["vocation"], "str", my["attr"]["str"]);
    me->set_vocation_info(my["vocation"], "agi", my["attr"]["agi"]);
    me->set_vocation_info(my["vocation"], "vit", my["attr"]["vit"]);
    me->set_vocation_info(my["vocation"], "luk", my["attr"]["luk"]);
    me->set_vocation_info(my["vocation"], "charm", my["attr"]["charm"]);
    me->set_vocation_info(my["vocation"], "mend", my["attr"]["mend"]);
    me->set_vocation_info(my["vocation"], "int", my["attr"]["int"]);
    me->set_vocation_info(my["vocation"], "max_hp", my["attr"]["max_hp"]);
    me->set_vocation_info(my["vocation"], "hp", my["attr"]["hp"]);
    me->set_vocation_info(my["vocation"], "max_mp", my["attr"]["max_mp"]);
    me->set_vocation_info(my["vocation"], "mp", my["attr"]["mp"]);
    me->set_vocation_info(my["vocation"], "sp", my["attr"]["sp"]);
    if (mapp(my["skill"]) && mapp(my["skill"]["sp"]))
    {
        me->set_vocation_info(my["vocation"], "sk1", my["skill"]["sp"]["sk1"]);
        me->set_vocation_info(my["vocation"], "sk2", my["skill"]["sp"]["sk2"]);
        me->set_vocation_info(my["vocation"], "sk3", my["skill"]["sp"]["sk3"]);
        me->set_vocation_info(my["vocation"], "sk4", my["skill"]["sp"]["sk4"]);
        me->set_vocation_info(my["vocation"], "sk5", my["skill"]["sp"]["sk5"]);
    }
    me->set_vocation_info(my["vocation"], "exp", my["exp"]);
    me->set_vocation_info(my["vocation"], "lv", my["lv"]);
    my["vocation"] = vocation;
    if (level_info = me->query_vocation_info(vocation))
    {
        my["exp"] = level_info["exp"];
        my["lv"] = level_info["lv"];
        my["attr"]["str"] = level_info["str"];
        my["attr"]["agi"] = level_info["agi"];
        my["attr"]["vit"] = level_info["vit"];
        my["attr"]["luk"] = level_info["luk"];
        my["attr"]["charm"] = level_info["charm"];
        my["attr"]["mend"] = level_info["mend"];
        my["attr"]["int"] = level_info["int"];
        my["attr"]["max_hp"] = level_info["max_hp"];
        my["attr"]["hp"] = level_info["hp"];
        my["attr"]["max_mp"] = level_info["max_mp"];
        my["attr"]["mp"] = level_info["mp"];
        my["attr"]["sp"] = level_info["sp"];
        if (!mapp(my["skill"])) my["skill"] = ([]);
        if (!mapp(my["skill"]["sp"])) my["skill"]["sp"] = ([]);
        my["skill"]["sp"]["sk1"] = level_info["sk1"];
        my["skill"]["sp"]["sk2"] = level_info["sk2"];
        my["skill"]["sp"]["sk3"] = level_info["sk3"];
        my["skill"]["sp"]["sk4"] = level_info["sk4"];
        my["skill"]["sp"]["sk5"] = level_info["sk5"];
    } else
    {
        level_info = LEVEL_D->level_info(vocation);
        my["exp"] = 0;
        my["lv"] = 1;
        my["attr"]["str"] = level_info[1][0];
        my["attr"]["agi"] = level_info[1][1];
        my["attr"]["vit"] = level_info[1][2];
        my["attr"]["luk"] = level_info[1][3];
        my["attr"]["charm"] = level_info[1][4];
        my["attr"]["mend"] = level_info[1][5];
        my["attr"]["int"] = level_info[1][6];
        my["attr"]["max_hp"] = level_info[1][7];
        my["attr"]["hp"] = level_info[1][7];
        my["attr"]["max_mp"] = level_info[1][8];
        my["attr"]["mp"] = level_info[1][8];
        my["attr"]["sp"] = level_info[1][9];
        // 清除SP
        if (!mapp(my["skill"])) my["skill"] = ([]);
        my["skill"]["sp"] = ([]);
    }
    // 职业咒文清除
    me->delete_spells();
    me->save();
    return 1;
}
// 转生
void reborn(object me)
{

}

/include/daemons.h中增加LEVEL_DVOCATIOND_D宏定义:

// 守护进程
#ifndef DAEMONS_H
#define DAEMONS_H

#define CHAR_D      "/system/daemons/char_d"
#define COMMAND_D   "/system/daemons/command_d"
#define LEVEL_D     "/system/daemons/level_d"
#define LOGIN_D     "/system/daemons/login_d"
#define VOCATION_D  "/system/daemons/vocation_d"

#endif

功能测试

现在我们已经实现了职业和等级相关的功能,测试一下。

运行游戏后输入以下指令,你会看到自己升级到20级的系统提示:

eval return me->set("exp", 50000);
eval return LEVEL_D->level_up(me);

输入score可以查看自己的属性,是不是不一样了?

继续测试职业前,我们把职业名称存入中文字典中:

chinese warrior to 战士
chinese priest to 僧侣
chinese mage to 魔法师
chinese martial-artist to 武斗家
chinese thief to 盗贼
chinese minstrel to 旅艺人
chinese gladiator to 战斗大师
chinese paladin to 圣骑士
chinese armament-alist to 魔法战士
chinese ranger to 游侠
chinese sage to 贤者
chinese luminary to 超级明星

现在使用以下指令试试转职功能:

eval return VOCATION_D->change_vocation(me, "minstrel");

然后输入score看看自己的职业数据。

这里只是使用了指令测试,游戏开发中我们会在适当的地方调用,比如在获得经验后调用升级方法,完成任务后调用转职方法。

最后 commit 我们当前版本:

git add .
git commit -m 'v3.1'

本节代码

附本节版本源码下载地址,如果下载使用,请在项目目录执行 git submodule update

京ICP备13031296号-4