init: add workspace files

This commit is contained in:
2026-05-26 16:41:20 +08:00
commit f4f2393f72
1041 changed files with 67405 additions and 0 deletions

59
world/npc/bj/ao/aobai.js Normal file
View File

@@ -0,0 +1,59 @@
this.inherits(NPC);
this.set({
name: "鳌拜",
desc: "他就是满洲第一勇士,身穿一袭金边锦缎。他身材魁梧,相貌狰狞,太阳穴高高鼓起,似乎身怀绝世武功。",
title: "满洲第一勇士",
gender: 1,
age: 50,
per: 22,
mp: 400,
str: 30,
max_mp: 1000,
hp: 3000,
max_hp: 3000,
score: 30,
prop: {
gj: 100
}
});
this.set_objects([
"eq/lv2/ao_jia", 1, 1
]);
this.skill_map(
["dodge", 200],
["feiyanzoubi", 200, "dodge"],
["parry", 200],
["force", 200],
["unarmed", 200],
["sword", 300],
["blade", 300],
["fuhuquan", 200, "unarmed"],
["hunyuanyiqi", 200, "force"]);
this.on_die = function () {
this.send_message("\n鳌拜狂叫道想不到我一世威名竟然毁于你手\n鳌拜顿了一顿叹道只可惜我的那么多宝贝啊\n");
}
this.on_enter = function (me) {
me.notify("鳌拜怒道:你敢不让我睡觉,老子宰了你 ");
this.do_kill(me);
}
this.set_drop({
obj: "money/silver",
min: 10,
max: 15
}, {
obj: ["eq/lv0/cloth", "eq/lv0/mugun", "eq/lv0/jian", "sp/bj/laofangkey"],
odds: 8000
},
{
obj: ["book/bc#hunyuanyiqi", "book/bc#feiyanzoubi", "book/bc#fuhuquan"],
odds: 5000
}, {
obj: ["eq/lv2/ao_jia", "eq/lv2/ao_bishou"],
odds: 1000
}, {
obj: "sp/npc#aobai",
odds: 30
}, {
obj: "sp/fb/tiao",
odds: 1000
});

20
world/npc/bj/ao/chushi.js Normal file
View File

@@ -0,0 +1,20 @@
this.inherits(NPC);
this.set({
name: "厨师",
desc: "他原是归安县的知县,因贪赃枉法,百姓恨之切齿,终被告发革职。他长得尖嘴猴腮,一看就知不是好人 。",
gender: 1,
age: 45,
per: 19,
mp: 100,
max_mp: 200,
hp: 200,
max_hp: 200,
});
this.set_objects([
"eq/lv0/cloth", 1, 1
]);
this.skill_map(
["dodge", 100],
["parry", 100],
["force", 100],
["unarmed", 100]);

View File

@@ -0,0 +1,34 @@
this.inherits(NPC);
this.set({
name: "女管家",
desc: "她是鳌拜府上的管家,精明干练",
gender: 2,
age: 44,
per: 34,
mp: 100,
max_mp: 100,
hp: 400,
max_hp: 400,
score: 10
});
this.set_objects([
"eq/lv0/cloth", 1, 1
]);
this.skill_map(
["dodge", 100],
["parry", 100],
["force", 100],
["unarmed", 100]);
this.on_kill = function (me) {
this.send_room("$N喊道还愣着干嘛快给我上", me);
this.each_item(item => {
if ( item.path == "bj/ao/jiading") {
item.do_kill(me);
}
}, this.environment);
}
this.on_leave = function (me, dir) {
if (dir == "south" || dir == "north")
return me.notify_fail("女官家挡住了你。");
}

View File

@@ -0,0 +1,37 @@
this.inherits(NPC);
this.set({
name: "家将",
desc: "鳌拜府上的家将,看上去有两下子",
gender: 1,
age: 25,
per: 15,
mp: 100,
max_mp: 500,
hp: 500,
max_hp: 500,
score: 10
});
this.skill_map(
["club", 150],
["dodge", 150],
["sword", 150],
["parry", 150],
["juemengun", 150,["club","dodge"]]);
this.set_objects(
["eq/lv1/guanfu", 1, 1],
["eq/lv0/tiegun", 1, 1]
);
this.set_drop({
obj: "money/coin",
min: 10,
max: 30
}, {
obj: ["eq/lv0/cloth", "eq/lv0/tiegun", "eq/lv0/shoes"],
odds: 3000
}, {
obj: ["eq/lv0/jd_cloth", "eq/lv0/jd_shoes", "eq/lv1/guanfu"],
odds: 3000
}, {
obj: ["book/bc#juemengun"],
odds: 3000
});

36
world/npc/bj/ao/wu.js Normal file
View File

@@ -0,0 +1,36 @@
this.inherits(NPC);
this.set({
name: "吴之荣",
desc: "他原是归安县的知县,因贪赃枉法,百姓恨之切齿,终被告发革职。他长得尖嘴猴腮,一看就知不是好人 。",
gender: 1,
age: 44,
per: 12,
mp: 100,
max_mp: 400,
hp: 400,
max_hp: 400,
score: 10
});
this.set_objects([
"eq/lv0/cloth", 1, 1
]);
this.skill_map(
["dodge", 100],
["parry", 100],
["force", 100],
["unarmed", 100]);
this.set_drop({
obj: "money/silver",
min: 10,
max: 15
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian"],
odds: 8000
}, {
obj: ["sp/bj/wu"],
odds: 1000
});
this.on_die = function (killer) {
killer.set_temp("fb/ao/wu", 1);
}

View File

@@ -0,0 +1,52 @@
this.inherits(NPC);
this.set({
name: "庄允城",
desc: "这是个饱读诗书,却手无搏鸡之力的书生。因编辑‘明史辑略’,被吴之荣告发,全家逮入京中。",
gender: 1,
age: 40,
per: 33,
mp: 100,
max_mp: 100,
hp: 10,
max_hp: 100
});
this.set_objects([
"eq/lv0/cloth", 1, 1
]);
this.set_chat_msg([
"庄允城说道:只怪我当初好心,在书中夹了金叶送与他,谁想这狼心狗肺的家伙竟然就去告发了我。唉...",
"庄允城说道:谁要把吴之荣抓到庄府就好了。",
"庄允城叹了口气说道:谁要救了我,我一定把我知道的都告诉他。"
]);
this.set_ask("明史辑略", function (me) {
me.notify("庄允城叹了口气说道:谁能想到这本书惹来这么大的祸。");
});
this.set_ask("密室", function (me) {
me.notify("庄允城说道:我曾见过鳌拜进密室,把书房的画卷移动一下就行了。");
});
this.set_ask("吴之荣", function (me) {
me.notify("庄允城说道:只怪我当初好心,在书中夹了金叶送与他,谁想这狼心狗肺的家伙竟然就去告发了我。唉...");
if (me.query_temp("fb/ao/wu")) {
var obj = OBJ.create_by_odds([
{
obj: ["sp/bj/jing#5", "sp/bj/jing#6", "sp/bj/jing#7", "sp/bj/jing#8"]
}
])[0];
me.remove_temp("fb/ao/wu");
obj = me.add_obj(obj);
if (obj) {
me.notify("顿了顿,庄允城对你说道:多谢这位" + me.call() + "替我报了大仇,这里有一本鳌拜不小心丢在这里的经书就送给你了。");
me.notify("庄允城给了你" + obj.unit_name(1) + "。");
}
} else {
me.notify("顿了顿,庄允城叹了口气说道:替我把吴之荣这厮杀掉吧,我不行了。");
}
});

View File

@@ -0,0 +1,45 @@
this.inherits(NPC);
this.set({
name: "平四",
desc: "他是胡家忠心耿耿的仆役。",
title: "胡家仆佣",
gender: 1,
age: 45,
per: 26,
mp: 1400,
max_mp: 4400,
hp: 5500,
max_hp: 5500
});
this.set_objects([
"eq/lv0/cloth", 1, 1
], [
"eq/lv0/dao", 1, 1
]);
this.skill_map(
["dodge", 300],
["parry", 300],
["force", 300],
["unarmed", 300],
["blade", 300],
["sixiangbu", 300, "dodge"],
["hujiadaofa", 300, "blade"],
["lengyueshengong", 300, "force"]);
this.set_drop({
obj: "money/silver",
min: 10,
max: 20
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian"],
odds: 8000
}, {
obj: ["book/bc#hujiadaofa", "book/bc#sixiangbu", "book/bc#lengyueshengong"],
odds: 3000
});
this.on_leave = function (me, dir) {
if (dir == "north") {
me.notify("平四拦住你恭敬的说道:" + me.call() + ",有什么事情吗?");
return false;
}
}

View File

@@ -0,0 +1,38 @@
this.inherits(NPC);
this.set({
name: "船夫",
desc: "这是一个松花江上的船夫。饱经风霜的脸上透出东北人的豪爽。",
gender: 1,
age: 45,
per: 26,
mp: 400,
max_mp: 400,
hp: 500,
max_hp: 500
});
this.set_objects([
"eq/lv0/cloth", 1, 1
]);
this.set_drop({
obj: "sp/tool/diao#1",
odds:500
}, {
obj: "sp/tool/diao#2",
odds: 50
});
this.on_leave = function (me, dir) {
if (dir == "east" || dir == "west") {
me.notify("船夫对你说道坐船到江对面1两黄金。");
me.set_temp("fb/guanwai/jiang", dir);
me.send_commands("give " + this.id + " 10000 money", "交钱坐船");
return false;
}
}
this.on_accept = function (me, obj, count) {
if (obj == "money" && count == 10000) {
if (me.moveto("bj/guanwai/jiang") != false) {
me.send_room("船夫和$N上了船一声「起锚」船就张帆离岸了......");
return true;
}
}
}

View File

@@ -0,0 +1,25 @@
this.inherits(MONSTER);
this.set({
name: "金雕",
desc: "一只大金雕,正立在树枝上仰视长天。",
gender: 1,
mp: 100,
max_mp: 100,
hp: 4500,
max_hp: 4500,
score: 10
});
this.skill_map(
["bite", 200],
["bite2", 200, "bite"]);
//drop path,min,max,per
this.set_drop({
obj: "res/pimao2",
min: 1,
max: 4
});
this.on_enter = function (me) {
me.notify("一只迅猛的金雕朝你俯冲过来。");
this.do_kill(me);
}

View File

@@ -0,0 +1,24 @@
this.inherits(MONSTER);
this.set({
name: "东北虎",
desc:"一只矫捷的斑斓猛虎,形体巨大,状极威猛,雄伟极了",
gender: 1,
mp: 100,
max_mp: 100,
hp: 6500,
max_hp: 6500,
score: 10
});
this.skill_map(
["bite", 270],
["bite2", 270,"bite"]);
//drop path,min,max,per
this.set_drop({
obj: "res/pimao2",
min: 1,
max: 4
});
this.on_enter = function(me) {
me.notify("一只凶猛的东北虎朝你扑了过来。");
this.do_kill(me);
}

View File

@@ -0,0 +1,81 @@
this.inherits(NPC);
this.set({
name: "胡斐",
desc: "他就是胡一刀之子胡斐,因其武功高强神出鬼没。在江湖上人送外号「雪山飞狐」。他身穿一件白色长衫,腰间别着一把看起来很旧的刀。 ",
title: "雪山飞狐",
gender: 1,
age: 25,
per: 26,
mp: 9500,
max_mp: 9500,
hp: 13500,
max_hp: 18500,
prop: {
gj: 600,
mz: 800,
ds: 800,
fy: 900
}
});
this.set_objects([
"eq/lv0/cloth", 1, 1
], [
"eq/lv0/dao", 1, 1
]);
this.skill_map(
["dodge", 400],
["parry", 400],
["force", 400],
["unarmed", 400],
["staff", 300],
["blade", 400],
["throwing", 400],
["sixiangbu", 400, "dodge"],
["hujiadaofa", 400, "blade"],
["lengyueshengong", 400, "force"],
["mantianxing", 400, "throwing"]);
this.set_drop({
obj: "money/silver",
min: 10,
max: 30
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian"],
odds: 8000
});
this.on_accept = function (me, obj, count) {
if (!obj || !obj.path) return;
if (obj.is("sp/bj/yanji")) {
me.notify("\n<HIC>胡斐大喜道:狗贼!想不到你也有今天!!手起刀落,将阎基的头颅剁为两段。</hic>");
me.notify("<HIC>胡斐说道:这位" + me.call() + ",如此大恩大德,在下实不知何以为报。</hic>");
me.set_temp("fb/guanwai/hu", 1);
return true;
}
}
this.set_ask("阎基", function (me) {
var obj = me.find_obj_bypath("sp/bj/yanji");
if (obj) {
me.notify("胡斐说道:阎基是我的杀父仇人,如果你把他杀掉,在下必有重谢。");
me.send_commands("give " + this.id + " " + obj.id, "把阎基的头颅给胡斐");
} else {
me.notify("胡斐说道:阎基是我的杀父仇人。");
}
});
this.set_ask("闯王宝刀", function (me) {
if (me.query_temp("fb/guanwai/hu")) {
me.notify("胡斐说道:这把宝刀是我家祖上当闯王护卫时候,闯王亲手赐予的,其中隐藏着关于闯王宝藏的秘密。");
} else {
me.notify("胡斐说道:这把宝刀是我家祖上当闯王护卫时候,被闯王亲手赐予的。");
}
});
this.set_ask("胡家刀谱", function (me) {
if (me.query_temp("fb/guanwai/hu") == 1) {
me.notify("胡斐说道:既然" + me.call() + "有兴趣,这几份残篇就给你参悟吧。");
var obj = me.add_obj("book/bc#hujiadaofa");
if (obj) me.notify("胡斐给你一" + obj.unit + obj.color_name + "。");
me.set_temp("fb/guanwai/hu", 2);
} else {
me.notify("胡斐说道:胡家刀法是我祖上飞天狐狸所创,可惜刀谱丢了几页。");
}
});

View File

@@ -0,0 +1,35 @@
this.inherits(MONSTER);
this.set({
name: "<blk>黑熊</blk>",
desc: "一只凶猛的黑熊,形体硕大,人立而行。",
gender: 1,
mp: 100,
max_mp: 9000,
hp:18500,
max_hp: 18500,
score: 20,
prop: {
gj: 300,
mz: 400,
ds: 600,
fy: 900
}
});
this.skill_map(
["bite", 400],
["bite2", 400, "bite"]);
//drop path,min,max,per
this.set_drop({
obj: "res/pimao2",
min: 1,
max: 4
}, {
obj: "st/xuanjing"
}, {
obj: "drug/xiongdan",
odds:1000
});
this.on_enter = function(me) {
me.notify("一只凶猛的黑熊朝你扑了过来。");
this.do_kill(me);
}

View File

@@ -0,0 +1,47 @@
this.inherits(NPC);
this.set({
name: "阎基",
desc: "他是一个没落江湖医生。自从得了胡家刀谱几页残篇后,武功大进。",
title:"江湖医生",
gender: 1,
age: 45,
per: 26,
mp: 400,
max_mp: 4000,
hp: 12500,
max_hp: 15500,
score: 20,
prop: {
gj: 500,
mz: 600,
ds: 600,
fy: 900
}
});
this.set_objects([
"eq/lv0/cloth", 1, 1
], [
"eq/lv0/dao", 1, 1
]);
this.skill_map(
["dodge", 500],
["parry", 400],
["force", 400],
["unarmed", 400],
["parry", 300],
["blade", 400],
["sixiangbu", 400, "dodge"],
["hujiadaofa", 400, "blade"],
["lengyueshengong", 400, "force"]);
this.set_drop({
obj: "money/silver",
min: 10,
max: 30
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian"],
odds: 8000
}, {
obj: ["book/bc#hujiadaofa", "sp/bj/yanji"],
odds: 3000
});

134
world/npc/bj/lm/heilong.js Normal file
View File

@@ -0,0 +1,134 @@
this.inherits(MONSTER);
this.name = "黑龙";
this.desc = "它被玄铁锁链捆在盘龙柱上,鳞甲黯淡,挣扎时锁链摩擦作响,发出低哑悲鸣";
this.gender = 0;
this.age = 200;
this.per = 20;
this.mp = 500000;
this.max_mp = 500000;
this.hp = 55000;
this.max_hp = 5000000;
this.score = 29;
this.prop = {
gj: 4900,
mz: 4900,
ds: 1900,
fy: 4900,
zj: 1900
};
this.on_create = function () {
this.hp = 55000;
}
this.set_drop({
obj: "st/xuanjing",
min: 1,
max: 10
}, {
obj: ['eq/lv2/lm_jian', 'sp/bj/zhu', 'book/bc#qinlong'],
odds: 300
});
this.skill_map(
["dodge", 380],
["parry", 380],
["force", 380],
["bite", 380],
["heilong", 380, ["bite", "dodge", "parry"]]);
this.on_kill = function (me) {
if (this.is_free) return false;
if (!this.fight_type) {
this.environment.set_temp(me, 'kill_hl', 1);
me.send(this.name + "轻蔑道:找死!\n");
this.do_kill(me);
}
}
this.is_free = false;
this.fight_time = 0;
this.heart_beat = function (dt) {
if (this.fight_type > 0) {
this.fight_time++;
if (this.fight_time > 60) {
this.destroy("\n<yel>" + this.name + "身躯腾空而起,随即遁入深潭。</yel>");
}
} else {
this.mp = this.max_mp;
this.hp = this.is_free ? 5000000 : 55000;
}
}
this.on_enter = function (me) {
let room = this.environment;
if (room.query_temp(me, 'kill_hl')) {
this.do_kill(me);
} else {
me.send(this.name + '虚弱的抬起脑袋看着你:人类,你想做什么?');
me.send_commands('kill ' + this.id, '击杀它', 'free ' + this.id, '放了它');
}
}
this.add_action('free', '放了它', function (me) {
me.send(this.name + '挣扎双翼连接的锁链哗啦作响:狡猾的人类,又想骗我什么?这根柱子灵纹封印,单靠蛮力无法破坏。');
});
this.on_free = function (me) {
this.is_free = true;
this.send_room('$N猛地昂起头颅修长的龙身顺着石柱盘旋玄铁锁链在龙爪的撕扯接连崩裂。');
me.add_fbscore(100);
this.call_out(this.to_next, 3000, me);
}
this.to_next = function (me) {
this.full();
this.send_room('$N身躯如墨色闪电般绷直借反冲之力腾空而起修长的身躯在空中蜿蜒盘旋低沉的龙吟响彻锁龙井。');
this.call_out(this.to_next2, 3000, me);
}
this.to_next2 = function (me) {
if (!this.is_here(me))
return this.destroy(this.name + '飞走了。');
this.send_room('$N悬在半空低头审视着$n最终什么也没说庞大身躯骤然腾空转瞬间便消失在锁龙井深处。', me);
this.send_room('布满裂痕的柱体在巨力撕扯下迸出蛛网般的碎纹,"咔嚓" 声中裂成无数碎石裂片,混着玄铁锁链的残片砸落满地,扬起的烟尘里再无半分龙脉气息。', me);
this.destroy();
let items = me.team || [me];
let index = me.environment.parent.fb_index;
const eqs = ['eq/lv2/lm_cloth',
'eq/lv2/lm_tou',
'eq/lv2/lm_shoes',
'eq/lv2/lm_pifeng',
'eq/lv2/lm_pei'];
for (let item of items) {
if (item.environment !== me.environment)
continue;
if (!item.is_player) continue;
if (!item.query_temp('fb_sao' + index, 0)) {
item.notify("你释放了被锁禁的黑龙,获得称号【黑龙使】。");
item.add_title('黑龙使', 'lm');
item.notify("<hic>单人(普通)模式扫荡解锁。</hic>");
item.set_temp("fb_sao" + index, 1);
let obj = item.add_obj(eqs.random());
if (obj) {
item.send('你从碎裂的锁龙柱下找到' + obj.unit_name(1) + "。");
}
}
}
if (!WORLD.DATA.query_temp('longmai')) {
WORLD.DATA.set_temp('longmai', 1, UTIL.diff_time(20));
WORLD.DATA.set_temp("study_per", 50, 3600000 * 2);
COMMAND.DO("rumor",
"听说" + me.name + "解锁了龙脉,所有人的学习效率增加了。");
EVENTS.add({
id: "longmai",
name: "龙脉解锁",
desc: me.name + '解锁了龙脉,接下来的两小时所有人的学习效率+50%。',
time: Date.now() + 3600000 * 2,
grade: 1
});
}
}

40
world/npc/bj/lm/xiezi.js Normal file
View File

@@ -0,0 +1,40 @@
this.inherits(MONSTER);
this.name = "石甲蝎";
this.desc = "通体青黑如岩石,甲壳上布满尖刺,尾钩泛着幽蓝毒光。";
this.gender = 0;
this.age = 200;
this.per = 20;
this.mp = 5000;
this.max_mp = 5000;
this.hp = 14000;
this.max_hp = 14000;
this.score = 10;
this.prop = {
gj: 900,
mz: 1100,
ds: 900,
fy: 900,
zj: 900,
gjsd: 2000
};
this.skill_map(
["dodge", 200],
["parry", 250],
["force", 300],
["bite", 300],
["xiezigongji", 280, "bite"]);
this.set_drop({
obj: "st/xuanjing",
min: 1,
max: 3
});
this.on_enter = function (me) {
if (me.is_player && !this.fight_type) {
this.do_kill(me);
}
}

View File

@@ -0,0 +1,41 @@
this.inherits(NPC);
this.name = "披甲俑卫";
this.desc = "身着残破铁甲,头盔遮住大半面容,仅露一双空洞眼窝。手持锈迹斑斑的长刀。";
this.gender = 1;
this.age = 200;
this.per = 20;
this.mp = 5000;
this.max_mp = 5000;
this.hp = 22000;
this.max_hp = 22000;
this.score = 20;
this.prop = {
gj: 1000,
mz: 1500,
fy: 2000,
ds: 1000,
zj: 1000,
gjsd: 1500
};
this.skill_map(
["dodge", 200],
["parry", 250],
["unarmed", 300],
["force", 300],
["daidaokuilei", 380,
["unarmed", "parry", "force", "dodge"]]);
this.set_drop({
obj: "st/xuanjing",
min: 1,
max: 3
}, {
obj: ['eq/lv2/lm_cloth',
'eq/lv2/lm_tou',
'eq/lv2/lm_shoes',
'eq/lv2/lm_pifeng',
'eq/lv2/lm_pei'],
odds: 500
});

View File

@@ -0,0 +1,47 @@
this.inherits(NPC);
this.set({
name: "神龙教弟子",
desc: "这是一个神龙教弟子,一袭黑衣,混身透着一股邪气。",
gender: 1,
age: 25,
per: 26,
mp: 400,
max_mp: 400,
hp: 1500,
max_hp: 1500,
score: 1
});
this.set_objects([
"eq/lv0/cloth", 1, 1
], [
"eq/lv0/jian", 1, 1
]);
this.skill_map(
["dodge", 150],
["parry", 150],
["force", 150],
["unarmed", 150],
["sword", 150],
["staff", 150],
["shenlongjian", 150, "sword"],
["yixingbufa", 150, "dodge"],
["shenlongxinfa", 150, "force"]);
this.set_drop({
obj: "money/silver",
min: 10,
max: 15
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian", "eq/lv0/tiezhang"],
odds: 8000
}, {
obj: ["book/bc#shenlongxinfa", "book/bc#yixingbufa", "book/bc#shenlongjian"],
odds: 3000
});
this.set_chat_msg([
"年轻弟子忽然高声叫道:教主宝训,时刻在心,建功克敌,无事不成!",
"年轻弟子忽然齐声叫道:众志齐心可成城,威震天下无比伦!",
"年轻弟子忽然齐声叫道:神龙飞天齐仰望,教主声威盖八方!",
"年轻弟子忽然齐声叫道:乘风破浪逞英豪,教主如同日月光!",
"年轻弟子齐声叫道:教主永享仙福,寿与天齐!"
]);

View File

@@ -0,0 +1,23 @@
this.inherits(MONSTER);
this.set({
name: "毒蛇",
desc: "一只昂首挺胸,吐着信子的毒蛇正盯着你。",
gender: 1,
mp: 180,
max_mp: 180,
hp: 380,
max_hp: 380,
score: 5
});
this.skill_map(
["bite", 200],
["dushegongji", 200,"bite"]);
//drop path,min,max,per
this.set_drop({
obj: "res/pimao1",
min: 1,
max: 4
});
this.on_enter = function (me) {
this.do_kill(me);
}

View File

@@ -0,0 +1,58 @@
this.inherits(NPC);
this.set({
name: "洪安通",
desc: "他就是武功盖世、令江湖人等谈之色变的神龙教教主洪安通。",
title: "神龙教教主",
gender: 1,
age: 50,
per: 26,
mp: 1400,
max_mp: 7400,
hp: 10500,
max_hp: 10500,
pfm_rate: 1,
score: 40,
prop: {
zj: -300,
gj: 400
}
});
this.set_objects([
"eq/lv0/cloth", 1, 1
], [
"eq/lv2/sl_zhang", 1, 1
]);
this.skill_map(
["dodge", 350],
["parry", 350],
["force", 350],
["unarmed", 350],
["sword", 350],
["staff", 350],
["huagumianzhang", 450],
["yixingbufa", 350, "dodge"],
["shenlongxinfa", 350, "force"],
["shedaoqigong", 350, ["parry", "staff"]]);
this.set_drop({
obj: "money/silver",
min: 1,
max: 5
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian", "eq/lv0/tiezhang"],
odds: 8000
}, {
obj: ["eq/lv2/sl_cloth", "eq/lv2/sl_tou", "eq/lv2/sl_shoes", "eq/lv2/sl_shou", "eq/lv2/sl_yao", "eq/lv2/sl_zhang", "eq/lv2/sl_ling"],
odds: 3000
}, {
obj: ["book/bc#shenlongxinfa", "book/bc#yixingbufa", "book/bc#shedaoqigong", "book/bc#shenlongjian", "book/bc#huagumianzhang"],
odds: 5000
});
this.on_kill = function (me) {
this.send_room("洪安通喝到:来我们神龙教撒野?给我上!");
this.each_item(item => {
if (!item.is_player && item.hp > 0 && !item.master) {
item.do_kill(me);
}
}, this.environment);
}

View File

@@ -0,0 +1,50 @@
this.inherits(NPC);
this.set({
name: "陆高轩",
desc: "他天庭饱满,地阔方圆,容貌颇为英俊.然而满面愁容,恰似顷刻间便有杀身之祸一般.",
title: "神龙教军师",
gender: 1,
age: 37,
per: 26,
mp: 1400,
max_mp: 4400,
hp: 8500,
max_hp: 8500,
score: 10,
prop: {
zj: 100,
gj: 300
}
});
this.set_objects([
"eq/lv0/cloth", 1, 1
], [
"eq/lv0/jian", 1, 1
]);
this.skill_map(
["dodge", 250],
["parry", 250],
["force", 250],
["unarmed", 250],
["sword", 250],
["staff", 250],
["huagumianzhang", 250, "unarmed"],
["shenlongjian", 250, "sword"],
["yixingbufa", 250, "dodge"],
["shenlongxinfa", 250, "force"],
["shedaoqigong", 250, "parry"]);
this.set_drop({
obj: "money/silver",
min: 1,
max: 5
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian", "eq/lv0/tiezhang"],
odds: 8000
}, {
obj: ["eq/lv2/sl_cloth", "eq/lv2/sl_tou", "eq/lv2/sl_shoes", "eq/lv2/sl_shou", "eq/lv2/sl_yao"],
odds: 2000
}, {
obj: ["book/bc#shenlongxinfa", "book/bc#yixingbufa", "book/bc#shedaoqigong", "book/bc#shenlongjian", "book/bc#huagumianzhang"],
odds: 5000
});

View File

@@ -0,0 +1,47 @@
this.inherits(NPC);
this.set({
name: "神龙教女弟子",
desc: "这是一个神龙教女弟子,一袭红衣,长得颇为可爱。",
gender: 2,
age: 25,
per: 26,
mp: 400,
max_mp: 400,
hp: 1500,
max_hp: 1500,
score: 1
});
this.set_objects([
"eq/lv0/cloth", 1, 1
], [
"eq/lv0/jian", 1, 1
]);
this.skill_map(
["dodge", 150],
["parry", 150],
["force", 150],
["unarmed", 150],
["sword", 150],
["staff", 150],
["shenlongjian", 150, "sword"],
["yixingbufa", 150, "dodge"],
["shenlongxinfa", 150, "force"]);
this.set_drop({
obj: "money/silver",
min: 1,
max: 5
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian", "eq/lv0/tiezhang"],
odds: 8000
}, {
obj: ["book/bc#shenlongxinfa", "book/bc#yixingbufa", "book/bc#shenlongjian"],
odds: 3000
});
this.set_chat_msg([
"年轻弟子忽然高声叫道:教主宝训,时刻在心,建功克敌,无事不成!",
"年轻弟子忽然齐声叫道:众志齐心可成城,威震天下无比伦!",
"年轻弟子忽然齐声叫道:神龙飞天齐仰望,教主声威盖八方!",
"年轻弟子忽然齐声叫道:乘风破浪逞英豪,教主如同日月光!",
"年轻弟子齐声叫道:教主永享仙福,寿与天齐!"
]);

View File

@@ -0,0 +1,58 @@
this.inherits(NPC);
this.set({
name: "无根道长",
desc: "这是个五十来岁的黑须道长,相貌威武,眼中略带杀气。",
title: "神龙教赤龙使",
gender: 1,
age: 55,
per: 26,
mp: 1400,
max_mp: 4400,
hp: 8500,
max_hp: 8500,
score: 10,
prop: {
zj: 100,
gj: 300
}
});
this.set_objects([
"eq/lv0/cloth", 1, 1
], [
"eq/lv0/jian", 1, 1
]);
this.skill_map(
["dodge", 250],
["parry", 250],
["force", 250],
["unarmed", 250],
["sword", 250],
["staff", 250],
["huagumianzhang", 250, "unarmed"],
["shenlongjian", 250, "sword"],
["yixingbufa", 250, "dodge"],
["shenlongxinfa", 250, "force"],
["shedaoqigong", 250, "parry"]);
this.set_drop({
obj: "money/silver",
min: 10,
max: 20
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian", "eq/lv0/tiezhang"],
odds: 8000
}, {
obj: ["eq/lv2/sl_cloth", "eq/lv2/sl_tou", "eq/lv2/sl_shoes", "eq/lv2/sl_shou", "eq/lv2/sl_yao"],
odds: 2000
}, {
obj: ["book/bc#shenlongxinfa", "book/bc#yixingbufa", "book/bc#shedaoqigong", "book/bc#shenlongjian", "book/bc#huagumianzhang"],
odds: 5000
});
this.on_kill = function (me) {
this.send_room("洪安通喝到:来我们神龙教撒野?给我上!");
this.each_item(item => {
if (!item.is_player && item.hp > 0 && !item.master) {
item.do_kill(me);
}
}, this.environment);
}

View File

@@ -0,0 +1,55 @@
this.inherits(NPC);
this.set({
name: "许雪亭",
desc: "这是个五十来岁的高瘦汉子,着一袭青衣,昂然挺立。",
title: "神龙教青龙使",
gender: 1,
age: 55,
per: 26,
mp: 1400,
max_mp: 4400,
hp: 8500,
max_hp: 8500,
score: 10,
prop: {
zj: 100,
gj: 300
}
});
this.set_objects([
"eq/lv0/cloth", 1, 1
], [
"eq/lv0/jian", 1, 1
]);
this.skill_map(
["dodge", 250],
["parry", 250],
["force", 250],
["unarmed", 250],
["sword", 250],
["staff", 250],
["huagumianzhang", 250, "unarmed"],
["shenlongjian", 250, "sword"],
["yixingbufa", 250, "dodge"],
["shenlongxinfa", 250, "force"],
["shedaoqigong", 250, "parry"]);
this.set_drop({
obj: "money/silver",
min: 10,
max: 20
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian", "eq/lv0/tiezhang"],
odds: 8000
}, {
obj: ["eq/lv2/sl_cloth", "eq/lv2/sl_tou", "eq/lv2/sl_shoes", "eq/lv2/sl_shou", "eq/lv2/sl_yao"],
odds: 2000
}, {
obj: ["book/bc#shenlongxinfa", "book/bc#yixingbufa", "book/bc#shedaoqigong", "book/bc#shenlongjian"],
odds: 5000
});
this.set_chat_msg([
"许雪亭忽然一怕脑袋,说:对了,可以用百花腹蛇膏!",
"许雪亭怒道:唉,偌大一个神龙教,都毁在一个娘么手里了!",
"许雪亭叹口气,说道:唉,不杀了洪安通,谁也活不了。"
]);

View File

@@ -0,0 +1,58 @@
this.inherits(NPC);
this.set({
name: "张淡月",
desc: "这是一个黑衣大汉,脸色大变,身子发颤,似乎恐惧已极",
title: "神龙教黑龙使",
gender: 1,
age: 55,
per: 26,
mp: 1400,
max_mp: 4400,
hp: 8500,
max_hp: 8500,
score: 10,
prop: {
zj: 100,
gj: 300
}
});
this.set_objects([
"eq/lv0/cloth", 1, 1
], [
"eq/lv0/jian", 1, 1
]);
this.skill_map(
["dodge", 250],
["parry", 250],
["force", 250],
["unarmed", 250],
["sword", 250],
["staff", 250],
["huagumianzhang", 250, "unarmed"],
["shenlongjian", 250, "sword"],
["yixingbufa", 250, "dodge"],
["shenlongxinfa", 250, "force"],
["shedaoqigong", 250, "parry"]);
this.set_drop({
obj: "money/silver",
min: 10,
max: 20
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian", "eq/lv0/tiezhang"],
odds: 8000
}, {
obj: ["eq/lv2/sl_cloth", "eq/lv2/sl_tou", "eq/lv2/sl_shoes", "eq/lv2/sl_shou", "eq/lv2/sl_yao"],
odds: 2000
}, {
obj: ["book/bc#shenlongxinfa", "book/bc#yixingbufa", "book/bc#shedaoqigong", "book/bc#shenlongjian"],
odds: 5000
});
this.on_kill = function (me) {
this.send_room("洪安通喝到:来我们神龙教撒野?给我上!");
this.each_item(item => {
if (!item.is_player && item.hp > 0 && !item.master) {
item.do_kill(me);
}
}, this.environment);
}

View File

@@ -0,0 +1,23 @@
this.inherits(MONSTER);
this.set({
name: "竹叶青",
desc: "一只昂首挺胸,吐着信子的毒蛇正盯着你。",
gender: 1,
mp: 180,
max_mp: 180,
hp: 380,
max_hp: 380,
score: 5
});
this.skill_map(
["bite", 200],
["dushegongji", 200, "bite"]);
//drop path,min,max,per
this.set_drop({
obj: "res/pimao1",
min: 1,
max: 4
});
this.on_enter = function (me) {
this.do_kill(me);
}

42
world/npc/bj/tdh/chen.js Normal file
View File

@@ -0,0 +1,42 @@
this.inherits(NPC);
this.set({
name: "陈近南",
desc: "这是一个文士打扮的中年书生,神色和蔼。他就是天下闻名的天地会总舵主陈近南,据说十八般武艺,样样精通。偶尔向这边看过来,顿觉他目光如电,英气逼人。",
title: "<hiw>天地会总舵主</hiw>",
gender: 1,
age: 45,
per: 22,
mp: 400,
max_mp: 400,
hp: 5000,
max_hp: 5000,
score: 55
});
this.set_objects([
"eq/lv0/cloth", 1, 1
], ["eq/lv0/jian", 1, 1]);
this.skill_map(
["dodge", 300],
["parry", 300],
["force", 300],
["unarmed", 300],
["sword", 300],
["yunlongjian", 300, "sword"],
["yunlongshenfa", 300, "dodge"],
["yunlongxinfa", 300, "force"]);
this.set_drop({
obj: "money/silver",
min: 10,
max: 20
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian"],
odds: 8000
},
{
obj: ["book/bc#yunlongjian", "book/bc#yunlongshenfa", "book/bc#yunlongxinfa"],
odds: 8000
}, {
obj: ["eq/lv2/yunlongjian"],
odds: 1000
});

55
world/npc/bj/tdh/dubi.js Normal file
View File

@@ -0,0 +1,55 @@
this.inherits(NPC);
this.set({
name: "独臂神尼",
desc: "这是一位白衣女尼,手握拂尘,目视前方。一只长袖空空如也,显是断了一臂,尽管如此,仍然掩不住她迷人的风采。",
gender: 2,
age: 37,
per: 38,
mp: 400,
max_mp: 400,
hp: 2500,
max_hp: 2500,
score: 10
});
this.set_objects([
"eq/lv0/cloth", 1, 1,
"eq/lv1/fuchen", 1, 1
]);
this.skill_map(
["dodge", 300],
["parry", 300],
["force", 300],
["unarmed", 300],
["whip", 300],
["shenxingbaibian", 300, "dodge"],
["qiufengfuchen", 300, "whip"]);
this.set_drop({
obj: "money/silver",
min: 10,
max: 30
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian", "eq/lv1/fuchen"],
odds: 8000
},
{
obj: ["book/bc#shenxingbaibian", "book/bc#qiufengfuchen"],
odds: 5000
});
this.on_checkskill = function (me) {
if (me.query_temp("fb/tdh/dubi") == 2) {
if (me.query_temp("fb/tdh/shenxing")) return me.notify_fail("独臂神尼说道:虽然不完整,也是秘籍,还请" + me.call() + "不要嫌弃。");
me.notify("独臂神尼说道:这位" + me.call() + ",如果你想学的话,我这里有份神行百变的秘籍残页,你可以拿去参悟。");
var obj = me.add_obj("book/bc#shenxingbaibian");
me.set_temp("fb/tdh/shenxing", 1);
if (obj) {
me.notify("独臂神尼给了你" + obj.unit + obj.color_name + "。");
}
return false;
}
return me.query_temp("fb/tdh/dubi") == 1;
}
this.on_teach = function (me, sk) {
if (sk != "shenxingbaibian") return me.notify_fail("独臂神尼说道:贫尼只能教你神行百变。");
return true;
}

38
world/npc/bj/tdh/guan.js Normal file
View File

@@ -0,0 +1,38 @@
this.inherits(NPC);
this.set({
name: "关安基",
desc: "只见他长长的胡子飘在胸前,模样甚是威严。因此人称关夫子。",
title: "关夫子",
gender: 1,
age: 35,
per: 26,
mp: 400,
max_mp: 400,
hp: 1000,
max_hp: 1000,
score: 10
});
this.set_objects([
"eq/lv0/cloth", 1, 1
]);
this.skill_map(
["dodge", 200],
["parry", 200],
["force", 200],
["unarmed", 200],
["houquan", 200, "unarmed"],
["yunlongshenfa", 200, "dodge"],
["yunlongxinfa", 200, "force"]);
this.set_drop({
obj: "money/silver",
min: 10,
max: 20
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian"],
odds: 8000
});
this.set_chat_msg([
"关安基忽然说:唉,我的脾气不大好,大家可要小心了。",
"关安基忽然说:本堂的香主谁来当,还轮不到我说话。"
]);

31
world/npc/bj/tdh/huoji.js Normal file
View File

@@ -0,0 +1,31 @@
this.inherits(NPC);
this.set({
name: "药铺伙计",
desc: "他十分强壮,看上去会几分武功,对药铺生意似乎并不在乎。",
gender: 1,
age: 28,
per: 22,
mp: 400,
max_mp: 400,
hp:500,
max_hp: 500,
score: 5
});
this.set_objects([
"eq/lv0/cloth", 1, 1
]);
this.skill_map(
["dodge", 100],
["parry", 100],
["force", 100],
["unarmed", 100],
["houquan", 100,"unarmed"]);
this.set_drop({
obj: "money/silver",
min: 10,
max: 20
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian"],
odds: 8000
});

68
world/npc/bj/tdh/lama.js Normal file
View File

@@ -0,0 +1,68 @@
this.inherits(NPC);
this.set({
name: "喇嘛",
desc: "这是一个高大喇嘛,两臂粗壮,膀阔腰圆,似乎不是中土人士。",
gender: 1,
age: 37,
per: 22,
mp: 400,
max_mp: 400,
hp: 1500,
max_hp: 1500,
score: 10
});
this.set_objects([
"eq/lv0/cloth", 1, 1,
"eq/lv0/dao", 1, 1
]);
this.skill_map(
["dodge", 200],
["parry", 200],
["force", 200],
["unarmed", 200],
["blade", 200],
["mizongxinfa", 200, "force"],
["dashouyin", 200, "unarmed"]);
this.on_enter = function (me) {
if (this.is_fighting()) return;
me.notify("喇嘛说道:你是谁,居然敢破坏大爷的好事,不想活了是不是?!");
this.each_item(item => {
if (item.path == this.path) {
item.do_kill(me);
}
}, this.environment);
}
this.on_die = function (killer) {
var ishas = false;
var dubi = null;
this.each_item(item => {
if (item != this && item.path == this.path) {
ishas = true;
} else if (item.path == "bj/tdh/dubi") {
dubi = item;
}
}, this.environment);
if (!ishas && dubi && killer) {
var rd = this.random(killer.kar / 2) + killer.kar / 2 > 20;
if (rd) {
killer.notify("白衣女尼对你说道:“多谢这位" + killer.call() + "拔刀相助,贫尼感激不尽,无以为报。这里有一套神行百变身法,你若愿学,贫尼定倾囊以授。");
killer.set_temp("fb/tdh/dubi", 1);
} else {
killer.set_temp("fb/tdh/dubi", 2);
killer.notify("白衣女尼对你说道:“多谢这位" + killer.call() + "拔刀相助,贫尼感激不尽。");
}
}
}
this.set_drop({
obj: "money/silver",
min: 5,
max: 12
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian"],
odds: 8000
},
{
obj: ["book/bc#mizongxinfa", "book/bc#dashouyin"],
odds: 3000
});

40
world/npc/bj/tdh/li.js Normal file
View File

@@ -0,0 +1,40 @@
this.inherits(NPC);
this.set({
name: "李力世",
desc: "这是一个身材矮小,满连胡须的中年人,身上的衣服又脏又破,脸上满是皱纹,看上去饱经风霜。",
gender: 1,
age: 55,
per: 22,
mp: 400,
max_mp: 400,
hp: 1500,
max_hp: 1500,
score: 10
});
this.set_objects([
"eq/lv0/cloth", 1, 1,
"eq/lv0/dao", 1, 1
]);
this.skill_map(
["dodge", 200],
["parry", 200],
["force", 200],
["unarmed", 200],
["blade", 200],
["houquan", 200, "unarmed"],
["yunlongshenfa", 200, "dodge"],
["yunlongxinfa", 200, "force"],
["wuhuduanmendao", 200, "blade"]);
this.set_drop({
obj: "money/silver",
min: 10,
max: 14
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian"],
odds: 8000
},
{
obj: ["book/bc#wuhuduanmendao"],
odds: 5000
});

42
world/npc/bj/tdh/wu.js Normal file
View File

@@ -0,0 +1,42 @@
this.inherits(NPC);
this.set({
name: "吴六奇",
desc: "这个老叫花,便是天下闻名的“铁丐”吴六奇,向来嫉恶如仇。他在官居广东提督之时,手握一省重兵,受了查伊璜的劝导,心存反清复明之志,暗入天地会,任职洪顺堂香主。",
title: "铁丐",
gender: 1,
age: 55,
per: 22,
mp: 400,
max_mp: 400,
hp: 1500,
max_hp: 1500,
score: 10
});
this.set_objects([
"eq/lv0/cloth", 1, 1
]);
this.skill_map(
["dodge", 200],
["parry", 200],
["force", 200],
["unarmed", 200],
["houquan", 250, "unarmed"],
["yunlongshenfa", 200, "dodge"],
["yunlongxinfa", 200, "force"]);
this.on_enter = function (me) {
me.notify("吴六奇对你喝到:你不是我天地会的人,来这里做什么?");
this.do_kill(me);
}
this.set_drop({
obj: "money/silver",
min: 10,
max: 20
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian"],
odds: 8000
},
{
obj: ["book/bc#houquan"],
odds: 5000
});

38
world/npc/bj/tdh/xu.js Normal file
View File

@@ -0,0 +1,38 @@
this.inherits(NPC);
this.set({
name: "徐天川",
desc: "他是青木堂数一数二的好手,手上功夫十分了得,尤其擅使一套猴拳。",
title: "天地会青木堂护法",
gender: 1,
age: 55,
per: 22,
mp: 400,
max_mp: 400,
hp: 1000,
max_hp: 1000,
score: 10
});
this.set_objects([
"eq/lv0/cloth", 1, 1
]);
this.skill_map(
["dodge", 200],
["parry", 200],
["force", 200],
["unarmed", 200],
["houquan", 200, "unarmed"],
["yunlongshenfa", 200, "dodge"],
["yunlongxinfa", 200, "force"]);
this.set_drop({
obj: "money/silver",
min: 10,
max: 20
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian"],
odds: 8000
},
{
obj: ["book/bc#houquan"],
odds: 5000
});

44
world/npc/bj/tdh/xuan.js Normal file
View File

@@ -0,0 +1,44 @@
this.inherits(NPC);
this.set({
name: "玄真道长",
desc: "这位沉默寡言的道人,便是天地会青木堂护法。他是青木堂数一数二的好手,一柄长剑使得出神入化。",
title: "天地会青木堂护法",
gender: 1,
age: 55,
per: 22,
mp: 400,
max_mp: 400,
hp: 2000,
max_hp: 2000,
score: 10
});
this.on_enter = function (me) {
me.notify("玄真道长对你喝到:你不是我天地会的人,来这里做什么?");
this.do_kill(me);
}
this.set_objects([
"eq/lv0/cloth", 1, 1
], ["eq/lv0/jian", 1, 1]);
this.skill_map(
["dodge", 200],
["parry", 200],
["force", 200],
["unarmed", 200],
["sword", 200],
["houquan", 200, "unarmed"],
["yunlongjian", 200, "sword"],
["yunlongshenfa", 200, "dodge"],
["yunlongxinfa", 200, "force"]);
this.set_drop({
obj: "money/silver",
min: 10,
max: 20
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian"],
odds: 8000
},
{
obj: ["book/bc#yunlongjian"],
odds: 1000
});

View File

@@ -0,0 +1,63 @@
this.inherits(NPC);
this.set({
name: "庄夫人",
desc: "只见她约莫二十六七年纪,全身缟素,不施脂粉,脸色苍白",
title: "庄家三少奶奶",
gender: 2,
age: 26,
per: 32,
mp: 400,
max_mp: 400,
hp: 1500,
max_hp: 1500
});
this.set_objects([
"eq/lv0/cloth", 1, 1
], [
"eq/lv0/dao", 1, 1
]);
this.skill_map(
["dodge", 150],
["parry", 150],
["force", 150],
["unarmed", 150],
["sword", 150],
["huashanjianfa", 150, "sword"],
["shenxingbaibian", 150, "dodge"]);
this.set_drop({
obj: "money/silver",
min: 10,
max: 20
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian", "eq/lv0/tiezhang"],
odds: 8000
}, {
obj: ["book/bc#shenxingbaibian", "book/bc#huashanjianfa", "book/bc#shenlongjian"],
odds: 3000
});
this.set_ask("吴之荣", function (me) {
if (me.query_temp("fb/zhuang/shuang")) return me.notify("庄夫人说道:多谢恩公代妾身手刃了次贼。");
me.notify("庄夫人说道:这个狗贼害的我家破人亡,我一定要手刃了这个奸贼。");
var obj = me.find_obj_bypath("sp/bj/wu");
if (obj)
me.send_commands("give " + this.id + " 1 " + obj.id, "给她吴之荣的头颅");
});
this.on_accept = function (me, obj, count) {
if (!obj || !obj.path || me.query_temp("fb/zhuang/shuang")) return;
if (obj.is("sp/bj/wu")) {
me.notify("庄夫人看着吴之荣的头颅,或许是想到了已经阴阳两隔的家人,清丽的脸上有几分愤怒,更多的是悲伤。\n半晌后庄夫人擦了擦眼角对你说道这位" +
me.call() + ",如此大恩大德,妾身实不知何以为报。");
if (me.per + me.query_prop("per") > 36) {
me.notify("庄夫人拉着双儿对你说道:这小丫头跟随妾身多年,做事也还妥当,就送与恩公代为照料。");
me.set_temp("fb/zhuang/shuang", 1);
} else {
me.notify("庄夫人看了你一会,对你说道:这本书是救妾身这群人的恩公给我的,今日就送与恩公。");
var obj = me.add_obj("book/bc#huashanjianfa");
if (obj) {
me.notify("庄夫人给了你" + obj.unit_name(1) + "。");
}
}
return true;
}
}

View File

@@ -0,0 +1,53 @@
this.inherits(NPC);
this.set({
name: "双儿",
desc: "她是一个十分清秀的少女,大约十四五岁年纪,一张雪白的脸庞,眉弯嘴小,笑靥如花,正笑嘻嘻地看着你。",
title: "<hiw>天下无双</hiw>",
gender: 2,
age: 14,
per: 39,
mp: 400,
max_mp: 400,
hp: 1500,
max_hp: 1500
});
this.set_objects([
"eq/lv0/cloth", 1, 1
], [
"eq/lv0/dao", 1, 1
]);
this.skill_map(
["dodge", 150],
["parry", 150],
["force", 150],
["unarmed", 150],
["sword", 150],
["huashanjianfa", 150, "sword"],
["shenxingbaibian", 150, "dodge"]);
this.set_drop({
obj: "money/silver",
min: 10,
max: 20
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian", "eq/lv0/tiezhang"],
odds: 8000
}, {
obj: ["book/bc#shenxingbaibian", "book/bc#huashanjianfa", "book/bc#shenlongjian"],
odds: 3000
});
this.set_ask("跟我走吧", function (me) {
if (me.query_temp("fb/zhuang/shuang")) {
me.notify("<hiy>双儿道:夫人待我恩重如山,主人对我庄家又有大恩。夫人要我服侍主人,我一定尽心。</hiy>");
var obj = me.add_obj("sp/npc#shuang");
if (obj) {
me.notify("你获得了" + obj.unit_name(1) + "。");
}
me.remove_temp("fb/zhuang/shuang");
this.destroy();
} else {
me.notify("双儿睁大眼睛看着你说道:不行的,夫人没有同意。");
}
});

View File

@@ -0,0 +1,41 @@
this.inherits(NPC);
this.set({
name: "土匪",
desc: "这家伙满脸横肉一付凶神恶煞的模样,令人望而生畏。",
gender: 1,
age: 25,
per: 26,
mp: 400,
max_mp: 400,
hp: 1500,
max_hp: 1500,
score: 30
});
this.set_objects([
"eq/lv0/cloth", 1, 1
], [
"eq/lv0/dao", 1, 1
]);
this.skill_map(
["dodge", 150],
["parry", 150],
["force", 150],
["unarmed", 150],
["blade", 150],
["wuhuduanmendao", 250, "blade"]);
this.set_drop({
obj: "money/silver",
min: 1,
max: 20
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian", "eq/lv0/tiezhang"],
odds: 8000
}, {
obj: ["book/bc#shenlongxinfa", "book/bc#yixingbufa", "book/bc#shenlongjian"],
odds: 3000
});
this.on_enter = function (me) {
me.notify("土匪一声大喊: 此山是我开,此树是我栽,若要从此过,留下买路财 !");
this.do_kill(me);
}

View File

@@ -0,0 +1,40 @@
this.inherits(NPC);
this.set({
name: "章老三",
desc: "这是一个神龙教弟子,一袭黑衣,混身透着一股邪气。",
title: "神龙教小头目",
gender: 1,
age: 44,
per: 26,
mp: 400,
max_mp: 1400,
hp: 2500,
max_hp: 2500,
score: 70
});
this.set_objects([
"eq/lv0/cloth", 1, 1
], [
"eq/lv0/jian", 1, 1
]);
this.skill_map(
["dodge", 250],
["force", 250],
["unarmed", 250],
["sword", 250],
["staff", 200],
["shenlongjian", 250, "sword"],
["yixingbufa", 150, "dodge"],
["shenlongxinfa", 150, "force"]);
this.set_drop({
obj: "money/silver",
min: 1,
max: 10
}, {
obj: ["eq/lv0/cloth", "eq/lv0/dao", "eq/lv0/jian", "eq/lv0/tiezhang"],
odds: 8000
}, {
obj: ["book/bc#shenlongxinfa", "book/bc#yixingbufa", "book/bc#shenlongjian"],
odds: 3000
});

39
world/npc/emei/jingxin.js Normal file
View File

@@ -0,0 +1,39 @@
this.inherits(NPC);
this.set({
name: "静心",
desc: "她一位中年出家道姑,道冠高拢,慈眉善目",
title: "峨眉派第四代弟子",
gender: 2,
age: 48,
per: 33,
max_mp: 100000,
max_hp: 100000,
family: FAMILIES.EMEI,
family_level: 4,
level: 2,
prop: {
gj: 2000,
mz: 2000,
ds: 2000
}
});
this.set_objects(["eq/lv0/cloth", 1, 1], ["eq/lv0/jian", 1, 1]);
this.skill_map(
["dodge", 300],
["parry", 300],
["force", 300],
["unarmed", 300],
["sword", 300],
["literate", 300],
["emeixinfa", 300],
["linjizhuang", 300, "force"],
["zhutianbu", 300, "dodge"],
["huifengjian", 300, "sword"],
["jindingzhang", 300, "unarmed"]);
this.on_master = function (me) {
if (me.gender != 2) return me.notify_fail("静心对你说道:这位" + me.call() + ",我们峨眉派不收男弟子的。");
if (me.query_skill("emeixinfa", 0) < 100) return me.notify_fail("静心说道:你的峨眉心法掌握程度还不够,需要多加练习。");
if (me.query_skill("jindingzhang", 0) < 100) return me.notify_fail("静心说道:你的金顶绵掌掌握程度还不够,需要多加练习。");
return true;
}

42
world/npc/emei/miejue.js Normal file
View File

@@ -0,0 +1,42 @@
this.inherits(NPC);
this.set({
name: "灭绝",
desc: "她是一位白发苍苍的老尼,是峨眉派第三代掌门,她脸上冷冰冰,毫无表情。",
title: "峨眉派掌门",
gender: 2,
age: 60,
per: 31,
dex: 30,
str: 30,
max_mp: 827400,
max_hp: 891500,
family: FAMILIES.EMEI,
family_level: 3,
level:3,
prop: {
gj: 8000,
mz: 8000,
ds: 8000
}
});
this.set_objects(["eq/lv0/cloth", 1, 1], ["eq/lv0/jian", 1, 1]);
this.skill_map(
["dodge", 800],
["parry", 800],
["force", 800],
["unarmed", 800],
["sword", 800],
["literate", 800],
["emeixinfa", 800],
["linjizhuang", 800, "force"],
["zhutianbu", 800, "dodge"],
["huifengjian", 800],
["yitianjianfa", 800, "sword"],
["jindingzhang", 800, "unarmed"]);
this.on_master = function (me) {
if (me.gender != 2) return me.notify_fail("灭绝对你哼了道:再不走小心杀了你!");
if (me.query_skill("linjizhuang", 0) < 500 && me.query_skill("linjizhuang2", 0) < 500) return me.notify_fail("灭绝说道:你的临济十二庄掌握程度还不够,需要多加练习。");
if (me.query_skill("huifengjian", 0) < 300) return me.notify_fail("灭绝说道:你的回风拂柳剑掌握程度还不够,需要多加练习。");
return true;
}

View File

@@ -0,0 +1,36 @@
this.inherits(NPC);
this.set({
name: "苏梦清",
desc: "她是峨眉派俗家弟子,一位面容清瘦,身材娇小的女子",
title: "峨眉派第五代弟子",
gender: 2,
age: 28,
per: 38,
max_mp: 1400,
family: FAMILIES.EMEI,
family_level: 5,
level: 2,
max_mp: 51400,
max_hp: 51400,
prop: {
gj: 500,
mz: 500,
ds: 500
}
});
this.set_objects(["eq/lv0/cloth", 1, 1], ["eq/lv0/jian", 1, 1]);
this.skill_map(
["dodge", 100],
["parry", 100],
["force", 100],
["unarmed", 100],
["sword", 100],
["literate", 100],
["emeixinfa", 100, "force"],
["zhutianbu", 100, "dodge"],
["jindingzhang", 100,"unarmed"]);
this.on_master = function (me) {
if (me.gender != 2) return me.notify_fail("苏梦清对你说道:这位"+me.call()+",我们峨眉派不收男弟子的。");
return true;
}

View File

@@ -0,0 +1,43 @@
this.inherits(NPC);
this.set({
name: "周芷若",
desc: "她是一位容貌美丽,端庄可爱的姑娘。虽然年纪很轻,但在峨眉派中是出类拔萃的人物。",
title: "峨眉派第四代弟子",
gender: 2,
age: 20,
per: 37,
dex: 30,
str: 30,
max_mp:32400,
max_hp: 32400,
family: FAMILIES.EMEI,
family_level: 3,
level: 3,
prop: {
gj: 4000,
mz: 4000,
ds:4000
}
});
this.set_objects(["eq/lv0/cloth", 1, 1], ["eq/lv0/jian", 1, 1]);
this.skill_map(
["dodge", 500],
["parry", 500],
["force", 500],
["unarmed", 500],
["sword", 500],
["literate", 500],
["emeixinfa", 500],
["linjizhuang", 500, "force"],
["zhutianbu", 500, "dodge"],
["huifengjian", 500],
["jiuyinbaiguzhao", 500, ["parry", "unarmed"]],
["huifengjian", 500, "sword"],
["jindingzhang", 500]);
this.on_master = function (me) {
if (me.gender != 2) return me.notify_fail("周芷若对你哼了道:再不走小心杀了你!");
if (me.query_skill("linjizhuang", 0) < 300 && me.query_skill("linjizhuang2", 0) < 300) return me.notify_fail("周芷若说道:你的临济十二庄掌握程度还不够,需要多加练习。");
if (me.query_skill("huifengjian", 0) < 300) return me.notify_fail("周芷若说道:你的回风拂柳剑掌握程度还不够,需要多加练习。");
return true;
}

22
world/npc/follower/azi.js Normal file
View File

@@ -0,0 +1,22 @@
this.inherits(NPC);
this.set({
name: "阿紫",
desc: "她容颜俏丽,可眼神中总是透出一股邪气。",
title: "星宿派小师妹",
gender: 2,
age: 16,
per: 34,
str: 27,
con: 27,
dex: 27,
int: 27,
max_mp: 11500,
max_hp: 11500
});
this.set_objects(["eq/lv0/cloth", 1, 1]);
this.skill_map(
["dodge", 500],
["parry", 500],
["force", 500],
["unarmed", 500],
["throwing", 500]);

View File

@@ -0,0 +1,28 @@
this.inherits(NPC);
this.set({
name: "程灵素",
desc: "她相貌似乎已有十六七岁,身形却如是个十四五岁的幼女,一双眼睛黑如点漆,朗似秋水",
title: "<hic>药王</hic>",
gender: 2,
age: 16,
per: 36,
str: 15,
con: 30,
dex: 15,
int: 40,
mp: 100,
exp: 5000000,
pot: 5000000,
max_mp: 100,
hp: 100,
max_hp: 100,
level: 3
});
this.skill_map(
["lianyao", 3000]);
this.on_master_enter = function (me) {
if (this.random(3) == 1) {
me.notify("程灵素看你进来,对你羞赧一笑,苍白的小脸上笑容如春花初绽,竟似越看越美。");
}
}

View File

@@ -0,0 +1,25 @@
this.inherits(NPC);
this.set({
name: "黄蓉",
desc: "这便是桃花岛岛主的独生女儿。她生性跳脱飞扬,喜欢四处乱跑。",
title: "桃花岛主之女",
gender: 2,
age: 18,
per: 38,
int: 40,
dex: 40,
str: 15,
con:15,
max_mp: 100000,
max_hp: 100000,
pfm_rate: 1
});
this.set_objects(["eq/lv0/cloth", 1, 1]);
this.skill_map(
["dodge", 500],
["parry", 500],
["force", 500],
["unarmed", 500],
["sword", 500],
["literate", 1500]);

View File

@@ -0,0 +1,26 @@
this.inherits(NPC);
this.set({
name: "<wht>浪翻云</wht>",
desc: "他身形雄伟,面貌粗犷豪雄,脸目丑陋,一对黄睛似醒还醉",
gender: 1,
age: 38,
per: 14,
max_mp: 6000000,
max_hp: 6000000,
exp: 2300000000,
level: 6,
prop: {
gj: 2000,
mz: 2000,
ds: 2000
}
});
this.set_objects(["eq/lv0/cloth", 1, 1], ["eq/lv0/jian", 1, 1]);
this.skill_map(
["dodge", 5000],
["parry", 5000],
["force", 5000],
["unarmed", 5000],
["sword", 5000],
["literate", 5000]
);

View File

@@ -0,0 +1,24 @@
this.inherits(NPC);
this.set({
name: "青青",
desc: "她是一个梳着高髻,身着羽衣的绝色美人,如同壁画上的仙子。",
title: "<hiw>狐女</hiw>",
gender: 2,
age: 20,
per: 38,
dex: 40,
str: 15,
int: 40,
con: 15,
exp: 5000000,
pot: 5000000,
max_mp: 2000,
max_hp: 2000
});
this.skill_map(
["dodge", 300],
["parry", 300],
["force", 300],
["unarmed", 300],
["sword", 300],
["literate", 3000]);

View File

@@ -0,0 +1,34 @@
this.inherits(NPC);
this.set({
name: "小师妹",
desc: "她是宗门里最小的师妹,长得是娇柔可爱",
gender: 2,
age: 19,
per: 37,
dex: 20,
str: 15,
int: 40,
con: 15,
exp: 15000000,
pot: 15000000,
max_mp: 600000,
max_hp: 600000,
level: 3
});
this.set_objects(["eq/lv0/jian", 1, 1], ["res/cao#18", 1], ["res/cao#22", 1], ["res/cao#19", 1], ["res/cao#20", 1], ["res/cao#21", 1]);
this.skill_map(
["dodge", 1500],
["parry", 1500],
["force", 1500],
["unarmed", 1500],
["throwing", 1500],
["sword", 1500],
["literate", 1500],
["lianyao", 1500]);
this.on_master_enter = function (me) {
if (this.random(3) == 1) {
me.notify("小师妹朝你微微一笑。");
}
}

View File

@@ -0,0 +1,37 @@
this.inherits(NPC);
this.set({
name: "双儿",
desc: "她是一个十分清秀的少女,大约十四五岁年纪,一张雪白的脸庞,眉弯嘴小,笑靥如花,正笑嘻嘻地看着你。",
title: "<hiw>天下无双</hiw>",
gender: 2,
age: 20,
per: 42,
str: 30,
con: 15,
dex: 40,
int: 15,
mp: 100,
exp: 5000000,
pot: 5000000,
max_mp: 100,
hp: 100,
max_hp: 100,
level: 3
});
this.skill_map(
["dodge", 150],
["parry", 150],
["force", 150],
["unarmed", 150],
["sword", 150],
["huashanjianfa", 150, "sword"],
["shenxingbaibian", 150, "dodge"]);
this.on_master_enter = function (me) {
if (this.random(3) == 1) {
if (me.gender == 1)
me.notify("双儿笑嘻嘻地看着你,脆声道:相公,你回来啦。");
else
me.notify("双儿笑嘻嘻地看着你。");
}
}

View File

@@ -0,0 +1,32 @@
this.inherits(NPC);
this.set({
name: "王语嫣",
desc: "她似有烟霞轻笼,恍入仙境,当真非尘世中人。",
title: "<him>神仙姐姐</him>",
gender: 2,
age: 20,
per: 42,
str: 15,
con: 15,
dex: 15,
int: 50,
mp: 100,
exp: 1000000,
pot: 1000000,
max_mp: 100,
hp: 100,
max_hp: 100,
level: 3
});
this.skill_map(
["literate", 10000]);
this.on_master_enter = function (me) {
if (this.random(3) == 1) {
var name = me.name[0];
if (me.gender == 1)
me.notify("王语嫣对你微微颔首,柔声道:" + name + "公子。");
else
me.notify("王语嫣对你微微颔首,柔声道:" + name + "姑娘。");
}
}

View File

@@ -0,0 +1,31 @@
this.inherits(NPC);
this.set({
name: "温仪",
desc: "这是一个美如天仙的女子,眉宇间却是仿佛隐藏着深忧。",
title: "温家小姐",
gender: 2,
age: 19,
per: 37,
dex: 25,
str: 25,
int: 25,
con: 25,
exp: 800000,
pot: 800000,
max_mp: 2000,
max_hp: 2000,
level: 3
});
this.set_objects(["eq/lv0/cloth", 1, 1]);
this.skill_map(
["dodge", 300],
["parry", 300],
["force", 300],
["unarmed", 300],
["sword", 300],
["literate", 800]);
this.on_master_enter = function (me) {
if (this.random(3) == 1) {
}
}

28
world/npc/follower/xia.js Normal file
View File

@@ -0,0 +1,28 @@
this.inherits(NPC);
this.set({
name: "夏雪宜",
desc: "他就是人称“金蛇郎君”的一代怪杰——夏雪宜。",
title: "<hiy>金蛇郎君</hiy>",
gender: 1,
age: 25,
per: 36,
str: 30,
int: 30,
dex: 30,
con: 15,
mp: 20000,
max_mp: 20000,
hp: 20000,
max_hp: 20000,
level: 3
});
this.set_objects([
"eq/lv0/cloth", 1, 1
]);
this.skill_map(
["dodge", 600],
["parry", 600],
["force", 600],
["sword", 600],
["unarmed", 600]);

View File

@@ -0,0 +1,27 @@
this.inherits(NPC);
this.set({
name: "小龙女",
title: "<wht>玉女素心</wht>",
desc: "她清丽异常,但也许是长居古墓之故,面色略白。",
gender: 2,
age: 20,
per: 40,
str: 15,
con: 15,
dex: 15,
int: 40,
mp: 100,
exp: 1000000,
pot: 1000000,
max_mp: 100,
hp: 100,
max_hp: 100,
level: 3
});
this.skill_map(
["literate", 300], ["dodge", 300],
["parry", 300],
["force", 300],
["unarmed", 300],
["whip", 300]);

View File

@@ -0,0 +1,34 @@
this.inherits(NPC);
this.set({
name: "小昭",
desc: "她因年纪幼小,身材尚未长成,但更显得娇小玲珑、甜美可爱。",
title:"<hiw>明教圣女</hiw>",
gender: 2,
age: 14,
per: 38,
dex: 40,
str: 15,
int: 40,
con: 15,
exp: 1000000,
pot: 1000000,
max_mp: 2000,
max_hp: 2000,
level: 3
});
this.set_objects(["eq/lv0/cloth", 1, 1]);
this.skill_map(
["dodge", 300],
["parry", 300],
["force", 300],
["unarmed", 300],
["sword", 300],
["literate", 1000]);
this.on_master_enter = function (me) {
if (this.random(3) == 1) {
if(me.gender==1)
me.notify("小昭嘻嘻一笑,对你说道:" + me.name + "哥哥,你来啦。");
else
me.notify("小昭嘻嘻一笑,对你说道:" + me.name + "姐姐,你来啦。");
}
}

View File

@@ -0,0 +1,32 @@
this.inherits(NPC);
this.set({
name: "张无忌",
desc: "江湖中不世出的少年英雄",
title: "明教教主",
gender:1,
age: 17,
per: 38,
dex: 15,
str: 40,
int: 15,
con: 40,
exp: 1000000,
pot:1000000,
max_mp: 20000,
max_hp: 20000,
level: 3
});
this.set_objects(["eq/lv0/cloth", 1, 1], ["eq/lv0/jian", 1, 1]);
this.skill_map(
["dodge", 300],
["parry", 300],
["force", 300],
["unarmed", 300],
["sword", 300],
["literate", 500]);
this.on_master_enter = function (me) {
if (this.random(3) == 1) {
me.notify("张无忌对你嘿嘿一笑。");
}
}

View File

@@ -0,0 +1,37 @@
this.inherits(NPC);
this.set({
name: "周芷若",
desc: "她秀若芝兰,淡雅脱俗,年纪虽小却十足是个绝色的美人胚子",
title: "峨眉派第四代弟子",
gender: 2,
age: 17,
per: 38,
dex: 35,
str: 35,
int: 15,
con: 15,
exp: 1000000,
pot: 1000000,
max_mp:2000,
max_hp: 2000,
level: 3
});
this.set_objects(["eq/lv0/cloth", 1, 1], ["eq/lv0/jian", 1, 1]);
this.skill_map(
["dodge", 300],
["parry", 300],
["force", 300],
["unarmed", 300],
["sword", 300],
["literate", 1000]);
this.on_master_learn = function (me, sk) {
if (sk == "linjizhuang" || sk == "zhutianbu" || sk == "yitianjianfa" || sk == "jiuyinbaiguzhao") {
return me.notify_fail("周芷若说道:师父教我不能让别人学会我们峨眉派的武功,师父的话我是要听的。");
}
}
this.on_master_enter = function (me) {
if (this.random(3) == 1) {
me.notify("周芷若对你微微一笑。");
}
}

View File

@@ -0,0 +1,44 @@
this.inherits(NPC);
this.set({
name: "洪七公",
desc: "他就是丐帮第十七任帮主,号称“北丐”的洪七公老爷子",
title: "<hiy>北丐</hiy>",
gender: 1,
age: 65,
per: 33,
max_mp: 400000,
max_hp: 400000,
pfm_rate: 1,
family: FAMILIES.GAIBANG,
family_level: 2,
level: 3,
prop: {
gj: 8000,
mz: 8000,
ds: 8000
}
});
this.set_objects(["eq/lv0/cloth", 1, 1], ["eq/lv0/tiegun", 1, 1]);
this.skill_map(
["dodge", 800],
["parry", 800],
["force", 800],
["unarmed", 800],
["club", 800],
["literate", 800],
["gaibangxinfa", 800],
["feiyanzoubi", 800],
["jiaohuabangfa", 800],
["taizuchangquan", 800],
["literate", 800],
["huntianqigong", 800, "force"],
["xiaoyaoyou", 800, "dodge"],
["jiaohuabangfa", 800],
["dagoubang", 800, "club"],
["xianglongzhang", 800, "unarmed"]);
this.on_master = function (me) {
if (me.query_skill("huntianqigong", 0) < 500 && me.query_skill("huntianqigong2", 0) < 500) return me.notify_fail("洪七公说道:你的混天气功掌握程度还不够,需要多加练习。");
if (me.query_skill("dagoubang", 0) < 500 && me.query_skill("dagoubang2", 0) < 500) return me.notify_fail("洪七公说道:你的打狗棒掌握程度还不够,还需多加努力。");
return true;
}

38
world/npc/gaibang/jian.js Normal file
View File

@@ -0,0 +1,38 @@
this.inherits(NPC);
this.set({
name: "简长老",
desc: "简长老是丐邦的执法长老,代帮主执掌法刀以及青竹令等",
title: "丐帮九袋长老",
gender: 1,
age: 50,
per: 23,
family: FAMILIES.GAIBANG,
family_level: 3,
max_mp: 310000,
max_hp: 300000,
prop: {
gj: 5000,
mz: 5000,
ds: 5000
}
});
this.set_objects(["eq/lv0/cloth", 1, 1], ["eq/lv0/mugun", 1, 1]);
this.skill_map(
["dodge", 500],
["parry", 500],
["force", 500],
["unarmed", 500],
["club", 500],
["literate", 500],
["feiyanzoubi", 500],
["gaibangxinfa", 500],
["huntianqigong", 500, "force"],
["xiaoyaoyou", 500, "dodge"],
["jiaohuabangfa", 500, ["club","parry"]],
["taizuchangquan", 500, "unarmed"]);
this.on_master = function (me) {
if (me.query_skill("gaibangxinfa", 0) < 100) return me.notify_fail("简长老说道:你的丐帮心法掌握程度还不够,需要多加练习。");
if (me.query_skill("jiaohuabangfa", 0) < 100) return me.notify_fail("简长老说道:你的叫花棒法掌握程度还不够,还需多加努力。");
return true;
}

41
world/npc/gaibang/lu.js Normal file
View File

@@ -0,0 +1,41 @@
this.inherits(NPC);
this.set({
name: "鲁有脚",
desc: "丐帮长老,在丐帮中有仁有义,行事光明磊落,深得洪七公的器重。",
title: "掌棒龙头",
gender: 1,
age: 65,
per: 33,
pfm_rate: 1,
family: FAMILIES.GAIBANG,
family_level: 2,
level: 3,
max_mp: 310000,
max_hp: 300000,
prop: {
gj: 5000,
mz: 5000,
ds: 5000
}
});
this.set_objects(["eq/lv0/cloth", 1, 1], ["eq/lv0/tiegun", 1, 1]);
this.skill_map(
["dodge", 500],
["parry", 500],
["force", 500],
["unarmed", 500],
["club", 500],
["literate", 500],
["feiyanzoubi", 500],
["gaibangxinfa", 500],
["huntianqigong", 500, "force"],
["xiaoyaoyou", 500, "dodge"],
["jiaohuabangfa", 500],
["dagoubang", 500, "club"],
["taizuchangquan", 500, "unarmed"]);
this.on_master = function (me) {
if (me.query_skill("huntianqigong", 0) < 300 && me.query_skill("huntianqigong2", 0) < 300) return me.notify_fail("鲁有脚说道:你的混天气功掌握程度还不够,需要多加练习。");
return true;
}

29
world/npc/gaibang/zuo.js Normal file
View File

@@ -0,0 +1,29 @@
this.inherits(NPC);
this.set({
name: "左全",
desc: "这是位豪爽大方的丐帮七袋弟子,看来是个北地豪杰。",
title: "丐帮七袋弟子",
gender: 1,
age: 35,
per: 23,
max_mp: 1110,
max_hp: 1020,
family: FAMILIES.GAIBANG,
family_level: 4
});
this.set_objects(["eq/lv0/cloth", 1, 1], ["eq/lv0/mugun", 1, 1]);
this.skill_map(
["dodge", 100],
["parry", 100],
["force", 100],
["unarmed", 100],
["club", 100],
["literate", 100],
["gaibangxinfa", 100, "force"],
["feiyanzoubi", 100, "dodge"],
["jiaohuabangfa", 100, ["club", "parry"]],
["taizuchangquan", 100, "unarmed"]);
this.on_master = function (me) {
return true;
}

View File

@@ -0,0 +1,36 @@
this.inherits(NPC);
this.set({
name: "封不平",
desc: "封不平是华山剑宗第一高手,满脸戾气一张黄焦焦的面皮。",
title: "狂风快剑",
gender: 1,
age: 40,
per: 33,
max_mp: 1400,
str: 27,
con: 27,
dex: 27,
int: 27,
family: FAMILIES.HUASHAN,
family_level: 1
});
this.set_objects(["eq/lv0/cloth", 1, 1], ["eq/lv0/jian", 1, 1]);
this.skill_map(
["dodge", 500],
["parry", 500],
["force", 500],
["unarmed", 500],
["sword", 500],
["literate", 500],
["huashanxinfa", 500, "force"],
["huashanjianfa", 500],
["feiyanhuixiang", 500, "dodge"],
["kuangfengkuaijian", 500,"sword"],
["huashanquanfa", 500, "unarmed"]);
this.on_master = function (me) {
if (me.query_skill("huashanxinfa", 0) < 100) return me.notify_fail("封不平说道:你的华山心法掌握程度还不够,需要多加练习。");
if (me.query_skill("huashanjianfa", 0) < 200) return me.notify_fail("封不平说道:你的华山剑法掌握程度还不够,需要多加练习。");
return true;
}

View File

@@ -0,0 +1,48 @@
this.inherits(NPC);
this.set({
name: "风清扬",
desc: "他就是华山剑宗的长老风清扬。他身材瘦长,眉宇间一直笼罩着一股淡淡的忧伤神色,显然对当年的剑宗气宗之争一直难以忘怀。",
title: "剑宗祖师",
gender: 1,
age: 68,
per: 33,
str: 27,
con: 37,
dex: 27,
int: 37,
family: FAMILIES.HUASHAN,
family_level: 0,
level: 3,
max_mp: 781400,
max_hp: 871400,
prop: {
gj: 8000,
mz: 8000,
ds: 8000
}
});
this.set_objects(["eq/lv0/cloth", 1, 1], ["eq/lv0/jian", 1, 1]);
this.skill_map(
["dodge", 800],
["parry", 800],
["force", 800],
["unarmed", 800],
["sword", 800],
["literate", 800],
["dugujiujian", 800, ["sword","parry"]],
["zixiashengong", 800, "force"],
["feiyanhuixiang", 800, "dodge"],
["huashanjianfa", 800],
["kuangfengkuaijian", 800],
["poyuquan", 800, "unarmed"],
["huashanquanfa", 800]);
this.on_master = function (me) {
if (me.query_skill("zixiashengong2", 0) == 0 && me.query_skill("zixiashengong", 0) < 500) return me.notify_fail("风清扬说道:你的紫霞神功掌握程度还不够,需要多加练习。");
if (me.query_skill("zixiashengong", 0) == 0 && me.query_skill("zixiashengong2", 0) < 500) return me.notify_fail("风清扬说道:你的紫霞神功掌握程度还不够,需要多加练习。");
if (me.query_skill("kuangfengkuaijian2", 0) == 0 && me.query_skill("kuangfengkuaijian", 0) < 500) return me.notify_fail("风清扬说道:你的狂风快剑掌握程度还不够,还需多加努力。");
if (me.query_skill("kuangfengkuaijian", 0) == 0 && me.query_skill("kuangfengkuaijian2", 0) < 500) return me.notify_fail("风清扬说道:你的狂风快剑掌握程度还不够,还需多加努力。");
me.notify("风清扬叹了口气说到:剑气之争又如何?");
return true;
}

View File

@@ -0,0 +1,37 @@
this.inherits(NPC);
this.set({
name: "高根明",
desc: "高根明是岳不群的第五位弟子",
title: "市井豪杰",
gender: 1,
age: 24,
per: 33,
max_mp: 51400,
max_hp: 51400,
str: 25,
con: 27,
dex: 20,
int: 25,
family: FAMILIES.HUASHAN,
family_level: 2,
prop: {
gj: 500,
mz: 500,
ds:500
}
});
this.set_objects(["eq/lv0/cloth", 1, 1], ["eq/lv0/jian", 1, 1]);
this.skill_map(
["dodge", 100],
["parry", 100],
["force", 100],
["unarmed", 100],
["sword", 100],
["literate", 100],
["huashanxinfa", 100, "force"],
["huashanjianfa", 100, "sword"],
["huashanquanfa", 100, "unarmed"]);
this.on_master = function (me) {
return true;
}

View File

@@ -0,0 +1,47 @@
this.inherits(NPC);
this.set({
name: "岳不群",
desc: "他就是华山派的现任掌门人,江湖上人称“君子剑”的岳不群。他看上去是个和善的中年人,对人总是彬彬有礼,很有一代宗师的风范。",
title: "华山派掌门 君子剑",
gender: 1,
age: 40,
per: 33,
max_mp: 827400,
max_hp: 891500,
str: 27,
con: 27,
dex: 27,
int: 27,
family: FAMILIES.HUASHAN,
family_level: 1,
prop: {
gj: 4000,
mz: 4000,
ds: 4000
}
});
this.set_objects(["eq/lv0/cloth", 1, 1], ["eq/lv0/jian", 1, 1]);
this.skill_map(
["dodge", 500],
["parry", 500],
["force", 500],
["unarmed", 500],
["sword", 500],
["literate", 500],
["zixiashengong", 500, "force"],
["huashanjianfa", 500],
["huashanxinfa", 500],
["feiyanhuixiang", 500, "dodge"],
["huashanquanfa", 500],
["poyuquan", 500, ["unarmed", "parry"]]);
this.on_teach = function (me, sk) {
if (!this.is(me.query_temp("master")))
return me.notify_fail(this.name + "对你说道:请教?这怎么敢当!");
}
this.on_master = function (me) {
if (me.query_skill("huashanxinfa", 0) < 100) return me.notify_fail("岳不群说道:你的华山心法掌握程度还不够,需要多加练习。");
if (me.query_skill("huashanjianfa", 0) < 100) return me.notify_fail("岳不群说道:你的华山剑法掌握程度还不够,还需多加努力。");
return true;
}

43
world/npc/new/daoshi.js Normal file
View File

@@ -0,0 +1,43 @@
this.inherits(NPC);
this.set({
name: "<hic>指引者</hic>",
desc: "她是一位漂亮的女性,脸上笑眯眯的",
title: "<hig>新手导师</hig>",
gender: 2,
age: 20,
per: 41,
mp: 1500,
max_mp: 1500,
hp: 1500,
max_hp: 1500,
});
this.set_objects([
"sp/new/qicai", 1, 1
]);
this.query_commands_json = function (player, isyb) {
var json = {};
json.type = "item";
json.desc = this.desc;
json.id = this.id;
json.commands = [];
json.commands.push({
cmd: "look " + this.id,
name: "查看"
});
if (this.actions) {
for (var cmd in this.actions) {
if (!this.actions[cmd].name) continue;
json.commands.push({
cmd: cmd + " " + this.id,
name: this.actions[cmd].name
});
}
}
return JSON.stringify(json);
}

17
world/npc/new/mutouren.js Normal file
View File

@@ -0,0 +1,17 @@
this.inherits(NPC);
this.set({
name: "<hiw>木头人</hiw>",
desc: "这是一个木头做的假人,用来训练新手用的",
gender: 1,
age: 10,
per: 22,
mp: 60,
max_mp: 60,
hp: 60,
max_hp: 60,
dex: 20,
str:4
});
this.set_drop({
obj: "sp/new/mutou"
});

19
world/npc/pub/baodi.js Normal file
View File

@@ -0,0 +1,19 @@
this.inherits(NPC);
this.set({
name: "易直非",
desc: "一个神秘的商人,可以帮你兑换你一直想要却得不到的道具",
title: "神秘商人",
gender: 1,
age: 25,
per: this.random(20) + 10,
mp: 400,
max_mp: 400,
hp: 400,
max_hp: 400
});
this.add_action("ask3", "兑换", function (me) {
});

43
world/npc/pub/bing.js Normal file
View File

@@ -0,0 +1,43 @@
this.inherits(NPC);
this.set({
name: "官兵",
desc: "虽然官兵的武艺不能和武林人士相比,可是他们讲究的是人多力量大。",
gender: 1,
age: 35,
per: this.random(20) + 10,
mp: 1500,
max_mp: 1500,
hp: 1500,
max_hp: 1500,
score: 10
});
this.set_objects([
"eq/lv1/junfu", 1, 1
], [
"eq/lv0/dao", 1, 1
]);
this.set_drop({
obj: "money/silver",
min: 2,
max: 5
}, {
obj: ["eq/lv0/cloth", "eq/lv0/jian", "eq/lv0/dao"],
odds: 6000
}, {
obj: ["eq/lv1/guanfu", "eq/lv1/junfu", "book/book#sword", "book/book#blade"],
odds: 2000
});
this.skill_map(
["unarmed", 150],
["dodge", 150],
["parry", 150],
["blade", 150]);
this.on_kill = function (me) {
this.each_item(item => {
if (item != this && item.path == this.path) {
this.send_room("$N喊道兄弟们并肩子上");
item.do_kill(me);
}
}, this.environment);
}

45
world/npc/pub/biwu.js Normal file
View File

@@ -0,0 +1,45 @@
this.inherits(NPC);
this.set({
name: "擂台比武报名",
desc: "他是负责比武大赛报名的",
gender: 1,
age: 35,
per: this.random(20) + 10,
mp: 1500,
max_mp: 1500,
hp: 1500,
max_hp: 1500
});
this.set_objects([
"eq/lv1/junfu", 1, 1
]);
this.query_commands = function (player) {
if (this.json) return this.json;
var json = {};
json.type = "item";
json.desc = this.desc;
json.id = this.id;
json.commands = [];
json.commands.push({
cmd: "askbiwu " + this.id,
name: "挑战"
});
json.commands.push({
cmd: "askbiwu1 " + this.id,
name: "更新我的比武状态"
});
this.json = JSON.stringify(json);
return this.json;
}
this.add_action("askbiwu", "挑战", function (me) {
me.send('从高手榜单选择你要挑战的高手。');
});
this.add_action("askbiwu1", "观战", function (me) {
WORLD.COMMANDS['biwu'].enter(me, 'watch');
});

76
world/npc/pub/bpguanli.js Normal file
View File

@@ -0,0 +1,76 @@
this.inherits(NPC);
this.set({
name: "帮会管理员",
desc: "他是帮会方面的管理员",
gender: 1,
age: 44,
per: this.random(20) + 10,
mp: 400,
max_mp: 400,
hp: 400,
max_hp: 400,
no_fight: true
});
this.on_kill = function (me) {
return false;
}
this.set_objects(["eq/lv0/cloth", 1, 1]);
this.add_action("askhyd", "活跃度查询", function (me, par) {
var pt = me.query_party();
if (!pt) return me.notify("你还没有加入帮派。");
var str = ["<hic>帮会管理员说道:我们帮派本周的活跃度是:" + pt.query_score() + ",成员完成每日任务获得活跃度,每周一清空</hic>"];
var lv = ["", "武士", "武师", "宗师", "武圣", "武帝", "武神"];
var lv_sc = [];
for (var i = 1; i < 7; i++) {
str.push("\n");
str.push(lv[i]);
str.push("活跃度:");
str.push(pt.query_temp('sc' + i, 0));
str.push("/");
str.push((pt.level + 3) * 200);
}
me.send(str.join(""));
if (me.query_temp('pt_lv', 0) < 5) {
me.send_commands("party fam", "开启帮派战",
"party boss", "发送英雄帖",
"party xiangyang", "守卫襄阳",
"party lvliu", "绿柳山庄");
}
});
this.add_action("ptset1", "帮会设置", function (me, par) {
var pt = me.query_party();
if (!pt) return me.notify("你还没有加入帮派。");
if (me.query_temp('pt_lv', 0) > pt.query_temp("power", 2)) {
return me.notify("你没有权限更改设置。");
}
me.notify("帮会管理员:你要更改哪些设置?");
return me.send_commands("party setting power", "更改权限", "party setting join", "加入方式",
"party setting open_sc", "开启门派活动",
"party setting alloc", "战利品分配", "party setting notice", "发布公告");
});
this.add_action("sendntc", "发布公告", function (me, par) {
WORLD.COMMANDS['party'].enter(me, 'notice');
});
this.add_action("levelup2", "设施升级", function (me, par) {
var pt = me.query_party();
if (!pt) return me.notify("你还没有加入帮派。");
if (me.query_temp('pt_lv', 0) > 1) {
return me.notify("你没有权限升级设施。");
}
var exp = pt.query_exp();
var lvup_exp = pt.level_exp[pt.level];
if (lvup_exp) exp = exp + "/" + lvup_exp;
me.notify("帮会管理员:你要升级哪些设施?当前可用积分" + exp);
return me.send_commands("party levelup liangong", "升级练功房", "party levelup lianyao", "升级炼药房");
});
this.add_action("jrfb", "进入副本区域", function (me, par) {
WORLD.COMMANDS['party'].enter(me, 'enter');
});

23
world/npc/pub/ckguanli.js Normal file
View File

@@ -0,0 +1,23 @@
this.inherits(NPC);
this.set({
name: "仓库管理员",
desc: "他是帮会仓库管理员",
gender: 1,
age: 44,
per: this.random(20) + 10,
mp: 400,
max_mp: 400,
hp: 400,
max_hp: 400,
});
this.set_objects(["eq/lv0/cloth", 1, 1]);
this.add_action("askhyd", "仓库盘点", function (me, par) {
var pt = me.query_party();
if (!pt) return me.notify("你还没有加入帮派。");
me.send("帮会管理员说道:我们本周的活跃度是:" + pt.query_score() + ",每周一重置。");
if (me.query_temp('pt_lv', 0) < 5) {
me.send_commands("party fam", "开启帮派战", "party boss", "发送英雄帖");
}
});

71
world/npc/pub/dadizi.js Normal file
View File

