Commit 3ecddd19 authored by nanahira's avatar nanahira
parents e7bb7449 f0153f5e
......@@ -14,6 +14,12 @@
* 先行卡一键更新
* WindBot在线AI
* 萌卡用户登陆
* 竞赛模式锁定玩家卡组
* 竞赛模式后台保存录像
* 竞赛模式自动加时赛系统(规则可调)
* 0 正常加时赛规则
* 1 YGOCore战队联盟第十二届联赛使用规则
* 2 正常加时赛规则 + 1胜规则
### 不支持功能
* 在线聊天室
......
......@@ -327,7 +327,7 @@
"public_roomlist": false,
"show_ip": true,
"show_info": true,
"quick_death_rule": true,
"quick_death_rule": 1,
"ssl": {
"enabled": false,
"port": 7923,
......
......@@ -327,7 +327,7 @@
"public_roomlist": true,
"show_ip": true,
"show_info": true,
"quick_death_rule": true,
"quick_death_rule": 1,
"ssl": {
"enabled": false,
"port": 7923,
......
......@@ -217,6 +217,8 @@
"death_remain_final": "若本回合基本分发生变动,在该回合结束时决斗即告结束,生命值多的玩家获得本场决斗的胜利。",
"death_finish_part1": "加时赛决斗结束,恭喜 ",
"death_finish_part2": " 获得本次决斗的胜利。",
"death2_finish_part1": "加时赛结束,恭喜 ",
"death2_finish_part2": " 获得本次比赛的胜利。",
"side_timeout_part1": "你现在有",
"side_timeout_part2": "分钟来更换副卡组。",
"side_overtime": "你因为更换副卡组超时,本次比赛已被判负。",
......
......@@ -122,6 +122,11 @@ catch
config = {}
settings = global.settings = merge(default_config, config, { arrayMerge: (destination, source) -> source })
#reset http.quick_death_rule from true to 1
if settings.modules.http.quick_death_rule == true
settings.modules.http.quick_death_rule = 1
setting_save(settings)
# 读取数据
default_data = loadJSON('./data/default_data.json')
try
......@@ -1364,10 +1369,10 @@ ygopro.stoc_follow 'GAME_MSG', false, (buffer, info, client, server)->
room.turn = room.turn + 1
if room.death
if room.turn >= room.death
oppo_pos = if room.hostinfo.mode == 2 then 2 else 1
if room.dueling_players[0].lp != room.dueling_players[oppo_pos].lp and room.turn > 1
ygopro.stoc_send_chat_to_room(room, "${death_finish_part1}" + (if room.dueling_players[0].lp > room.dueling_players[oppo_pos].lp then room.dueling_players[0] else room.dueling_players[oppo_pos]).name + "${death_finish_part2}", ygopro.constants.COLORS.BABYBLUE)
ygopro.ctos_send((if room.dueling_players[0].lp > room.dueling_players[oppo_pos].lp then room.dueling_players[oppo_pos] else room.dueling_players[0]).server, 'SURRENDER')
if room.dueling_players[0].lp != room.dueling_players[1].lp and room.turn > 1
win_pos = if room.dueling_players[0].lp > room.dueling_players[1].lp then 0 else 1
ygopro.stoc_send_chat_to_room(room, "${death_finish_part1}" + room.dueling_players[win_pos].name + "${death_finish_part2}", ygopro.constants.COLORS.BABYBLUE)
ygopro.ctos_send(room.dueling_players[1 - win_pos].server, 'SURRENDER')
else
room.death = -1
ygopro.stoc_send_chat_to_room(room, "${death_remain_final}", ygopro.constants.COLORS.BABYBLUE)
......@@ -1391,7 +1396,7 @@ ygopro.stoc_follow 'GAME_MSG', false, (buffer, info, client, server)->
#log.info room.dueling_players, pos
room.scores[room.winner_name] = room.scores[room.winner_name] + 1
if room.death
if settings.modules.http.quick_death_rule
if settings.modules.http.quick_death_rule == 1
room.death = -1
else
room.death = 5
......@@ -1838,6 +1843,11 @@ ygopro.ctos_follow 'UPDATE_DECK', true, (buffer, info, client, server)->
clearInterval client.side_interval
client.side_interval = null
client.side_tcount = null
if settings.modules.http.quick_death_rule == 2 and room.started and room.death and room.scores[room.dueling_players[0].name] != room.scores[room.dueling_players[1].name]
win_pos = if room.scores[room.dueling_players[0].name] > room.scores[room.dueling_players[1].name] then 0 else 1
ygopro.stoc_send_chat_to_room(room, "${death2_finish_part1}" + room.dueling_players[win_pos].name + "${death2_finish_part2}", ygopro.constants.COLORS.BABYBLUE)
room.dueling_players[1 - win_pos].destroy()
return true
if room.random_type or room.arena
if client.pos == 0
room.waiting_for_player = room.waiting_for_player2
......@@ -2245,7 +2255,16 @@ if settings.modules.http
room.death = (if room.turn then room.turn + 4 else 5)
ygopro.stoc_send_chat_to_room(room, "${death_start}", ygopro.constants.COLORS.BABYBLUE)
else
if settings.modules.http.quick_death_rule
switch settings.modules.http.quick_death_rule
when 2
if room.scores[room.dueling_players[0].name] == room.scores[room.dueling_players[1].name]
room.death = 5
ygopro.stoc_send_chat_to_room(room, "${death_start_siding}", ygopro.constants.COLORS.BABYBLUE)
else
win_pos = if room.scores[room.dueling_players[0].name] > room.scores[room.dueling_players[1].name] then 0 else 1
ygopro.stoc_send_chat_to_room(room, "${death2_finish_part1}" + room.dueling_players[win_pos].name + "${death2_finish_part2}", ygopro.constants.COLORS.BABYBLUE)
room.dueling_players[1 - win_pos].destroy()
when 1
room.death = -1
ygopro.stoc_send_chat_to_room(room, "${death_start_quick}", ygopro.constants.COLORS.BABYBLUE)
else
......
......@@ -170,6 +170,11 @@
}
});
if (settings.modules.http.quick_death_rule === true) {
settings.modules.http.quick_death_rule = 1;
setting_save(settings);
}
default_data = loadJSON('./data/default_data.json');
try {
......@@ -1695,7 +1700,7 @@
}
ygopro.stoc_follow('GAME_MSG', false, function(buffer, info, client, server) {
var card, j, len, line, msg, oppo_pos, playertype, pos, reason, ref, ref1, ref2, room, trigger_location, val;
var card, j, len, line, msg, playertype, pos, reason, ref, ref1, ref2, room, trigger_location, val, win_pos;
room = ROOM_all[client.rid];
if (!room) {
return;
......@@ -1726,10 +1731,10 @@
room.turn = room.turn + 1;
if (room.death) {
if (room.turn >= room.death) {
oppo_pos = room.hostinfo.mode === 2 ? 2 : 1;
if (room.dueling_players[0].lp !== room.dueling_players[oppo_pos].lp && room.turn > 1) {
ygopro.stoc_send_chat_to_room(room, "${death_finish_part1}" + (room.dueling_players[0].lp > room.dueling_players[oppo_pos].lp ? room.dueling_players[0] : room.dueling_players[oppo_pos]).name + "${death_finish_part2}", ygopro.constants.COLORS.BABYBLUE);
ygopro.ctos_send((room.dueling_players[0].lp > room.dueling_players[oppo_pos].lp ? room.dueling_players[oppo_pos] : room.dueling_players[0]).server, 'SURRENDER');
if (room.dueling_players[0].lp !== room.dueling_players[1].lp && room.turn > 1) {
win_pos = room.dueling_players[0].lp > room.dueling_players[1].lp ? 0 : 1;
ygopro.stoc_send_chat_to_room(room, "${death_finish_part1}" + room.dueling_players[win_pos].name + "${death_finish_part2}", ygopro.constants.COLORS.BABYBLUE);
ygopro.ctos_send(room.dueling_players[1 - win_pos].server, 'SURRENDER');
} else {
room.death = -1;
ygopro.stoc_send_chat_to_room(room, "${death_remain_final}", ygopro.constants.COLORS.BABYBLUE);
......@@ -1760,7 +1765,7 @@
room.scores[room.winner_name] = room.scores[room.winner_name] + 1;
}
if (room.death) {
if (settings.modules.http.quick_death_rule) {
if (settings.modules.http.quick_death_rule === 1) {
room.death = -1;
} else {
room.death = 5;
......@@ -2465,7 +2470,7 @@
});
ygopro.ctos_follow('UPDATE_DECK', true, function(buffer, info, client, server) {
var buff_main, buff_side, card, current_deck, deck, deck_array, deck_main, deck_side, deck_text, deckbuf, decks, found_deck, i, j, k, len, len1, line, room, struct;
var buff_main, buff_side, card, current_deck, deck, deck_array, deck_main, deck_side, deck_text, deckbuf, decks, found_deck, i, j, k, len, len1, line, room, struct, win_pos;
room = ROOM_all[client.rid];
if (!room) {
return false;
......@@ -2493,6 +2498,12 @@
client.side_interval = null;
client.side_tcount = null;
}
if (settings.modules.http.quick_death_rule === 2 && room.started && room.death && room.scores[room.dueling_players[0].name] !== room.scores[room.dueling_players[1].name]) {
win_pos = room.scores[room.dueling_players[0].name] > room.scores[room.dueling_players[1].name] ? 0 : 1;
ygopro.stoc_send_chat_to_room(room, "${death2_finish_part1}" + room.dueling_players[win_pos].name + "${death2_finish_part2}", ygopro.constants.COLORS.BABYBLUE);
room.dueling_players[1 - win_pos].destroy();
return true;
}
if (room.random_type || room.arena) {
if (client.pos === 0) {
room.waiting_for_player = room.waiting_for_player2;
......@@ -2829,7 +2840,7 @@
return callback + "( " + text + " );";
};
requestListener = function(request, response) {
var archive_args, archive_name, archive_process, check, death_room_found, duellog, error, filename, getpath, j, k, l, len, len1, len2, len3, m, parseQueryString, pass_validated, player, ref, replay, room, roomsjson, u;
var archive_args, archive_name, archive_process, check, death_room_found, duellog, error, filename, getpath, j, k, l, len, len1, len2, len3, m, parseQueryString, pass_validated, player, ref, replay, room, roomsjson, u, win_pos;
parseQueryString = true;
u = url.parse(request.url, parseQueryString);
pass_validated = u.query.pass === settings.modules.http.password;
......@@ -3072,10 +3083,22 @@
room.death = (room.turn ? room.turn + 4 : 5);
ygopro.stoc_send_chat_to_room(room, "${death_start}", ygopro.constants.COLORS.BABYBLUE);
} else {
if (settings.modules.http.quick_death_rule) {
switch (settings.modules.http.quick_death_rule) {
case 2:
if (room.scores[room.dueling_players[0].name] === room.scores[room.dueling_players[1].name]) {
room.death = 5;
ygopro.stoc_send_chat_to_room(room, "${death_start_siding}", ygopro.constants.COLORS.BABYBLUE);
} else {
win_pos = room.scores[room.dueling_players[0].name] > room.scores[room.dueling_players[1].name] ? 0 : 1;
ygopro.stoc_send_chat_to_room(room, "${death2_finish_part1}" + room.dueling_players[win_pos].name + "${death2_finish_part2}", ygopro.constants.COLORS.BABYBLUE);
room.dueling_players[1 - win_pos].destroy();
}
break;
case 1:
room.death = -1;
ygopro.stoc_send_chat_to_room(room, "${death_start_quick}", ygopro.constants.COLORS.BABYBLUE);
} else {
break;
default:
room.death = 5;
ygopro.stoc_send_chat_to_room(room, "${death_start_siding}", ygopro.constants.COLORS.BABYBLUE);
}
......
......@@ -77,6 +77,7 @@ var makeChangelogs = function(dir, since) {
if (prc_git_log.stdout) {
var logs = prc_git_log.stdout.toString().split(/\n/g);
for (var i in logs) {
console.log(logs[i])
var log = logs[i].split(",");
var date = log[1];
if (date) {
......@@ -84,7 +85,8 @@ var makeChangelogs = function(dir, since) {
if (prc_git_diff.stdout) {
var lines = prc_git_diff.stdout.toString().split(/\n/g);
for (var j in lines) {
var line = lines[j].match(/c(\d+)\.lua/);
console.log(lines[j])
var line = lines[j].match(/.*c(\d+)\.lua.*/);
if (line) {
var name = cardNames[line[1]] || line[1];
addedCards.push(name);
......@@ -95,6 +97,7 @@ var makeChangelogs = function(dir, since) {
}
}
for (var i in logs) {
console.log(logs[i])
var log = logs[i].split(",");
var date = log[1];
if (date) {
......@@ -102,7 +105,8 @@ var makeChangelogs = function(dir, since) {
if (prc_git_diff.stdout) {
var lines = prc_git_diff.stdout.toString().split(/\n/g);
for (var j in lines) {
var line = lines[j].match(/c(\d+)\.lua/);
console.log(lines[j])
var line = lines[j].match(/.*c(\d+)\.lua.*/);
if (line) {
var name = cardNames[line[1]] || line[1];
sendResponse("<span class='change'>" + date + " * " + name + "</span>");
......@@ -173,7 +177,7 @@ var updateChangelogs = function(message) {
var pushHTMLs = function() {
try {
execSync('git add ' + config.changelog_filename, { cwd: config.git_html_path, env: process.env });
//execSync('git commit -m update-auto', { cwd: config.git_html_path, env: process.env });
execSync('git commit -m update-auto', { cwd: config.git_html_path, env: process.env });
} catch (error) {
sendResponse("git error: "+error.stdout);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment