158 lines
5.8 KiB
JavaScript
158 lines
5.8 KiB
JavaScript
this.inherits(COMMAND);
|
|
this.command = "goto";
|
|
this.allow_fight = false;
|
|
this.regex = /^(\w+)(?:\s+(\w+))$/;
|
|
this.enter = function (me, arg, par) {
|
|
|
|
if (!me.can_trans()) return;
|
|
let action = this.actions[arg];
|
|
if (!action) return me.send('没有这个动作设定。');
|
|
if (action(me, par)) {
|
|
me.send('{type:"dialog",dialog:"jh",close:true}');
|
|
}
|
|
}
|
|
this.actions = {
|
|
home: function (me) {
|
|
|
|
let home = me.query_temp("home");
|
|
if (!home) {
|
|
me.moveto('yz/home', me.name + '离开了。', me.name + "走了过来。", 'goto');
|
|
me.notify("你还没购买房屋,和管家谈谈购买吧。");
|
|
} else {
|
|
me.go_home();
|
|
}
|
|
return true;
|
|
},
|
|
kuang: function (me) {
|
|
WORLD.COMMANDS['wakuang'].enter(me);
|
|
return true;
|
|
},
|
|
bp: function (me) {
|
|
let home = me.query_temp("pt");
|
|
if (!home) {
|
|
me.moveto('yz/banghui', me.name + '离开了。', me.name + "走了过来。", 'goto');
|
|
me.notify("你还加入任何帮会,先和帮会管理员聊聊吧。");
|
|
} else {
|
|
let rm = ROOM.Get("banghui/yuanzi");
|
|
let my_room = rm.query_copy2(me);
|
|
if (!my_room) {
|
|
my_room = rm.create_copy2(me);
|
|
}
|
|
me.moveto(my_room, me.name + "离开了。", me.name + "走了进来。", 'goto');
|
|
}
|
|
return true;
|
|
},
|
|
fam1: function (me) {
|
|
|
|
|
|
let master = me.query_temp('master');
|
|
if (!master) return me.notify_fail('你无门无派,不知道师父在哪里。');
|
|
let area = me.family.area;
|
|
if (!area) return me.notify_fail('你无门无派,不知道师父在哪里。');
|
|
let room_path = find_room(area, master);
|
|
if (!room_path) return me.notify_fail('你的师父现在不在' + area.name + '。');
|
|
me.moveto(room_path, me.name + "离开了。", me.name + "走了进来。");
|
|
// WORLD.COMMANDS['cha'].render_skill(me,);
|
|
return true;
|
|
},
|
|
fam2: function (me, fam) {
|
|
let family = FAMILIES[fam] ?? me.family;
|
|
if (!family) return me.notify_fail('没有这个门派。');
|
|
if (family === FAMILIES.SHASHOU && me.family !== FAMILIES.SHASHOU)
|
|
return me.notify_fail('那里你去不了。');
|
|
let area = family.area;
|
|
if (!area) return me.notify_fail('你还没有加入门派。');
|
|
let room_path = find_room(area, 'pub/mpguanli#' + family.id);
|
|
if (!room_path) return me.notify_fail('门派管理不知道跑哪里去了。');
|
|
|
|
me.moveto(room_path, me.name + "离开了。", me.name + "走了进来。", 'goto');
|
|
return true;
|
|
}, fam3: function (me, to_fam) {
|
|
if (!to_fam) {
|
|
to_fam = me.family.battle_family;
|
|
if (!to_fam)
|
|
return me.send('你的门派没有和其他门派产生冲突。');
|
|
}
|
|
let target_fam = FAMILIES[to_fam];
|
|
if (!target_fam || !target_fam.battle_family)
|
|
return me.send('门派战争已经结束了。');
|
|
let room = ROOM.Get(target_fam.area.first).query_copy(target_fam.id);
|
|
if (!room) return me.send('门派战争已经结束了。');
|
|
if (me.level < 1 && me.exp < 1000000) return me.send('那里正在进行门派战争,你实力不够还是不要掺和了。');
|
|
me.moveto(room, me.name + "离开了。", me.name + "走了进来。", 'goto');
|
|
return true;
|
|
}, fam4: function (me) {
|
|
const pt = me.query_party();
|
|
if (!pt) return me.send('你还没加入任何帮派。');
|
|
if (!pt.battle_family) return me.send('你的帮派没有进攻任何门派。');
|
|
let fam = FAMILIES[pt.battle_family];
|
|
let count = me.query_temp('pt_mc');
|
|
if (!me.query_temp('pt_mp')) {
|
|
if (count >= 7)
|
|
return me.notify('你本周内参与帮派战的次数已满。');
|
|
let time = pt.temp.battle.e - Date.now();
|
|
me.set_temp('pt_mp', 1, time);
|
|
count = me.add_temp('pt_mc', 1, UTIL.diff_week_time());
|
|
}
|
|
me.moveto(pt.get_room(ROOM.Get(fam.area.first)),
|
|
me.name + "走了。", me.name + "来了。", 'goto');
|
|
me.notify('<cyn>你已进入帮派战区域,本周已参与' + count + '/7次。</cyn>');
|
|
return true;
|
|
},
|
|
wd1: function (me) {
|
|
let level = me.query_temp('wd_level', 0);
|
|
if (level < 99)
|
|
me.moveto('wudao/ta',
|
|
me.name + "走了。", null, 'goto');
|
|
else
|
|
me.moveto('wudao/ta2',
|
|
me.name + "走了。", null, 'goto');
|
|
|
|
return true;
|
|
},
|
|
wd2: function (me) {
|
|
if (me.query_temp('wd_level', 0) < 99)
|
|
return me.send('你要去哪里?');
|
|
me.moveto('wudao/ding',
|
|
me.name + "走了。", null, 'goto');
|
|
return true;
|
|
},
|
|
|
|
ddz: function (me) {
|
|
let fam = me.family;
|
|
if (fam.first_npc) {
|
|
if (fam.first_npc.userid === me.id)
|
|
return fam.first_npc.manage(me);
|
|
return fam.first_npc.greeting(me);
|
|
}
|
|
return me.send('你的门派目前没有首席大弟子。');
|
|
}, yamen2: function (me) {
|
|
let task = USERTASK.GET('yamen2');
|
|
task.to_taofan(me);
|
|
}
|
|
};
|
|
function find_npc(family, path) {
|
|
for (let item of family.def_npcs) {
|
|
if (path !== item[0]) continue;
|
|
let rm = ROOM.Get(item[1]);
|
|
if (!rm) continue;
|
|
let npc = rm.find_obj_bypath(path);
|
|
|
|
}
|
|
}
|
|
function find_room(area, path) {
|
|
let room_path = NPC_ROOMS[path];
|
|
if (room_path) return room_path;
|
|
for (let room of area.rooms) {
|
|
if (room.find_by_path(path)) {
|
|
room_path = room.path;
|
|
break;
|
|
}
|
|
}
|
|
if (!room_path) return;
|
|
NPC_ROOMS[path] = room_path;
|
|
return room_path;
|
|
}
|
|
const NPC_ROOMS = {
|
|
|
|
}; |