@@ -0,0 +1,71 @@
this.inherits(NPC);
this.set({
name: "大师兄",
desc: "他就是你们门派的首席大弟子",
title: "<hig>首席弟子</hig>",
gender: 1,
age: 25,
per: 18,
mp: 400,
max_mp: 400,
hp: 400,
max_hp: 400
});
this.on_create = function (path, par) {
if (!par) return;
this.family = FAMILIES[par.substr(1)];
this.init_from(this.family);
if (this.family == FAMILIES.EMEI) {
this.gender = 2;
}
var user = WORLD.getUser(WORLD.DATA.query_temp(this.family.id + "_top"));
this.family.init_dadizi(this, user);
if (!user) this.family.is_init_first = false;
}
this.on_clone = function () {
}
this.on_kill = function (me) {
return me.notify_fail(this.name + '说道:' + this.callme() + "只接受比试。");
}
this.init_from = function (fam) {
this.set_objects(["eq/lv0/cloth", 1, 1], ["eq/lv0/jian", 1, 1]);
var ary = [];
for (var i = 0; i < fam.npc_skills.length; i++) {
ary.push([
fam.npc_skills[i][0],
200,
fam.npc_skills[i][2]
]);
}
this.skill_map.apply(this, ary);
this.max_mp = this.mp = 10000;
this.on_heart_beat = null;
this.on_damage = null;
this.hp = this.max_hp = 10000;
this.init();
this.recount();
}
this.on_fight_over = function (me, issuc) {
if (issuc) {
me.notify(this.name + "对你嘿嘿嘿的笑了几声。");
} else {
me.notify(this.name + "对你嘿嘿嘿的笑了几声。");
}
}
this.greeting = function (me) {
WORLD.COMMANDS.sx.do_greet(me, this);
}
this.manage = function (me) {
WORLD.COMMANDS.sx.do_manage(me);
}
this.add_action("ask2", "请安", this.greeting);
this.add_action('manage', '设置', this.manage);

21
world/npc/pub/gaoshou1.js Normal file
View File

@@ -0,0 +1,21 @@
this.inherits(NPC);
this.set({
name: "武林高手",
desc: "他是一个武林高手,但是没人知道他的名字",
gender: 1,
age: 25,
per: this.random(20) + 10,
mp: 400,
max_mp: 400,
hp: 400,
max_hp: 400,
});
this.set_objects(["eq/lv0/cloth",1,1]);
this.skill_map(
["force", 100],
["dodge", 100],
["parry", 100],
["sword", 100],
["blade", 100],
["unarmed", 100]);

87
world/npc/pub/guanjia.js Normal file
View File

@@ -0,0 +1,87 @@
this.inherits(NPC);
this.set({
name: "管家",
desc: "他就是负责扬州私人住宅租售的管家,也负责替人看家",
gender: 1,
age: 44,
per: this.random(20) + 10,
mp: 400,
max_mp: 400,
hp: 400,
max_hp: 400,
});
this.set_objects(["eq/lv0/cloth", 1, 1]);
this.on_enter = function (me) {
if (me.query_temp("home")) {
me.notify("管家对你热情的说道:您来啦,快请进。");
} else {
me.notify("管家招呼道:这位" + me.call() + ",需要房子吗,练功,学习都会提高效率哦。");
}
}
this.set_chat_msg([
"管家骄傲的说道:本管家经手的住宅没有一百也有八十了,客官你大可放心。",
"管家说道:这里不但有适合住家的小别院,也有富丽堂皇的大宅,客官您要不要来看看。",
"管家说道:这里之前据说是位财主的家,方圆几里都是他家的产业!"
]);
this.add_action("qianyue", "签约", function (me, par) {
if (!WORLD.is_server(me)) {
return me.notify("管家拦住你:这位" + me.call() + ",这里是私人住宅区,你不能进去。");
}
var home = me.query_temp("home");
if (home) {
me.notify("管家对你说道:这位" + me.call() + "您已经购买房屋了可以直接进去如果要升级住宅只需要再给我1800两黄金就可以了。");
if (home == 1) {
return me.send_commands("give " + this.id + " 18000000 money", "<hic>我要换成豪华型住宅</hic>");
}
} else {
me.notify("管家对你说道:这位" + me.call() + ",这里有多种房屋户型提供:\n1. 精致型住宅单人私密空间只有一个单间附带练功房功能价格100两黄金\n2. 豪华型住宅包含别院练功房卧房价格1888两黄金");
return me.send_commands("give " + this.id + " 1000000 money",
"精致型住宅", "give " + this.id + " 18880000 money", "<hic>豪华型住宅</hic>");
}
});
this.on_accept = function (me, obj, count) {
if (obj !== 'money') return false;
let home = me.query_temp('home', 0);
if (home === 2) return me.notify_fail("管家的说道:你已经购买住宅了。");
if (home) {
if (count !== 18000000)
return me.notify("管家的说道豪华型住宅需要1800两黄金。");
me.set_temp("home", 2);
me.send_room("$n拿出一纸契约给$N看了官府颁印的契尾麻利的按好指印多谢您老以后这栋房子就是您的啦。", this);
me.clear_home(false);
} else {
if (count === 1000000) {
me.set_temp("home", 1);
me.send_room("$n拿出一纸契约给$N看了官府颁印的契尾麻利的按好指印多谢您老以后这栋房子就是您的啦。", this);
} else if (count === 18880000) {
me.send_room("$n拿出一纸契约给$N看了官府颁印的契尾麻利的按好指印多谢您老以后这栋房子就是您的啦。", this);
me.set_temp("home", 2);
} else {
return me.notify("管家的说道:" + me.call() + "你是要购买100两黄金的房子吗?");
}
}
return true;
}
this.on_leave = function (me, dir) {
if (dir == "enter") {
if (!WORLD.is_server(me)) {
return me.notify_fail("管家拦住你:这位" + me.call() + ",这里是私人住宅区,你不能进去。");
}
var home = me.query_temp("home");
if (!home) {
me.notify("管家拦住你:这位" + me.call() + ",这里是私人住宅区,你不能进去。");
return false;
} else {
me.go_home();
return false;
}
}
}

12
world/npc/pub/hua.js Normal file
View File

@@ -0,0 +1,12 @@
this.inherits(MONSTER);
this.set({
name: "花",
desc: "",
gender: 1,
age: 35,
mp: 1500,
max_mp: 1500,
hp: 1500,
max_hp: 1500
});

242
world/npc/pub/hubu.js Normal file
View File

@@ -0,0 +1,242 @@
this.inherits(NPC);
this.set({
name: "赵铁笔",
desc: "他是负责户口登记的,需要离婚,解除师徒关系可以来找他。",
title:"户口登记",
gender: 1,
age: 35,
per: this.random(20) + 10,
mp: 1500,
max_mp: 1500,
hp: 1500,
max_hp: 1500,
score: 10
});
this.set_objects([
"eq/lv1/guanfu", 1, 1
]);
this.check_player = function (me) {
var wife = me.query_temp("wife") || me.query_temp("husband");
if (!wife) return me.notify_fail("赵铁笔说道:你还没结婚呢,离什么婚!");
var name = me.query_temp("wife") ? "妻子" : "丈夫";
var user = WORLD.getUser(wife);
if (!user) {
me.notify_fail("赵铁笔说道:你的" + name + "目前不在线,我不能给你办理离婚!");
me.send_commands("no_marry2 " + this.id, "强制解除");
return false;
}
if (!this.is_here(user)) {
me.notify_fail("赵铁笔说道:你的" + name + "不在这里,我不能给你办理离婚!");
me.send_commands("no_marry2 " + this.id, "强制解除");
return false;
}
return user;
}
this.check_player2 = function (me) {
var tudi = me.query_temp("tudi") || me.query_temp("shifu");
if (!tudi) return me.notify_fail("赵铁笔说道:你没有拜师,也没有收徒!");
var name = me.query_temp("tudi") ? "徒弟" : "师父";
var user = WORLD.getUser(tudi);
if (!user) {
me.notify_fail("赵铁笔说道:你的" + name + "目前不在线,我不能给你办理解除关系手续!");
me.send_commands("no_shitu2 " + this.id, "强制解除");
return false;
}
if (!this.is_here(user)) {
me.notify_fail("赵铁笔说道:你的" + name + "不在这里,我不能给你办理解除关系手续!");
me.send_commands("no_shitu2 " + this.id, "强制解除");
return false;
}
return user;
}
this.add_action("no_marry", "离婚", function (me, par) {
var user = this.check_player(me);
if (!user) return;
this.send_room("$N说道离婚这个事情可不能草率我得问问" + me.name + "愿不愿意。注意了,双方同意离婚后将解除婚姻关系。", user);
this.send_room("<yel>$N对著$n问道你愿意和"+me.name+"离婚吗?</yel>", user);
user.send_commands("no_marry_no " + this.id, "不愿意", "no_marry_yes " + this.id, "愿意");
user.set_temp("request_no_marry", 1, 100000);
});
this.add_action("no_marry_no", null, function (me, par) {
if (!me.query_temp("request_no_marry")) return me.notify("没人问你。");
var user = this.check_player(me);
if (!user) return;
me.send_room("<mag>$N对著$n大声道我不愿意</mag>", user);
me.remove_temp("request_no_marry");
me.send_room("赵铁笔呵呵笑道:这个我就没办法了,咱总不能强人所难对吧。");
});
this.add_action("no_marry_yes", null, function (me, par) {
if (!me.query_temp("request_no_marry")) return me.notify("没人问你。");
var user = this.check_player(me);
if (!user) return;
me.send_room("<mag>$N对著$n大声道我愿意</mag>", user);
me.remove_temp("request_no_marry");
me.send_room("赵铁笔呵呵笑道:好吧,从现在开始你们两个就不是夫妻了,好自为之吧。");
if (me.query_temp("wife")) {
me.remove_temp("wife");
me.remove_temp("wife_n");
user.remove_temp("husband");
user.remove_temp("husband_n");
}
if (me.query_temp("husband")) {
me.remove_temp("husband");
me.remove_temp("husband_n");
user.remove_temp("wife");
user.remove_temp("wife_n");
}
me.add_title("", "mar");
user.add_title("", "mar");
me.set_temp("marry_leave", 1, 7 * 24 * 3600000);
user.set_temp("marry_leave", 1, 7* 24 * 3600000);
});
this.add_action("no_shitu", "解除师徒", function (me, par) {
var user = this.check_player2(me);
if (!user) return;
this.send_room("<yel>$N对著$n问道你愿意和" + me.name + "解除师徒关系吗?</yel>", user);
user.send_commands("no_shitu_no " + this.id, "不愿意", "no_shitu_yes " + this.id, "愿意");
user.set_temp("request_no_shitu", 1, 100000);
});
this.add_action("no_shitu_no", null, function (me, par) {
if (!me.query_temp("request_no_shitu")) return me.notify("没人问你。");
var user = this.check_player2(me);
if (!user) return;
me.send_room("<mag>$N对著$n大声道我不愿意</mag>", user);
me.remove_temp("request_no_shitu");
me.send_room("赵铁笔呵呵笑道:这个我就没办法了,咱总不能强人所难对吧。");
});
this.add_action("no_shitu_yes", null, function (me, par) {
if (!me.query_temp("request_no_shitu")) return me.notify("没人问你。");
var user = this.check_player2(me);
if (!user) return;
me.send_room("<mag>$N对著$n大声道我愿意</mag>", user);
me.remove_temp("request_no_shitu");
me.send_room("赵铁笔呵呵笑道好吧从现在开始你们两个就不是师徒了各自都需要7天后才可以继续收徒或拜师。");
if (me.query_temp("shifu")) {
me.remove_temp("shifu");
me.remove_temp("shifu_n");
user.remove_temp("tudi");
user.remove_temp("tudi_n");
}
if (me.query_temp("tudi")) {
me.remove_temp("tudi");
me.remove_temp("tudi_n");
user.remove_temp("shifu");
user.remove_temp("shifu_n");
}
me.set_temp("st_leave", 1, 3600000 * 24 * 7);
user.set_temp("st_leave", 1, 3600000 * 24 * 7);
});
this.add_action("no_marry2", null, function (me, par) {
var wife = me.query_temp("wife") || me.query_temp("husband");
if (!wife) return me.notify_fail("赵铁笔说道:你还没结婚呢,离什么婚!");
var name = me.query_temp("wife") ? "妻子" : "丈夫";
me.notify("赵铁笔说道单方面解除婚姻关系需要缴纳800两黄金的手续费。");
me.send_commands("give " + this.id + " 8000000 money", "确认解除");
});
this.add_action("no_shitu2", null, function (me, par) {
var wife = me.query_temp("shifu") || me.query_temp("tudi");
if (!wife) return me.notify_fail("赵铁笔说道:你还没拜师,也没收徒!");
if (me.query_temp("tudi")) {
me.notify("赵铁笔说道单方面解除师徒关系需要缴纳1000两黄金的手续费并且解除后7天内不允许再次收徒");
me.send_commands("give " + this.id + " 10000000 money", "确认解除");
} else {
me.notify("赵铁笔说道单方面解除师徒关系需要缴纳500两黄金的手续费并且解除后7天内不允许再次拜师");
me.send_commands("give " + this.id + " 5000000 money", "确认解除");
}
});
this.on_accept = function (me, obj, count) {
if (obj == "money") {
if (count == 8000000) {
var wife = me.query_temp("wife") || me.query_temp("husband");
if (!wife) return me.notify_fail("赵铁笔说道:你还没结婚呢,离什么婚!");
var user = WORLD.getUser(wife);
if (me.query_temp("wife")) {
me.remove_temp("wife");
me.remove_temp("wife_n");
user && user.remove_temp("husband");
user && user.remove_temp("husband_n");
}
if (me.query_temp("husband")) {
me.remove_temp("husband");
me.remove_temp("husband_n");
user && user.remove_temp("wife");
user && user.remove_temp("wife_n");
}
me.add_title("", "mar");
user && user.add_title("", "mar");
user && user.notify("<yel>你和" + me.name + "的夫妻关系解除了。</yel>");
var attach = user ? null : [{
obj: "sp/tool/fuqi#" + me.id,
count: 1
}];
COMMAND.DO("send", wife, {
content: me.name + "主动和你解除夫妻关系。",
attach: attach
});
me.notify("赵铁笔呵呵笑道:好吧,你的婚姻关系已经解除了。");
me.set_temp("marry_leave", 1, 7 * 24 * 3600000);
user&& user.set_temp("marry_leave", 1, 7 * 24 * 3600000);
return true;
}
if (count == 10000000) {
var tudi = me.query_temp("tudi");
if (!tudi) return me.notify_fail("赵铁笔说道:你没有徒弟!");
var user = WORLD.getUser(tudi);
me.remove_temp("tudi");
me.remove_temp("tudi_n");
me.set_temp("st_leave", 1, 3600000 * 24 * 7);
if (user) {
user.remove_temp("shifu");
user.remove_temp("shifu_n");
user.set_temp("st_leave", 1, 3600000 * 24 * 7);
user.notify("<yel>你和" + me.name + "的师徒关系解除了。</yel>");
}
COMMAND.DO("send", tudi, {
content: "你的师父主动和你解除师徒关系",
attach: [{
obj: "sp/tool/shitu#" + me.id,
count: 1
}]
});
me.notify("赵铁笔说道:你的师徒关系已经解除了。");
return true;
}
if (count == 5000000) {
var shifu = me.query_temp("shifu");
if (!shifu) return me.notify_fail("赵铁笔说道:你没有徒弟!");
var user = WORLD.getUser(shifu);
me.remove_temp("shifu");
me.remove_temp("shifu_n");
me.set_temp("st_leave", 1, 3600000 * 24 * 7);
if (user) {
user.remove_temp("tudi");
user.remove_temp("tudi_n");
user.set_temp("st_leave", 1, 3600000 * 24 * 7);
user.notify("<yel>你和" + me.name + "的师徒关系解除了。</yel>");
}
COMMAND.DO("send", shifu, {
content: "你的徒弟主动和你解除师徒关系",
attach: [{
obj: "sp/tool/shitu#" + me.id,
count: 1
}]
});
me.notify("赵铁笔说道:你的师徒关系已经解除了。");
return true;
}
}
}

55
world/npc/pub/jiaoxi.js Normal file
View File

@@ -0,0 +1,55 @@
this.inherits(NPC);
this.set({
name: "武馆教习",
desc: "一个高大威猛的汉子,负责教导武馆新人基本功法",
gender: 1,
age: 25,
per: this.random(20) + 10,
mp: 400,
max_mp: 400,
hp: 400,
max_hp: 400,
family: FAMILIES.NONE
});
this.skill_map(
["force", 300],
["dodge", 300],
["parry", 300],
["sword", 300],
["blade", 300],
["club", 300],
["staff", 300],
["whip", 300],
["unarmed", 300],
["throwing", 300]);
this.on_checkskill = function (me) {
if (!me.query_temp("wg_sr")) {
me.send_room("武馆教习瞄了$N一眼100两白银先交钱再学功夫包教包会。");
return me.notify_fail('{type:"cmds",items:{cmd:"give ' + this.id + ' 10000 money",name:"交报名费"}}');
}
return true;
}
this.on_teach = function (me) {
return me.query_temp("wg_sr") == 1;
}
this.on_accept = function (me, obj, count) {
if (obj != "money") return false;
if (me.query_temp("wg_sr")) {
me.notify("武馆教习愉快笑了笑,收下你的钱。");
return true;
}
if (count < 10000) return me.notify_fail("武馆教习瞪了你一眼100两白银不二价没钱就一边玩去。");
me.send_room("武馆教习收下$N的钱拍了拍$N的肩膀不错以后你就是本馆的弟子了本武馆包教基本武技到300级随到随学不限学时全国连锁。");
me.set_temp("wg_sr", 1);
if (!me.query_temp("sm_tm")) {
me.set_temp("sm_tm", Math.floor(Date.now() / 100000));
}
return true;
}
// this.add_action("ask1", "武馆任务", function (me) {
// if (me.family != FAMILIES.NONE) return me.notify("武馆教习对你说道:你还是去找自己的师门看看吧。");
// me.do_command("task", "sm " + this.id);
// });

18
world/npc/pub/menpai.js Normal file
View File

@@ -0,0 +1,18 @@
this.inherits(NPC);
this.set({
name: "门派弟子",
desc: "门派弟子",
title: "",
gender: 1,
age: 25,
per: 18,
mp: 400,
max_mp: 400,
hp: 400,
max_hp: 400,
no_refresh: true,
is_drop: false
});
this.init_from = function (fam, level) {
}

