Suzuki Hiroto

This commit is contained in:
Spmario233 2020-12-16 19:55:55 +08:00
parent d60e9e6ed2
commit a45218a0e6
28 changed files with 767 additions and 281 deletions

BIN
audio/die/xin_lingtong.mp3 Normal file

Binary file not shown.

BIN
audio/die/xin_liubiao.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/piaoling1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/piaoling2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -60,6 +60,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_jojiro:['male','key',4,['jojiro_shensu','jojiro_shunying']],
key_shiroha:['female','key',3,['shiroha_yuzhao','shiroha_guying','shiroha_jiezhao']],
key_shizuku:['female','key',3,['shizuku_sizhi','shizuku_biyi']],
key_hiroto:['male','key',3,['hiroto_huyu','hiroto_tuolao']],
key_kud:['female','key',3,['kud_qiaoshou','kud_buhui']],
key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']],
@ -169,7 +170,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_tieba:["ns_zuoci","ns_lvzhi","ns_wangyun","ns_nanhua","ns_nanhua_left","ns_nanhua_right","ns_huamulan","ns_huangzu","ns_jinke","ns_yanliang","ns_wenchou","ns_caocao","ns_caocaosp","ns_zhugeliang","ns_wangyue","ns_yuji","ns_xinxianying","ns_guanlu","ns_simazhao","ns_sunjian","ns_duangui","ns_zhangbao","ns_masu","ns_zhangxiu","ns_lvmeng","ns_shenpei","ns_yujisp","ns_yangyi","ns_liuzhang","ns_xinnanhua"],
diy_fakenews:["diy_wenyang","ns_zhangwei","ns_caimao"],
diy_default:["diy_feishi","diy_liuyan","diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji","diy_liufu","diy_xizhenxihong","diy_liuzan","diy_zaozhirenjun","diy_yangyi","diy_tianyu"],
diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki","key_miki","key_shiori","key_kaori","sp_key_yuri","key_akiko","key_abyusa","key_godan","key_yuu","key_ryoichi","key_kotori","key_jojiro","key_shiroha","key_shizuku"],
diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki","key_miki","key_shiori","key_kaori","sp_key_yuri","key_akiko","key_abyusa","key_godan","key_yuu","key_ryoichi","key_kotori","key_jojiro","key_shiroha","key_shizuku","key_hiroto"],
diy_trashbin:['old_jiakui','ol_guohuai','junk_zhangrang'],
},
},
@ -185,6 +186,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_tianyu:'字国让,渔阳雍奴(今天津市武清区东北)人。三国时期曹魏将领。初从刘备,因母亲年老回乡,后跟随公孙瓒,公孙瓒败亡,劝说鲜于辅加入曹操。曹操攻略河北时,田豫正式得到曹操任用,历任颖阴、郎陵令、弋阳太守等。',
},
characterTitle:{
key_hiroto:'#b神様になった日',
key_shizuku:'#bSummer Pockets',
key_shiroha:'#bSummer Pockets',
key_jojiro:'#bCharlotte<br>战棋专属角色',
@ -345,6 +347,122 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_lucia:['key_shizuru'],
},
skill:{
hiroto_huyu:{
trigger:{global:'phaseUseEnd'},
direct:true,
noHidden:true,
filter:function(event,player){
return player!=event.player&&player.hasSkill('hiroto_huyu')&&!player.hasSkill('hiroto_zonglve')&&event.player.countCards('h')>0;
},
content:function(){
'step 0'
trigger.player.chooseCard(2,'h','是否对'+get.translation(player)+'发动【虎驭】?','将两张手牌交给该角色,然后令其获得〖纵略〗并于下回合获得该角色获得的所有牌').set('goon',function(){
var source=trigger.player;
if(get.attitude(source,player)>0) return 7;
if(source.hp>2) return 4;
return 0;
}()).set('ai',function(card){
return _status.event.goon-get.value(card);
});
'step 1'
if(result.bool){
player.logSkill('hiroto_huyu',trigger.player);
player.gain(result.cards,trigger.player,'giveAuto');
player.storage.hiroto_huyu2=trigger.player;
player.addSkill('hiroto_zonglve');
player.addSkill('hiroto_huyu2');
}
},
derivation:'hiroto_zonglve',
},
hiroto_huyu2:{
trigger:{player:'phaseEnd'},
forced:true,
popup:false,
charlotte:true,
content:function(){
player.removeSkill('hiroto_huyu2');
player.removeSkill('hiroto_zonglve');
var target=player.storage.hiroto_huyu2;
if(target&&target.isAlive()){
var cards=[];
player.getHistory('gain',function(evt){
cards.addArray(evt.cards);
});
var he=player.getCards('he');
cards=cards.filter(function(card){
return he.contains(card);
});
if(cards.length) target.gain(cards,player,'giveAuto');
}
},
mark:'character',
intro:{content:'已成为$的工具人'},
},
hiroto_zonglve:{
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countCards('h')>0&&game.hasPlayer(function(current){
return current!=player&&current.countCards('h')>0;
});
},
filterTarget:function(card,player,target){
return target!=player&&target.countCards('h')>0;
},
filterCard:true,
delay:false,
charlotte:true,
position:'h',
discard:false,
lose:false,
content:function(){
'step 0'
player.choosePlayerCard(true,target,'h');
'step 1'
event.card=result.cards[0];
player.$compare(cards[0],target,event.card);
game.log(player,'展示了',cards[0]);
game.log(target,'展示了',event.card)
game.delay(3.5);
'step 2'
game.broadcastAll(ui.clear);
if(get.color(cards[0],player)==get.color(card,target)){
target.damage('nocard');
target.discard(card).animate=false;
}
else player.gainPlayerCard(target,true,2,'hej');
},
mod:{
maxHandcard:function(player,num){
return num+3;
},
},
ai:{
order:7,
result:{
target:-1,
},
},
},
hiroto_tuolao:{
trigger:{player:'phaseAfter'},
forced:true,
juexingji:true,
skillAnimation:true,
animationColor:'water',
filter:function(event,player){
return player.phaseNumber>1&&!player.getHistory('lose',function(evt){
return evt.getParent(2).name=='hiroto_huyu2';
}).length;
},
content:function(){
player.awakenSkill('hiroto_tuolao');
player.draw(3);
player.removeSkill('hiroto_huyu');
player.addSkill('hiroto_zonglve');
},
},
shizuku_sizhi:{
audio:2,
enable:'phaseUse',
@ -651,8 +769,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
direct:true,
filter:function(event,player,name){
if(name=='damageBegin3') return true;
if(!player.storage.shiroha_jiezhao&&player.hasSkill('shiroha_guying_temp')) return false;
if(name=='damageBegin3') return true;
return player!=event.player;
},
content:function(){
@ -11587,6 +11705,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_jojiro:'高城丈士朗',
key_shiroha:'鸣濑白羽',
key_shizuku:'水织静久',
key_hiroto:'铃木央人',
lucia_duqu:'毒躯',
lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。<br>②当你因【毒】失去体力时,你改为回复等量的体力。<br>③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。',
lucia_zhenren:'振刃',
@ -11879,6 +11998,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shiroha_guying_rewrite_info:'当你受到伤害/对其他角色造成伤害时,你可进行判定。若结果为红色/黑色,此伤害-1/+1。',
shiroha_jiezhao:'解兆',
shiroha_jiezhao_info:'一名角色的判定牌生效前你可打出一张「兆」代替之。当你以此法移去最后一张「兆」后你加1点体力上限并回复1点体力然后修改〖孤影〗并随机获得以下技能中的一个〖炒饭〗/〖习事〗/〖呣啾〗/〖结伴〗。',
hiroto_huyu:'虎驭',
hiroto_huyu2:'虎驭',
hiroto_huyu_info:'其他角色的出牌阶段结束时,若你没有技能〖纵略〗,则其可将两张手牌交给你。若如此做,你获得〖纵略〗。你的下回合结束时,你失去〖纵略〗并将本回合内获得的所有牌交给该角色。',
hiroto_zonglve:'纵略',
hiroto_zonglve_info:'锁定技,你的手牌上限+3。出牌阶段限一次你可以将一张手牌背面朝下放置并展示一名其他角色的一张手牌。若这两张牌颜色相同你对其造成1点伤害并弃置其展示的牌。颜色不同你获得该角色区域内的两张牌。',
hiroto_tuolao:'脱牢',
hiroto_tuolao_info:'觉醒技,回合结束后,若此回合不是你的第一个回合且你本轮内未因〖虎驭〗失去过牌,则你摸三张牌,失去〖虎驭〗并获得〖纵略〗。',
key_kud:'库特莉亚芙卡',
kud_qiaoshou:'巧手',

View File

@ -11,11 +11,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mobile_sunben:["re_sunben"],
mobile_standard:["xin_xiahoudun"],
mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian"],
mobile_yijiang1:["re_jikang","old_bulianshi","xin_liaohua","xin_caozhang","re_xusheng","xin_chengpu","xin_jianyong","xin_gongsunzan","xin_zhuran"],
mobile_yijiang1:["re_jikang","old_bulianshi","xin_liaohua","xin_caozhang","re_xusheng","xin_chengpu","xin_jianyong","xin_gongsunzan","xin_zhuran","re_lingtong","re_liubiao"],
mobile_sp:["old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","re_heqi","liuzan"],
},
},
character:{
re_lingtong:['male','wu',4,['rexuanfeng']],
re_liubiao:['male','qun',3,['zishou','rezongshi']],
simashi:['male','wei',4,['baiyi','jinglve','shanli']],
yanghuiyu:['female','wei',3,['hongyi','quanfeng']],
xin_zhuran:['male','wu',4,['mobiledanshou']],
@ -6430,6 +6432,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
jinglve_info:'出牌阶段限一次,你可以观看一名其他角色的手牌,将其中一张牌标记为「死士」。当其使用对应的实体牌中包含「死士」的牌时,你取消此牌的所有目标。当「死士」牌不因使用而进入弃牌堆,或其回合结束后,若「死士」牌仍在其区域内,则你获得此牌。',
shanli:'擅立',
shanli_info:'觉醒技准备阶段若你已发动过〖败移〗且对至少两名角色发动过〖景略〗则你减1点体力上限并选择一名角色。系统随机选择三个不为〖忘隙(仲村由理)〗的主公技,然后你选择其中一个技能,令其获得之。其将交互表情中的【拖鞋】和【酒杯】替换为【手铐】和【玉玺】。',
re_lingtong:'手杀凌统',
re_liubiao:'手杀刘表',
mobile_standard:'手杀异构·标准包',
mobile_shenhua:'手杀异构·神话再临',
mobile_yijiang1:'手杀异构·一将成名',

View File

@ -12,12 +12,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_yijiang3:["liru","old_zhuran","old_fuhuanghou","old_caochong"],
old_yijiang4:["old_caozhen","old_chenqun","old_zhuhuan"],
old_yijiang5:["old_caoxiu","old_quancong","old_zhuzhi"],
old_yijiang67:["ol_zhangrang","ol_liuyu"],
old_yijiang67:["ol_zhangrang","ol_liuyu","ol_xinxianying"],
old_sp:["old_lingju","old_maliang","old_machao","zhangliang","jsp_caoren","ol_guansuo","old_zhangxingcai","old_huangfusong","ol_maliang","old_wangyun"],
old_mobile:["old_caochun","old_majun"],
},
},
character:{
ol_xinxianying:['female','wei',3,['caishi','zhongjian']],
ol_yuanshu:['male','qun',4,['wangzun','tongji']],
pangde:['male','qun',4,['mashu','mengjin']],
ol_huaxiong:["male","qun",6,["new_reyaowu"]],
@ -786,6 +787,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
oldxuanfeng:'旋风',
oldxuanfeng_info:'每当你失去一次装备区里的牌时你可以执行下列两项中的一项1.视为对任意一名其他角色使用一张【杀】此【杀】不计入每回合的使用限制2.对与你距离1以内的一名其他角色造成一点伤害',
ol_yuanshu:'旧袁术',
ol_xinxianying:'旧辛宪英',
old_standard:'标准包',
old_shenhua:'神话再临',

View File

@ -240,6 +240,7 @@ window.noname_character_rank={
'ol_zhangchangpu',
'shamoke',
'diy_wenyang',
'xin_lingtong',
'key_misuzu',
'key_sunohara',
'key_umi',
@ -253,6 +254,7 @@ window.noname_character_rank={
'key_shiroha',
'key_shiori',
'key_iwasawa',
'key_hiroto',
'mini_zhugeliang',
],
am:[
@ -406,7 +408,6 @@ window.noname_character_rank={
'zhoutai',
're_xunyu',
'yujin_yujin',
'xin_lingtong',
're_bulianshi',
're_zhonghui',
're_zhuran',
@ -535,6 +536,7 @@ window.noname_character_rank={
'sunquan',
'daqiao',
'diaochan',
'mini_diaochan',
'liubei',
'xf_yiji',
'zhoufei',
@ -603,6 +605,7 @@ window.noname_character_rank={
'buzhi',
'jsp_zhaoyun',
'huangjinleishi',
're_xinxianying',
'sp_wangyuanji',
'sp_xinxianying',
'sp_liuxie',
@ -1252,6 +1255,7 @@ window.noname_character_rank={
'key_yusa',
'key_misa',
'key_shizuku',
'key_hiroto',
'kaisa',
],
rare:[
@ -1495,6 +1499,10 @@ window.noname_character_rank={
'mini_sunquan',
'mini_jiangwei',
'mini_zhangchunhua',
'mini_diaochan',
'xin_lingtong',
'xin_liubiao',
're_xinxianying',
],
junk:[
'sunshao',

View File

@ -9,8 +9,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
refresh_huo:["ol_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"],
refresh_lin:['re_zhurong','re_menghuo','ol_sunjian','re_caopi','re_xuhuang','ol_dongzhuo'],
refresh_shan:['re_dengai','re_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce','ol_dengai'],
refresh_yijiang1:['re_wuguotai','re_gaoshun','re_caozhi','yujin_yujin','re_lingtong','re_masu','xin_xusheng','xin_fazheng','xin_lingtong'],
refresh_yijiang2:['old_madai','wangyi','guanzhang','re_handang','re_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_liubiao','re_bulianshi','xin_liubiao'],
refresh_yijiang1:['re_wuguotai','re_gaoshun','re_caozhi','yujin_yujin','re_masu','xin_xusheng','xin_fazheng','xin_lingtong'],
refresh_yijiang2:['old_madai','wangyi','guanzhang','re_handang','re_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_bulianshi','xin_liubiao'],
refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong','re_yufan','re_liru','re_manchong'],
refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan'],
refresh_yijiang5:['re_zhangyi','re_quancong','re_caoxiu','re_sunxiu'],
@ -18,8 +18,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
connect:true,
character:{
xin_lingtong:['male','wu',4,['decadexuanfeng','yongjin'],['unseen']],
xin_liubiao:['male','qun',3,['decadezishou','decadezongshi'],['unseen']],
xin_lingtong:['male','wu',4,['decadexuanfeng','yongjin']],
xin_liubiao:['male','qun',3,['decadezishou','decadezongshi']],
re_caoxiu:['male','wei',4,['qianju','reqingxi']],
re_sunxiu:['male','wu',3,['reyanzhu','rexingxue','zhaofu'],['zhu']],
ol_dengai:['male','wei',4,['oltuntian','olzaoxian'],['unseen']],
@ -30,7 +30,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_bulianshi:['female','wu',3,['reanxu','zhuiyi']],
re_hanhaoshihuan:['male','wei',4,['reshenduan','reyonglve']],
re_panzhangmazhong:['male','wu',4,['reduodao','reanjian']],
re_liubiao:['male','qun',3,['zishou','rezongshi']],
xin_fazheng:['male','shu',3,['xinenyuan','xinxuanhuo'],['die_audio']],
wangyi:['female','wei',3,['zhenlie','miji']],
old_madai:['male','shu',4,['mashu','qianxi']],
@ -41,7 +40,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_sunluban:['female','wu',3,['rechanhui','rejiaojin']],
re_zhonghui:['male','wei',4,['requanji','zili']],
re_handang:['male','wu',4,['regongji','jiefan']],
re_lingtong:['male','wu',4,['rexuanfeng']],
yujin_yujin:['male','wei',4,['rejieyue']],
re_caozhang:['male','wei',4,['new_jiangchi']],
re_chengpu:['male','wu',4,['decadelihuo','decadechunlao']],
@ -139,7 +137,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{target:'useCardToTargeted'},
forced:true,
filter:function(event,player){
return player!=_status.currentPhase&&player.countCards('h')>player.getHandcardLimit()&&
return player!=_status.currentPhase&&player.countCards('h')>=player.getHandcardLimit()&&
(get.type(event.card)=='delay'||get.color(event.card)=='nocolor');
},
content:function(){
@ -148,7 +146,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
effect:{
target:function(card,player,target){
if(target!=_status.currentPhase&&target.countCards('h')>target.getHandcardLimit()&&
if(target!=_status.currentPhase&&target.countCards('h')>=target.getHandcardLimit()&&
(get.type(card)=='delay'||get.color(card)=='nocolor')) return 'zerotarget';
},
},
@ -195,6 +193,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
yongjin:{
audio:2,
audioname:['xin_lingtong'],
unique:true,
limited:true,
skillAnimation:true,
@ -385,13 +385,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
decadexuanfeng:{
audio:'xuanfeng',
audioname:['boss_lvbu3','re_heqi'],
audioname:['boss_lvbu3','re_heqi','xin_lingtong'],
trigger:{
player:['loseAfter','phaseDiscardEnd'],
global:['equipAfter','addJudgeAfter','gainAfter'],
},
direct:true,
filter:function(event,player){
if(_status.dying.length) return false;
if(event.name=='phaseDiscard'){
var cards=[];
player.getHistory('lose',function(evt){
@ -452,7 +453,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
reverseEquip:true,
noe:true
noe:true,
expose:0.2,
}
},
oltuntian:{
@ -4077,6 +4079,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xinleiji:{
group:'xinleiji_misa',
audio:2,
derivation:'xinleiji_faq',
audioname:['boss_qinglong'],
trigger:{player:['useCard','respond']},
filter:function(event,player){
@ -4131,7 +4134,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'xinleiji',
trigger:{player:'judgeAfter'},
direct:true,
disableReason:['暴虐','助祭','弘仪'],
disableReason:['暴虐','助祭','弘仪','孤影'],
filter:function(event,player){
return !lib.skill.xinleiji_misa.disableReason.contains(event.judgestr)&&['spade','club'].contains(event.result.suit);
},
@ -4224,6 +4227,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
},
xinleiji_faq:{},
reqingguo:{
audio:2,
enable:['chooseToRespond','chooseToUse'],
@ -7967,8 +7971,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
olzhiba_info:'主公技,其他吴势力的角色的出牌阶段限一次,其可以与你拼点(你可拒绝此拼点)。若其没赢,你可以获得两张拼点牌。你的出牌阶段限一次,你可以和一名吴势力角色拼点,若你赢,你获得两张拼点牌。',
olzhiba2:'制霸',
xinleiji:'雷击',
xinleiji_misa:'雷击',
xinguidao:'鬼道',
xinleiji_info:'①当你使用或打出【闪】或【闪电】时,你可以进行判定。<br>②当你不因〖暴虐〗或〖助祭〗或〖弘仪〗而进行的判定的判定牌生效后若结果为黑桃你可对一名其他角色造成2点雷电伤害梅花你回复1点体力并可对一名其他其他角色造成1点雷电伤害。',
xinleiji_info:'①当你使用或打出【闪】或【闪电】时你可以进行判定。②当你的判定的判定牌生效后若结果为黑桃你可对一名其他角色造成2点雷电伤害梅花你回复1点体力并可对一名其他其他角色造成1点雷电伤害。',
xinleiji_append:'<span style="font-family: yuanli">不能触发〖雷击〗的判定:〖暴虐〗、〖助祭〗、<br>〖弘仪〗、〖孤影〗。</span>',
xinleiji_faq:'不能触发〖雷击〗的判定',
xinleiji_faq_info:'<br>董卓/界董卓〖暴虐〗<br>黄巾雷使〖助祭〗<br>羊徽瑜〖弘仪〗<br>鸣濑白羽〖孤影〗',
xinguidao_info:'一名角色的判定牌生效前你可以打出一张黑色牌作为判定牌并获得原判定牌。若你以此法打出的牌为黑桃2-9则你摸一张牌。',
reqiangxi:"强袭",
"reqiangxi_info":"出牌阶段对每名其他角色限一次你可以选择一项1. 失去一点体力并对你攻击范围内的一名其他角色造成一点伤害2. 弃置一张武器牌并对你攻击范围内的一名其他角色造成一点伤害。",
@ -8224,7 +8232,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yujin_yujin:'界于禁',
rejieyue:'节钺',
rejieyue_info:'结束阶段开始时,你可以将一张牌交给一名其他角色。然后其选择一项:令你摸三张牌:或其保留一张手牌和装备区的牌,然后弃置其余的牌。',
re_lingtong:'界凌统',
rexuanfeng:'旋风',
rexuanfeng_info:'当你失去装备区内的牌时,或于弃牌阶段弃置了两张或更多的手牌后,你可以依次弃置一至两名其他角色的共计两张牌,或将一名其他角色装备区内的一张牌移动到另一名其他角色的装备区内。',
olpaoxiao:'咆哮',
@ -8264,7 +8271,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
wangyi:'界王异',
guanzhang:'界关兴张苞',
xin_fazheng:'界法正',
re_liubiao:'界刘表',
rezishou:'自守',
rezishou2:'自守',
//rezishou_info:'摸牌阶段你可以多摸X张牌。若如此做本回合你对其他角色造成伤害时防止此伤害且结束阶段若你本回合没有使用牌指定其他角色为目标则你可以将场上的一张装备牌移动到自己的装备区。X为场上势力数',
@ -8318,7 +8324,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_caoxiu:'界曹休',
xin_lingtong:'界凌统',
decadexuanfeng:'旋风',
decadexuanfeng_info:'当你于弃牌阶段弃置过至少两张牌,或当你失去装备区里的牌后,你可以弃置至多两名其他角色的共计两张牌。若此时是你的回合内,你可以对其中一名目标造成1点伤害。',
decadexuanfeng_info:'当你于弃牌阶段弃置过至少两张牌,或当你失去装备区里的牌后,若场上没有处于濒死状态的角色,则你可以弃置至多两名其他角色的共计两张牌。若此时处于你的回合内,你可以对其中一名目标角色造成1点伤害。',
yongjin:'勇进',
yongjin_info:'限定技,出牌阶段,你可以依次移动场上的至多三张不同的装备牌。',
xin_liubiao:'界刘表',
@ -8326,7 +8332,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
decadezishou_zhiheng:'自守',
decadezishou_info:'摸牌阶段你可以多摸X张牌,然后本回合你对其他角色造成伤害时,防止此伤害。结束阶段,若你本回合没有使用牌指定其他角色为目标,你可以弃置任意张花色不同的手牌,然后摸等量的牌。',
decadezongshi:'宗室',
decadezongshi_info:'锁定技,你的手牌上限+XX为现存势力数。你的回合外若你的手牌数大于等于手牌上限延时类锦囊牌或无颜色的牌对你无效。',
decadezongshi_info:'锁定技,你的手牌上限+XX为现存势力数。你的回合外若你的手牌数大于等于手牌上限则当你成为延时类锦囊牌或无颜色的牌的目标后,你令此牌对你无效。',
refresh_standard:'界限突破·标',
refresh_feng:'界限突破·风',

View File

@ -1101,12 +1101,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
};
"step 1"
if(result.bool){
player.line(result.targets);
player.logSkill('liangyin');
player.logSkill('liangyin',result.targets);
result.targets[0].draw();
}else{
event.finish();
};
}
},
sub:true,
},
@ -1127,12 +1124,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
};
"step 1"
if(result.bool){
player.line(result.targets);
player.logSkill('liangyin');
player.logSkill('liangyin',result.targets);
result.targets[0].chooseToDiscard('he',1,true);
}else{
event.finish();
};
}
},
sub:true,
},
@ -1162,8 +1156,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.lose(result.cards,ui.special,'toStorage');
game.log(player,'将',result.cards,'置于其武将牌上');
player.addSkill('kongsheng2');
}else{
event.finish();
}
},
},
@ -1466,7 +1458,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.finish();
};
'step 2'
//player.line(event.target,'green');
player.logSkill('nzry_yili',target);
if(result.index==1){
player.removeMark('nzry_huaiju',1);
@ -1977,12 +1968,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 1"
if(result.bool){
player.storage.nzry_zhenliang=false;
player.line(result.targets);
player.logSkill('nzry_zhenliang');
player.logSkill('nzry_zhenliang',result.targets);
result.targets[0].draw();
}else{
event.finish();
};
}
},
},
},

View File

@ -4,10 +4,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sp2',
connect:true,
character:{
//jin_zhangchunhua:['female','wei',3,['jiang','hunzi'],['hiddenSkill']],
//jin_simayi:['female','wei',3,['reyingzi','gzyinghun'],['hiddenSkill']],
re_xinxianying:['female','wei',3,['rezhongjian','recaishi']],
luyusheng:['female','wu',3,['sicong','xianzhao'],['unseen']],
ol_dingyuan:['male','qun',4,['weihuan','shouchong'],['unseen']],
liubian:['male','qun',3,['shiyuan','dushi']],
xin_baosanniang:['female','shu',3,['xinfu_wuniang','decadexushen']],
xin_baosanniang:['female','shu',3,['decadewuniang','decadexushen']],
re_hejin:['male','qun',4,['spmouzhu']],
hansui:['male','qun',4,['spniluan','spweiwu']],
liuhong:['male','qun',4,['yujue','tuxing'],['unseen']],
@ -15,7 +18,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
caoxing:['male','qun',4,['cxliushi','zhanwan']],
re_maliang:['male','shu',3,['rexiemu','heli'],[]],
ol_yujin:['male','wei',4,['rezhenjun']],
ol_xinxianying:['female','wei',3,['caishi','zhongjian']],
caobuxing:['male','wu',3,['moying','juanhui'],[]],
re_sunluyu:['female','wu',3,['remeibu','remumu']],
re_liuzan:['male','wu',4,['refenyin','liji']],
@ -80,7 +82,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_baigei:['re_panfeng','xingdaorong','caoxing'],
sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou"],
sp_huangjin:['liuhong','zhujun','re_hejin','hansui'],
sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','re_sunluyu','caobuxing','ol_xinxianying','ol_yujin','re_maliang','xin_baosanniang','liubian'],
sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','re_sunluyu','caobuxing','ol_yujin','re_maliang','xin_baosanniang','liubian','re_xinxianying'],
sp_mini:["mini_sunquan","mini_zuoci","mini_jiangwei","mini_diaochan","mini_zhangchunhua"],
sp_luanwu:["ns_lijue","ns_zhangji","ns_fanchou"],
sp_yongjian:["ns_chendao","yj_caoang"],
@ -88,8 +90,198 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
skill:{
decadewuniang:{
trigger:{
player:["useCard","respond"],
},
audio:'xinfu_wuniang',
direct:true,
filter:function (event,player){
return event.card.name=='sha';
},
content:function (){
'step 0'
player.chooseTarget(get.prompt2('decadewuniang'),function(card,player,target){
if(player==target) return false;
return target.countGainableCards(player,'he')>0;
}).set('ai',function(target){
return 10-get.attitude(_status.event.player,target);
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('xinfu_wuniang',target);
player.line(target,'fire');
player.gainPlayerCard(target,'he',true);
target.draw();
if(!player.storage.decadexushen) event.finish();
}
else event.finish();
'step 2'
var list=game.filterPlayer(function(current){
return current.name=='guansuo'||current.name2=='guansuo';
});
if(list.length) game.asyncDraw(list);
else event.finish();
'step 3'
game.delayx();
},
},
rezhongjian:{
enable:'phaseUse',
audio:'zhongjian',
usable:2,
filter:function(event,player){
if(player.getStat().skill.rezhongjian&&!player.hasSkill('recaishi2')) return false;
return game.hasPlayer(function(current){
return lib.skill.rezhongjian.filterTarget(null,player,current);
});
},
filterTarget:function(card,player,target){
if(!player.storage.rezhongjian2) return true;
return !player.storage.rezhongjian2[0].contains(target)&&!player.storage.rezhongjian2[1].contains(target);
},
content:function(){
'step 0'
player.chooseControl().set('prompt','忠鉴:为'+get.translation(target)+'选择获得一项效果').set('choiceList',[
'令其于下回合开始前首次造成伤害后弃置两张牌',
'令其于下回合开始前首次受到伤害后摸两张牌',
]).set('ai',function(){
return get.attitude(_status.event.player,_status.event.getParent().target)>0?1:0;
});
'step 1'
player.addTempSkill('rezhongjian2',{player:'phaseBeginStart'});
//var str=['造成伤害弃牌','受到伤害摸牌'][result.index];
//player.popup(str,['fire','wood'][result.index]);
//game.log(player,'选择了','#y'+str)
player.storage.rezhongjian2[result.index].push(target);
player.markSkill('rezhongjian2');
},
ai:{
order:10,
expose:0,
result:{
player:function(player,target){
if(get.attitude(player,target)==0) return false;
var sgn=get.sgn((get.realAttitude||get.attitude)(player,target));
if(game.countPlayer(function(current){
return get.sgn((get.realAttitude||get.attitude)(player,current))==sgn;
})<=game.countPlayer(function(current){
return get.sgn((get.realAttitude||get.attitude)(player,current))!=sgn;
})) return 1;
return 0.9;
},
},
},
},
rezhongjian2:{
trigger:{
global:['damageSource','damageEnd'],
},
forced:true,
filter:function(event,player,name){
var num=(name=='damageSource'?0:1);
var logTarget=(name=='damageSource'?event.source:event.player);
return logTarget&&logTarget.isAlive()&&player.storage.rezhongjian2[num].contains(logTarget);
},
logTarget:function(event,player,name){
return (name=='damageSource'?event.source:event.player);
},
content:function(){
var num=(event.triggername=='damageSource'?0:1);
var target=(event.triggername=='damageSource'?trigger.source:trigger.player);
var storage=player.storage.rezhongjian2;
storage[num].remove(target);
if(storage[0].length+storage[1].length) player.markSkill('rezhongjian2');
else player.removeSkill('rezhongjian2');
target[event.triggername=='damageSource'?'chooseToDiscard':'draw'](2,true,'he');
player.draw();
},
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=[[],[]];
},
onremove:true,
intro:{
markcount:function(storage){
return storage[0].length+storage[1].length;
},
mark:function(dialog,storage,player){
if(player==game.me||player.isUnderControl()){
if(storage[0].length){
dialog.addText('弃牌');
dialog.add([storage[0],'player']);
}
if(storage[1].length){
dialog.addText('摸牌');
dialog.add([storage[1],'player']);
}
}
else{
var list=storage[0].concat(storage[1]).sortBySeat(player);
dialog.add([list,'player']);
}
},
},
},
recaishi:{
trigger:{player:'phaseDrawEnd'},
direct:true,
audio:'caishi',
isSame:function(event){
var cards=[];
event.player.getHistory('gain',function(evt){
if(evt.getParent().name=='draw'&&evt.getParent('phaseDraw')==event) cards.addArray(evt.cards);
});
if(!cards.length) return 'nogain';
var list=[];
for(var i=0;i<cards.length;i++){
list.add(get.suit(cards[i]));
}
if(list.length==1) return true;
if(list.length==cards.length) return false;
return 'nogain';
},
filter:function(event,player){
var isSame=lib.skill.recaishi.isSame(event);
if(isSame=='nogain') return false;
return isSame||player.isDamaged();
},
content:function(){
'step 0'
if(lib.skill.recaishi.isSame(trigger)){
player.logSkill('recaishi');
player.addTempSkill('recaishi2');
event.finish();
return;
}
player.chooseBool(get.prompt('recaishi'),'回复1点体力然后本回合内不能对自己使用牌').set('ai',function(){
if(player.countCards('h','tao')) return false;
if(player.hp<2) return true;
return player.countCards('h',function(card){
var info=get.info(card);
return info&&(info.toself||info.selectTarget==-1)&&player.canUse(card,player)&&player.getUseValue(card)>0;
})==0;
});
'step 1'
if(result.bool){
player.logSkill('recaishi');
player.recover();
player.addTempSkill('recaishi3');
}
},
},
recaishi2:{},
recaishi3:{
mod:{
targetEnabled:function(card,player,target){
if(player==target) return false;
},
},
mark:true,
intro:{content:'本回合内不能对自己使用牌'},
},
minishangshi:{
audio:2,
audio:'shangshi',
trigger:{player:['loseAfter','changeHp']},
frequent:true,
filter:function(event,player){
@ -177,6 +369,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
minitiaoxin:{
trigger:{player:'phaseUseBegin'},
direct:true,
audio:'tiaoxin',
filter:function(event,player){
return game.hasPlayer(function(current){
return current!=player&&current.countDiscardableCards(player,'h')>0;
@ -213,7 +406,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
minishendao:{
audio:'rehuashen',
trigger:{
global:"judge",
player:"judge",
},
direct:true,
content:function(){
@ -957,86 +1150,48 @@ game.import('character',function(lib,game,ui,get,ai,_status){
decadexushen:{
derivation:'decadezhennan',
audio:'xinfu_xushen',
subSkill:{
count:{
trigger:{
player:["recoverBegin","recoverAfter"],
},
forced:true,
silent:true,
popup:false,
filter:function(event,player,name){
if(name=='recoverAfter') return event.decadexushen===true;
if(!event.source||player==event.source) return false;
if(!player.isDying()||event.getParent('dying').player!=player) return false;
if(game.hasPlayer(function(current){
return current.name=='guansuo'||current.name2=='guansuo';
})) return false;
return true;
},
content:function(){
if(event.triggername=='recoverBegin') trigger.decadexushen=true;
else event.getParent('dying').decadexushen_source=trigger.source;
},
sub:true,
},
},
group:["decadexushen_count"],
trigger:{
player:"dyingAfter",
},
trigger:{player:'dying'},
limited:true,
filter:function(event,player){
return event.decadexushen_source&&event.decadexushen_source.isAlive();
},
logTarget:'decadexushen_source',
skillAnimation:true,
animationColor:'fire',
content:function (){
'step 0'
animationColor:'orange',
filter:function(event,player){
return player.hp<1;
},
content:function(){
player.awakenSkill('decadexushen');
event.target=trigger.decadexushen_source;
event.videoId=lib.status.videoId++;
var sex='伴侣';
switch(event.target.sex){
case 'male':sex='丈夫';break;
case 'female':sex='妻子';break;
}
game.broadcastAll(function(str,id){
var dialog=ui.create.dialog('许身','hidden');
dialog.videoId=id;
dialog.addText(str,false);
dialog.add(' ');
dialog.open();
},get.translation(player)+',你是否发誓嫁'+get.translation(event.target)+'作为你的'+sex+',无论顺境或是逆境,富裕或贫穷,健康或疾病,快乐或忧愁,风雨同舟,患难与共,同甘共苦,缔结神圣的婚姻契约,成为终生的伴侣?',event.videoId);
game.delay(4);
player.chooseBool().set('ai',function(){
var evt=_status.event.getParent();
return get.attitude(evt.player,evt.target)>0;
}).set('prompt',false);
player.addSkill('decadezhennan');
player.recover();
player.addTempSkill('decadexushen2');
trigger.decadexushen=true;
},
},
decadexushen2:{
trigger:{player:'dyingAfter'},
forced:true,
popup:false,
filter:function(event,player){
return event.decadexushen==true&&!game.hasPlayer(function(current){
return current.name=='guansuo'||current.name2=='guansuo';
});
},
content:function(){
'step 0'
player.chooseTarget(lib.filter.notMe,'许身:是否令一名其他角色选择是否将其武将牌替换为“关索”并令其摸三张牌?').set('ai',function(target){
return get.attitude(_status.event.player,target)-4;
});
'step 1'
if(result.bool){
player.chat('我愿意!');
var sex='伴侣';
switch(player.sex){
case 'male':sex='丈夫';break;
case 'female':sex='妻子';break;
}
game.broadcastAll(function(str,id){
var dialog=get.idDialog(id);
if(dialog) dialog.content.childNodes[1].innerHTML='<div class="text">'+str+'</div>';
},get.translation(target)+',你是否发誓娶'+get.translation(player)+'作为你的妻子,无论顺境或是逆境,富裕或贫穷,健康或疾病,快乐或忧愁,风雨同舟,患难与共,同甘共苦,缔结神圣的婚姻契约,成为终生的伴侣?',event.videoId);
game.delay(4);
target.chooseBool().set('ai',function(){
return true;
}).set('prompt',false);
if(!result.bool){
event.finish();
return;
}
else event.goto(4);
var target=result.targets[0];
event.target=target;
player.line(target,'fire');
target.chooseBool('许身:是否将自己的一张武将牌替换为“关索”并令'+get.translation(player)+'摸三张牌?');
'step 2'
if(result.bool){
target.chat('我愿意!');
if(target.name2!=undefined){
target.chooseControl(target.name1,target.name2).set('prompt','请选择要更换的武将牌');
target.chooseControl(target.name,target.name2).set('prompt','请选择要更换的武将牌');
}
else event._result={control:target.name};
}
@ -1047,30 +1202,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
_status.characterlist.add(result.control);
_status.characterlist.remove('guansuo');
}
if(target.group!='shu') target.changeGroup('shu');
target.draw(3);
'step 4'
game.broadcastAll('closeDialog',event.videoId);
player.recover();
player.addSkill('decadezhennan');
},
mark:true,
intro:{
content:"limited",
target.draw(3);
},
},
decadezhennan:{
audio:'xinfu_zhennan',
trigger:{
target:"useCardToTargeted",
global:"useCardToPlayered",
},
filter:function (event,player){
return event.targets&&event.targets.length>1&&get.type2(event.card)=='trick';
return event.isFirstTarget&&event.targets&&event.targets.length>1&&get.type2(event.card)=='trick';
},
direct:true,
content:function (){
"step 0"
player.chooseTarget(get.prompt('decadezhennan'),'对一名其他角色造成1点随机伤害',function(card,player,target){
player.chooseTarget(get.prompt('decadezhennan'),'对一名其他角色造成1点伤害',function(card,player,target){
return target!=player;
}).set('ai',function(target){
var player=_status.event.player;
@ -6632,6 +6779,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(player.storage.mubing2) return '出牌阶段开始时,你可以展示牌堆顶的四张牌。你可弃置任意张手牌,并可获得任意张点数之和不大于你弃置的牌点数之和的牌。然后你可将以此法获得的牌以任意方式交给其他角色。';
return '出牌阶段开始时,你可以展示牌堆顶的三张牌。你可弃置任意张手牌,并可获得任意张点数之和不大于你弃置的牌点数之和的牌。';
},
rezhongjian:function(player){
return '出牌阶段限'+(player.hasSkill('recaishi2')?'两':'一')+'次,你可以选择一名本回合内未选择过的角色。你令其获得一项效果直至你的下回合开始:①其下次造成伤害后弃置两张牌,然后你摸一张牌。②其下次受到伤害后摸两张牌,然后你摸一张牌。'
},
},
characterReplace:{
lijue:['lijue','ns_lijue'],
@ -6911,7 +7061,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
juanhui2:'绢绘',
juanhui2_backup:'绢绘',
juanhui_info:'结束阶段,你可以选择一名其他角色。记录该角色下回合的出牌阶段里使用的基本牌和普通锦囊牌(每种牌名限记一次),你的下回合出牌阶段,可将一张手牌当这些牌里的任意一张牌使用(每张限使用一次,且【杀】不计次数)。当"绢绘"的牌全部用完时你回复1点体力并将手牌摸至三张。',
ol_xinxianying:'OL辛宪英',
ol_yujin:'OL于禁',
re_maliang:'马良',
rexiemu:'协穆',
@ -6942,9 +7091,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_hejin:'何进',
xin_baosanniang:'鲍三娘',
decadexushen:"许身",
decadexushen_info:"限定技,当你因其他角色而脱离濒死状态后,若场上没有“关索”,则你可发动此技能。你可令其选择是否将自己的一张武将牌变更为“关索”并摸三张牌。然后你回复一点体力,并获得技能〖镇南〗。",
decadexushen2:'许身',
decadexushen_info:"限定技当你进入濒死状态后你可以回复1点体力并获得技能“镇南”然后如果你脱离濒死状态且“关索”不在场你可令一名其他角色选择是否用“关索”代替其武将并令其摸三张牌。",
decadezhennan:"镇南",
decadezhennan_info:"当你成为锦囊牌的目标后若此牌的目标数大于1你可以对一名其他角色造成1点伤害。",
decadezhennan_info:"当有角色使用普通锦囊牌指定目标后若此牌目标数大于1你可以对一名其他角色造成1点伤害。",
liubian:'刘辩',
shiyuan:'诗怨',
shiyuan_info:'每回合每项限一次,当你成为其他角色使用牌的目标后:①若其体力值大于你,你摸三张牌。②若其体力值等于你,你摸两张牌。③若其体力值小于你,你摸一张牌。',
@ -7000,7 +7150,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mini_zhangchunhua:'SP张春华',
minishangshi:'伤逝',
minishangshi_info:'当你的手牌数小于X时你可以将手牌摸至X张X为你已损失的体力值且至少为1',
re_xinxianying:'辛宪英',
rezhongjian:'忠鉴',
rezhongjian2:'忠鉴',
rezhongjian_info:'出牌阶段限一次,你可以选择一名本回合内未选择过的角色。你令其获得一项效果直至你的下回合开始:①其下次造成伤害后弃置两张牌,然后你摸一张牌。②其下次受到伤害后摸两张牌,然后你摸一张牌。',
recaishi:'才识',
recaishi3:'才识',
recaishi_info:'摸牌阶段结束时若你于本阶段内因摸牌而获得的所有的牌花色均相同你将〖忠鉴〗于本回合内改为“出牌阶段限两次”。不均相同你可回复1点体力。若如此做你本回合内不能对自己使用牌。',
decadewuniang:'武娘',
decadewuniang_info:'当你使用或打出【杀】时,你可以获得一名其他角色的一张牌。若如此做,其摸一张牌。(若你已发动许身,则关索也摸一张牌)',
jin_zhangchunhua:'晋张春华',
jin_simayi:'晋司马懿',
sp_whlw:"文和乱武",
sp_zlzy:"逐鹿中原",
sp_longzhou:"同舟共济",

View File

@ -12097,7 +12097,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
liuyu:['liuyu','ol_liuyu'],
zhangrang:['zhangrang','ol_zhangrang','junk_zhangrang'],
jikang:['re_jikang','jikang'],
xinxianying:['xinxianying','ol_xinxianying','sp_xinxianying'],
xinxianying:['re_xinxianying','xinxianying','sp_xinxianying','ol_xinxianying'],
},
translate:{
old_huaxiong:'华雄',

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.106.3.1',
'v1.9.106.4',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -647,6 +647,18 @@ window.noname_asset_list=[
'audio/die/simashi.mp3',
'audio/die/xin_zhuran.mp3',
'audio/die/yanghuiyu.mp3',
'audio/die/xin_lingtong.mp3',
'audio/die/xin_liubiao.mp3',
'audio/skill/decadezishou1.mp3',
'audio/skill/decadezishou2.mp3',
'audio/skill/decadezongshi1.mp3',
'audio/skill/decadezongshi2.mp3',
'audio/skill/piaoling1.mp3',
'audio/skill/piaoling2.mp3',
'audio/skill/xuanfeng_xin_lingtong1.mp3',
'audio/skill/xuanfeng_xin_lingtong2.mp3',
'audio/skill/yongjin_xin_lingtong1.mp3',
'audio/skill/yongjin_xin_lingtong2.mp3',
'audio/skill/anguo1.mp3',
'audio/skill/anguo2.mp3',
@ -3498,6 +3510,9 @@ window.noname_asset_list=[
'image/character/mini_zhangchunhua.jpg',
'image/character/mini_jiangwei.jpg',
'image/character/mini_diaochan.jpg',
'image/character/key_hiroto.jpg',
'image/character/xin_lingtong.jpg',
'image/character/xin_liubiao.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -9898,7 +9898,7 @@
config:'选项',
auto:'托管',
unknown:'无名氏',
unknown:'未知',
unknown0:'一号位',
unknown1:'二号位',
unknown2:'三号位',
@ -9913,6 +9913,15 @@
emptyEvent:function(){
event.trigger(event.name);
},
showCharacter:function(){
'step 0'
event.trigger('showCharacterEnd');
'step 1'
event.trigger('showCharacterAfter');
},
removeCharacter:function(){
player.$removeCharacter(event.num);
},
chooseUseTarget:function(){
'step 0'
if(get.is.object(card)&&!event.viewAs) card.isCard=true;
@ -15847,6 +15856,87 @@
},
player:{
//新函数
showCharacter:function(num,log){
var toShow=[];
if((num==0||num==2)&&this.isUnseen(0)) toShow.add(this.name1);
if((num==1||num==2)&&this.isUnseen(1)) toShow.add(this.name2);
if(!toShow.length) return;
lib.element.player.$showCharacter.apply(this,arguments);
var next=game.createEvent('showCharacter',false);
next.player=this;
next.num=num;
next.toShow=toShow;
next._args=arguments;
next.setContent('showCharacter');
return next;
},
$showCharacter:function(num,log){
if(num==0&&!this.isUnseen(0)){
return;
}
if(num==1&&(!this.name2||!this.isUnseen(1))){
return;
}
if(!this.isUnseen(2)){
return;
}
game.addVideo('showCharacter',this,num);
var skills;
switch(num){
case 0:
if(log!==false) game.log(this,'展示了主将','#b'+this.name1);
this.name=this.name1;
skills=lib.character[this.name][3]||[];
this.sex=lib.character[this.name][0];
this.classList.remove('unseen');
break;
case 1:
if(log!==false) game.log(this,'展示了副将','#b'+this.name2);
skills=lib.character[this.name2][3]||[];
if(this.sex=='unknown') this.sex=lib.character[this.name2][0];
if(this.name.indexOf('unknown')==0) this.name=this.name2;
this.classList.remove('unseen2');
break;
case 2:
if(log!==false){
if(this.name2) game.log(this,'展示了主将','#b'+this.name1,'、副将','#b'+this.name2);
else game.log(this,'展示了主将','#b'+this.name1);
}
this.name=this.name1;
var skills=(lib.character[this.name][3]||[]);
if(this.name2) skills=skills.concat(lib.character[this.name2][3]||[]);
this.sex=lib.character[this.name][0];
this.classList.remove('unseen');
this.classList.remove('unseen2');
break;
}
if(!this.isUnseen(2)){
delete this.storage.nohp;
this.node.hp.show();
this.update();
}
game.broadcast(function(player,name,sex,num,group){
player.group=group;
player.name=name;
player.sex=sex;
player.node.identity.classList.remove('guessing');
switch(num){
case 0:player.classList.remove('unseen');break;
case 1:player.classList.remove('unseen2');break;
case 2:player.classList.remove('unseen');player.classList.remove('unseen2');break;
}
if(!player.isUnseen(2)){
delete player.storage.nohp;
player.node.hp.show();
player.update();
}
},this,this.name,this.sex,num,this.group);
for(var i=0;i<skills.length;i++){
this.hiddenSkills.remove(skills[i]);
this.addSkill(skills[i]);
}
this.checkConflict();
},
chooseToGuanxing:function(num){
var next=game.createEvent('chooseToGuanxing');
next.num=num||1;
@ -16245,6 +16335,7 @@
this.node.count.show();
this.node.equips.show();
this.name=character;
this.name1=character;
this.sex=info[0];
this.group=info[1];
this.hp=hp1;
@ -16265,6 +16356,15 @@
// if(name[i]!='s'&&name[i]!='p')
// this.node.name.innerHTML+=name[i]+'<br/>';
// }
if(info[4].contains('hiddenSkill')){
if(!this.hiddenSkills) this.hiddenSkills=[];
this.hiddenSkills.addArray(skills);
skills=[];
this.classList.add('unseen');
this.name='unknown';
//this.node.name_seat=ui.create.div('.name.name_seat','未知',this);
this.storage.nohp=true;
}
if(character2&&lib.character[character2]){
var info2=lib.character[character2];
if(!info2){
@ -16315,7 +16415,13 @@
};
}
this.node.count.classList.add('p2');
skills=skills.concat(info2[3]);
if(info2[4].contains('hiddenSkill')){
if(!this.hiddenSkills) this.hiddenSkills=[];
this.hiddenSkills.addArray(info2[3]);
this.classList.add('unseen2');
this.storage.nohp=true;
}
else skills=skills.concat(info2[3]);
// var name=get.translation(character2);
this.node.name2.innerHTML=get.slimName(character2);
@ -16327,6 +16433,7 @@
// this.node.name2.innerHTML+=name[i]+'<br/>';
// }
}
if(this.storage.nohp) this.node.hp.hide();
if(skill!=false){
for(var i=0;i<skills.length;i++){
this.addSkill(skills[i]);
@ -16904,6 +17011,7 @@
update:function(){
if(_status.video&&arguments.length==0) return;
if(this.hp>=this.maxHp) this.hp=this.maxHp;
if(this.storage.nohp) return;
var hp=this.node.hp;
hp.style.transition='none';
game.broadcast(function(player,hp,maxHp,hujia){
@ -21411,7 +21519,7 @@
case 0:return this.classList.contains('unseen');
case 1:return this.classList.contains('unseen2');
case 2:return this.classList.contains('unseen')||this.classList.contains('unseen2');
default:return this.classList.contains('unseen')&&this.classList.contains('unseen2');
default:return this.classList.contains('unseen')&&(!this.name2||this.classList.contains('unseen2'));
}
},
isUnderControl:function(self,me){
@ -25139,6 +25247,19 @@
}
},
skill:{
_showHiddenCharacter:{
trigger:{player:['changeHp','phaseBeginStart']},
firstDo:true,
forced:true,
popup:false,
priority:25,
filter:function(event,player){
return player.isUnseen(2)&&get.mode()!='guozhan';
},
content:function(){
player.showCharacter(2);
},
},
_kamisha:{
trigger:{source:'damageBegin2'},
//forced:true,
@ -34850,6 +34971,7 @@
if(config.textMenu){
config.textMenu(textMenu,i,config.item[i],config)
}
lib.setScroll(node._link.menu);
}
}
node._link.menu._link=node;
@ -34882,7 +35004,7 @@
input.innerHTML=config.init||'无名玩家';
input.onblur=function(){
input.innerHTML=input.innerHTML.replace(/<br>/g,'');
if(!input.innerHTML){
if(!input.innerHTML||get.is.banWords(input.innerHTML)){
input.innerHTML='无名玩家';
}
game.saveConfig('connect_nickname',input.innerHTML);
@ -35745,7 +35867,7 @@
game.saveConfig('background_music',link);
game.saveConfig('customBackgroundMusic',lib.config.customBackgroundMusic);
nodezz.item[link]=lib.config.customBackgroundMusic[link];
var textMenu=ui.create.div('',lib.config.customBackgroundMusic[link],nodeyy,clickMenuItem);
var textMenu=ui.create.div('',lib.config.customBackgroundMusic[link],nodeyy,clickMenuItem,nodeyy.childElementCount-2);
textMenu._link=link;
nodezz.updatex.call(nodexx,[]);
_status.music_importing=false;
@ -43467,7 +43589,7 @@
if(item.name.indexOf('unknown')==0){
if(item.node&&item.node.name_seat){
node.classList.add('cardbg');
ui.create.div('.avatar_name',node,item.node.name_seat.innerHTML[0]+'号位');
ui.create.div('.avatar_name',node,get.translation(item.name));
}
else{
node.setBackground(item.name1,'character');
@ -47994,7 +48116,54 @@
return 0;
},
is:{
emoji:function(substring){
if(substring){
var reg=new RegExp("[~#^$@%&!?%*]",'g');
if(substring.match(reg)){
return true;
}
for(var i=0;i<substring.length;i++){
var hs=substring.charCodeAt(i);
if(0xd800<=hs&&hs<=0xdbff){
if(substring.length>1){
var ls=substring.charCodeAt(i+1);
var uc=((hs-0xd800)*0x400)+(ls-0xdc00)+0x10000;
if(0x1d000<=uc&&uc<=0x1f77f){
return true;
}
}
}
else if(substring.length>1){
var ls=substring.charCodeAt(i+1);
if(ls==0x20e3){
return true;
}
}
else{
if(0x2100<=hs&&hs<=0x27ff){
return true;
}
else if(0x2B05<=hs&&hs<=0x2b07){
return true;
}
else if(0x2934<=hs&&hs<=0x2935){
return true;
}
else if(0x3297<=hs&&hs<=0x3299){
return true;
}
else if(hs==0xa9||hs==0xae||hs==0x303d||hs==0x3030
||hs==0x2b55||hs==0x2b1c||hs==0x2b1b
||hs==0x2b50){
return true;
}
}
}
}
return false;
},
banWords:function(str){
if(get.is.emoji(str)) return true;
for(var i of window.bannedKeyWords){
if(str.indexOf(i)!=-1) return true;
}
@ -50734,7 +50903,7 @@
}
var buttons=ui.create.div('.buttons.smallzoom.scrollbuttons');
lib.setMousewheel(buttons);
var nameskin=(avatar2?node.name2:node.name);
var nameskin=(avatar2?node.name2:node.name1);
var nameskin2=nameskin;
var gzbool=false;
if(nameskin.indexOf('gz_shibing')==0){
@ -50798,7 +50967,7 @@
}
}
}
var nameskin=(avatar2?node.name2:node.name);
var nameskin=(avatar2?node.name2:node.name1);
var nameskin2=nameskin;
var gzbool=false;
if(nameskin.indexOf('gz_shibing')==0){
@ -50814,13 +50983,13 @@
if(!node.isUnseen(0)){
loadImage();
}
else{
else if(node.name2){
loadImage(true);
}
}
else{
setTimeout(function(){
var nameskin1=node.name;
var nameskin1=node.name1;
var nameskin2=node.name2;
if(nameskin1&&nameskin1.indexOf('gz_')==0){
nameskin1=nameskin1.slice(3);

View File

@ -1,24 +1,25 @@
window.noname_update={
version:'1.9.106.3.1',
update:'1.9.106.3',
version:'1.9.106.4',
update:'1.9.106.3.1',
changeLog:[
'微信小程序·欢乐三国杀',
'铃木央人',
'界凌统、界刘表',
'bug修复',
],
files:[
'card/extra.js',
//'card/extra.js',
//'card/huanlekapai.js',
//'card/sp.js',
//'card/standard.js',
//'card/swd.js',
//'card/mtg.js',
//'card/gujian.js',
'card/guozhan.js',
//'card/guozhan.js',
//'card/gwent.js',
//'card/yunchou.js',
//'card/zhenfa.js',
'card/zhulu.js',
//'character/diy.js',
//'card/zhulu.js',
'character/diy.js',
//'character/extra.js',
//'character/hearth.js',
//'character/gujian.js',
@ -26,14 +27,14 @@ window.noname_update={
//'character/hearth.js',
'character/mobile.js',
//'character/mtg.js',
//'character/old.js',
'character/old.js',
'character/rank.js',
//'character/refresh.js',
'character/refresh.js',
'character/shenhua.js',
'character/sp.js',
//'character/sp.js',
'character/sp2.js',
//'character/tw.js',
'character/standard.js',
//'character/standard.js',
//'character/swd.js',
//'character/xianjian.js',
//'character/xinghuoliaoyuan.js',
@ -42,18 +43,18 @@ window.noname_update={
//'extension/boss/extension.js',
//'layout/default/layout.css',
//'layout/nova/layout.css',
'mode/identity.js',
//'mode/identity.js',
//'mode/doudizhu.js',
//'mode/guozhan.js',
'mode/guozhan.js',
//'mode/chess.js',
//'mode/tafang.js',
//'mode/single.js',
//'mode/stone.js',
//'mode/brawl.js',
//'mode/versus.js',
'mode/versus.js',
//'mode/boss.js',
'game/game.js',
'game/keyWords.js',
//'game/keyWords.js',
//'game/server.js',
//'game/NoSleep.js',
//'game/config.js',

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

View File

@ -7814,114 +7814,105 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
element:{
content:{
chooseJunlingFor:function(){
'step 0'
var list=['junling1','junling2','junling3','junling4','junling5','junling6'];
list=list.randomGets(2).sort();
for(var i=0;i<list.length;i++) list[i]=['军令','',list[i]];
var prompt=event.prompt||'选择一张军令牌';
if(target!=undefined&&!event.prompt){
var str=target==player?'(你)':'';
prompt+=',令'+get.translation(target)+str+'选择是否执行';
}
player.chooseButton([prompt,[list,'vcard']],true).set('ai',function(button){
return get.junlingEffect(_status.event.player,button.link[2],_status.event.getParent().target,[],_status.event.player);
});
'step 1'
event.result={
junling:result.links[0][2],
targets:[],
};
if(result.links[0][2]=='junling1') player.chooseTarget('选择一名角色,做为若该军令被执行,受到伤害的角色',true).set('ai',function(_target){
return get.damageEffect(_target,target,player);
});
'step 2'
if(result.targets.length){
player.line(result.targets,'green');
event.result.targets=result.targets;
}
},
chooseJunlingControl:function(){
'step 0'
var dialog=[];
var str1=source==player?'(你)':'';
var str2=event.targets?'(被指定的角色为'+get.translation(event.targets)+'':'';
if(!event.prompt) dialog.add(get.translation(event.source)+str1+'选择的军令'+str2+'为');
else{
dialog.add(event.prompt);
dialog.add(get.translation(event.source)+str1+'选择的军令'+str2+'为');
}
dialog.add([[event.junling],'vcard']);
var controls=[];
if(event.choiceList){
for(var i=0;i<event.choiceList.length;i++){
dialog.add('<div class="popup text" style="width:calc(100% - 10px);display:inline-block">选项'+get.cnNumber(i+1,true)+''+event.choiceList[i]+'</div>');
controls.push('选项'+get.cnNumber(i+1,true));
}
}
else if(event.controls) controls=event.controls;
else controls=['执行该军令','不执行该军令'];
if(!event.ai) event.ai=function(){return Math.floor(controls.length*Math.random())};
player.chooseControl(controls).set('dialog',dialog).set('ai',event.ai);
'step 1'
event.result={
index:result.index,
control:result.control,
};
},
carryOutJunling:function(){
'step 0'
switch(event.junling){
case 'junling1':{
if(targets[0].isAlive()){
player.line(targets,'green');
targets[0].damage(player);
}
break;
}
case 'junling2':player.draw();event.num=1;break;
case 'junling3':player.loseHp();break;
case 'junling4':player.addTempSkill('junling4_eff');player.addTempSkill('fengyin_vice');player.addTempSkill('fengyin_main');break;
case 'junling5':player.turnOver();player.addTempSkill('junling5_eff');break;
}
'step 1'
if(event.junling=='junling2'&&source!=player&&player.countCards('he')>0){
player.chooseCard('交给'+get.translation(source)+'第'+get.cnNumber(event.num)+'张牌(共两张)','he',true);
event.ing=true;
}
if(event.junling=='junling6'){
var position='',num0=0;
if(player.countCards('h')){position+='h';num0++;}
if(player.countCards('e')){position+='e';num0++;}
player.chooseCard('选择一张手牌和一张装备区内牌(若有),然后弃置其余的牌',position,num0,function(card){
if(ui.selected.cards.length) return get.position(card)!=get.position(ui.selected.cards[0]);
return true;
},true).set('complexCard',true).set('ai',function(card){return get.value(card)});
}
'step 2'
if(event.junling=='junling2'&&source!=player){
if(result.cards.length&&event.ing){
source.gain(result.cards,player,'giveAuto');
}
event.num++;
if(event.num<3){
event.ing=false;
event.goto(1);
}
}
if(event.junling=='junling6'){
var cards=player.getCards('he');
for(var i=0;i<result.cards.length;i++) cards.remove(result.cards[i]);
player.discard(cards);
}
},
showCharacter:function(){
'step 0'
event.trigger('showCharacterEnd');
var list=['junling1','junling2','junling3','junling4','junling5','junling6'];
list=list.randomGets(2).sort();
for(var i=0;i<list.length;i++) list[i]=['军令','',list[i]];
var prompt=event.prompt||'选择一张军令牌';
if(target!=undefined&&!event.prompt){
var str=target==player?'(你)':'';
prompt+=',令'+get.translation(target)+str+'选择是否执行';
}
player.chooseButton([prompt,[list,'vcard']],true).set('ai',function(button){
return get.junlingEffect(_status.event.player,button.link[2],_status.event.getParent().target,[],_status.event.player);
});
'step 1'
event.trigger('showCharacterAfter');
event.result={
junling:result.links[0][2],
targets:[],
};
if(result.links[0][2]=='junling1') player.chooseTarget('选择一名角色,做为若该军令被执行,受到伤害的角色',true).set('ai',function(_target){
return get.damageEffect(_target,target,player);
});
'step 2'
if(result.targets.length){
player.line(result.targets,'green');
event.result.targets=result.targets;
}
},
removeCharacter:function(){
player.$removeCharacter(event.num);
chooseJunlingControl:function(){
'step 0'
var dialog=[];
var str1=source==player?'(你)':'';
var str2=event.targets?'(被指定的角色为'+get.translation(event.targets)+'':'';
if(!event.prompt) dialog.add(get.translation(event.source)+str1+'选择的军令'+str2+'为');
else{
dialog.add(event.prompt);
dialog.add(get.translation(event.source)+str1+'选择的军令'+str2+'为');
}
dialog.add([[event.junling],'vcard']);
var controls=[];
if(event.choiceList){
for(var i=0;i<event.choiceList.length;i++){
dialog.add('<div class="popup text" style="width:calc(100% - 10px);display:inline-block">选项'+get.cnNumber(i+1,true)+''+event.choiceList[i]+'</div>');
controls.push('选项'+get.cnNumber(i+1,true));
}
}
else if(event.controls) controls=event.controls;
else controls=['执行该军令','不执行该军令'];
if(!event.ai) event.ai=function(){return Math.floor(controls.length*Math.random())};
player.chooseControl(controls).set('dialog',dialog).set('ai',event.ai);
'step 1'
event.result={
index:result.index,
control:result.control,
};
},
carryOutJunling:function(){
'step 0'
switch(event.junling){
case 'junling1':{
if(targets[0].isAlive()){
player.line(targets,'green');
targets[0].damage(player);
}
break;
}
case 'junling2':player.draw();event.num=1;break;
case 'junling3':player.loseHp();break;
case 'junling4':player.addTempSkill('junling4_eff');player.addTempSkill('fengyin_vice');player.addTempSkill('fengyin_main');break;
case 'junling5':player.turnOver();player.addTempSkill('junling5_eff');break;
}
'step 1'
if(event.junling=='junling2'&&source!=player&&player.countCards('he')>0){
player.chooseCard('交给'+get.translation(source)+'第'+get.cnNumber(event.num)+'张牌(共两张)','he',true);
event.ing=true;
}
if(event.junling=='junling6'){
var position='',num0=0;
if(player.countCards('h')){position+='h';num0++;}
if(player.countCards('e')){position+='e';num0++;}
player.chooseCard('选择一张手牌和一张装备区内牌(若有),然后弃置其余的牌',position,num0,function(card){
if(ui.selected.cards.length) return get.position(card)!=get.position(ui.selected.cards[0]);
return true;
},true).set('complexCard',true).set('ai',function(card){return get.value(card)});
}
'step 2'
if(event.junling=='junling2'&&source!=player){
if(result.cards.length&&event.ing){
source.gain(result.cards,player,'giveAuto');
}
event.num++;
if(event.num<3){
event.ing=false;
event.goto(1);
}
}
if(event.junling=='junling6'){
var cards=player.getCards('he');
for(var i=0;i<result.cards.length;i++) cards.remove(result.cards[i]);
player.discard(cards);
}
},
doubleDraw:function(){
if(!player.hasMark('yinyang_skill')) player.addMark('yinyang_skill',1);
@ -8289,20 +8280,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
hasViceCharacter:function(){
return this.name2.indexOf('gz_shibing')!=0;
},
showCharacter:function(num,log){
var toShow=[];
if((num==0||num==2)&&this.isUnseen(0)) toShow.add(this.name1);
if((num==1||num==2)&&this.isUnseen(1)) toShow.add(this.name2);
if(!toShow.length) return;
lib.element.player.$showCharacter.apply(this,arguments);
var next=game.createEvent('showCharacter',false);
next.player=this;
next.num=num;
next.toShow=toShow;
next._args=arguments;
next.setContent('showCharacter');
return next;
},
$showCharacter:function(num,log){
if(num==0&&!this.isUnseen(0)){
return;

View File

@ -353,7 +353,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
else if(_status.mode=='2v2'||_status.mode=='3v3'){
_status.first_less=true;
var firstChoose=game.players.randomGet();
var firstChoose=(_status.firstAct||game.players.randomGet());
if(firstChoose.next.side==firstChoose.side){
firstChoose=firstChoose.next;
}
@ -3035,11 +3035,41 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
var next=game.createEvent('chooseCharacterOL',false);
next.setContent(function(){
'step 0'
game.broadcastAll(function(ref,bool,bool2){
var ref=game.players[0];
var bool=Math.random()<0.5;
var bool2=Math.random()<0.5;
ref.side=bool;
ref.next.side=bool2;
ref.next.next.side=!bool;
ref.previous.side=!bool2;
var firstChoose=game.players.randomGet();
if(firstChoose.next.side==firstChoose.side){
firstChoose=firstChoose.next;
}
_status.firstAct=firstChoose;
for(var i=0;i<4;i++){
firstChoose.node.name.innerHTML=get.verticalStr(get.cnNumber(i+1,true)+'号位');
firstChoose=firstChoose.next;
}
for(var i=0;i<game.players.length;i++){
if(game.players[i].side==game.me.side){
game.players[i].node.identity.firstChild.innerHTML='友';
}
else{
game.players[i].node.identity.firstChild.innerHTML='敌';
}
game.players[i].node.identity.dataset.color=game.players[i].side+'zhu';
}
ui.arena.classList.add('choose-character');
game.broadcast(function(ref,bool,bool2,firstChoose){
ref.side=bool;
ref.next.side=bool2;
ref.next.next.side=!bool;
ref.previous.side=!bool2;
for(var i=0;i<4;i++){
firstChoose.node.name.innerHTML=get.verticalStr(get.cnNumber(i+1,true)+'号位');
firstChoose=firstChoose.next;
}
for(var i=0;i<game.players.length;i++){
if(game.players[i].side==game.me.side){
game.players[i].node.identity.firstChild.innerHTML='友';
@ -3050,7 +3080,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
game.players[i].node.identity.dataset.color=game.players[i].side+'zhu';
}
ui.arena.classList.add('choose-character');
},game.players[0],Math.random()<0.5,Math.random()<0.5);
},ref,bool,bool2,_status.firstAct);
_status.onreconnect=[function(){
var players=game.players.concat(game.dead);
for(var i=0;i<players.length;i++){