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=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