84
world/npc/pub/mpguanli.js Normal file
View File

@@ -0,0 +1,84 @@
this.inherits(NPC);
this.set({
name: "门派后勤管理员",
desc: "他是你们门派里面负责发放弟子福利的人",
gender: 1,
age: 25,
per: this.random(20) + 10,
mp: 400,
max_mp: 400,
hp: 400,
max_hp: 400,
});
this.skill_map(
["force", 100],
["dodge", 100],
["parry", 100],
["sword", 100],
["blade", 100],
["club", 100],
["staff", 100],
["whip", 100],
["unarmed", 100]);
this.on_create = function (path, par) {
if (!par) return;
this.family = FAMILIES[par.substr(1)];
if (!this.family.customer) this.family.customer = {};
if (this.family == FAMILIES.NONE) {
this.name = "武馆后勤";
}
}
const NEEDS_GJ = [500, 5000, 10000, 50000, 100000];
const NEEDS_LEVEL = [0, 3, 4, 5, 6];
const NEEDS_LEVEL_DESC = [null, "宗师", "武圣", "武帝", "武神"];
this.add_action("job_fam", "门派职位", function (me) {
var fam = me.family;
if (fam === FAMILIES.NONE) {
if (!me.query_temp('wg_sr'))
return me.notify(this.name +
"对你说道:这位" + me.call() + "和本馆素无瓜葛,升职从何说起?");
}
if (fam != this.family) return me.notify(this.name +
"对你说道:这位" + me.call() + "和本派素无瓜葛,升职从何说起?");
let gj = me.query_temp('gongji', 0);
let level = me.query_temp('sm_level', 0);
if (level >= 5) return me.send(this.name +
"对你说道:这位" + me.call() + "已经是最高级别的职位了。");
me.send(`${this.name}说:你现在是${fam.query_job_title(level)},消耗${gj}/${NEEDS_GJ[level]}可以晋升到${fam.query_job_title(level + 1)}`);
if (gj >= NEEDS_GJ[level]) {
me.send_commands('job_up_ok ' + this.id, '确定晋升');
}
});
this.add_action("job_up_ok", null, function (me) {
var fam = me.family;
if (fam != this.family) return me.notify(this.name +
"对你说道:这位" + me.call() + "和本派素无瓜葛,升职从何说起?");
if (fam === FAMILIES.NONE) {
if (!me.query_temp('wg_sr'))
return me.notify(this.name +
"对你说道:这位" + me.call() + "和本馆素无瓜葛,升职从何说起?");
}
let level = me.query_temp('sm_level', 0);
if (level >= 5) return me.send(this.name +
"对你说道:这位" + me.call() + "已经是最高级别的职位了。");
if (me.level < NEEDS_LEVEL[level])
return me.send(`${this.name}说道:这位${me.call()}${fam.query_job_title(level + 1)}可不是谁都能当的,最少得是${NEEDS_LEVEL_DESC[level]}才行。`);
let gj = me.query_temp('gongji', 0);
let need = NEEDS_GJ[level];
if (gj >= NEEDS_GJ[level]) {
me.add_temp('gongji', -need);
USERTASK.GET('sm').on_finish(me);
level = me.add_temp('sm_level', 1);
me.send(`${this.name}说:恭喜你,现在是${me.family.query_task_title(me)}了,你的师门物资获得大幅度提升。`);
} else {
me.send(`${this.name}说:你的师门功绩还不够晋升,再努力一点吧。`);
}
});

23
world/npc/pub/muren.js Normal file
View File

@@ -0,0 +1,23 @@
this.inherits(NPC);
this.set({
name: "木头人",
desc: "这是一个木头做的假人,用来测试伤害的",
gender: 1,
age: 10,
per: 43,
mp: 60,
max_mp: 60,
hp: 99999999,
max_hp: 99999999,
str: 1,
con: 1,
dex: 1,
int:1
});
this.die = function () {
this.clear_combat_prop();
this.add_hp(this.max_hp);
this.send_room('$N身上破损的木头剥落再次神采奕奕精气十足。\n');
return false;
}

22
world/npc/pub/paimai.js Normal file
View File

@@ -0,0 +1,22 @@
this.inherits(NPC);
this.set({
name: "拍卖师",
desc: "他是藏宝阁里负责拍卖的拍卖师",
gender: 1,
age: 74,
per: 12,
mp: 400,
max_mp: 400,
hp: 400,
max_hp: 400,
});
this.set_objects(["eq/lv0/cloth", 1, 1]);
this.set_chat_msg([
"拍卖师说道:我这里可都是从当铺千挑万选出来的稀有好货,包括一些江湖中已经绝版的珍藏。",
"拍卖师说道:当有人送来拍卖品时,立即开始拍卖。"
]);
this.add_action("spm", "拍卖物品", function (me, par) {
WORLD.COMMANDS['pm'].enter(me, 'list');
});

21
world/npc/pub/qian.js Normal file
View File

@@ -0,0 +1,21 @@
this.inherits(NPC);
this.set({
name: "钱眼开",
desc: "他就是钱庄的老板钱眼开,人称铁公鸡",
title: "钱庄老板",
gender: 1,
age: 34,
per: this.random(20) + 10,
mp: 400,
max_mp: 400,
hp: 400,
max_hp: 400,
});
this.set_chat_msg([
"钱眼开骄傲的说道:本银号已经有上百年的历史,分店遍布天下各地。",
"钱眼开说道:昨天我亲自看到一个杀手帮的人来取钱,看来杀手帮重出江湖了。",
"钱眼开笑着说道:杀手帮重出江湖对本银号来说,真是求之不的呀!。",
"钱眼开笑着说道:当年雾中楼在本银号存的钱可以说是最多的了。",
"钱眼开笑着说道:在本店存钱无利息,存物不收手续费,客官你看着办吧。"
]);

113
world/npc/pub/tiejiang.js Normal file
View File

@@ -0,0 +1,113 @@
this.inherits(NPC);
this.name = "铁匠";
this.title = "铁匠铺老板";
this.desc = "铁匠正用铁钳夹住一块红热的铁块放进炉中。";
this.age = 33;
this.max_hp = 100;
this.max_mp = 100;
this.per = 10;
this.gender = 1;
this.set_goods("eq/lv0/jian", "eq/lv0/dao", "eq/lv0/tiegun", "eq/lv0/tiezhang", "eq/lv0/fei", "sp/tool/chu#0");
this.add_action("unxx", "取消镶嵌", function (me, arg) {
WORLD.COMMANDS['unxiangqian'].enter(me);
});
this.add_action("unjl", "取消精炼", function (me, arg) {
WORLD.COMMANDS['unjinglian'].enter(me);
});
this.add_action("dz", "锻造武器", function (me, arg) {
// me.send_commands('dz1 ' + this.id, "锻造武器",
// 'dz2 ' + this.id, "重铸武器",
// 'dz3 ' + this.id, "武器改名",
// 'dz4 ' + this.id, "更改武器类型");
WORLD.COMMANDS['duanzao'].enter(me);
});
// this.add_action("dz1", "", function (me, arg) {
// WORLD.COMMANDS['duanzao'].enter(me);
// });
// this.add_action("dz2", "", function (me, arg) {
// WORLD.COMMANDS['reduanzao'].enter(me);
// });
// this.add_action("dz3", "", function (me, arg) {
// WORLD.COMMANDS['reduanzao2'].enter(me);
// });
// this.add_action("dz4", "", function (me, arg) {
// WORLD.COMMANDS['reduanzao3'].enter(me);
// });
this.on_duanzao = function (me, arg) {
if (arg == "ok") {
var item = me.find_obj_bypath("st/yuanjing");
if (!item || item.count < 10) return me.notify("铁匠说道:材料不够就别来烦我。");
me.notify("铁匠点头说道:嗯,不错,你想锻造什么武器?");
me.send_commands("duanzao sword", '剑', "duanzao blade", '刀', "duanzao club", '棍', "duanzao staff", '杖',
"duanzao whip", '鞭', "duanzao none", '拳');
} else if (!arg) {
me.notify("铁匠说道你能找到10块<hio>元晶</hio>我就免费帮你锻造一把你自己的武器。");
var item = me.find_obj_bypath("st/yuanjing");
if (!item || item.count < 10) return;
me.send_commands("duanzao ok", "我要锻造武器");
} else {
var type = WEAPON_TYPE[arg.toUpperCase()];
if (!type) return me.notify("铁匠摇头道:我不会锻造这种武器。");
//me.set_temp('dz', arg, 30000);
me.notify("铁匠说道:告诉我你要锻造的武器的名字。(使用房间频道说出(2-5个汉字),暴力,色情,政治相关的名字将直接销毁)");
me.wait_input = this.dzwq.bind(this, arg);
me.send_commands("cancle", '我不锻造了');
}
}
// this.wp_names = ["君子剑", '真武剑', '屠龙刀', '倚天剑', '碧血剑', '碧血照丹青',
// '轩辕剑', '鹰刀', '盘古斧'];
this.dzwq = function (arg, me, str) {
if (str == "cancle") {
me.notify("铁匠说道:好吧,可惜了。");
me.wait_input = null;
me.remove_temp('dz');
return;
}
str = str.split(' ')[1];
if (!arg) {
me.wait_input = null;
return me.notify("铁匠说道:你要先告诉我锻造的武器类型。");
}
var type = WEAPON_TYPE[arg.toUpperCase()];
if (!type) {
me.wait_input = null;
return me.notify("铁匠摇头道:我不会锻造这种武器。");
}
if (!/^[\u4E00-\u9FA5]{2,5}$/.test(str)) {
return me.send('铁匠说道武器的名字需要是2-5个汉字。');
}
if (!UTIL.check_word(str)) {
return me.send('铁匠说道:你不能用这个名字。');
}
// for (var i = 0; i < this.wp_names.length; i++) {
// if (this.wp_names[i] == str) {
// return me.send('铁匠说道:你不能用这个名字。');
// }
// }
var item = me.find_obj_bypath("st/yuanjing");
if (!item || item.count < 10) {
me.wait_input = null;
return me.notify("铁匠说道:材料不够就别来烦我。");
}
me.wait_input = null;
if (me.remove_obj(item, 10)) {
var obj = OBJ.CREATE("eq/cp#" + arg);
obj.set_temp("name", str);
WORLD.COMMANDS.duanzao.default_template(obj, EQUIP_TYPE.WEAPON);
obj.on_reload(me);
me.add_obj(obj);
me.notify("铁匠说道:不错,这是你要的。");
me.notify("铁匠给你" + obj.unit_name() + "。");
}
}

29
world/npc/pub/tongren.js Normal file
View File

@@ -0,0 +1,29 @@
this.inherits(NPC);
this.set({
name: "<yel>铜人</yel>",
desc: "这是一个铜做的假人,防御很高,用来测试伤害的",
gender: 1,
age: 10,
per: 43,
mp: 60,
max_mp: 60,
hp: 99999999,
prop: {
fy: 50000,
diff_sh_per: 70,
diff_sh: 12000
},
max_hp: 99999999,
str: 1,
con: 1,
dex: 1,
int: 1
});
this.die = function () {
this.clear_combat_prop();
this.add_hp(this.max_hp);
this.send_room('$N身上破损的铜皮剥落再次神采奕奕精气十足。\n');
return false;
}

91
world/npc/pub/wudao.js Normal file
View File

@@ -0,0 +1,91 @@
this.inherits(NPC);
this.set({
name: "",
desc: "他是武道塔的神秘守护者",
title: "武道塔守护者",
gender: 1,
age: 25,
per: this.random(44),
mp: 400,
max_mp: 400,
hp: 400,
max_hp: 400,
no_refresh: true,
no_fight: true
});
this.init_from = function (player, level) {
this.con = this.dex = this.int = this.str = 20 + parseInt(level / 3);
if (level > 100) level = 100;
const grade1 = Math.floor(level / 10);
this.name = UTIL.random_name(this.gender);
this.skill_map.apply(this, this.skills_def[grade1]);
var color = ["hig", "hic", "hiy", "hiz", "hio", "ora"][parseInt(level / 20)];
this.title = "<" + color + ">武道塔守护者</" + color + ">";
this.set_objects(['eq/lv0/cloth', 1, 1], ["eq/lv0/jian", 1, 1]);
this.hp = this.max_hp = 1000 + level * level * 150;
this.mp = this.max_mp = parseInt(this.hp / 2);
this.init();
this.recount();
}
this.skills_def = [
[
["force", 100], ["unarmed", 100], ["sword", 100], ["parry", 100], ["dodge", 100],
["hunyuanyiqi", 100, "force"], ["wudangchangquan", 100, "unarmed"], ["huashanshenfa", 100, "dodge"],
["wudangjianfa", 100, "sword"], ["zhemeishou", 100, "parry"]
],
[
["force", 300], ["unarmed", 300], ["sword", 300], ["parry", 300], ["dodge", 300],
["zixiashengong", 300, "force"], ["taizuchangquan", 300, "unarmed"],
["yunlongjian", 300, "sword"], ["taijiquan", 300, "parry"], ["sixiangbu", 300, "dodge"],
],
[
["force", 500], ["unarmed", 500], ["sword", 500], ["parry", 500], ["dodge", 500],
["taijishengong", 500, "force"], ["qishangquan", 500, "unarmed"],
["kuangfengkuaijian", 500, "sword"], ["taijiquan", 500, "parry"], ["tiyunzong", 500, "dodge"],
],
[
["force", 800], ["unarmed", 800], ["sword", 800], ["parry", 800], ["dodge", 800],
["yijinjing", 800, "force"], ["yiyangzhi", 800, "unarmed"],
["taijijian", 800, "sword"], ["dugujiujian", 800, "parry"], ["wuduyanluobu", 800, "dodge"],
],
[
["force", 1100], ["unarmed", 1100], ["sword", 1100], ["parry", 1100], ["dodge", 1100],
["mingyugong", 1100, ["force", "dodge"]], ["yiyangzhi", 1100, "unarmed"],
["yitianjianfa", 1100, "sword"], ["yihuajiemu", 1100, "parry"]
],
[
["force", 1400], ["unarmed", 1400], ["sword", 1400], ["parry", 1400], ["dodge", 1400],
["hamagong", 1400, "force"], ["tanzhishengong", 1400, "unarmed"],
["kuangfengkuaijian2", 1400, "sword"], ["taijiquan", 1400, "parry"], ["kuihuashengong", 1400, "dodge"],
],
[
["force", 1700], ["unarmed", 1700], ["sword", 1700], ["parry", 1700], ["dodge", 1700],
["kuihuashengong", 1700, ["force", "dodge"]], ["cuixinzhang", 1700, "unarmed"],
["bixiejianfa", 1700, ["sword", "parry"]]
],
[
["force", 2000], ["unarmed", 2000], ["sword", 2000], ["parry", 2000], ["dodge", 2000],
["jiuyangshengong", 2000, "force"], ["chuanxinzhang2", 2000, "unarmed"],
["dugujiujian", 2000, "sword"], ["taijiquan", 2000, "parry"], ["kuihuashengong", 2000, "dodge"],
],
[
["force", 2500], ["unarmed", 2500], ["sword", 2500], ["parry", 2500], ["dodge", 2500],
["taixuangong", 2500, "force"], ["xianglongzhang2", 2500, "unarmed"],
["qixianwuxingjian", 2500, "sword"], ["taijiquan", 2500, "parry"], ["xuanxubu", 2500, "dodge"],
],
[
["force", 3000], ["unarmed", 3000], ["sword", 3000], ["parry", 3000], ["dodge", 3000],
["jiuyinshengong", 3000, "force"], ["jiuyinbaiguzhao2", 3000, "unarmed"],
["taijijian", 3000, "sword"], ["qiankundanuoyi", 3000, "parry"], ["lingboweibu2", 3000, "dodge"],
],
[
["force", 4000], ["unarmed", 4000], ["sword", 4000], ["parry", 4000], ["dodge ", 4000],
["jiuyangshengong", 5000, "force"], ["liumaishenjian", 5000, "unarmed"],
["xuantiejianfa", 5000, "sword"], ["qiankundanuoyi", 5000, "parry"], ["lingboweibu2", 5000, "dodge"],
]
];

View File

@@ -0,0 +1,32 @@
this.inherits(NPC);
this.set({
name: "守门人",
desc: "他是武道塔的守门人,一个神神秘秘的老头",
gender: 1,
age: 67,
per: 55,
mp: 5000000,
max_mp: 5000000,
hp: 80000000,
max_hp: 80000000,
level: 5,
pfm_rate: 1,
prop: {
gjsd: 20000,
add_sh_per: 100,
diff_sh_per: 270,
diff_sh_per2: 100,
diff_downside_per: 170,
gj: 100000,
gj_per: 100,
diff_fy_per: 150,
distime_per: 80,
ds: 150000,
ds_per: 100,
zj: 150000,
zj_per: 100,
mz: 150000,
mz_per: 100
}
});

32
world/npc/pub/wujiang.js Normal file
View File

@@ -0,0 +1,32 @@
this.inherits(NPC);
this.set({
name: "武将",
desc: "他站在那里,的确有说不出的威风。",
gender: 1,
age: 35,
per: this.random(30) + 10,
mp: 2500,
max_mp: 2500,
hp: 2500,
max_hp: 2500,
score: 15
}); this.set_objects([
"eq/lv1/guanfu", 1, 1
], [
"eq/lv1/jundao", 1, 1
]); this.set_drop({
obj: "money/silver",
min: 2,
max: 5
}, {
obj: ["eq/lv0/cloth", "eq/lv0/jian", "eq/lv0/dao"],
odds: 6000
}, {
obj: ["eq/lv1/guanfu", "eq/lv1/junfu", "book/book#sword", "eq/lv1/jundao", "book/book#blade"],
odds: 3000
});
this.skill_map(
["unarmed", 190],
["dodge", 190],
["parry", 190],
["blade", 190]);

99
world/npc/pub/xiaoer.js Normal file
View File

