diff --git a/card/standard.js b/card/standard.js
index 86cf56a15..47e574338 100644
--- a/card/standard.js
+++ b/card/standard.js
@@ -910,10 +910,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
if(typeof event.baseDamage!='number') event.baseDamage=1;
if(typeof event.extraDamage!='number'){
event.extraDamage=0;
- if(!event.shaReq) event.shaReq={};
- if(typeof event.shaReq[player.playerid]!='number') event.shaReq[player.playerid]=1;
- if(typeof event.shaReq[target.playerid]!='number') event.shaReq[target.playerid]=1;
}
+ if(!event.shaReq) event.shaReq={};
+ if(typeof event.shaReq[player.playerid]!='number') event.shaReq[player.playerid]=1;
+ if(typeof event.shaReq[target.playerid]!='number') event.shaReq[target.playerid]=1;
event.playerCards=[];
event.targetCards=[];
"step 1"
diff --git a/character/diy.js b/character/diy.js
index 4ad716918..424041afb 100755
--- a/character/diy.js
+++ b/character/diy.js
@@ -56,6 +56,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_shiori:['female','key','2/3',['shiori_huijuan']],
key_kaori:['female','key','3/4',['kaori_siyuan']],
key_akiko:['female','key',3,['akiko_dongcha']],
+ key_abyusa:['female','key',3,['abyusa_jueqing','abyusa_dunying']],
key_kud:['female','key',3,['kud_qiaoshou','kud_buhui']],
key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']],
@@ -150,7 +151,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"ns_huangchengyan","ns_sunchensunjun","ns_yuanxi","ns_caoshuang"],
diy_tieba:["diy_wenyang","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","ns_zhangwei"],
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"],
+ 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"],
diy_yongjian:["ns_chendao","yj_caoang"],
},
},
@@ -166,6 +167,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_tianyu:'字国让,渔阳雍奴(今天津市武清区东北)人。三国时期曹魏将领。初从刘备,因母亲年老回乡,后跟随公孙瓒,公孙瓒败亡,劝说鲜于辅加入曹操。曹操攻略河北时,田豫正式得到曹操任用,历任颖阴、郎陵令、弋阳太守等。',
},
characterTitle:{
+ key_abyusa:'#rAngel Beats!',
key_akiko:'#bKanon',
key_kaori:'#bKanon',
key_shiori:'#bKanon',
@@ -317,6 +319,49 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_lucia:['key_shizuru'],
},
skill:{
+ abyusa_jueqing:{
+ audio:'jueqing',
+ trigger:{source:'damageBegin2'},
+ skillAnimation:true,
+ animationColor:'water',
+ filter:function(event,player){
+ return player!=event.player&&!player.hasSkill('abyusa_jueqing_1st');
+ },
+ prompt2:function(event,player){
+ var num=get.cnNumber(2*event.num);
+ return '防止即将令其造成的伤害,改为令其失去'+num+'点体力并对自己造成'+num+'点伤害';
+ },
+ check:function(event,player){
+ return player.hp>event.num*2&&event.player.hp>event.num&&event.player.hp<=2*event.num&&get.attitude(player,event.player)<0;
+ },
+ logTarget:'player',
+ content:function(){
+ 'step 0'
+ trigger.cancel();
+ trigger.player.loseHp(2*trigger.num);
+ player.damage(2*trigger.num);
+ 'step 1'
+ player.addSkill('abyusa_jueqing_1st');
+ },
+ derivation:'abyusa_jueqing_rewrite',
+ },
+ abyusa_jueqing_1st:{
+ trigger:{source:'damageBefore'},
+ forced:true,
+ charlotte:true,
+ audio:'jueqing',
+ filter:function(event,player){
+ return player.hasSkill('abyusa_jueqing');
+ },
+ check:function(){return false;},
+ content:function(){
+ trigger.cancel();
+ trigger.player.loseHp(trigger.num);
+ },
+ ai:{
+ jueqing:true
+ }
+ },
akiko_dongcha:{
trigger:{global:'gameDrawAfter'},
forced:true,
@@ -341,6 +386,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
},
+ abyusa_dunying:{
+ trigger:{player:['phaseZhunbeiBegin','phaseJieshuBegin']},
+ forced:true,
+ filter:function(event,player){
+ return player.isDamaged();
+ },
+ content:function(){
+ player.draw(player.getDamagedHp());
+ },
+ mod:{
+ globalTo:function(from,to,num){
+ return num+to.getDamagedHp();
+ },
+ },
+ },
kaori_siyuan:{
enable:'phaseUse',
filter:function(event,player){
@@ -10231,6 +10291,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_shiori:'美坂栞',
key_kaori:'美坂香里',
key_akiko:'水濑秋子',
+ key_abyusa:'游佐',
lucia_duqu:'毒躯',
lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。
②当你因【毒】失去体力时,你改为回复等量的体力。
③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。',
lucia_zhenren:'振刃',
@@ -10466,6 +10527,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
akiko_dongcha:'洞察',
akiko_dongcha_info_identity:'锁定技,其他角色的手牌对你可见。游戏开始时,你令其他角色的身份牌对你可见。',
akiko_dongcha_info:'锁定技,其他角色的手牌对你可见。',
+ abyusa_jueqing:'绝情',
+ abyusa_jueqing_info:'当你对其他角色造成伤害时,你可以防止此伤害。若如此做,你令其失去2X点体力,修改〖绝情〗并对自己造成2X点伤害。',
+ abyusa_jueqing_1st:'绝情',
+ abyusa_jueqing_rewrite:'绝情·改',
+ abyusa_jueqing_rewrite_info:'锁定技,你即将造成的伤害均视为失去体力。',
+ abyusa_dunying:'遁影',
+ abyusa_dunying_info:'锁定技,其他角色计算与你的距离时+X。准备阶段和结束阶段,你摸X张牌(X为你已损失的体力值)。',
key_kud:'库特莉亚芙卡',
kud_qiaoshou:'巧手',
diff --git a/character/mobile.js b/character/mobile.js
index 00c69cd8b..502caf669 100644
--- a/character/mobile.js
+++ b/character/mobile.js
@@ -6,13 +6,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true,
characterSort:{
mobile:{
- mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei"],
+ mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong"],
mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning"],
- mobile_others:["re_jikang","old_bulianshi","old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","xin_yuanshao","re_liushan","xin_xiahoudun","re_sp_zhugeliang","re_heqi","re_guanqiujian","re_pangtong","old_liuzan","xin_chengpu","re_sunjian","re_xusheng","re_dongzhuo"],
mobile_sunben:["re_sunben"],
+ mobile_standard:["xin_xiahoudun"],
+ mobile_shenhua:["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"],
+ mobile_sp:["old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","re_heqi","re_pangtong","old_liuzan","xin_chengpu"],
+ mobile_trashbin:['old_jiakui'],
},
},
character:{
+ old_jiakui:['male','wei',4,['tongqu','xinwanlan']],
+ xin_caozhang:['male','wei',4,['rejiangchi']],
+ xin_liaohua:['male','shu',4,['redangxian','refuli']],
+ furong:['male','shu',4,['xuewei','liechi']],
re_dongzhuo:['male','qun',8,['rejiuchi','roulin','benghuai','baonue'],['zhu']],
re_xusheng:['male','wu',4,['repojun']],
sp_sufei:['male','qun',4,['zhengjian','gaoyuan']],
@@ -67,6 +75,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_sunben:['male','wu',4,['jiang','rehunzi','zhiba'],['zhu']],
},
characterIntro:{
+ furong:'傅肜(róng)(?-222年),义阳(今湖北枣阳)人,三国时蜀汉将领。刘备攻伐吴国时,傅肜为别督。后刘备被陆逊击败,傅肜率部断后,奋战至死。死前怒斥道:“吴狗!何有汉将军降者!”',
zhengxuan:'郑玄(127年-200年),字康成。北海郡高密县(今山东省高密市)人。东汉末年儒家学者、经学大师。郑玄曾入太学攻《京氏易》、《公羊春秋》及《三统历》、《九章算术》,又从张恭祖学《古文尚书》、《周礼》和《左传》等,最后从马融学古文经。游学归里之后,复客耕东莱,聚徒授课,弟子达数千人,家贫好学,终为大儒。党锢之祸起,遭禁锢,杜门注疏,潜心著述。晚年守节不仕,却遭逼迫从军,最终病逝于元城,年七十四。郑玄治学以古文经学为主,兼采今文经学。他遍注儒家经典,以毕生精力整理古代文化遗产,使经学进入了一个“小统一时代”。著有《天文七政论》、《中侯》等书,共百万余言,世称“郑学”,为汉代经学的集大成者。唐贞观年间,列郑玄于二十二“先师”之列,配享孔庙。宋代时被追封为高密伯。后人建有郑公祠以纪念。',
dengzhi:'邓芝(178年-251年),字伯苗。义阳郡新野县(今河南新野)人。东汉名将邓禹之后,三国时期蜀汉重臣。邓芝早年曾被预言能位至大将,后被刘备任为郫令,升迁为广汉太守。因任官公廉且有治绩,被征入朝为尚书。刘备逝世后,奉命出使吴国,成功修复两国关系,并深为吴大帝孙权所赏识。建兴六年(228年),丞相诸葛亮策划北伐,命邓芝与大将赵云佯攻郿城,以吸引魏国曹真军主力。建兴十二年(234年),迁前军师、前将军,领兖州刺史,封阳武亭侯,不久督领江州。延熙六年(243年),迁车骑将军,后授假节。又率军平定涪陵叛乱。延熙十四年(251年),邓芝病逝。邓芝性格正直、简单,不刻意修饰情绪。他为将二十多年,赏罚明断,体恤士卒。身上的衣食取自官府,从未经营过私产,妻儿甚至还有忍饥挨饿之时,死时家中也没有多余财物。',
yangyi:'杨仪(?-235年),字威公,襄阳(今湖北襄阳)人,三国时期蜀汉官员。最初为荆州刺史傅群的主簿,后投奔关羽,任为功曹。关羽遣其至成都,大受刘备赞赏,擢为尚书。因与尚书令刘巴不和,调为弘农太守。建兴三年(225年)任丞相参军,此后一直跟随诸葛亮战斗。亮卒,他部署安全退军。诸葛亮在生前定蒋琬继己任,杨仪仅拜中军师。建兴十三年(235年),因多出怨言,被削职流放至汉嘉郡。但杨仪仍不自省,又上书诽谤,言辞激烈,最后下狱,自杀身亡。',
@@ -286,6 +295,165 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterFilter:{},
skill:{
+ //芙蓉,手杀廖化,手杀曹彰
+ rejiangchi:{
+ audio:2,
+ trigger:{
+ player:"phaseUseBegin",
+ },
+ direct:true,
+ content:function(){
+ "step 0"
+ var list=['弃牌','摸牌','取消'];
+ if(!player.countCards('he')) list.remove('弃牌');
+ player.chooseControl(list,function(){
+ var player=_status.event.player;
+ if(list.contains('弃牌')){
+ if(player.countCards('h')>3&&player.countCards('h','sha')>1){
+ return '弃牌';
+ }
+ if(player.countCards('h','sha')>2){
+ return '弃牌';
+ }
+ }
+ if(!player.countCards('h','sha')){
+ return '摸牌';
+ }
+ return 'cancel2';
+ }).set('prompt',get.prompt2('rejiangchi'));
+ "step 1"
+ if(result.control=='弃牌'){
+ player.chooseToDiscard(true,'he');
+ player.addTempSkill('jiangchi2','phaseUseEnd');
+ player.logSkill('rejiangchi');
+ }
+ else if(result.control=='摸牌'){
+ player.draw();
+ player.addTempSkill('rejiangchi3','phaseUseEnd');
+ player.logSkill('rejiangchi');
+ }
+ },
+ },
+ rejiangchi3:{
+ mod:{
+ cardEnabled:function(card){
+ if(card.name=='sha') return false;
+ },
+ },
+ },
+ refuli:{
+ skillAnimation:true,
+ animationColor:'soil',
+ audio:2,
+ unique:true,
+ limited:true,
+ enable:'chooseToUse',
+ mark:true,
+ filter:function(event,player){
+ if(event.type!='dying') return false;
+ if(player!=event.dying) return false;
+ return true;
+ },
+ content:function(){
+ "step 0"
+ player.awakenSkill('refuli');
+ event.num=game.countGroup();
+ if(event.num>player.hp) player.recover(event.num-player.hp);
+ "step 1"
+ if(player.isMaxHp(true)) player.turnOver();
+ },
+ ai:{
+ save:true,
+ skillTagFilter:function(player){
+ return player.hp<=0;
+ },
+ result:{
+ player:10
+ },
+ threaten:function(player,target){
+ if(!target.storage.refuli) return 0.9;
+ }
+ },
+ },
+ redangxian:{
+ trigger:{player:'phaseBegin'},
+ forced:true,
+ audio:'dangxian',
+ audioname:['guansuo','xin_liaohua'],
+ content:function(){
+ 'step 0'
+ var card=get.discardPile(function(card){
+ return card.name=='sha';
+ });
+ if(card) player.gain(card,'gain2');
+ 'step 1'
+ game.updateRoundNumber();
+ player.phaseUse();
+ 'step 2'
+ var stat=player.getStat();
+ stat.card={};
+ for(var i in stat.skill){
+ var bool=false;
+ var info=lib.skill[i];
+ if(info.enable!=undefined){
+ if(typeof info.enable=='string'&&info.enable=='phaseUse') bool=true;
+ else if(typeof info.enable=='object'&&info.enable.contains('phaseUse')) bool=true;
+ }
+ if(bool) stat.skill[i]=0;
+ }
+ },
+ },
+ xuewei:{
+ audio:2,
+ trigger:{player:'phaseZhunbeiBegin'},
+ direct:true,
+ content:function(){
+ 'step 0'
+ player.chooseTarget(get.prompt2('xuewei'),lib.filter.notMe).set('ai',function(target){
+ var player=_status.event.player;
+ if(player==get.zhu(player)&&player.hp<=2) return 0;
+ return get.attitude(player,target)-4;
+ });
+ 'step 1'
+ if(result.bool){
+ var target=result.targets[0];
+ player.logSkill('xuewei');
+ player.addTempSkill('xuewei2',{player:'phaseBegin'});
+ player.storage.xuewei2=target;
+ }
+ },
+ ai:{
+ threaten:1.05,
+ },
+ },
+ xuewei2:{
+ audio:'xuewei',
+ forced:true,
+ onremove:true,
+ trigger:{global:'damageBegin4'},
+ charlotte:true,
+ filter:function(event,player){
+ return event.player==player.storage.xuewei2;
+ },
+ logTarget:'player',
+ content:function(){
+ player.removeSkill('xuewei2');
+ trigger.cancel();
+ player.damage(trigger.num,trigger.source||'nosource');
+ if(trigger.source&&trigger.source.isIn()) trigger.source.damage(trigger.num,trigger.nature,player);
+ },
+ },
+ liechi:{
+ trigger:{player:'dying'},
+ forced:true,
+ filter:function(event,player){
+ return event.getParent().name=='damage'&&event.source&&event.source.countCards('he');
+ },
+ audio:2,
+ content:function(){
+ trigger.source.chooseToDiscard('he',true);
+ },
+ },
rejiuchi:{
group:['jiuchi'],
audioname:['re_dongzhuo'],
@@ -309,14 +477,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tongqu:{
audio:'zhongzuo',
trigger:{
- global:['gameDrawAfter','damageEnd','phaseDrawBegin2'],
- player:['enterGame','phaseUseBegin'],
+ global:['gameDrawAfter','dying','phaseDrawBegin2'],
+ player:['enterGame','phaseZhunbeiBegin'],
},
direct:true,
filter:function(event,player){
- if(event.name=='phaseDraw') return !event.numFixed&&event.player.hasMark('tongqu');
- if(event.name=='damage') return event.player.hasMark('tongqu');
- if(event.name=='phaseUse') return game.hasPlayer(function(current){
+ if(event.name=='phaseDraw') return event.player.hasMark('tongqu');
+ if(event.name=='dying') return event.player.hasMark('tongqu');
+ if(event.name=='phaseZhunbei') return game.hasPlayer(function(current){
return !current.hasMark('tongqu');
});
return !player.hasMark('tongqu');
@@ -325,20 +493,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
if(trigger.name=='phaseDraw'){
player.logSkill('tongqu',trigger.player);
- trigger.num++;
+ trigger.player.draw('nodelay');
trigger.player.addTempSkill('tongqu2','phaseDrawAfter');
event.finish();
}
- else if(trigger.name=='damage'){
+ else if(trigger.name=='dying'){
player.logSkill('tongqu',trigger.player);
trigger.player.removeMark('tongqu',1);
event.finish();
}
- else if(trigger.name=='phaseUse'){
+ else if(trigger.name=='phaseZhunbei'){
player.chooseTarget(get.prompt2('tongqu'),function(card,player,target){
return !target.hasMark('tongqu');
}).set('ai',function(target){
- return get.attitude(_status.event.player,target)
+ if(_status.event.player.hp<3) return 0;
+ return get.attitude(_status.event.player,target);
});
}
else{
@@ -349,12 +518,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.bool){
var target=result.targets[0];
+ player.loseHp();
player.logSkill('tongqu',target);
target.addMark('tongqu',1);
}
},
marktext:'渠',
- intro:{content:'mark'},
+ intro:{content:'mark',name2:'渠'},
},
tongqu2:{
trigger:{player:'phaseDrawEnd'},
@@ -405,7 +575,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(card.name=='du') return -6*att;
if(att>0){
if(get.position(card)=='h'&&target.getUseValue(card)>player.getUseValue(card)) return 4*att;
- if(get.value(card,target)>get.value(card,player)) return 2*att;
+ if(target.hasUseTarget(card)) return 2*att;
return 1.2*att;
}
return 0;
@@ -413,8 +583,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
});
'step 1'
if(result.bool){
- if(result.targets.length) result.targets[0].gain(result.cards,player,'giveAuto');
- else player.discard(result.cards);
+ if(result.targets.length){
+ event.target=result.targets[0];
+ event.target.gain(result.cards,player,'giveAuto');
+ event.card=result.cards[0];
+ }
+ else{
+ player.discard(result.cards);
+ event.finish();
+ }
+ }
+ 'step 2'
+ if(target.getCards('h').contains(card)&&get.type(card)=='equip'){
+ target.chooseUseTarget(card,true);
}
},
},
@@ -422,9 +603,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'wanlan',
trigger:{global:'damageBegin4'},
filter:function(event,player){
- return event.player.hp<=event.num&&player.countCards('he',function(card){
- return lib.filter.cardDiscardable(card,player)&&get.type(card)!='basic';
- })>=1;
+ return event.player.hp<=event.num&&player.countCards('e')>=1;
},
logTarget:'player',
check:function(event,player){
@@ -442,9 +621,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return !player.hasUnknown();
},
content:function(){
- player.discard(player.getCards('he',function(card){
- return lib.filter.cardDiscardable(card,player)&&get.type(card)!='basic';
- }));
+ player.discard(player.getCards('e'));
trigger.cancel();
},
},
@@ -2604,7 +2781,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){},
},
rexushen:{
- derivation:['new_rewusheng','xindangxian'],
+ derivation:['new_rewusheng','redangxian'],
audio:'xinfu_xushen',
limited:true,
enable:'phaseUse',
@@ -2679,8 +2856,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool){
player.line(trigger.source,'fire');
trigger.source.addSkillLog('new_rewusheng');
- trigger.source.addSkillLog('xindangxian');
- trigger.source.storage.xinfuli=true;
+ trigger.source.addSkillLog('redangxian');
}
},
},
@@ -4545,9 +4721,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tunchu:{
audio:2,
trigger:{player:'phaseDrawBegin2'},
- check:function(event,player){
- return player.countCards('h')-player.countCards('h',{type:'equip'})<=player.hp;
- },
+ frequent:true,
filter:function(event,player){
if(event.numFixed||player.storage.tunchu&&player.storage.tunchu.length) return false;
return true;
@@ -5566,7 +5740,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
meiyong:'姝勇',
meiyong_info:'当你使用或打出【杀】时,你可以获得一名其他角色的一张牌,然后其摸一张牌。',
rexushen:'许身',
- rexushen_info:'限定技,出牌阶段,你可以失去X点体力(X为场上男性角色的数量)。若你以此法进入了濒死状态,则当你因一名角色而脱离此濒死状态后,你可以令其获得技能〖武圣〗和〖当先〗(其以此法获得的〖当先〗结算时视为其发动过〖伏枥〗)。',
+ rexushen_info:'限定技,出牌阶段,你可以失去X点体力(X为场上男性角色的数量)。若你以此法进入了濒死状态,则当你因一名角色而脱离此濒死状态后,你可以令其获得技能〖武圣〗和〖当先〗。',
rezhennan:'镇南',
rezhennan_info:'当你成为其他角色使用的牌的目标后,若此牌的目标数大于该角色的体力值,则你可以弃置一张牌并对其造成1点伤害。',
@@ -5701,13 +5875,32 @@ game.import('character',function(lib,game,ui,get,ai,_status){
gaoyuan:'告援',
gaoyuan_info:'当你成为【杀】的目标时,你可弃置一张牌将此【杀】转移给一名有“诤”且不是此【杀】使用者的其他角色。',
tongqu:'通渠',
- tongqu_info:'游戏开始时,你获得一个“渠”。出牌阶段开始时,你可令一名没有“渠”的角色获得一个“渠”。有“渠”的角色摸牌阶段,其多摸一张牌,然后其将一张牌交给一名有“渠”的其他角色或弃置一张牌。有“渠”的角色受到伤害后,其弃置“渠”',
+ tongqu_info:'游戏开始时,你拥有一个“渠”标记。准备阶段,你可以失去1点体力令一名没有“渠”标记的角色获得“渠”标记。有“渠”的角色摸牌阶段额外摸一张牌,然后将一张牌交给其他有“渠”的角色或弃置。若以此法给出的是装备牌则使用之。当有“渠”的角色进入濒死状态时,移除其“渠”标记。',
xinwanlan:'挽澜',
- xinwanlan_info:'当有角色受到伤害时,若伤害点数大于其体力值,则你可以弃置所有非基本牌(至少两张)并防止此伤害。',
+ xinwanlan_info:'当一名角色受到会令其进入濒死状态的伤害时,你可以弃置装备区中的所有牌(至少一张) 防止此伤害。',
re_xusheng:'手杀徐盛',
re_dongzhuo:'手杀董卓',
rejiuchi:'酒池',
rejiuchi_info:'你可以将一张黑桃手牌当做【酒】使用。锁定技,当你于回合内使用带有【酒】效果的【杀】造成伤害时,你令你的【崩坏】失效直到回合结束。',
+ furong:'傅肜',
+ xuewei:'血卫',
+ xuewei_info:'准备阶段,你可以选择一名其他角色(仅自己可见)。若如此做,直到你的下回合开始前,当其第一次受到伤害时,你防止此伤害,改为由你受到等量的伤害并对伤害来源造成等量同属性的伤害。',
+ liechi:'烈斥',
+ liechi_info:'锁定技,当你进入濒死状态时,伤害来源弃置一张牌。',
+ xin_liaohua:'手杀廖化',
+ redangxian:'当先',
+ redangxian_info:'锁定技,回合开始时,你从弃牌堆中获得一张【杀】并进行一个额外的准备阶段。',
+ refuli:'伏枥',
+ refuli_info:'限定技,当你处于濒死状态时,你可以将体力值回复至X点(X为势力数)。然后若你的体力值为全场唯一最多,你翻面。',
+ xin_caozhang:'手杀曹彰',
+ "rejiangchi":"将驰",
+ "rejiangchi_info":"出牌阶段开始时,你可以选择一项:1、摸一张牌,若如此做,你本阶段内不能使用【杀】。 2、弃置一张牌,若如此做,此阶段你使用【杀】无距离限制且你可以额外使用一张【杀。",
+ mobile_standard:'手杀异构·标准包',
+ mobile_shenhua:'手杀异构·神话再临',
+ mobile_yijiang1:'手杀异构·一将成名',
+ mobile_sp:'手杀异构·SP',
+ mobile_trashbin:'通厕所的',
+ old_jiakui:'贾逵重制',
}
};
});
diff --git a/character/old.js b/character/old.js
index 232e5fd57..670a93343 100755
--- a/character/old.js
+++ b/character/old.js
@@ -1,802 +1,800 @@
-'use strict';
-game.import('character',function(lib,game,ui,get,ai,_status){
- return {
- name:'old',
- characterSort:{
- old:{
- old_shenhua:["yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","xiaoqiao","pangde"],
- old_refresh:["old_zhangfei","old_huatuo","old_zhaoyun","ol_huaxiong"],
- old_yijiang1:["masu","xushu","yujin","xin_yujin","old_xusheng","old_lingtong"],
- old_yijiang2:["old_zhonghui"],
- old_yijiang3:["liru","old_zhuran","ol_manchong","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_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","old_jiakui"],
- },
- },
- character:{
- old_jiakui:['male','wei',3,['tongqu','xinwanlan']],
- pangde:['male','qun',4,['mashu','mengjin']],
- ol_huaxiong:["male","qun",6,["new_reyaowu"]],
- old_wangyun:['male','qun',4,['wylianji','moucheng']],
- xiaoqiao:['female','wu',3,['tianxiang','hongyan']],
- weiyan:['male','shu',4,['kuanggu']],
- xiahouyuan:['male','wei',4,['shensu']],
- ol_maliang:['male','shu',3,['zishu','yingyuan']],
- old_huangfusong:['male','qun',4,['fenyue']],
- old_majun:["male","wei",3,["xinfu_jingxie1","xinfu_qiaosi"],[]],
- old_zhangxingcai:['female','shu',3,['oldshenxian','qiangwu']],
- old_fuhuanghou:['female','qun',3,['oldzhuikong','oldqiuyuan']],
- old_caochong:['male','wei',3,['oldrenxin','oldchengxiang']],
- yuji:['male','qun',3,['old_guhuo'],['forbidai']],
- zhangjiao:['male','qun',3,['leiji','guidao','huangtian'],['zhu']],
- old_zhangfei:['male','shu',4,['paoxiao','new_tishen']],
- old_zhaoyun:['male','shu',4,['longdan','new_yajiao']],
- old_huatuo:['male','qun',3,['jijiu','chulao']],
- jsp_caoren:['male','wei',4,['kuiwei','yanzheng']],
- old_caochun:['male','wei',4,['shanjia']],
- masu:['male','shu',3,['xinzhan','huilei']],
- xushu:['male','shu',3,['wuyan','jujian']],
- liru:['male','qun',3,['juece','mieji','fencheng']],
- yujin:['male','wei',4,['yizhong']],
- xin_yujin:['male','wei',4,['jieyue']],
- //lusu:['male','wu',3,['haoshi','dimeng']],
- //yuanshao:['male','qun',4,['luanji','xueyi'],['zhu']],
- old_zhonghui:['male','wei',3,['zzhenggong','zquanji','zbaijiang']],
- old_xusheng:['male','wu',4,['pojun']],
- old_zhuran:['male','wu',4,['olddanshou']],
- old_lingtong:['male','wu',4,['oldxuanfeng']],
- old_caoxiu:['male','wei',4,['taoxi']],
- old_caozhen:['male','wei',4,['sidi']],
- old_quancong:['male','wu',4,['zhenshan']],
- old_lingju:['female','qun',3,['jieyuan','fenxin_old']],
- old_maliang:['male','shu',3,['xiemu','naman']],
- old_chenqun:['male','wei',3,['dingpin','oldfaen']],
- old_zhuhuan:['male','wu',4,['youdi']],
- old_zhuzhi:['male','wu',4,['anguo']],
-
- old_machao:['male','qun',4,['zhuiji','oldcihuai']],
- old_zhugezhan:["male","shu",3,["old_zuilun","old_fuyin"]],
- zhangliang:["male","qun",4,["old_jijun","old_fangtong"]],
- ol_zhangrang:['male','qun',3,['xintaoluan']],
- ol_guansuo:['male','shu',4,['zhengnan','xiefang']],
- ol_manchong:['male','wei',3,['yuce','junxing']],
- ol_liuyu:['male','qun',2,['zongzuo','zhige']],
- old_guanqiujian:["male","wei",4,["drlt_zhenrong","drlt_hongju"],[]],
- },
- characterFilter:{
- old_lingju:function(mode){
- return mode=='identity';
- }
- },
- skill:{
- oldshenxian:{
- audio:'shenxian',
- inherit:'shenxian',
- },
- "old_guhuo":{
- group:["old_guhuo_guess","old_guhuo_respond","old_guhuo_wuxie"],
- enable:"chooseToUse",
- filter:function (event,player){
- if(!player.countCards('h')) return false;
- var list=['sha','tao','shan','jiu','taoyuan','wugu','juedou','huogong','jiedao','tiesuo','guohe','shunshou','wuzhong','wanjian','nanman'];
- if(get.mode()=='guozhan'){
- list=list.concat(['xietianzi','shuiyanqijunx','lulitongxin','lianjunshengyan','chiling','diaohulishan','yuanjiao','huoshaolianying']);
- }
- for(var i=0;i0;
- });
- event.guessers.sort(lib.sort.seat);
- event.ally=[];
- event.betray=[];
- 'step 1'
- if(event.guessers.length==0) event.goto(3);
- else{
- event.guessers[0].chooseControl('质疑','不质疑').set('prompt',event.prompt).set('ai',function(){
- if(get.attitude(event.guessers[0],player)>0) return '不质疑';
- return Math.random()<0.5?'不质疑':'质疑';
- });
- }
- 'step 2'
- if(!result.control) result.control='不质疑';
- event.guessers[0].chat(result.control);
- game.delay();
- if(result.control=='不质疑'){
- game.log(event.guessers[0],'#g不质疑');
- event.ally.push(event.guessers[0]);
- }else{
- game.log(event.guessers[0],'#y质疑');
- event.betray.push(event.guessers[0]);
- }
- event.guessers.remove(event.guessers[0]);
- if(event.guessers.length) event.goto(1);
- 'step 3'
- player.showCards(trigger.cards);
- if(event.betray.length){
- if(trigger.card.name==trigger.cards[0].name){
- if(get.suit(trigger.cards[0])!='heart'){
- game.log(player,'使用的','#y'+get.translation(trigger.card.name),'作废了');
- game.cardsDiscard(trigger.cards);
- trigger.cancel();
- }
- for(var i=0;i0;
- });
- event.guessers.sort(lib.sort.seat);
- event.ally=[];
- event.betray=[];
- }
- else event.finish();
- 'step 2'
- if(event.guessers.length==0) event.goto(4);
- else{
- event.guessers[0].chooseControl('质疑','不质疑').set('prompt',event.prompt).set('ai',function(){
- if(get.attitude(event.guessers[0],player)>0) return '不质疑';
- return Math.random()<0.5?'不质疑':'质疑';
- });
- }
- 'step 3'
- if(!result.control) result.control='不质疑';
- event.guessers[0].chat(result.control);
- game.delay();
- if(result.control=='不质疑'){
- game.log(event.guessers[0],'#g不质疑');
- event.ally.push(event.guessers[0]);
- }else{
- game.log(event.guessers[0],'#y质疑');
- event.betray.push(event.guessers[0]);
- }
- event.guessers.remove(event.guessers[0]);
- if(event.guessers.length) event.goto(2);
- 'step 4'
- var bool=true;
- player.showCards(event.card);
- if(event.betray.length){
- if(event.name==event.card.name){
- if(get.suit(event.card)!='heart'){
- game.log(player,'使用的','#y'+get.translation(event.name),'作废了');
- game.cardsDiscard(event.card);
- bool=false;
- }
- for(var i=0;i0;
- },
- viewAs:{
- name:"wuxie",
- },
- check:function(card){
- if(card.name=='wuxie') return 1000;
- return 0;
- },
- prompt:"将一张手牌当无懈可击使用",
- threaten:1.2,
- },
- old_zuilun:{
- audio:'xinfu_zuilun',
- subSkill:{
- e:{},
- h:{},
- },
- enable:"phaseUse",
- usable:2,
- filterTarget:function (card,player,target){
- if(player==target) return false;
- var pos='he';
- if(player.hasSkill('old_zuilun_h')) pos='e';
- if(player.hasSkill('old_zuilun_e')) pos='h';
- return target.countGainableCards(player,pos)>0;
- },
- content:function (){
- 'step 0'
- var pos='he';
- if(player.hasSkill('old_zuilun_h')) pos='e';
- if(player.hasSkill('old_zuilun_e')) pos='h';
- player.gainPlayerCard(target,pos,true);
- 'step 1'
- if(result.bool&&result.cards&&result.cards.length){
- target.draw();
- var pos=result.cards[0].original;
- if(pos=='h'||pos=='e') player.addTempSkill('old_zuilun_'+pos,'phaseUseAfter');
- }
- },
- ai:{
- order:7,
- result:{
- target:-1,
- },
- },
- },
- old_fuyin:{
- mod:{
- targetEnabled:function(card,player,target){
- if((card.name=='juedou'||card.name=='sha'||card.name=='huogong')&&player!=target&&player.countCards('h')>=target.countCards('h')&&target.isEmpty(2)) return false;
- },
- },
- },
- "old_jijun":{
- marktext:"方",
- audio:"xinfu_jijun",
- intro:{
- content:"cards",
- },
- enable:"phaseUse",
- filterCard:true,
- selectCard:[1,Infinity],
- filter:function (event,player){
- return player.countCards('h')>0;
- },
- check:function (card){
- var player=_status.event.player;
- if(player.storage.old_jijun&&(36-player.storage.old_jijun.length)<=player.countCards('h')) return 1;
- return 5-get.value(card);
- },
- discard:false,
- lose:false,
- content:function (){
- player.lose(cards,ui.special,'toStorage');
- player.$give(cards,player);
- if(!player.storage.old_jijun) player.storage.old_jijun=[];
- player.storage.old_jijun.addArray(cards);
- player.markSkill('old_jijun');
- },
- ai:{order:1,result:{player:1}},
- },
- "old_fangtong":{
- trigger:{
- player:"phaseJieshuBegin",
- },
- audio:"xinfu_fangtong",
- forced:true,
- skillAnimation:true,
- animationColor:'metal',
- filter:function (event,player){
- return (player.storage.old_jijun&&player.storage.old_jijun.length>35);
- },
- content:function (){
- var bool=false;
- if(player==game.me) bool=true;
- else switch(get.mode()){
- case 'identity':{
- game.showIdentity();
- var id1=player.identity;
- var id2=game.me.identity;
- if(['zhu','zhong','mingzhong'].contains(id1)){
- if(['zhu','zhong','mingzhong'].contains(id2)) bool=true;
- break;
- }
- else if(id1=='fan'){
- if(id2=='fan') bool=true;
- break;
- }
- break;
- }
- case 'guozhan':{
- if(game.me.isFriendOf(player)) bool=true;
- break;
- }
- case 'versus':{
- if(player.side==game.me.side) bool=true;
- break;
- }
- case 'boss':{
- if(player.side==game.me.side) bool=true;
- break;
- }
- default:{}
- }
- game.over(bool);
- },
- },
-
- oldanxu:{
- enable:'phaseUse',
- usable:1,
- multitarget:true,
- audio:2,
- filterTarget:function(card,player,target){
- if(player==target) return false;
- var num=target.countCards('h');
- if(ui.selected.targets.length){
- return numplayers[i].countCards('h')) return true;
- }
- return false;
- },
- selectTarget:2,
- content:function(){
- 'step 0'
- var gainner,giver;
- if(targets[0].countCards('h')0) return -1;
- var players=game.filterPlayer();
- for(var i=0;i=0&&num20;
- },
- logTarget:'player',
- content:function(){
- trigger.player.draw();
- },
- ai:{
- expose:0.2
- }
- },
- zhenshan:{
- trigger:{player:'chooseToRespondBegin'},
- filter:function(event,player){
- if(event.responded) return false;
- if(!event.filterCard({name:'shan'},player,event)&&!event.filterCard({name:'sha'},player,event)) return false;
- if(player.hasSkill('zhenshan2')) return false;
- var nh=player.countCards('h');
- return game.hasPlayer(function(current){
- return current!=player&¤t.countCards('h')0;
- })){
- if(card.name=='sha'){
- if(card.nature=='fire') return 2.95;
- else if(card.nature=='fire') return 2.92;
- else return 2.9;
- }
- else if(card.name=='tao'||card.name=='shan'){
- return 4;
- }
- }
- return 0;
- },
- backup:function(links,player){
- return {
- filterCard:function(){return false},
- viewAs:{name:links[0][2],nature:links[0][3],isCard:true},
- selectCard:-1,
- popname:true,
- log:false,
- precontent:function(){
- 'step 0'
- player.chooseTarget('选择交换手牌的目标',function(card,player,target){
- return target.countCards('h')0&¤t.countCards('h')0;
- },
- content:function(){
- "step 0"
- player.chooseTarget(get.prompt('oldxuanfeng'),function(card,player,target){
- if(target==player) return false;
- return get.distance(player,target)<=1||player.canUse('sha',target,false);
- }).set('ai',function(target){
- if(get.distance(player,target)<=1){
- return get.damageEffect(target,player,player)*2;
- }
- else{
- return get.effect(target,{name:'sha'},player,player);
- }
- });
- "step 1"
- if(result.bool){
- player.logSkill('oldxuanfeng',result.targets);
- var target=result.targets[0];
- var distance=get.distance(player,target);
- if(distance<=1&&player.canUse('sha',target,false)){
- player.chooseControl('出杀','造成伤害').ai=function(){
- return '造成伤害';
- }
- event.target=target;
- }
- else if(distance<=1){
- target.damage();
- event.finish();
- }
- else{
- player.useCard({name:'sha',isCard:true},target,false).animate=false;
- game.delay();
- event.finish();
- }
- }
- else{
- event.finish();
- }
- "step 2"
- var target=event.target;
- if(result.control=='出杀'){
- player.useCard({name:'sha',isCard:true},target,false).animate=false;
- game.delay();
- }
- else{
- target.damage();
- }
- },
- ai:{
- effect:{
- target:function(card,player,target,current){
- if(get.type(card)=='equip') return [1,3];
- }
- },
- reverseEquip:true,
- noe:true
- }
- },
- },
- translate:{
- old_jiakui:'旧贾逵',
- old_zhangxingcai:'旧张星彩',
- old_majun:'骰子马钧',
- old_yuanshu:'手杀袁术',
- old_xusheng:'旧徐盛',
- old_lingtong:'旧凌统',
- old_zhuran:'旧朱然',
- old_caoxiu:'旧曹休',
- old_caozhen:'旧曹真',
- old_quancong:'旧全琮',
- old_lingju:'旧灵雎',
- old_maliang:'旧马良',
- old_chenqun:'旧陈群',
- old_zhuhuan:'旧朱桓',
- old_zhuzhi:'旧朱治',
- old_machao:'☆SP马超',
- old_zhugezhan:"旧诸葛瞻",
- zhangliang:'SP张梁',
- yuji:'旧于吉',
- old_zhangfei:'OL张飞',
- old_huatuo:'OL华佗',
- jsp_caoren:'☆SP曹仁',
- ol_zhangrang:'旧张让',
- ol_liaohua:'OL廖化',
- ol_zhuran:'OL朱然',
- ol_guansuo:'OL关索',
- ol_manchong:'OL满宠',
- ol_guohuai:'OL郭淮',
- old_fuhuanghou:'旧伏皇后',
- old_caochong:'旧曹冲',
- old_guanqiujian:'旧毌丘俭',
- old_huangfusong:'旧皇甫嵩',
- ol_maliang:'旧马良',
- ol_liuyu:'OL刘虞',
- old_wangyun:'旧王允',
- old_zhaoyun:'旧赵云',
- ol_huaxiong:'旧华雄',
-
- "old_guhuo":"蛊惑",
- "old_guhuo_info":"你可以说出任何一种基本牌或普通锦囊牌,并正面朝下使用或打出一张手牌。体力值不为0的其他角色依次选择是否质疑。若无角色质疑,则该牌按你所述之牌结算。若有角色质疑则亮出验明:若为真,质疑者各失去1点体力;若为假,质疑者各摸一张牌。无论真假,弃置被质疑的牌。仅当被质疑的牌为红桃花色且为真时,该牌仍然可以进行结算。",
- "old_guhuo_guess":"蛊惑",
- "old_guhuo_wuxie":"蛊惑",
- "old_jijun":"集军",
- "old_jijun_info":"出牌阶段,你可以将任意张手牌置于你的武将牌上。(均称为“方”)",
- "old_fangtong":"方统",
- "old_fangtong_info":"锁定技,结束阶段,若你的“方”的数目大于等于36,则你所在的游戏阵营直接取得游戏胜利。",
- old_zuilun:"罪论",
- old_zuilun_info:"出牌阶段,你可以获得一名其他角色的一张牌(手牌、装备区各一次),然后该角色摸一张牌。",
- old_fuyin:"父荫",
- old_fuyin_info:"锁定技,若你的装备区内没有防具牌,手牌数大于或等于你的其他角色不能使用【杀】、【决斗】或【火攻】指定你为目标",
- oldanxu:'安恤',
- oldanxu_info:'出牌阶段限一次,你可以选择手牌数不相等的两名其他角色,令其中手牌少的角色获得手牌多的角色的一张手牌并展示之,然后若此牌不为黑桃,你摸一张牌。',
- oldfaen:'法恩',
- oldfaen_info:'当一名角色翻面或横置后,你可以令其摸一张牌。',
- zhenshan:'振赡',
- zhenshan_use:'振赡',
- zhenshan_use_backup:'振赡',
- zhenshan_info:'每名角色的回合限一次,每当你需要使用或打出一张基本牌时,你可以与一名手牌数少于你的角色交换手牌。若如此做,视为你使用或打出了此牌',
- zhenshan_use_info:'每名角色的回合限一次,每当你需要使用或打出一张基本牌时,你可以与一名手牌数少于你的角色交换手牌。若如此做,视为你使用或打出了此牌',
- oldxuanfeng:'旋风',
- oldxuanfeng_info:'每当你失去一次装备区里的牌时,你可以执行下列两项中的一项:1.视为对任意一名其他角色使用一张【杀】(此【杀】不计入每回合的使用限制);2.对与你距离1以内的一名其他角色造成一点伤害',
-
- old_shenhua:'神话再临',
- old_refresh:'界限突破',
- old_yijiang1:'一将成名2011',
- old_yijiang2:'一将成名2012',
- old_yijiang3:'一将成名2013',
- old_yijiang4:'一将成名2014',
- old_yijiang5:'一将成名2015',
- old_yijiang67:'原创设计',
- old_sp:'SP',
- old_mobile:'移动版',
- }
- };
-});
+'use strict';
+game.import('character',function(lib,game,ui,get,ai,_status){
+ return {
+ name:'old',
+ characterSort:{
+ old:{
+ old_shenhua:["yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","xiaoqiao","pangde"],
+ old_refresh:["old_zhangfei","old_huatuo","old_zhaoyun","ol_huaxiong"],
+ old_yijiang1:["masu","xushu","yujin","xin_yujin","old_xusheng","old_lingtong"],
+ old_yijiang2:["old_zhonghui"],
+ old_yijiang3:["liru","old_zhuran","ol_manchong","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_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:{
+ pangde:['male','qun',4,['mashu','mengjin']],
+ ol_huaxiong:["male","qun",6,["new_reyaowu"]],
+ old_wangyun:['male','qun',4,['wylianji','moucheng']],
+ xiaoqiao:['female','wu',3,['tianxiang','hongyan']],
+ weiyan:['male','shu',4,['kuanggu']],
+ xiahouyuan:['male','wei',4,['shensu']],
+ ol_maliang:['male','shu',3,['zishu','yingyuan']],
+ old_huangfusong:['male','qun',4,['fenyue']],
+ old_majun:["male","wei",3,["xinfu_jingxie1","xinfu_qiaosi"],[]],
+ old_zhangxingcai:['female','shu',3,['oldshenxian','qiangwu']],
+ old_fuhuanghou:['female','qun',3,['oldzhuikong','oldqiuyuan']],
+ old_caochong:['male','wei',3,['oldrenxin','oldchengxiang']],
+ yuji:['male','qun',3,['old_guhuo'],['forbidai']],
+ zhangjiao:['male','qun',3,['leiji','guidao','huangtian'],['zhu']],
+ old_zhangfei:['male','shu',4,['paoxiao','new_tishen']],
+ old_zhaoyun:['male','shu',4,['longdan','new_yajiao']],
+ old_huatuo:['male','qun',3,['jijiu','chulao']],
+ jsp_caoren:['male','wei',4,['kuiwei','yanzheng']],
+ old_caochun:['male','wei',4,['shanjia']],
+ masu:['male','shu',3,['xinzhan','huilei']],
+ xushu:['male','shu',3,['wuyan','jujian']],
+ liru:['male','qun',3,['juece','mieji','fencheng']],
+ yujin:['male','wei',4,['yizhong']],
+ xin_yujin:['male','wei',4,['jieyue']],
+ //lusu:['male','wu',3,['haoshi','dimeng']],
+ //yuanshao:['male','qun',4,['luanji','xueyi'],['zhu']],
+ old_zhonghui:['male','wei',3,['zzhenggong','zquanji','zbaijiang']],
+ old_xusheng:['male','wu',4,['pojun']],
+ old_zhuran:['male','wu',4,['olddanshou']],
+ old_lingtong:['male','wu',4,['oldxuanfeng']],
+ old_caoxiu:['male','wei',4,['taoxi']],
+ old_caozhen:['male','wei',4,['sidi']],
+ old_quancong:['male','wu',4,['zhenshan']],
+ old_lingju:['female','qun',3,['jieyuan','fenxin_old']],
+ old_maliang:['male','shu',3,['xiemu','naman']],
+ old_chenqun:['male','wei',3,['dingpin','oldfaen']],
+ old_zhuhuan:['male','wu',4,['youdi']],
+ old_zhuzhi:['male','wu',4,['anguo']],
+
+ old_machao:['male','qun',4,['zhuiji','oldcihuai']],
+ old_zhugezhan:["male","shu",3,["old_zuilun","old_fuyin"]],
+ zhangliang:["male","qun",4,["old_jijun","old_fangtong"]],
+ ol_zhangrang:['male','qun',3,['xintaoluan']],
+ ol_guansuo:['male','shu',4,['zhengnan','xiefang']],
+ ol_manchong:['male','wei',3,['yuce','junxing']],
+ ol_liuyu:['male','qun',2,['zongzuo','zhige']],
+ old_guanqiujian:["male","wei",4,["drlt_zhenrong","drlt_hongju"],[]],
+ },
+ characterFilter:{
+ old_lingju:function(mode){
+ return mode=='identity';
+ }
+ },
+ skill:{
+ oldshenxian:{
+ audio:'shenxian',
+ inherit:'shenxian',
+ },
+ "old_guhuo":{
+ group:["old_guhuo_guess","old_guhuo_respond","old_guhuo_wuxie"],
+ enable:"chooseToUse",
+ filter:function (event,player){
+ if(!player.countCards('h')) return false;
+ var list=['sha','tao','shan','jiu','taoyuan','wugu','juedou','huogong','jiedao','tiesuo','guohe','shunshou','wuzhong','wanjian','nanman'];
+ if(get.mode()=='guozhan'){
+ list=list.concat(['xietianzi','shuiyanqijunx','lulitongxin','lianjunshengyan','chiling','diaohulishan','yuanjiao','huoshaolianying']);
+ }
+ for(var i=0;i0;
+ });
+ event.guessers.sort(lib.sort.seat);
+ event.ally=[];
+ event.betray=[];
+ 'step 1'
+ if(event.guessers.length==0) event.goto(3);
+ else{
+ event.guessers[0].chooseControl('质疑','不质疑').set('prompt',event.prompt).set('ai',function(){
+ if(get.attitude(event.guessers[0],player)>0) return '不质疑';
+ return Math.random()<0.5?'不质疑':'质疑';
+ });
+ }
+ 'step 2'
+ if(!result.control) result.control='不质疑';
+ event.guessers[0].chat(result.control);
+ game.delay();
+ if(result.control=='不质疑'){
+ game.log(event.guessers[0],'#g不质疑');
+ event.ally.push(event.guessers[0]);
+ }else{
+ game.log(event.guessers[0],'#y质疑');
+ event.betray.push(event.guessers[0]);
+ }
+ event.guessers.remove(event.guessers[0]);
+ if(event.guessers.length) event.goto(1);
+ 'step 3'
+ player.showCards(trigger.cards);
+ if(event.betray.length){
+ if(trigger.card.name==trigger.cards[0].name){
+ if(get.suit(trigger.cards[0])!='heart'){
+ game.log(player,'使用的','#y'+get.translation(trigger.card.name),'作废了');
+ game.cardsDiscard(trigger.cards);
+ trigger.cancel();
+ }
+ for(var i=0;i0;
+ });
+ event.guessers.sort(lib.sort.seat);
+ event.ally=[];
+ event.betray=[];
+ }
+ else event.finish();
+ 'step 2'
+ if(event.guessers.length==0) event.goto(4);
+ else{
+ event.guessers[0].chooseControl('质疑','不质疑').set('prompt',event.prompt).set('ai',function(){
+ if(get.attitude(event.guessers[0],player)>0) return '不质疑';
+ return Math.random()<0.5?'不质疑':'质疑';
+ });
+ }
+ 'step 3'
+ if(!result.control) result.control='不质疑';
+ event.guessers[0].chat(result.control);
+ game.delay();
+ if(result.control=='不质疑'){
+ game.log(event.guessers[0],'#g不质疑');
+ event.ally.push(event.guessers[0]);
+ }else{
+ game.log(event.guessers[0],'#y质疑');
+ event.betray.push(event.guessers[0]);
+ }
+ event.guessers.remove(event.guessers[0]);
+ if(event.guessers.length) event.goto(2);
+ 'step 4'
+ var bool=true;
+ player.showCards(event.card);
+ if(event.betray.length){
+ if(event.name==event.card.name){
+ if(get.suit(event.card)!='heart'){
+ game.log(player,'使用的','#y'+get.translation(event.name),'作废了');
+ game.cardsDiscard(event.card);
+ bool=false;
+ }
+ for(var i=0;i0;
+ },
+ viewAs:{
+ name:"wuxie",
+ },
+ check:function(card){
+ if(card.name=='wuxie') return 1000;
+ return 0;
+ },
+ prompt:"将一张手牌当无懈可击使用",
+ threaten:1.2,
+ },
+ old_zuilun:{
+ audio:'xinfu_zuilun',
+ subSkill:{
+ e:{},
+ h:{},
+ },
+ enable:"phaseUse",
+ usable:2,
+ filterTarget:function (card,player,target){
+ if(player==target) return false;
+ var pos='he';
+ if(player.hasSkill('old_zuilun_h')) pos='e';
+ if(player.hasSkill('old_zuilun_e')) pos='h';
+ return target.countGainableCards(player,pos)>0;
+ },
+ content:function (){
+ 'step 0'
+ var pos='he';
+ if(player.hasSkill('old_zuilun_h')) pos='e';
+ if(player.hasSkill('old_zuilun_e')) pos='h';
+ player.gainPlayerCard(target,pos,true);
+ 'step 1'
+ if(result.bool&&result.cards&&result.cards.length){
+ target.draw();
+ var pos=result.cards[0].original;
+ if(pos=='h'||pos=='e') player.addTempSkill('old_zuilun_'+pos,'phaseUseAfter');
+ }
+ },
+ ai:{
+ order:7,
+ result:{
+ target:-1,
+ },
+ },
+ },
+ old_fuyin:{
+ mod:{
+ targetEnabled:function(card,player,target){
+ if((card.name=='juedou'||card.name=='sha'||card.name=='huogong')&&player!=target&&player.countCards('h')>=target.countCards('h')&&target.isEmpty(2)) return false;
+ },
+ },
+ },
+ "old_jijun":{
+ marktext:"方",
+ audio:"xinfu_jijun",
+ intro:{
+ content:"cards",
+ },
+ enable:"phaseUse",
+ filterCard:true,
+ selectCard:[1,Infinity],
+ filter:function (event,player){
+ return player.countCards('h')>0;
+ },
+ check:function (card){
+ var player=_status.event.player;
+ if(player.storage.old_jijun&&(36-player.storage.old_jijun.length)<=player.countCards('h')) return 1;
+ return 5-get.value(card);
+ },
+ discard:false,
+ lose:false,
+ content:function (){
+ player.lose(cards,ui.special,'toStorage');
+ player.$give(cards,player);
+ if(!player.storage.old_jijun) player.storage.old_jijun=[];
+ player.storage.old_jijun.addArray(cards);
+ player.markSkill('old_jijun');
+ },
+ ai:{order:1,result:{player:1}},
+ },
+ "old_fangtong":{
+ trigger:{
+ player:"phaseJieshuBegin",
+ },
+ audio:"xinfu_fangtong",
+ forced:true,
+ skillAnimation:true,
+ animationColor:'metal',
+ filter:function (event,player){
+ return (player.storage.old_jijun&&player.storage.old_jijun.length>35);
+ },
+ content:function (){
+ var bool=false;
+ if(player==game.me) bool=true;
+ else switch(get.mode()){
+ case 'identity':{
+ game.showIdentity();
+ var id1=player.identity;
+ var id2=game.me.identity;
+ if(['zhu','zhong','mingzhong'].contains(id1)){
+ if(['zhu','zhong','mingzhong'].contains(id2)) bool=true;
+ break;
+ }
+ else if(id1=='fan'){
+ if(id2=='fan') bool=true;
+ break;
+ }
+ break;
+ }
+ case 'guozhan':{
+ if(game.me.isFriendOf(player)) bool=true;
+ break;
+ }
+ case 'versus':{
+ if(player.side==game.me.side) bool=true;
+ break;
+ }
+ case 'boss':{
+ if(player.side==game.me.side) bool=true;
+ break;
+ }
+ default:{}
+ }
+ game.over(bool);
+ },
+ },
+
+ oldanxu:{
+ enable:'phaseUse',
+ usable:1,
+ multitarget:true,
+ audio:2,
+ filterTarget:function(card,player,target){
+ if(player==target) return false;
+ var num=target.countCards('h');
+ if(ui.selected.targets.length){
+ return numplayers[i].countCards('h')) return true;
+ }
+ return false;
+ },
+ selectTarget:2,
+ content:function(){
+ 'step 0'
+ var gainner,giver;
+ if(targets[0].countCards('h')0) return -1;
+ var players=game.filterPlayer();
+ for(var i=0;i=0&&num20;
+ },
+ logTarget:'player',
+ content:function(){
+ trigger.player.draw();
+ },
+ ai:{
+ expose:0.2
+ }
+ },
+ zhenshan:{
+ trigger:{player:'chooseToRespondBegin'},
+ filter:function(event,player){
+ if(event.responded) return false;
+ if(!event.filterCard({name:'shan'},player,event)&&!event.filterCard({name:'sha'},player,event)) return false;
+ if(player.hasSkill('zhenshan2')) return false;
+ var nh=player.countCards('h');
+ return game.hasPlayer(function(current){
+ return current!=player&¤t.countCards('h')0;
+ })){
+ if(card.name=='sha'){
+ if(card.nature=='fire') return 2.95;
+ else if(card.nature=='fire') return 2.92;
+ else return 2.9;
+ }
+ else if(card.name=='tao'||card.name=='shan'){
+ return 4;
+ }
+ }
+ return 0;
+ },
+ backup:function(links,player){
+ return {
+ filterCard:function(){return false},
+ viewAs:{name:links[0][2],nature:links[0][3],isCard:true},
+ selectCard:-1,
+ popname:true,
+ log:false,
+ precontent:function(){
+ 'step 0'
+ player.chooseTarget('选择交换手牌的目标',function(card,player,target){
+ return target.countCards('h')0&¤t.countCards('h')0;
+ },
+ content:function(){
+ "step 0"
+ player.chooseTarget(get.prompt('oldxuanfeng'),function(card,player,target){
+ if(target==player) return false;
+ return get.distance(player,target)<=1||player.canUse('sha',target,false);
+ }).set('ai',function(target){
+ if(get.distance(player,target)<=1){
+ return get.damageEffect(target,player,player)*2;
+ }
+ else{
+ return get.effect(target,{name:'sha'},player,player);
+ }
+ });
+ "step 1"
+ if(result.bool){
+ player.logSkill('oldxuanfeng',result.targets);
+ var target=result.targets[0];
+ var distance=get.distance(player,target);
+ if(distance<=1&&player.canUse('sha',target,false)){
+ player.chooseControl('出杀','造成伤害').ai=function(){
+ return '造成伤害';
+ }
+ event.target=target;
+ }
+ else if(distance<=1){
+ target.damage();
+ event.finish();
+ }
+ else{
+ player.useCard({name:'sha',isCard:true},target,false).animate=false;
+ game.delay();
+ event.finish();
+ }
+ }
+ else{
+ event.finish();
+ }
+ "step 2"
+ var target=event.target;
+ if(result.control=='出杀'){
+ player.useCard({name:'sha',isCard:true},target,false).animate=false;
+ game.delay();
+ }
+ else{
+ target.damage();
+ }
+ },
+ ai:{
+ effect:{
+ target:function(card,player,target,current){
+ if(get.type(card)=='equip') return [1,3];
+ }
+ },
+ reverseEquip:true,
+ noe:true
+ }
+ },
+ },
+ translate:{
+ old_zhangxingcai:'旧张星彩',
+ old_majun:'骰子马钧',
+ old_yuanshu:'手杀袁术',
+ old_xusheng:'旧徐盛',
+ old_lingtong:'旧凌统',
+ old_zhuran:'旧朱然',
+ old_caoxiu:'旧曹休',
+ old_caozhen:'旧曹真',
+ old_quancong:'旧全琮',
+ old_lingju:'旧灵雎',
+ old_maliang:'旧马良',
+ old_chenqun:'旧陈群',
+ old_zhuhuan:'旧朱桓',
+ old_zhuzhi:'旧朱治',
+ old_machao:'☆SP马超',
+ old_zhugezhan:"旧诸葛瞻",
+ zhangliang:'SP张梁',
+ yuji:'旧于吉',
+ old_zhangfei:'OL张飞',
+ old_huatuo:'OL华佗',
+ jsp_caoren:'☆SP曹仁',
+ ol_zhangrang:'旧张让',
+ ol_liaohua:'OL廖化',
+ ol_zhuran:'OL朱然',
+ ol_guansuo:'OL关索',
+ ol_manchong:'OL满宠',
+ ol_guohuai:'OL郭淮',
+ old_fuhuanghou:'旧伏皇后',
+ old_caochong:'旧曹冲',
+ old_guanqiujian:'旧毌丘俭',
+ old_huangfusong:'旧皇甫嵩',
+ ol_maliang:'旧马良',
+ ol_liuyu:'OL刘虞',
+ old_wangyun:'旧王允',
+ old_zhaoyun:'旧赵云',
+ ol_huaxiong:'旧华雄',
+
+ "old_guhuo":"蛊惑",
+ "old_guhuo_info":"你可以说出任何一种基本牌或普通锦囊牌,并正面朝下使用或打出一张手牌。体力值不为0的其他角色依次选择是否质疑。若无角色质疑,则该牌按你所述之牌结算。若有角色质疑则亮出验明:若为真,质疑者各失去1点体力;若为假,质疑者各摸一张牌。无论真假,弃置被质疑的牌。仅当被质疑的牌为红桃花色且为真时,该牌仍然可以进行结算。",
+ "old_guhuo_guess":"蛊惑",
+ "old_guhuo_wuxie":"蛊惑",
+ "old_jijun":"集军",
+ "old_jijun_info":"出牌阶段,你可以将任意张手牌置于你的武将牌上。(均称为“方”)",
+ "old_fangtong":"方统",
+ "old_fangtong_info":"锁定技,结束阶段,若你的“方”的数目大于等于36,则你所在的游戏阵营直接取得游戏胜利。",
+ old_zuilun:"罪论",
+ old_zuilun_info:"出牌阶段,你可以获得一名其他角色的一张牌(手牌、装备区各一次),然后该角色摸一张牌。",
+ old_fuyin:"父荫",
+ old_fuyin_info:"锁定技,若你的装备区内没有防具牌,手牌数大于或等于你的其他角色不能使用【杀】、【决斗】或【火攻】指定你为目标",
+ oldanxu:'安恤',
+ oldanxu_info:'出牌阶段限一次,你可以选择手牌数不相等的两名其他角色,令其中手牌少的角色获得手牌多的角色的一张手牌并展示之,然后若此牌不为黑桃,你摸一张牌。',
+ oldfaen:'法恩',
+ oldfaen_info:'当一名角色翻面或横置后,你可以令其摸一张牌。',
+ zhenshan:'振赡',
+ zhenshan_use:'振赡',
+ zhenshan_use_backup:'振赡',
+ zhenshan_info:'每名角色的回合限一次,每当你需要使用或打出一张基本牌时,你可以与一名手牌数少于你的角色交换手牌。若如此做,视为你使用或打出了此牌',
+ zhenshan_use_info:'每名角色的回合限一次,每当你需要使用或打出一张基本牌时,你可以与一名手牌数少于你的角色交换手牌。若如此做,视为你使用或打出了此牌',
+ oldxuanfeng:'旋风',
+ oldxuanfeng_info:'每当你失去一次装备区里的牌时,你可以执行下列两项中的一项:1.视为对任意一名其他角色使用一张【杀】(此【杀】不计入每回合的使用限制);2.对与你距离1以内的一名其他角色造成一点伤害',
+
+ old_shenhua:'神话再临',
+ old_refresh:'界限突破',
+ old_yijiang1:'一将成名2011',
+ old_yijiang2:'一将成名2012',
+ old_yijiang3:'一将成名2013',
+ old_yijiang4:'一将成名2014',
+ old_yijiang5:'一将成名2015',
+ old_yijiang67:'原创设计',
+ old_sp:'SP',
+ old_mobile:'移动版',
+ }
+ };
+});
diff --git a/character/refresh.js b/character/refresh.js
index c480b64a0..2d3775f4e 100755
--- a/character/refresh.js
+++ b/character/refresh.js
@@ -4,21 +4,25 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'refresh',
characterSort:{
refresh:{
- refresh_standard:["re_caocao","re_simayi","re_guojia","re_lidian","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_xushu","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_gongsunzan","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong"],
+ refresh_standard:["re_caocao","re_simayi","re_guojia","re_lidian","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_xushu","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong"],
refresh_feng:['caoren','ol_xiahouyuan','re_huangzhong','ol_weiyan','ol_xiaoqiao','zhoutai','re_zhangjiao','xin_yuji'],
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'],
refresh_yijiang1:['re_wuguotai','re_gaoshun','re_caozhi','yujin_yujin','re_lingtong','re_masu','xin_xusheng','xin_fazheng'],
- refresh_yijiang2:['old_madai','wangyi','guanzhang','re_handang','re_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_liubiao'],
- refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran'],
- refresh_yijiang4:['re_sunluban','re_wuyi'],
+ refresh_yijiang2:['old_madai','wangyi','guanzhang','re_handang','re_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_liubiao','re_bulianshi','xin_gongsunzan'],
+ refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong'],
+ refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan'],
refresh_yijiang5:['re_zhangyi','re_quancong'],
},
},
connect:true,
character:{
- //re_liubiao:['male','qun',3,['rezishou','zongshi'],['unseen']],
+ xin_gongsunzan:['male','qun',4,['xinyicong','qiaomeng']],
+ 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']],
@@ -62,7 +66,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_daqiao:['female','wu',3,['reguose','liuli']],
re_huanggai:['male','wu',4,['rekurou','zhaxiang']],
re_lvbu:['male','qun',5,['wushuang','new_liyu']],
- re_gongsunzan:['male','qun',4,['qiaomeng','reyicong']],
re_huatuo:['male','qun',3,['jijiu','new_reqingnang']],
re_liubei:['male','shu',4,['rerende','jijiang'],['zhu']],
re_diaochan:['female','qun',3,['lijian','rebiyue']],
@@ -118,6 +121,109 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sunben:['zhouyu','taishici','daqiao'],
},
skill:{
+ xinyicong:{
+ mod:{
+ globalFrom:function(from,to,current){
+ return current-Math.max(0,from.hp-1);
+ },
+ globalTo:function(from,to,current){
+ return current+Math.max(0,to.getDamagedHp()-1);
+ },
+ },
+ ai:{
+ threaten:0.8
+ }
+ },
+ reanxu:{
+ audio:2,
+ enable:'phaseUse',
+ usable:1,
+ filter:function(event,player){
+ return game.countPlayer()>2&&game.hasPlayer(function(current){
+ return current!=player&¤t.countCards('he');
+ });
+ },
+ selectTarget:2,
+ filterTarget:function(card,player,target){
+ if(target==player) return false;
+ if(!ui.selected.targets.length) return target.countCards('he')>0;
+ return target!=ui.selected.targets[0]&&ui.selected.targets[0].countGainableCards(target,'he')>0;
+ },
+ multitarget:true,
+ targetprompt:['被拿牌','得到牌'],
+ content:function(){
+ 'step 0'
+ targets[1].gainPlayerCard(targets[0],'he',true);
+ 'step 1'
+ if(targets[0].getHistory('lose',function(evt){
+ return evt.getParent(3)==event&&!evt.es.length;
+ }).length) player.draw();
+ 'step 2'
+ if(targets[0].isIn()&&targets[1].isIn()&&
+ targets[0].countCards('h')!=targets[1].countCards('h')){
+ event.target=targets[targets[0].countCards('h')>targets[1].countCards('h')?1:0];
+ player.chooseBool('是否令'+get.translation(event.target)+'摸一张牌?').set('ai',function(){
+ var evt=_status.event.getParent();
+ return get.attitude(evt.player,evt.target)>0;
+ })
+ }
+ else event.finish();
+ 'step 3'
+ if(result.bool) target.draw();
+ },
+ ai:{
+ expose:0.2,
+ threaten:2,
+ order:9,
+ result:{
+ player:function(player,target){
+ if(ui.selected.targets.length) return 0.01;
+ return target.countCards('e')?0:0.5;
+ },
+ target:function(player,target){
+ if(ui.selected.targets.length){
+ player=target;
+ target=ui.selected.targets[0];
+ if(get.attitude(player,target)>1){
+ return 0;
+ }
+ return target.countCards('h')-player.countCards('h')>(target.countCards('e')?2:1)?2:1;
+ }
+ else{
+ if(get.attitude(player,target)<=0) return (target.countCards('he',function(card){
+ return card.name=='tengjia'||get.value(card)>0;
+ })>0)?-1.5:1.5;
+ return (target.countCards('he',function(card){
+ return card.name!='tengjia'&&get.value(card)<=0;
+ })>0)?1.5:-1.5
+ }
+ },
+ },
+ },
+ },
+ rezongshi:{
+ audio:2,
+ mod:{
+ maxHandcard:function(player,num){
+ return num+game.countGroup();
+ },
+ },
+ trigger:{player:'phaseZhunbeiBegin'},
+ forced:true,
+ filter:function(event,player){
+ return player.countCards('h')>player.hp;
+ },
+ content:function(){
+ player.addTempSkill('rezongshi_paoxiao');
+ },
+ },
+ rezongshi_paoxiao:{
+ mod:{
+ cardUsable:function(card,player,num){
+ if(card.name=='sha') return Infinity;
+ },
+ },
+ },
olbaonue:{
audio:2,
unique:true,
@@ -156,6 +262,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
rezishou:{
audio:'zishou',
+ audioname:['re_liubiao'],
trigger:{player:'phaseDrawBegin2'},
check:function(event,player){
return player.countCards('h')<=(player.hasSkill('zongshi')?player.maxHp:(player.hp-2))||player.skipList.contains('phaseUse')||!player.countCards('h',function(card){
@@ -423,6 +530,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
wulie:{
trigger:{player:'phaseJieshuBegin'},
+ audio:2,
direct:true,
limited:true,
skillAnimation:true,
@@ -6713,8 +6821,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(card.name=='jiu') return Infinity;
},
},
- audio:'jiuchi',
- audioname:['ol_dongzhuo'],
+ audio:2,
enable:'chooseToUse',
filterCard:function(card){
return get.suit(card)=='spade';
@@ -6888,7 +6995,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_lvbu:'界吕布',
re_xushu:'界徐庶',
re_huanggai:'界黄盖',
- re_gongsunzan:'界公孙瓒',
re_daqiao:'界大乔',
re_ganning:'界甘宁',
re_huatuo:'界华佗',
@@ -7230,9 +7336,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
rezishou:'自守',
rezishou2:'自守',
rezishou_info:'摸牌阶段,你可以多摸X张牌。若如此做,本回合你对其他角色造成伤害时,防止此伤害,且结束阶段,若你本回合没有使用牌指定其他角色为目标,则你可以将场上的一张装备牌移动到自己的装备区。(X为场上势力数)',
+ rezongshi:'宗室',
+ rezongshi_info:'锁定技,你的手牌上限+X(X为势力数)。准备阶段,若你的手牌数大于体力值,则你本回合内使用【杀】无次数限制。',
ol_dongzhuo:'界董卓',
olbaonue:'暴虐',
olbaonue_info:'主公技,其他群雄角色造成1点伤害后,其可进行判定,若为♠,你回复1点体力并获得判定牌。',
+ re_panzhangmazhong:'界潘璋马忠',
+ re_hanhaoshihuan:'界韩浩史涣',
+ re_bulianshi:'界步练师',
+ reanxu:'安恤',
+ reanxu_info:'出牌阶段限一次,你可以选择两名其他角色,令其中一名角色获得另一名角色的一张牌。若以此法移动的牌不来自装备区,则你摸一张牌。然后你可以令二者中手牌数较少的一名角色摸一张牌。',
+ xin_gongsunzan:'界公孙瓒',
+ xinyicong:'义从',
+ xinyicong_info:'锁定技,你计算与其他角色的距离时-X,其他角色计算与你的距离时+Y。(X为你的体力值-1,Y为你的已损失体力值-1)',
refresh_standard:'界限突破·标',
refresh_feng:'界限突破·风',
diff --git a/character/sp.js b/character/sp.js
index c02e285c8..ba4afd946 100755
--- a/character/sp.js
+++ b/character/sp.js
@@ -5,7 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true,
characterSort:{
sp:{
- sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","liuxie","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","fuwan","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","lingju","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","xujing","yuantanyuanshang","sunshao","zhangling",'guansuo','baosanniang','ol_zhangchangpu'],
+ sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","liuxie","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","fuwan","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","lingju","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","xujing","yuantanyuanshang","sunshao","zhangling",'guansuo','baosanniang','ol_zhangchangpu','caoshuang'],
sp_zhongdan:["cuiyan","huangfusong"],
sp_star:["sp_xiahoushi","jsp_zhaoyun","huangjinleishi","sp_pangtong","sp_daqiao","sp_ganning","sp_xiahoudun","sp_lvmeng","sp_zhangfei","sp_liubei"],
sp_sticker:['sp_gongsunzan','sp_simazhao','sp_wangyuanji','sp_xinxianying','sp_liuxie'],
@@ -17,7 +17,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterFilter:{},
character:{
- //caoshuang:['male','wei',4,['tuogu','shanzhuan']],
+ caoshuang:['male','wei',4,['tuogu','shanzhuan']],
ol_zhangchangpu:['female','wei',3,['yanjiao','olxingshen']],
zhangling:['male','qun',4,['zlhuji','zlshoufu'],['unseen']],
caiyang:['male','qun',1,['yinka'],['forbidai','unseen']],
@@ -33,8 +33,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yuantanyuanshang:['male','qun',4,['neifa']],
xujing:['male','shu',3,['yuxu','xjshijian']],
- hejin:['male','qun',4,['mouzhu','yanhuo']],
- hansui:['male','qun',4,['mashu','niluan']],
+ hejin:['male','qun',4,['spmouzhu']],
+ hansui:['male','qun',4,['spniluan','spweiwu']],
niujin:['male','wei',4,['cuorui','liewei']],
jianggan:["male","wei",3,["weicheng","daoshu"]],
@@ -392,6 +392,250 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
+ //曹爽,韩遂,何进
+ xiaoxi:{
+ audio:2,
+ audioname:['machao','hansui','pangde'],
+ trigger:{
+ player:'enterGame',
+ global:'gameDrawAfter',
+ },
+ direct:true,
+ content:function(){
+ player.chooseUseTarget('sha',get.prompt('xiaoxi'),'视为使用一张【杀】').logSkill='xiaoxi';
+ },
+ },
+ spmouzhu:{
+ enable:'phaseUse',
+ audio:'mouzhu',
+ usable:1,
+ chooseButton:{
+ dialog:function(event,player){
+ var list=[
+ '选择距离为1的角色',
+ '选择体力值等于你的角色',
+ ];
+ var choiceList=ui.create.dialog('谋诛:请选择一项','forcebutton','hidden');
+ for(var i=0;i';
+ str+=list[i];
+ if(!bool) str+='';
+ str+='';
+ var next=choiceList.add(str);
+ next.firstChild.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
+ next.firstChild.link=i;
+ for(var j in lib.element.button){
+ next[j]=lib.element.button[i];
+ }
+ choiceList.buttons.add(next.firstChild);
+ }
+ return choiceList;
+ },
+ filter:function(button,player){
+ return game.hasPlayer(function(current){
+ return lib.skill.spmouzhux.filterTargets[button.link](null,player,current)
+ });
+ },
+ check:function(button){
+ return Math.random();
+ },
+ backup:function(links){
+ lib.skill.spmouzhux.link=links[0];
+ return lib.skill.spmouzhux;
+ },
+ },
+ ai:{
+ order:7,
+ result:{
+ player:1,
+ },
+ },
+ },
+ spmouzhux:{
+ audio:'mouzhu',
+ filterTarget:function(card,player,target){
+ return lib.skill.spmouzhux.filterTargets[lib.skill.spmouzhu_backup.link](card,player,target);
+ },
+ filterTargets:[
+ function(card,player,target){
+ return player!=target&&get.distance(player,target)<=1;
+ },
+ function(card,player,target){
+ return player!=target&&player.hp==target.hp;
+ }
+ ],
+ selectTarget:-1,
+ content:function(){
+ 'step 0'
+ target.chooseCard('he','交给'+get.translation(player)+'一张牌',true);
+ 'step 1'
+ player.gain(result.cards,target,'giveAuto');
+ 'step 2'
+ if(player.countCards('h')<=target.countCards('h')){
+ event.finish();
+ return;
+ }
+ var list=[];
+ if(target.canUse('sha',player,false)) list.push('sha');
+ if(target.canUse('juedou',player,false)) list.push('juedou');
+ if(!list.length) event.finish();
+ else if(list.length==1) event._result={control:list[0]};
+ else target.chooseControl(list).set('prompt','对'+get.translation(player)+'使用一张【杀】或【决斗】。').ai=function(){
+ return get.effect(player,{name:'sha'},target,target)>=get.effect(player,{name:'juedou'},target,target)?'sha':'juedou';
+ };
+ 'step 3'
+ target.useCard({name:result.control,isCard:true},player,'noai');
+ },
+ ai:{
+ order:7,
+ result:{
+ target:-1.2,
+ player:function(player,target){
+ if(target.countCards('h')-player.countCards('h')>1) return 1;
+ if(get.damageEffect(target,player,player,player)>0) return 1;
+ if(player.hp>3||player.countCards('h','sha')&&player.countCards('h','shan')) return 0;
+ if(player.hp>2) return -1.1;
+ return -2;
+ },
+ },
+ },
+ },
+ spniluan:{
+ enable:'phaseUse',
+ audio:'niluan',
+ viewAs:{name:'sha'},
+ check:function(card){
+ return 5.1-get.value(card);
+ },
+ filterCard:{color:'black'},
+ filterTarget:function(card,player,target){
+ if(target.hp<=player.hp) return false;
+ return lib.filter.filterTarget.apply(this,arguments);
+ },
+ position:'he',
+ audio:'niluan',
+ viewAsFilter:function(player){
+ return player.countCards('he',lib.skill.spniluan.filterCard)>0&&game.hasPlayer(function(current){
+ return current.hp>player.hp&&player.canUse('sha',current);
+ });
+ },
+ group:'spniluan_clear',
+ },
+ spniluan_clear:{
+ trigger:{player:'useCardAfter'},
+ forced:true,
+ silent:true,
+ charlotte:true,
+ filter:function(event,player){
+ return event.skill=='spniluan'&&event.addCount!==false&&player.getHistory('sourceDamage',function(card){
+ return card.card==event.card;
+ }).length==0;
+ },
+ content:function(){
+ trigger.addCount=false;
+ if(player.stat[player.stat.length-1].card.sha>0){
+ player.stat[player.stat.length-1].card.sha--;
+ }
+ },
+ },
+ spweiwu:{
+ enable:'phaseUse',
+ usable:1,
+ viewAs:{name:'shunshou'},
+ filterCard:{color:'red'},
+ position:'he',
+ audio:'xiaoxi',
+ check:function(card){
+ return 7-get.value(card);
+ },
+ filterTarget:function(card,player,target){
+ if(target.countCards('h')<=player.countCards('h')) return false;
+ return lib.filter.filterTarget.apply(this,arguments);
+ },
+ viewAsFilter:function(player){
+ return player.countCards('he',lib.skill.spweiwu.filterCard)>0&&game.hasPlayer(function(current){
+ return current.countCards('h')>player.countCards('h')&&player.canUse('shunshou',current);
+ });
+ },
+ },
+ tuogu:{
+ audio:2,
+ trigger:{global:'die'},
+ filter:function(event,player){
+ return event.player.getStockSkills('仲村由理','天下第一').filter(function(skill){
+ var info=get.info(skill);
+ return info&&!info.juexingji&&!info.zhuSkill&&!info.charlotte&&!info.limited;
+ }).length>0;
+ },
+ logTarget:'player',
+ skillAnimation:true,
+ animationColor:'thunder',
+ content:function(){
+ 'step 0'
+ player.awakenSkill('tuogu');
+ var list=trigger.player.getStockSkills('仲村由理','天下第一').filter(function(skill){
+ var info=get.info(skill);
+ return info&&!info.juexingji&&!info.zhuSkill&&!info.charlotte&&!info.limited;
+ });
+ if(!list.length) event._result={control:list[0]};
+ else trigger.player.chooseControl(list).set('prompt','选择令'+get.translation(player)+'获得一个技能').set('forceDie',true).set('ai',function(){
+ return list.randomGet();
+ });
+ 'step 1'
+ player.addSkillLog(result.control);
+ game.broadcastAll(function(skill){
+ var list=[skill];game.expandSkills(list);
+ for(var i of list){
+ var info=lib.skill[i];
+ if(!info) continue;
+ if(!info.audioname2) info.audioname2={};
+ info.audioname2.caoshuang='tuogu';
+ }
+ },result.control);
+ },
+ },
+ shanzhuan:{
+ trigger:{source:'damageSource'},
+ audio:2,
+ direct:true,
+ filter:function(event,player){
+ return player!=event.player&&event.player.countCards('he')&&!event.player.countCards('j');
+ },
+ content:function(){
+ 'step 0'
+ player.choosePlayerCard(trigger.player,'he',get.prompt('shanzhuan',trigger.player)).set('ai',function(card){
+ if(get.attitude(_status.event.player,_status.event.target)>=0) return 0;
+ return get.buttonValue(card);
+ });
+ 'step 1'
+ if(result.bool){
+ player.logSkill('shanzhuan',trigger.player);
+ var card=result.cards[0];
+ trigger.player.$throw(card);
+ game.delayx();
+ if(get.type(card)=='delay') trigger.player.addJudge(card);
+ else trigger.player.addJudge({name:get.color(card)=='red'?'lebu':'bingliang'},result.cards);
+ }
+ },
+ group:'shanzhuan_draw',
+ subfrequent:['draw'],
+ subSkill:{
+ draw:{
+ audio:'shanzhuan',
+ trigger:{player:'phaseEnd'},
+ frequent:true,
+ prompt:'是否发动【擅专】摸一张牌?',
+ filter:function(event,player){
+ return !player.getHistory('sourceDamage').length;
+ },
+ content:function(){
+ player.draw();
+ },
+ },
+ },
+ },
olxingshen:{
trigger:{player:'damageEnd'},
frequent:true,
@@ -1538,7 +1782,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.effect(player,{name:'sha'},target,target)>=get.effect(player,{name:'juedou'},target,target)?'sha':'juedou';
};
'step 3'
- target.useCard({name:result.control,isCard:true},player);
+ target.useCard({name:result.control,isCard:true},player,'noai');
},
ai:{
order:7,
@@ -4859,6 +5103,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
if(player.storage.fanghun) player.draw(player.storage.fanghun);
player.removeMark('fanghun',player.storage.fanghun);
+ player.awakenSkill('refuhan');
+ 'step 1'
var list;
if(_status.characterlist){
list=[];
@@ -4883,16 +5129,109 @@ game.import('character',function(lib,game,ui,get,ai,_status){
list.remove(players[i].name1);
list.remove(players[i].name2);
}
- // var dialog=ui.create.dialog();
- // dialog.add([list.randomGets(5),'character']);
- player.chooseButton(true).set('ai',function(button){
- return get.rank(button.link,true)-lib.character[button.link][2];
- }).set('createDialog',['获得一张武将牌上的所有技能',[list.randomGets(5),'character']]);
- player.awakenSkill('refuhan');
- 'step 1'
- player.addSkill(lib.character[result.links[0]][3]);
- player.flashAvatar('refuhan',result.links[0]);
- game.log(player,'获得了','#g'+get.translation(result.links[0]),'的所有技能');
+ list=list.randomGets(Math.max(2,Math.min(8,game.countPlayer())));
+ var skills=[];
+ for(var i of list){
+ skills.addArray((lib.character[i][3]||[]).filter(function(skill){
+ var info=get.info(skill);
+ return info&&!info.zhuSkill&&!info.limited&&!info.juexingji&&!info.charlotte;
+ }));
+ }
+ if(!list.length||!skills.length){event.finish();return;}
+ if(player.isUnderControl()){
+ game.modeSwapPlayer(player);
+ }
+ var switchToAuto=function(){
+ _status.imchoosing=false;
+ event._result={
+ bool:true,
+ skills:skills.randomGets(2),
+ };
+ if(event.dialog) event.dialog.close();
+ if(event.control) event.control.close();
+ };
+ var chooseButton=function(list,skills){
+ var event=_status.event;
+ event._result.skills=[];
+ var rSkill=event._result.skills;
+ var dialog=ui.create.dialog('请选择获得至多两个技能',[list,'character'],'hidden');
+ event.dialog=dialog;
+ var table=document.createElement('div');
+ table.classList.add('add-setting');
+ table.style.margin='0';
+ table.style.width='100%';
+ table.style.position='relative';
+ for(var i=0;i';
+ td.addEventListener(lib.config.touchscreen?'touchend':'click',function(){
+ if(_status.dragged) return;
+ if(_status.justdragged) return;
+ _status.tempNoButton=true;
+ setTimeout(function(){
+ _status.tempNoButton=false;
+ },500);
+ var link=this.link;
+ if(!this.classList.contains('bluebg')){
+ if(rSkill.length>=2) return;
+ rSkill.add(link);
+ this.classList.add('bluebg');
+ }
+ else{
+ this.classList.remove('bluebg');
+ rSkill.remove(link);
+ }
+ });
+ }
+ dialog.content.appendChild(table);
+ dialog.add(' ');
+ dialog.open();
+
+ event.switchToAuto=function(){
+ event.dialog.close();
+ event.control.close();
+ game.resume();
+ _status.imchoosing=false;
+ };
+ event.control=ui.create.control('ok',function(link){
+ event.dialog.close();
+ event.control.close();
+ game.resume();
+ _status.imchoosing=false;
+ });
+ for(var i=0;i0;
- })>0;
+ return event.card&&event.card.name=='nanman';
},
frequent:true,
content:function(){
- var num=game.countPlayer2(function(current){
- return current.getHistory('damage',function(evt){
- return evt.getParent(2)==trigger;
- }).length>0;
- });
- player.draw(num);
- player.addMark('mansi',num,false);
+ player.draw();
+ player.addMark('mansi',1,false);
},
intro:{content:'已因此技能获得了#张牌'},
},
+ mansi_viewas:{
+ audio:'mansi',
+ enable:'phaseUse',
+ usable:1,
+ filterCard:true,
+ selectCard:-1,
+ filter:function(event,player){
+ var hs=player.getCards('h');
+ if(!hs.length) return false;
+ for(var i=0;i0;
}
else{
- if(!event.source||event.source.sex!='male') return false;
- return player.getHistory('damage',function(evt){
- return evt.source==event.source;
- }).length==1;
+ var source=event.player;
+ return source.getHistory('useCard',function(evt){
+ return evt.targets&&event.targets.length==1&&evt.targets[0]==player;
+ }).indexOf(event.getParent())>0;
}
},
content:function(){
'step 0'
- var next=player.chooseToDiscard();
- if(event.triggername=='damageBegin1'){
+ var next=player.chooseToDiscard('he');
+ if(event.triggername=='useCardToTargeted'){
event.target=trigger.player;
- next.set('goon',get.attitude(player,event.target)<0&&!event.target.hasSkillTag('filterDamage',null,{
- player:player,
- card:trigger.card,
- })),
- next.set('prompt2','弃置一张手牌,令对其造成的伤害+1');
}
else{
- event.target=trigger.source;
- next.set('goon',true);
- next.set('prompt2','弃置一张手牌,令即将受到的伤害-1');
+ event.target=trigger.cards[0];
}
next.set('prompt',get.prompt('souying',event.target));
+ next.set('prompt2','弃置一张牌,并获得'+get.translation(trigger.cards.filterInD()))
next.set('ai',function(card){
if(_status.event.goon) return 6-get.value(card);
return -1;
@@ -1335,7 +1339,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.bool){
player.addTempSkill('souying2');
- trigger.num+=(event.triggername=='damageBegin1'?1:-1);
+ player.gain(trigger.cards.filterInD());
}
},
ai:{
@@ -1363,7 +1367,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.chooseTarget('是否失去〖蛮嗣〗,令一名其他男性角色和自己一同获得技能〖系力〗?',function(card,player,target){
return target!=player&&target.sex=='male';
}).ai=function(target){
- return get.attitude(_status.event.player,target)-5;
+ return get.attitude(_status.event.player,target);
};
'step 2'
if(result.bool){
@@ -1376,36 +1380,29 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
hmxili:{
- trigger:{global:'useCardToPlayered'},
+ trigger:{global:'damageBegin1'},
direct:true,
audio:2,
filter:function(event,player){
- return event.player!=player&&event.card.name=='sha'&&event.player.isPhaseUsing()&&event.player.hasSkill('hmxili')&&player.countCards('h')>0;
+ return event.source&&event.source!=player&&event.source==_status.currentPhase&&event.source.hasSkill('hmxili')&&player.countCards('he')>0&&!player.hasSkill('hmxili2');
},
content:function(){
'step 0'
- player.chooseToDiscard('是否弃置一张手牌,令'+get.translation(trigger.card)+'对'+get.translation(trigger.target)+'的伤害+1?','h').set('logSkill',['hmxili',trigger.target]).set('goon',function(){
- var target=trigger.target;
- if(get.attitude(player,target)>=0) return false;
- if(trigger.target.hasSkillTag('filterDamage',null,{
- player:trigger.player,
- card:trigger.card,
- })||target.mayHaveShan()) return false;
- return true;
- }()).ai=function(card){
- if(_status.event.goon) return 5-get.value(card);
- return -1;
+ player.chooseToDiscard('是否弃置一张牌,令'+get.translation(trigger.source)+'对'+get.translation(trigger.player)+'的伤害+1,且你与其各摸两张牌?','he').set('logSkill',['hmxili',trigger.target]).ai=function(card){
+ return 9-get.value(card);
};
'step 1'
if(result.bool){
- var id=trigger.target.playerid;
- var map=trigger.customArgs;
- if(!map[id]) map[id]={};
- if(!map[id].extraDamage) map[id].extraDamage=0;
- map[id].extraDamage++;
+ game.asyncDraw([trigger.source,player],2);
+ trigger.num++;
+ player.addTempSkill('hmxili2');
}
+ else event.finish();
+ 'step 2'
+ game.delayx();
},
},
+ hmxili2:{},
//说出吾名吓汝一跳
xuxie:{
audio:2,
@@ -5425,14 +5422,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
huaman:'花鬘',
hmmanyi:'蛮裔',
hmmanyi_info:'锁定技,【南蛮入侵】对你无效。',
+ mansi_viewas:'蛮嗣',
mansi:'蛮嗣',
- mansi_info:'一名角色使用的【南蛮入侵】结算完成后,你可以摸X张牌(X为受到过此牌伤害的角色数)。',
+ mansi_info:'出牌阶段限一次,你可以将所有手牌【南蛮入侵】使用;当有角色受到【南蛮入侵】的伤害后,你摸一张牌。',
souying:'薮影',
- souying_info:'每回合限一次,当你对一名男性角色造成伤害(或一名男性角色对你造成伤害时),若此伤害是你对其(或其对你)本回合内造成的第二次伤害,你可以弃置一张手牌令此伤害+1或(-1)。',
+ souying_info:'每回合限一次,当你对其他角色(或其他角色对你)使用牌指定唯一目标后,若此牌不是本回合你对其(或其对你)使用的第一张牌,你可以弃置一张牌将此牌收回手牌(或令此牌对你无效)。',
zhanyuan:'战缘',
zhanyuan_info:'觉醒技,准备阶段,若你已因蛮嗣累计获得超过7张牌,你加一点体力上限,并可以选择一名男性角色,你与其获得技能〖系力〗,然后你失去技能〖蛮嗣〗',
hmxili:'系力',
- hmxili_info:'你的回合外,当其他拥有〖系力〗技能的角色在其回合内使用【杀】指定目标后,你可以弃置一张手牌,令此【杀】伤害+1。',
+ hmxili_info:'每回合限一次,你的回合外,当其他拥有【系力】技能的角色在其回合内对没有【系力】技能的角色造成伤害时,你可以弃置一张牌,令此伤害+1,然后你与其各摸两张牌。',
wangshuang:'王双',
spzhuilie:'追猎',
spzhuilie2:'追猎',
diff --git a/character/standard.js b/character/standard.js
index 6363dde94..fe738e849 100755
--- a/character/standard.js
+++ b/character/standard.js
@@ -2535,7 +2535,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
"new_jiangchi":{
- audio:"jiangchi",
+ audio:2,
trigger:{
player:"phaseDrawEnd",
},
diff --git a/character/yijiang.js b/character/yijiang.js
index afc3ffaac..853c33305 100755
--- a/character/yijiang.js
+++ b/character/yijiang.js
@@ -7,7 +7,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
characterSort:{
yijiang:{
yijiang_2011:['caozhi','re_yujin','zhangchunhua','fazheng','xin_masu','xin_xushu','xusheng','lingtong','wuguotai','chengong','gaoshun'],
- yijiang_2012:['old_wangyi','xunyou','zhonghui','madai','liaohua','old_guanzhang','bulianshi','handang','chengpu','liubiao','old_huaxiong','caozhang'],
+ yijiang_2012:['old_wangyi','xunyou','zhonghui','madai','liaohua','old_guanzhang','bulianshi','handang','chengpu','liubiao','old_huaxiong','caozhang','re_gongsunzan'],
yijiang_2013:['manchong','guohuai','caochong','guanping','liufeng','jianyong','yufan','panzhangmazhong','zhuran','xin_liru','fuhuanghou'],
yijiang_2014:['hanhaoshihuan','chenqun','caozhen','zhangsong','wuyi','zhoucang','zhuhuan','guyong','sunluban','yj_jushou','caifuren'],
yijiang_2015:['caoxiu','caorui','zhongyao','xiahoushi','liuchen','zhangyi','zhuzhi','quancong','sunxiu','gongsunyuan','guotufengji'],
@@ -16,6 +16,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
+ re_gongsunzan:['male','qun',4,['qiaomeng','reyicong']],
fazheng:['male','shu',3,['enyuan','xuanhuo']],
old_guanzhang:['male','shu',4,['old_fuhun']],
old_wangyi:['female','wei',3,['oldzhenlie','oldmiji']],
@@ -51,7 +52,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhuhuan:['male','wu',4,['fenli','pingkou']],
xiahoushi:['female','shu',3,['qiaoshi','yanyu']],
- panzhangmazhong:['male','wu',4,['reduodao','reanjian']],
+ panzhangmazhong:['male','wu',4,['duodao','anjian']],
zhoucang:['male','shu',4,['xinzhongyong']],
guanping:['male','shu',4,['longyin']],
liaohua:['male','shu',4,['dangxian','fuli']],
@@ -59,7 +60,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
gaoshun:['male','qun',4,['xinxianzhen','jinjiu']],
caozhen:['male','wei',4,['xinsidi']],
wuyi:['male','shu',4,['benxi']],
- hanhaoshihuan:['male','wei',4,['reshenduan','reyonglve']],
+ hanhaoshihuan:['male','wei',4,['shenduan','yonglve']],
caorui:['male','wei',3,['huituo','mingjian','xingshuai'],['zhu']],
caoxiu:['male','wei',4,['reqianju','reqingxi']],
@@ -407,7 +408,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
xindanshou:{
- audio:'danshou',
+ audio:2,
trigger:{
global:'phaseJieshuBegin',
target:'useCardToTargeted',
@@ -459,7 +460,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
xinbenxi:{
group:['xinbenxi_summer','xinbenxi_damage'],
- audio:'benxi',
+ audio:2,
trigger:{
player:'useCard2',
},
@@ -629,7 +630,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
damage:{
sub:true,
trigger:{global:'damageBegin1'},
- audio:'benxi',
+ audio:2,
forced:true,
filter:function(event,player){
return event.card&&player.storage.xinbenxi_damage.contains(event.card);
@@ -664,7 +665,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
xinyaoming:{
- audio:'yaoming',
+ audio:2,
trigger:{
player:'damageEnd',
source:'damageSource',
@@ -827,10 +828,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
xinfuli:{
- audio:'fuli',
+ audio:2,
skillAnimation:true,
animationColor:'soil',
- audio:2,
unique:true,
limited:true,
enable:'chooseToUse',
@@ -876,7 +876,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'phaseBegin'},
forced:true,
audio:'dangxian',
- audioname:['guansuo'],
+ audioname:['guansuo','xin_liaohua','re_liaohua'],
content:function(){
'step 0'
player.phaseUse().xindangxian=true;
@@ -3572,6 +3572,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
jyzongshi:{
audio:2,
+ audioname:['re_jianyong'],
trigger:{player:['chooseToCompareAfter','compareMultipleAfter'],target:['chooseToCompareAfter','compareMultipleAfter']},
filter:function(event,player){
if(event.preserve) return false;
@@ -4935,7 +4936,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
check:function(event,player){
return get.attitude(player,event.target)<0;
},
- logTarget:'player',
+ logTarget:'target',
content:function(){
'step 0'
var num=Math.min(game.countPlayer(function(current){
@@ -5364,6 +5365,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return false;
},
audio:2,
+ audioname:['re_chengpu'],
check:function(event,player){
return false;
},
@@ -5723,7 +5725,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var att=get.attitude(player,trigger.player);
var nh=trigger.player.countCards('h');
var eff=get.effect(trigger.player,{name:'sha',isCard:true},player,player);
- if(!player.canUse({name:'sha',isCard:true},trigger.player,false)) eff=0;
+ if(player.inRange(trigger.player)||!player.canUse({name:'sha',isCard:true},trigger.player,false)) eff=0;
player.discardPlayerCard(get.prompt('yonglve',trigger.player),trigger.player,'j').set('ai',function(button){
var name=button.link.viewAs||button.link.name;
var att=_status.event.att;
@@ -5740,15 +5742,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}).set('att',att).set('nh',nh).set('eff',eff).set('logSkill',['reyonglve',trigger.player]);
'step 1'
if(result.bool){
- if(player.canUse({name:'sha',isCard:true},trigger.player,false)){
- event.related=player.useCard({name:'sha',isCard:true},trigger.player);
+ if(!player.inRange(trigger.player)&&player.canUse({name:'sha',isCard:true},trigger.player,false)){
+ player.useCard({name:'sha',isCard:true},trigger.player);
}
+ else player.draw();
}
- else{
- event.finish();
- }
- 'step 2'
- player.draw();
},
},
yonglve:{
@@ -6461,7 +6459,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
'step 0'
- player.chooseTarget([1,(player.storage.reyanzhu?player.hp:player.maxHp)],get.prompt('rexingxue'),'令所有目标角色依次摸一张牌,然后所有手牌数不等于体力值的目标角色依次将一张牌置于牌堆顶').set('ai',function(target){
+ player.chooseTarget([1,(player.storage.reyanzhu?player.maxHp:player.hp)],get.prompt('rexingxue'),'令所有目标角色依次摸一张牌,然后所有手牌数不等于体力值的目标角色依次将一张牌置于牌堆顶').set('ai',function(target){
var att=get.attitude(player,target);
if(target.countCards('h')==target.hp-1) att*=2;
return att;
@@ -7718,26 +7716,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'duodao',
content:function(){
'step 0'
- if(get.color(trigger.card)!='red'){
- var prompt='弃置一张牌'
- if(trigger.player.getEquip(1)) prompt+=(',然后获得'+get.translation(trigger.player)+'装备区中的'+get.translation(trigger.player.getEquip(1)));
- var next=player.chooseToDiscard('he',get.prompt('reduodao',trigger.player),prompt);
- next.logSkill=['reduodao',trigger.player];
- next.set('ai',function(card){
- if(!_status.event.getTrigger().player.getEquip(1)) return 0;
- if(get.attitude(_status.event.player,_status.event.getTrigger().player)*get.value(_status.event.getTrigger().player.getEquip(1))<=0){
- return 6-get.value(card);
- }
- return 0;
- });
- }
- else{
- player.chooseBool('是否发动夺刀】,获得'+get.translation(trigger.player)+'装备区的'+get.translation(trigger.player.getEquip(1))+'?').set('ai',function(){
- var player=_status.event.player;
- var source=_status.event.getTrigger().player;
- return get.attitude(player,source)*get.value(source.getEquip(1))<=0;
- });
- }
+ var prompt='弃置一张牌'
+ if(trigger.player.getEquip(1)) prompt+=(',然后获得'+get.translation(trigger.player)+'装备区中的'+get.translation(trigger.player.getEquip(1)));
+ var next=player.chooseToDiscard('he',get.prompt('reduodao',trigger.player),prompt);
+ next.logSkill=['reduodao',trigger.player];
+ next.set('ai',function(card){
+ if(!_status.event.getTrigger().player.getEquip(1)) return 0;
+ if(get.attitude(_status.event.player,_status.event.getTrigger().player)*get.value(_status.event.getTrigger().player.getEquip(1))<=0){
+ return 6-get.value(card);
+ }
+ return 0;
+ });
'step 1'
if(result.bool&&trigger.player.getEquip(1)){
if(!result.cards||!result.cards.length) player.logSkill('reduodao',trigger.player);
@@ -8459,7 +8448,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
olsanyao1:{},
rezhiman:{
audio:'zhiman',
- audioname:['guansuo'],
+ audioname:['guansuo','re_masu'],
trigger:{source:'damageBegin2'},
check:function(event,player){
if(get.damageEffect(event.player,player,player)<0) return true;
@@ -8484,7 +8473,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
resanyao:{
- audio:'sanyao',
+ audio:2,
enable:'phaseUse',
usable:1,
selectCard:function(){
@@ -8540,7 +8529,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
reqiaoshui:{
- audio:'qiaoshui',
+ audio:2,
enable:'phaseUse',
filterTarget:function(card,player,target){
return player.canCompare(target);
@@ -9080,7 +9069,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
rechanhui:{
- audio:'chanhui',
+ audio:2,
trigger:{player:'useCardToPlayer'},
filter:function(event,player){
if(_status.currentPhase!=player||player.hasSkill('rechanhui2')) return false;
@@ -9131,7 +9120,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
rechanhui2:{},
rejiaojin:{
- audio:'jiaojin',
+ audio:2,
trigger:{target:'useCardToTargeted'},
filter:function(event,player){
return (event.card.name=='sha'||get.type(event.card)=='trick')&&event.player&&event.player.sex=='male'&&player.countCards('he',function(card){
@@ -9694,6 +9683,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
zhuiyi:{
audio:2,
+ audioname:['re_bulianshi'],
trigger:{player:'die'},
direct:true,
skillAnimation:true,
@@ -10624,6 +10614,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
zishou:{
audio:2,
+ audioname:['re_liubiao'],
trigger:{player:'phaseDrawBegin2'},
check:function(event,player){
return player.countCards('h')<=(player.hasSkill('zongshi')?player.maxHp:(player.hp-2))||player.skipList.contains('phaseUse');
@@ -11341,7 +11332,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
player.draw(2);
},
- audio:'jingce',
+ audio:2,
},
oldchengxiang:{
audio:'chengxiang',
@@ -12129,7 +12120,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhenjun:"镇军",
"zhenjun_info":"准备阶段,你可以弃置一名手牌数多于体力值的角色的X张牌(X为其手牌数和体力值之差),然后选择一项:1.你弃置等同于其中非装备牌数量的牌;2.其摸等量的牌。",
rezhenjun:"镇军",
- rezhenjun_info:"准备阶段,你可以弃置一名手牌数多于体力值的角色的X张牌(X为其手牌数和体力值之差且至少为1),然后选择一项:1.你弃置X张牌;2.其摸X张牌。(X为其弃置的牌中非装备牌的数量)",
+ rezhenjun_info:"准备阶段,你可以弃置一名角色的X张牌(X为其手牌数和体力值之差且至少为1),然后选择一项:1.你弃置X张牌;2.其摸X张牌。(X为其弃置的牌中非装备牌的数量)",
xinzhenjun:'镇军',
xinzhenjun_info:'出牌阶段开始时,你可以将一张牌交给一名其他角色,令其选择是否使用一张不为黑色的【杀】。若其选择是,则你于此【杀】结算完成后摸1+X张牌(X为此【杀】造成的伤害总点数)。若其选择否,则你对其或其攻击范围内的一名其他角色造成1点伤害。',
fenli:'奋励',
@@ -12278,7 +12269,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
reshenduan:'慎断',
reshenduan_info:'当你的黑色基本牌或装备牌因弃置而进入弃牌堆后,你可以将其当做【兵粮寸断】使用(无距离限制)。',
reyonglve:'勇略',
- reyonglve_info:'一名其他角色的判定阶段开始时,你可以弃置其判定区里的一张牌,视为对该角色使用一张【杀】。然后你摸一张牌。',
+ reyonglve_info:'其他角色的判定阶段开始时,你可以弃置其判定区里的一张牌。然后若该角色在你攻击范围内,你摸一张牌。若其在你攻击范围外,视为你对其使用一张【杀】。',
benxi:'奔袭',
benxi_info:'锁定技,你的回合内,你每使用一次牌后,你的进攻距离+1直到回合结束;你的回合内,若你与所有角色的距离均为1,你无视其他角色的防具,且你使用的【杀】可额外指定一个目标',
xinbenxi:'奔袭',
@@ -12358,7 +12349,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xingshuai:'兴衰',
xingshuai_info:'主公技,限定技,当你进入濒死状态时,其他魏势力角色可依次令你回复1点体力,然后这些角色依次受到1点伤害。',
reduodao:'夺刀',
- reduodao_info:'当你成为【杀】的目标后,若此杀:为红色,你可点击确定键。不为红色,你可以弃置一张牌。然后你获得此【杀】使用者装备区里的武器牌。',
+ reduodao_info:'当你成为【杀】的目标后,你可以弃置一张牌。然后你获得此【杀】使用者装备区里的武器牌。',
reanjian:'暗箭',
reanjian_info:'锁定技,当你使用【杀】指定目标后,若你不在其攻击范围内,则此杀伤害+1且无视其防具。若其因执行此【杀】的效果受到伤害而进入濒死状态,则其不能使用【桃】直到此濒死事件结算结束。',
duodao:'夺刀',
@@ -12605,6 +12596,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
reshangshi:'伤逝',
reshangshi_2nd:'伤逝',
reshangshi_info:'当你受到伤害时,你可以弃置一张牌。当你的手牌数小于X时,你可以将手牌摸至X张。(X为你已损失的体力值)',
+ re_gongsunzan:'界公孙瓒',
yijiang_2011:'一将成名2011',
yijiang_2012:'一将成名2012',
diff --git a/game/asset.js b/game/asset.js
index 3b2cf5e25..1b4ca3de5 100644
--- a/game/asset.js
+++ b/game/asset.js
@@ -1,5 +1,5 @@
window.noname_asset_list=[
- 'v1.9.103.4',
+ 'v1.9.104',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@@ -593,6 +593,26 @@ window.noname_asset_list=[
'audio/die/old_madai.mp3',
'audio/die/old_wangyi.mp3',
'audio/die/sunshao.mp3',
+ 'audio/die/caoshuang.mp3',
+ 'audio/die/furong.mp3',
+ 'audio/die/ol_dongzhuo.mp3',
+ 'audio/die/re_bulianshi.mp3',
+ 'audio/die/re_caozhang.mp3',
+ 'audio/die/re_chengpu.mp3',
+ 'audio/die/re_guohuai.mp3',
+ 'audio/die/re_jianyong.mp3',
+ 'audio/die/re_liaohua.mp3',
+ 'audio/die/re_liubiao.mp3',
+ 'audio/die/re_masu.mp3',
+ 'audio/die/re_quancong.mp3',
+ 'audio/die/re_sunluban.mp3',
+ 'audio/die/re_wuyi.mp3',
+ 'audio/die/re_zhangyi.mp3',
+ 'audio/die/re_zhuran.mp3',
+ 'audio/die/xin_caozhang.mp3',
+ 'audio/die/xin_gongsunzan.mp3',
+ 'audio/die/xin_liaohua.mp3',
+ 'audio/die/xin_xusheng.mp3',
'audio/skill/anguo1.mp3',
'audio/skill/anguo2.mp3',
@@ -2621,6 +2641,70 @@ window.noname_asset_list=[
'audio/skill/oldqianxi2.mp3',
'audio/skill/oldzhenlie1.mp3',
'audio/skill/oldzhenlie2.mp3',
+ 'audio/skill/benghuai_ol_dongzhuo1.mp3',
+ 'audio/skill/benghuai_ol_dongzhuo2.mp3',
+ 'audio/skill/dangxian_re_liaohua1.mp3',
+ 'audio/skill/dangxian_re_liaohua2.mp3',
+ 'audio/skill/dangxian_xin_liaohua1.mp3',
+ 'audio/skill/dangxian_xin_liaohua2.mp3',
+ 'audio/skill/decadepojun1.mp3',
+ 'audio/skill/decadepojun2.mp3',
+ 'audio/skill/jyzongshi_re_jianyong1.mp3',
+ 'audio/skill/jyzongshi_re_jianyong2.mp3',
+ 'audio/skill/liechi1.mp3',
+ 'audio/skill/liechi2.mp3',
+ 'audio/skill/lihuo_re_chengpu1.mp3',
+ 'audio/skill/lihuo_re_chengpu2.mp3',
+ 'audio/skill/new_jiangchi1.mp3',
+ 'audio/skill/new_jiangchi2.mp3',
+ 'audio/skill/olbaonue1.mp3',
+ 'audio/skill/olbaonue2.mp3',
+ 'audio/skill/oljiuchi1.mp3',
+ 'audio/skill/oljiuchi2.mp3',
+ 'audio/skill/reanxu1.mp3',
+ 'audio/skill/reanxu2.mp3',
+ 'audio/skill/rechanhui1.mp3',
+ 'audio/skill/rechanhui2.mp3',
+ 'audio/skill/rechunlao1.mp3',
+ 'audio/skill/rechunlao2.mp3',
+ 'audio/skill/refuli1.mp3',
+ 'audio/skill/refuli2.mp3',
+ 'audio/skill/rejiangchi1.mp3',
+ 'audio/skill/rejiangchi2.mp3',
+ 'audio/skill/rejiaojin1.mp3',
+ 'audio/skill/rejiaojin2.mp3',
+ 'audio/skill/reqiaoshui1.mp3',
+ 'audio/skill/reqiaoshui2.mp3',
+ 'audio/skill/resanyao1.mp3',
+ 'audio/skill/resanyao2.mp3',
+ 'audio/skill/rewurong1.mp3',
+ 'audio/skill/rewurong2.mp3',
+ 'audio/skill/rezongshi1.mp3',
+ 'audio/skill/rezongshi2.mp3',
+ 'audio/skill/roulin_ol_dongzhuo1.mp3',
+ 'audio/skill/roulin_ol_dongzhuo2.mp3',
+ 'audio/skill/shanzhuan1.mp3',
+ 'audio/skill/shanzhuan2.mp3',
+ 'audio/skill/tuogu1.mp3',
+ 'audio/skill/tuogu2.mp3',
+ 'audio/skill/xinbenxi1.mp3',
+ 'audio/skill/xinbenxi2.mp3',
+ 'audio/skill/xindanshou1.mp3',
+ 'audio/skill/xindanshou2.mp3',
+ 'audio/skill/xinfuli1.mp3',
+ 'audio/skill/xinfuli2.mp3',
+ 'audio/skill/xinjingce1.mp3',
+ 'audio/skill/xinjingce2.mp3',
+ 'audio/skill/xinyaoming1.mp3',
+ 'audio/skill/xinyaoming2.mp3',
+ 'audio/skill/xuewei1.mp3',
+ 'audio/skill/xuewei2.mp3',
+ 'audio/skill/zhiman_re_masu1.mp3',
+ 'audio/skill/zhiman_re_masu2.mp3',
+ 'audio/skill/zhuiyi_re_bulianshi1.mp3',
+ 'audio/skill/zhuiyi_re_bulianshi2.mp3',
+ 'audio/skill/zishou_re_liubiao1.mp3',
+ 'audio/skill/zishou_re_liubiao2.mp3',
'font/huangcao.ttf',
'font/shousha.ttf',
@@ -3239,6 +3323,16 @@ window.noname_asset_list=[
'image/character/caobuxing.jpg',
'image/character/key_akiko.jpg',
'image/character/re_maliang.jpg',
+ 'image/character/caoshuang.jpg',
+ 'image/character/furong.jpg',
+ 'image/character/key_abyusa.jpg',
+ 'image/character/re_bulianshi.jpg',
+ 'image/character/re_hanhaoshihuan.jpg',
+ 'image/character/re_liubiao.jpg',
+ 'image/character/re_panzhangmazhong.jpg',
+ 'image/character/xin_caozhang.jpg',
+ 'image/character/xin_gongsunzan.jpg',
+ 'image/character/xin_liaohua.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',
@@ -5074,10 +5168,14 @@ window.noname_skin_list={
key_hinata:1,
key_iwasawa:2,
key_nao:3,
- key_shiki:3,
+ key_shiki:4,
key_yui:2,
key_yuri:3,
key_yuzuru:2,
sp_key_kanade:1,
key_kamome:1,
+ key_umi:1,
+ key_umi2:1,
+ key_mio:1,
+ key_midori:1,
};
\ No newline at end of file
diff --git a/game/game.js b/game/game.js
index c50dde40b..a20d2c2a5 100644
--- a/game/game.js
+++ b/game/game.js
@@ -5530,7 +5530,7 @@
name:'斗地主',
connect:{
update:function(config,map){
- if(config.connect_doudizhu_mode=='kaihei'){
+ if(config.connect_doudizhu_mode=='kaihei'||config.connect_doudizhu_mode=='huanle'){
map.connect_double_character.hide();
}
else{
@@ -5541,8 +5541,9 @@
name:'游戏模式',
init:'normal',
item:{
- normal:'标准',
+ normal:'休闲',
kaihei:'开黑',
+ huanle:'欢乐',
},
restart:true,
frequent:true,
@@ -5562,13 +5563,13 @@
},
config:{
update:function(config,map){
- if(config.doudizhu_mode=='kaihei'){
+ if(config.doudizhu_mode=='kaihei'||config.doudizhu_mode=='huanle'){
map.double_character.hide();
}
else{
map.double_character.show();
}
- if(config.double_character&&config.doudizhu_mode!='kaihei'){
+ if(config.double_character&&config.doudizhu_mode!='kaihei'&&config.doudizhu_mode!='huanle'){
map.double_hp.show();
}
else{
@@ -5579,8 +5580,9 @@
name:'游戏模式',
init:'normal',
item:{
- normal:'标准',
+ normal:'休闲',
kaihei:'开黑',
+ huanle:'欢乐',
},
restart:true,
frequent:true,
@@ -16303,7 +16305,7 @@
},this.playerid,str);
},
chat:function(str){
- if(str&&str.indexOf('http')!=-1) return;
+ if(get.is.banWords(str)) return;
lib.element.player.say.call(this,str);
game.broadcast(function(id,str){
if(lib.playerOL[id]){
@@ -24216,7 +24218,7 @@
if(lib.config.forbidai.contains(i)) return true;
if(lib.characterFilter[i]&&!lib.characterFilter[i](get.mode())) return true;
if(_status.connectMode){
- if(lib.configOL.banned.contains(i)) return true;
+ if(lib.configOL.banned.contains(i)||lib.connectBanned.contains(i)) return true;
var double_character=false;
if(lib.configOL.mode=='guozhan'){
double_character=true;
@@ -25758,7 +25760,9 @@
ui.connectClients=ui.create.div('.forceopaque.menubutton.large.connectevents.pointerdiv.left','在线',ui.window,ui.click.connectClients);
ui.connectClientsCount=ui.create.div('.forceopaque.menubutton.icon.connectevents.highlight.left','1',ui.window);
if(events.length){
- ui.connectEventsCount.innerHTML=events.length;
+ ui.connectEventsCount.innerHTML=events.filter(function(evt){
+ return evt.creator==game.onlineKey||!get.is.banWords(evt.content)
+ }).length;
ui.connectEventsCount.show();
}
}
@@ -25879,8 +25883,11 @@
updateevents:function(events){
if(events&&ui.connectEvents){
ui.connectEvents.info=events;
- if(events.length){
- ui.connectEventsCount.innerHTML=events.length;
+ var num=events.filter(function(evt){
+ return evt.creator==game.onlineKey||!get.is.banWords(evt.content)
+ }).length;
+ if(num){
+ ui.connectEventsCount.innerHTML=num;
ui.connectEventsCount.show();
}
else{
@@ -42049,6 +42056,7 @@
});
}
}
+ lib.init.js(lib.assetURL+'game','keyWords',function(){});
lib.updateURL=lib.updateURLS[lib.config.update_link]||lib.updateURLS.coding;
lib.init.cssstyles();
@@ -43265,6 +43273,77 @@
alert('创建失败,时间已过');
return;
}
+ if(get.is.banWords(button.input.value)){
+ var eventnode=ui.create.div('.menubutton.videotext.onlineevent.pointerdiv',function(){
+ var that=this;
+ setTimeout(function(){
+ if(that.classList.contains('active')){
+ if(confirm('确定要离开'+that.info.content+'?')){
+ that.classList.remove('active');
+ }
+ }
+ else{
+ if(confirm('确定要加入'+that.info.content+'?')){
+ that.classList.add('active');
+ }
+ }
+ });
+ },uiintro.content,3);
+ var fakeinfo={
+ utc:utc,
+ day:parseInt(daysselect.value),
+ hour:parseInt(hoursselect.value),
+ nickname:lib.config.connect_nickname,
+ avatar:lib.config.connect_avatar,
+ content:button.input.value,
+ create:game.onlineKey,
+ members:[game.onlineKey],
+ };
+ eventnode.info=fakeinfo;
+ ui.create.div('.title',fakeinfo.content,eventnode);
+ var str;
+ if(fakeinfo.day0.5?'不叫':'叫地主';
+ });
+ if(event.current==game.me){
+ event.dialog.content.childNodes[0].innerHTML='是否抢地主?';
+ }
+ "step 2"
+ event.current.chat(result.control);
+ if(result.control=='叫地主'||event.current==event.start.next){
+ game.zhu=result.control=='叫地主'?event.current:event.current.next;
+ for(var player of game.players){
+ player.identity=player==game.zhu?'zhu':'fan';
+ player.showIdentity();
+ }
+ event.dialog.close();
+ event.map[game.zhu.playerid].addArray(event.list.randomRemove(3));
+ }
+ else{
+ event.current=event.current.next;
+ event.goto(1);
+ game.delay(1.5);
+ }
+ "step 3"
+ game.me.chooseButton(['请选择你的武将',[event.map[game.me.playerid],'character']],true);
+ "step 4"
+ game.me.init(result.links[0]);
+ for(var player of game.players){
+ if(player!=game.me) player.init(event.map[player.playerid].randomGet());
+ }
+ game.zhu.hp++;
+ game.zhu.maxHp++;
+ game.zhu.update();
+ for(var i=0;i0.5?'不叫':'叫地主';
+ });
+ "step 2"
+ event.current.chat(result.control);
+ if(result.control=='叫地主'||event.current==event.start.next){
+ game.zhu=result.control=='叫地主'?event.current:event.current.next;
+ for(var player of game.players){
+ player.identity=player==game.zhu?'zhu':'fan';
+ player.showIdentity();
+ player.identityShown=true;
+ }
+ game.broadcastAll('closeDialog',event.videoId)
+ event.map[game.zhu.playerid].addArray(event.list.randomRemove(3));
+ }
+ else{
+ event.current=event.current.next;
+ event.goto(1);
+ }
+ "step 3"
+ var list=[];
+ var str='选择角色';
+ for(var i=0;i