@@ -0,0 +1,99 @@
this.inherits(NPC);
this.set({
name: "店小二",
desc: "这位店小二正笑咪咪地忙著,还不时拿起挂在脖子上的抹布擦脸。",
gender: 1,
age: 22,
per: this.random(20) + 10,
mp: 150,
max_mp: 150,
hp: 150,
max_hp: 150
});
this.on_enter = function (me) {
let kz = me.query_temp("kezhan");
if (kz) {
me.notify("小二一哈腰:这位客官请上楼歇息。");
return me.send_commands('zhudian ' + this.id, '上楼', 'xufei ' + this.id, '续房',);
}
var str = "";
switch (this.random(2)) {
case 0:
str = "店小二笑咪咪地说道:这位" + me.call()
+ ",要住店吗?请进请进。";
break;
case 1:
str = "店小二用脖子上的毛巾抹了抹手,说道:这位" + me.call()
+ ",请进请进。小店还有几间上好的房间。";
break;
}
me.notify(str);
}
this.add_action("zhudian", "住店", zhudian);
function zhudian(me, par) {
var kd = me.query_temp("kezhan");
if (kd) {
me.moveto("kezhan/fang" + kd, me.name + "向客店二楼走去。");
} else {
me.notify("小二对你说道:这位" + me.call() + ",本店有多种房间提供:\n1. 人字号房每天10两白银学习打坐练功效果增加10%\n2. 地字号房每天30两白银学习打坐练功效果增加20%\n3. 天字号房间每天1两黄金学习打坐练功效果增加50%");
return me.send_commands("give " + this.id + " 1000 money", "人字号客房",
"give " + this.id + " 3000 money", "<hic>地字号客房</hic>",
"give " + this.id + " 10000 money", "<hiy>天字号客房</hiy>");
}
}
this.on_accept = function (me, obj, count) {
if (obj !== "money") return;
if (me.money < 1000) {
return me.notify("小二面无表情的说道住店每天10两白银不二价。");
} else if (count === 1000) {
me.set_temp("kezhan", 1, 1000 * 3600 * 24);
me.send_message("小二一哈腰,说道:多谢您老,客官请楼上歇息。");
me.moveto("kezhan/fang1", me.name + "向客店二楼走去。");
return true;
} else if (count === 3000) {
me.set_temp("kezhan", 2, 1000 * 3600 * 24);
me.send_message("小二一哈腰,说道:多谢您老,客官请楼上歇息。");
me.moveto("kezhan/fang2", me.name + "向客店二楼走去。");
return true;
} else if (count === 10000) {
me.set_temp("kezhan", 3, 1000 * 3600 * 24);
me.send_message("小二一哈腰,说道:多谢您老,客官请楼上歇息。");
me.moveto("kezhan/fang3", me.name + "向客店二楼走去。");
return true;
}
return false;
}
this.add_action("xufei", null, function (me) {
var kd = me.temp['kezhan'];
if (!kd) return zhudian(me);
let money = [0, 1000, 3000, 10000][kd.v];
if (!(money > 0)) return me.send('你还没有住店。');
if (me.money < money) return me.send('你身上的钱不够。');
me.money -= money;
kd.e += 3600000 * 24;
let time = new Date(me.temp['kezhan'].e);
let str = time.getFullYear() + "年" + (time.getMonth() + 1) + "月" + time.getDate() + "日" + time.getHours() + "时";
me.send("小二一哈腰,说道:多谢您老,收您" + UTIL.moneyToStr(money) + ",续房一天。<cyn>(持续到" +
str + ")</cyn>");
});
// this.add_action("dating", "打听消息", function (me) {
// var count = me.query_temp('wsbs', 0);
// if (count >= 5) return me.send('店小二说道:这位客官,小的听到的消息都告诉您老了。');
// var num = me.query_temp('fbbs', 0);
// if (num < 99) return me.send('店小二说道:这位客官,小的这两天也没听到什么消息。');
// var fb = parseInt(num / 100);
// var area = WORLD.AREAS[fb];
// if (area && area.fb_index) {
// me.send('店小二看了看四周:这位客官,小店人多口杂,虽然消息不少,但也不知道该不该讲呀。');
// return me.send_commands("give " + this.id + " 20000 money", '给他几两金子');
// }
// return me.send('店小二说道:这位客官,小的这两天也没听到什么消息。');
// });

32
world/npc/pub/xiaoer2.js Normal file
View File

@@ -0,0 +1,32 @@
this.inherits(NPC);
this.set({
name: "店小二",
desc: "这位店小二正笑咪咪地忙著,还不时拿起挂在脖子上的抹布擦脸。",
gender: 1,
age: 22,
per: this.random(20) + 10,
mp: 150,
max_mp: 150,
hp: 150,
max_hp: 150,
});
this.on_enter = function (me) {
var str = "";
switch (this.random(2)) {
case 0:
str = "店小二笑咪咪地说道:这位" + me.call()
+ ",进来喝杯茶,歇歇腿吧。";
break;
case 1:
str = "店小二用脖子上的毛巾抹了抹手,说道:这位" + me.call()
+ ",请进请进。";
break;
}
me.notify(str);
}
this.set_goods("food/food#0", "food/food#1", "food/food#2", "food/food#3", "food/food#4", "food/drink#0", "food/drink#1", "food/drink#2", "food/drink#3");
this.on_leave = function (me, dir) {
}

33
world/npc/pub/yamen.js Normal file
View File

@@ -0,0 +1,33 @@
this.inherits(NPC);
this.set({
name: "逃犯",
desc: "他是衙门正在追捕的逃犯",
title: "<red>衙门逃犯</red>",
gender: 1,
age: 25,
per: 18,
mp: 400,
max_mp: 400,
hp: 400,
max_hp: 400,
no_refresh: true,
no_fight: true
});
this.init_from = function (player, grade = 0, level = 0) {
this.con = this.dex = this.int = this.str = 30;
this.gender = this.random(2) + 1;
this.desc = (this.gender == 2 ? "她" : "他") + "是" + player.name + "正在追捕的逃犯";
this.name = UTIL.random_name(this.gender);
this.hp = this.max_hp = 1200;
this.pfm_rate = 1;
this.mp = this.max_mp = this.max_hp;
this.init();
this.recount();
}

21
world/npc/pub/yayi.js Normal file
View File

@@ -0,0 +1,21 @@
this.inherits(NPC);
this.set({
name: "衙役",
desc: "一个高大威猛的汉子,因为久在官府做事,脸上已经磨炼得毫无表情。",
title: "知府千金",
gender: 1,
age: 25,
per: 18,
mp: 400,
max_mp: 400,
hp: 4000,
max_hp: 4000,
});
this.skill_map(["dodge", 5500],
["parry", 5500],
["force", 5500],
["unarmed", 5500],
["sword", 5500],
["changshengjue", 5500, "force"]);

23
world/npc/pub/yb_npc.js Normal file
View File

@@ -0,0 +1,23 @@
this.inherits(NPC);
this.set({
name: "蒙面大盗",
desc: "他是来劫镖的江洋大盗",
title: "蒙面大盗",
gender: 2,
age: 65,
per: 33,
str: 50,
con: 50,
dex: 50,
int: 50,
max_mp: 20000000,
max_hp: 12000000,
no_fight: true,
pfm_rate: 1,
no_refresh: true
});
this.on_kill = function (me) {
}

16
world/npc/pub/yingzi.js Normal file
View File

@@ -0,0 +1,16 @@
this.inherits(NPC);
this.set({
name: "衙役",
desc: "",
title: "",
gender: 1,
age: 25,
per: 18,
mp: 400,
max_mp: 400,
hp: 40000000,
max_hp: 40000000,
});

View File

@@ -0,0 +1,51 @@
this.inherits(NPC);
this.set({
name: "澄净",
desc: "他是一位须发花白的老僧,身穿一袭金边黑布袈裟。他身材瘦高,太阳穴高高鼓起,似乎身怀绝世武功。",
title: "少林寺第三十七代弟子",
gender: 1,
age: 60,
per: 26,
mp: 400,
hp: 1500,
score: 10,
family: FAMILIES.SHAOLIN,
family_level: 3,
level: 2,
max_mp: 727400,
max_hp: 791500,
prop: {
gj: 8000,
mz: 8000,
ds: 8000
}
});
this.set_objects([
"eq/lv0/cloth", 1, 1
]);
this.skill_map(
["dodge", 800],
["parry", 800],
["force", 800],
["unarmed", 800],
["sword", 800],
["club", 800],
["blade", 800],
["literate", 800],
["jingangquan", 800, "parry"],
["yijinjing", 800, "force"],
["weituogun", 800, "club"],
["ranmudao", 800, "blade"],
["shaolinshenfa", 800, "dodge"],
["yizhichan", 800, "unarmed"]);
this.on_master = function (me) {
if (me.gender == 2) return me.notify_fail("澄净说道:阿弥陀佛,少林寺不收女弟子。");
if (me.query_skill("ranmudao", 0) >= 500 || me.query_skill("ranmudao2", 0) >= 500) {
if (me.query_skill("yizhichan", 0) >= 500 || me.query_skill("yizhichan2", 0) >= 500) {
return true;
}
}
if (me.query_skill("ranmudao", 0) < 500 && me.query_skill("ranmudao2", 0) < 500) return me.notify_fail("澄净说道:你的燃木刀掌握程度还不够,需要多加练习。");
if (me.query_skill("yizhichan", 0) < 500 && me.query_skill("yizhichan2", 0) < 500) return me.notify_fail("澄净说道:你的一指禅掌握程度还不够,需要多加练习。");
return false;
}

View File

@@ -0,0 +1,45 @@
this.inherits(NPC);
this.set({
name: "道觉禅师",
desc: "他是一位身材高大的中年僧人,两臂粗壮,膀阔腰圆。他手持兵刃,身穿一袭灰布镶边袈裟,似乎有一身武艺。",
title: "少林寺第三十九代弟子",
gender: 1,
age: 40,
per: 26,
mp: 400,
hp: 1500,
score: 10,
family: FAMILIES.SHAOLIN,
family_level: 5,
level: 2,
max_mp:127400,
max_hp: 191500,
prop: {
gj: 2000,
mz: 2000,
ds: 2000
}
});
this.set_objects([
"eq/lv0/cloth", 1, 1
], [
"eq/lv0/mugun", 1, 1
]);
this.skill_map(
["dodge", 300],
["parry", 300],
["force", 300],
["unarmed", 300],
["sword", 300],
["club", 300],
["literate", 300],
["weituogun", 300, "club"],
["hunyuanyiqi", 300, "force"],
["damojian", 300, "sword"],
["shaolinshenfa", 300, "dodge"],
["fuhuquan", 300, "unarmed"]);
this.on_master = function (me) {
if (me.gender == 2) return me.notify_fail("道觉禅师说道:阿弥陀佛,少林寺不收女弟子。");
if (me.query_skill("hunyuanyiqi", 0) < 100) return me.notify_fail("道觉禅师说道:你的混元一气掌握程度还不够,需要多加练习。");
return true;
}

View File

@@ -0,0 +1,49 @@
this.inherits(NPC);
this.set({
name: "慧合尊者",
desc: "他是一位两鬓斑白的老僧,身穿一袭青布镶边袈裟。他身材略高,太阳穴微凸,双目炯炯有神。",
title: "少林寺第三十九代弟子",
gender: 1,
age: 50,
per: 26,
mp: 400,
hp: 1500,
score: 10,
family: FAMILIES.SHAOLIN,
family_level: 4,
level: 2,
max_mp: 327400,
max_hp: 391500,
prop: {
gj: 4000,
mz: 4000,
ds: 4000
}
});
this.set_objects([
"eq/lv0/cloth", 1, 1
], [
"eq/lv0/dao", 1, 1
]);
this.skill_map(
["dodge", 500],
["parry", 500],
["force", 500],
["unarmed", 500],
["sword", 500],
["blade", 500],
["club", 500],
["literate", 500],
["weituogun", 500, "club"],
["ranmudao", 500, "blade"],
["hunyuanyiqi", 500, "force"],
["damojian", 500, "sword"],
["jingangquan", 500, "parry"],
["shaolinshenfa", 500, "dodge"],
["yizhichan", 500, "unarmed"]);
this.on_master = function (me) {
if (me.gender == 2) return me.notify_fail("慧合尊者说道:阿弥陀佛,少林寺不收女弟子。");
if (me.query_skill("hunyuanyiqi", 0) < 300) return me.notify_fail("慧合尊者说道:你的混元一气掌握程度还不够,需要多加练习。");
if (me.query_skill("shaolinshenfa", 0) < 300) return me.notify_fail("慧合尊者说道:你的少林身法掌握程度还不够,需要多加练习。");
return true;
}

View File

@@ -0,0 +1,38 @@
this.inherits(NPC);
this.set({
name: "清乐比丘",
desc: "他是一位体格强健的壮年僧人,他身得虎背熊腰,全身似乎蕴含着无穷劲力。他身穿一袭白布黑边袈裟,似乎身怀武艺。",
title:"少林寺第四十代弟子",
gender: 1,
age: 30,
per: 26,
mp: 400,
max_mp: 400,
hp: 1500,
max_hp: 1500,
score: 10,
family: FAMILIES.SHAOLIN,
family_level: 6,
level: 1
});
this.set_objects([
"eq/lv0/cloth", 1, 1
], [
"eq/lv0/mugun", 1, 1
]);
this.skill_map(
["dodge", 100],
["parry", 100],
["force", 100],
["unarmed", 100],
["sword", 100],
["club", 100],
["literate", 100],
["hunyuanyiqi", 100, "force"],
["weituogun", 100, "club"],
["shaolinshenfa", 100, "dodge"],
["fuhuquan", 100, "unarmed"]);
this.on_master = function (me) {
if (me.gender == 2) return me.notify_fail("清乐比丘说道:阿弥陀佛,少林寺不收女弟子。");
return true;
}

View File

@@ -0,0 +1,51 @@
this.inherits(NPC);
this.set({
name: "玄难",
desc: "他是一位须发花白的老僧,身穿一袭金边黑布袈裟。",
title: "少林寺方丈",
gender: 1,
age: 60,
per: 26,
mp: 400,
score: 10,
family: FAMILIES.SHAOLIN,
family_level: 2,
level:3,
max_mp: 827400,
max_hp: 891500,
prop: {
gj: 8000,
mz: 9000,
ds: 9000
}
});
this.set_objects([
"eq/lv0/cloth", 1, 1
],[
"eq/lv0/dao", 1, 1
]);
this.skill_map(
["dodge", 800],
["parry", 800],
["force", 800],
["unarmed", 800],
["sword", 800],
["club", 800],
["blade", 800],
["hunyuanyiqi", 800],
["literate", 800],
["jingangquan", 800, "parry"],
["yijinjing", 800, "force"],
["weituogun", 800, "club"],
["ranmudao", 800, "blade"],
["damojian", 800, "sword"],
["shaolinshenfa", 800, "dodge"],
["yizhichan", 800, "unarmed"]);
this.on_master = function (me) {
if (me.gender == 2) return me.notify_fail("玄难说道:阿弥陀佛,少林寺不收女弟子。");
if (me.query_skill("yijinjing", 0) >= 500 || me.query_skill("yijinjing2", 0) >= 500) {
return true;
}
if (me.query_skill("yijinjing", 0) < 500 && me.query_skill("yijinjing2", 0) < 500) return me.notify_fail("玄难说道:你的易筋经掌握程度还不够,需要多加练习。");
return false;
}

37
world/npc/shashou/her.js Normal file
View File

@@ -0,0 +1,37 @@
this.inherits(NPC);
this.set({
name: "何小二",
desc: "他是杀手楼的弟子,负责新入门的杀手训练",
title: "杀手教习",
gender: 1,
age: 25,
per: 26,
mp: 400,
max_mp: 400,
hp: 1500,
max_hp: 1500,
score: 10,
family: FAMILIES.SHASHOU,
family_level: 3,
level: 1
});
this.set_objects(["eq/lv0/cloth", 1, 1], ["eq/lv0/fei", 1, 1]);
this.skill_map(
["dodge", 100],
["parry", 100],
["force", 100],
["unarmed", 100],
["throwing", 100],
["literate", 100],
["shashouxinfa", 100, "force"],
["shashoubufa", 100, "dodge"],
["feidao", 100, "throwing"]);
this.on_master = function (me) {
return true;
}
this.set_chat_msg([
"何小二说道:江湖上的其他门派都防着我们,所以他们战斗的时候你就去浑水摸鱼吧,楼主会奖励你的。",
"",
""
]);

41
world/npc/shashou/lisi.js Normal file
View File

@@ -0,0 +1,41 @@
this.inherits(NPC);
this.set({
name: "李四",
desc: "他是杀手楼的银牌杀手,看上去是一个走在大街上你绝对不会看上一眼的普通人",
title: "鬼手",
gender: 1,
age: 43,
per: 26,
mp: 400,
max_mp: 400,
hp: 1500,
max_hp: 1500,
score: 10,
family: FAMILIES.SHASHOU,
family_level: 2,
level: 1
});
this.set_objects(["eq/lv0/cloth", 1, 1], ["eq/lv0/fei", 1, 1]);
this.skill_map(
["dodge", 500],
["parry", 500],
["force", 500],
["unarmed", 500],
["throwing", 500],
["literate", 500],
["shashengjue", 500, "force"],
["taxuexunmei", 500, "dodge"],
["feidao", 500, "throwing"],
["chuanxinzhang", 500, "unarmed"]);
this.on_master = function (me) {
if (me.query_skill("shashouxinfa", 0) < 100) return me.notify_fail("李四说道:你的杀手心法掌握程度还不够,需要多加练习。");
if (me.query_skill("feidao", 0) < 100) return me.notify_fail("李四说道:你的飞刀掌握程度还不够,还需多加努力。");
return true;
}
this.set_chat_msg([
"李四说道:江湖上的其他门派都防着我们,所以他们战斗的时候你就去浑水摸鱼吧,楼主会奖励你的。",
"",
""
]);

Some files were not shown because too many files have changed in this diff Show More