diff --git a/card/guozhan.js b/card/guozhan.js index 2030bd135..c2c09d7dc 100644 --- a/card/guozhan.js +++ b/card/guozhan.js @@ -4,6 +4,37 @@ game.import('card',function(lib,game,ui,get,ai,_status){ name:'guozhan', connect:true, card:{ + liulongcanjia:{ + mode:['guozhan'], + fullskin:true, + type:'equip', + subtype:'equip6', + nomod:true, + nopower:true, + unique:true, + distance:{ + globalFrom:-1, + globalTo:+1, + }, + onEquip:function(){ + var cards=player.getCards('e',{subtype:['equip3','equip4']}); + if(cards.length) player.discard(cards); + }, + skills:['liulongcanjia'], + ai:{ + equipValue:function(card,player){ + if(player.countCards('e',{subtype:['equip3','equip4']})>1) return 1; + if(player.hasSkill('gzzongyu')) return 9; + if(game.hasPlayer(function(current){ + return current.hasSkill('gzzongyu')&&get.attitude(player,current)<=0; + })) return 1; + return 7.2; + }, + basic:{ + equipValue:7.2 + } + }, + }, minguangkai:{ mode:['guozhan'], fullskin:true, @@ -53,7 +84,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ unique:true, global:'g_feilongduofeng_ai', distance:{attackFrom:-1}, - skills:['feilongduofeng','feilongduofeng2'], + skills:['feilongduofeng','feilongduofeng3'], ai:{ equipValue:function(card,player){ if(player.hasSkill('zhangwu')) return 9; @@ -77,7 +108,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ nomod:true, nopower:true, unique:true, - global:['g_taipingyaoshu','g_taipingyaoshu_ai'], + global:['g_taipingyaoshu_ai'], skills:['taipingyaoshu'], ai:{ equipValue:function(card,player){ @@ -95,9 +126,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, onLose:function(){ 'step 0' - player.loseHp(); - 'step 1' player.draw(2); + 'step 1' + player.loseHp(); } }, yuxi:{ @@ -128,35 +159,16 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(evt&&evt.name=='phaseUse'){ evt.skipped=true; } - target.insertEvent('xietianzi',lib.card.xietianzi.content_phase); - // target.addSkill('xietianzi'); - }, - content_phase:function(){ - "step 0" - player.removeSkill('xietianzi'); - if(player.countCards('he')>0){ - player.chooseToDiscard('he','是否弃置一张牌并获得一个额外回合?').set('ai',function(card){ - return 10-get.value(card); - }); - } - else{ - event.finish(); - } - "step 1" - if(result.bool){ - player.insertPhase(); - } + target.addTempSkill('xietianzi'); }, + ai:{ order:0.5, value:4, useful:2, - tag:{ - norepeat:1 - }, result:{ target:function(player,target){ - if(target.countCards('he')>=2) return 1; + if(target.countCards('h')>=2) return 1; return 0; } } @@ -281,11 +293,12 @@ game.import('card',function(lib,game,ui,get,ai,_status){ content:function(){ 'step 0' if(target==player){ - target.draw(targets.length-1); + var num=targets.length-1; + target.chooseDrawRecover(num,num,true); event.finish(); } else{ - target.chooseDrawRecover(true); + target.draw(); } 'step 1' target.link(false); @@ -295,10 +308,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){ value:4, useful:2, result:{ - player:0.8, - target:1 - } - } + player:1.3, + target:1, + }, + }, }, chiling:{ fullskin:true, @@ -676,6 +689,13 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + liulongcanjia:{ + mod:{ + targetEnabled:function(card,player,target){ + if(['equip3','equip4'].contains(get.subtype(card))) return false; + }, + }, + }, minguangkai_cancel:{ trigger:{target:'useCardToBefore'}, forced:true, @@ -913,7 +933,31 @@ game.import('card',function(lib,game,ui,get,ai,_status){ game.addVideo('setIdentity',trigger.player,event.identity); } }, + feilongduofeng3:{ + trigger:{source:'dying'}, + filter:function(event,player){ + var evt=event.getParent('damage'); + return evt&&evt.card&&evt.card.name=='sha'&&event.player.countGainableCards(player,'h')>0; + }, + priority:7, + check:function(event,player){ + return get.attitude(player,event.player)<0; + }, + content:function(){ + player.gainPlayerCard(trigger.player,true); + }, + }, taipingyaoshu:{ + mod:{ + maxHandcard:function(player,num){ + if(player.hasSkill('huangjintianbingfu')){ + num+=player.storage.huangjintianbingfu.length; + } + return num+game.countPlayer(function(current){ + return current.isFriendOf(player); + }); + } + }, trigger:{player:'damageBefore'}, filter:function(event,player){ if(event.source&&event.source.hasSkillTag('unequip',false,{ @@ -945,23 +989,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } } }, - g_taipingyaoshu:{ - mod:{ - maxHandcard:function(player,num){ - var source=game.findPlayer(function(current){ - return current.hasSkill('taipingyaoshu')&¤t.isFriendOf(player); - }); - if(source){ - if(source.hasSkill('huangjintianbingfu')){ - num+=source.storage.huangjintianbingfu.length; - } - return num+game.countPlayer(function(current){ - return current.isFriendOf(source); - }); - } - } - }, - }, + g_taipingyaoshu:{}, yuxi_skill:{ trigger:{player:'phaseDrawBegin'}, forced:true, @@ -1000,25 +1028,20 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, xietianzi:{ - trigger:{player:'phaseAfter'}, - filter:function(event,player){ - return player.hasSkill('xietianzi'); - }, - toself:true, forced:true, popup:false, - priority:-50, + filter:function(event,player){ + return player.countCards('h')>0; + }, + trigger:{ + player:'phaseDiscardAfter', + }, content:function(){ "step 0" player.removeSkill('xietianzi'); - if(player.countCards('he')>0){ - player.chooseToDiscard('he','是否弃置一张牌并获得一个额外回合?').set('ai',function(card){ - return 10-get.value(card); - }); - } - else{ - event.finish(); - } + player.chooseToDiscard('h','是否弃置一张手牌并获得一个额外回合?').set('ai',function(card){ + return 10-get.value(card); + }); "step 1" if(result.bool){ player.insertPhase(); @@ -1125,18 +1148,14 @@ game.import('card',function(lib,game,ui,get,ai,_status){ event.goto(1); } }, - g_diaohulishan:{ - trigger:{player:'useCardAfter'}, + g_diaohulishan:{}, + diaohulishan:{ + trigger:{player:['damageBefore','loseHpBefore','recoverBefore']}, forced:true, popup:false, - filter:function(event,player){ - return event.card.name=='diaohulishan'; - }, content:function(){ - player.draw(); - } - }, - diaohulishan:{ + trigger.cancel(); + }, mod:{ cardEnabled:function(){ return false; @@ -1146,13 +1165,20 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, targetEnabled:function(){ return false; - } + }, }, mark:true, intro:{ - content:'不计入距离的计算且不能使用牌且不是牌的合法目标' + content:'不计入距离的计算且不能使用牌且不是牌的合法目标且不能失去/回复体力和受到伤害' + }, + group:'undist', + ai:{ + effect:{ + target:function (card,player,target){ + if(get.tag(card,'recover')||get.tag(card,'damage')) return 'zeroplayertarget'; + }, + }, }, - group:'undist' }, huxinjing:{ trigger:{player:'damageBefore'}, @@ -1239,6 +1265,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, }, translate:{ + + equip6:'坐骑', + liulongcanjia:'六龙骖驾', + liulongcanjia_info:'锁定技,你计算与其他角色的距离+1,其他角色计算与你的距离-1。
锁定技,当此牌进入你的装备区时,你弃置你装备区内其他坐骑牌;当此牌在你的装备区内,你不能使用其他坐骑牌(你的装备区便不能置入其他坐骑牌)。', minguangkai:'明光铠', minguangkai_cancel:'明光铠', minguangkai_link:'明光铠', @@ -1250,26 +1280,27 @@ game.import('card',function(lib,game,ui,get,ai,_status){ dinglanyemingzhu_skill_info:'出牌阶段限一次,你可以弃置至多X张牌(X为你的体力上限),然后摸等量的牌', feilongduofeng:'飞龙夺凤', feilongduofeng2:'飞龙夺凤', - feilongduofeng_info:'当你使用【杀】指定一名角色为目标后,你可令该角色弃置一张牌。你使用【杀】杀死一名角色后,若你所属的势力是全场最少的(或之一),你可令该角色的使用者选择是否从未使用的武将牌中选择一张与你势力相同的武将牌重新加入游戏', + feilongduofeng3:'飞龙夺凤', + feilongduofeng_info:'当你使用【杀】指定一名角色为目标后,你可令该角色弃置一张牌。当你使用【杀】令其他角色进入濒死状态时,你可以获得其一张手牌。', taipingyaoshu:'太平要术', - taipingyaoshu_info:'锁定技,防止你受到的所有属性伤害;全场每有一名与你势力相同的角色存活,所有此势力角色的手牌上限便+1;当你失去装备区里的【太平要术】时,你失去1点体力,然后摸两张牌', + taipingyaoshu_info:'锁定技,防止你受到的所有属性伤害;全场每有一名与你势力相同的角色存活,你的手牌上限便+1;当你失去装备区里的【太平要术】时,你摸两张牌,然后失去1点体力。', yuxi_skill:'玉玺', yuxi_skill2:'玉玺', yuxi:'玉玺', yuxi_info:'锁定技,若你有明置的武将牌,你的势力视为唯一的大势力;锁定技,摸牌阶段,若你有明置的武将牌,你多摸一张牌;锁定技,出牌阶段开始时,若你有明置的武将牌,你视为使用【知己知彼】', xietianzi:'挟令', - xietianzi_info:'出牌阶段,对自己使用。你结束出牌阶段,若如此做,此回合结束时,你可以弃置一张牌,获得一个额外的回合', - xietianzi_info_guozhan:'出牌阶段,对为大势力角色的你使用。你结束出牌阶段,若如此做,此回合结束时,你可以弃置一张牌,获得一个额外的回合', + xietianzi_info:'出牌阶段,对自己使用。你结束出牌阶段,若如此做,弃牌阶段结束时,你可以弃置一张手牌,获得一个额外的回合', + xietianzi_info_guozhan:'出牌阶段,对为大势力角色的你使用。你结束出牌阶段,若如此做,弃牌阶段结束时,你可以弃置一张手牌,获得一个额外的回合', shuiyanqijunx:'水淹七军', shuiyanqijunx_info:'出牌阶段,对一名装备区里有牌的其他角色使用。目标角色选择一项:1、弃置装备区里的所有牌;2、受到你造成的1点雷电伤害', lulitongxin:'勠力同心', lulitongxin_info:'出牌阶段,对所有大势力角色或所有小势力角色使用。若目标角色:不处于“连环状态”,其横置;处于“连环状态”,其摸一张牌', lianjunshengyan:'联军盛宴', - lianjunshengyan_info:'出牌阶段,对你和你选择的除你的势力外的一个势力的所有角色。若目标角色:为你,你摸X张牌(X为该势力的角色数);不为你,其选择一项:1、回复1点体力;2、摸一张牌,然后重置', + lianjunshengyan_info:'出牌阶段,对你和你选择的除你的势力外的一个势力的所有角色。若目标角色:为你,你摸X张牌或回复X点体力(X为该势力的角色数);不为你,其摸一张牌,然后重置', chiling:'敕令', chiling_info:'出牌阶段,对所有没有势力的角色使用。目标角色选择一项:1、明置一张武将牌,然后摸一张牌;2、弃置一张装备牌;3、失去1点体力。当【敕令】因判定或弃置而置入弃牌堆时,系统将之移出游戏,然后系统于当前回合结束后视为对所有没有势力的角色使用【敕令】', diaohulishan:'调虎离山', - diaohulishan_info:'出牌阶段,对至多两名其他角色使用。目标角色于此回合结束之前不计入距离的计算且不能使用牌且不是牌的合法目标。此牌结算结束时,你摸一张牌', + diaohulishan_info:'出牌阶段,对至多两名其他角色使用。目标角色于此回合结束之前不计入距离的计算且不能使用牌且不是牌的合法目标且不能失去或回复体力或受到伤害。', huoshaolianying:'火烧连营', huoshaolianying_bg:'烧', huoshaolianying_info_guozhan:'出牌阶段,对你的下家和与其处于同一队列的角色使用,每名角色受到一点火焰伤害', diff --git a/card/standard.js b/card/standard.js index 21f18f526..037402a1c 100644 --- a/card/standard.js +++ b/card/standard.js @@ -1625,7 +1625,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ qilin_skill:{ trigger:{source:'damageBegin'}, filter:function(event,player){ - return event.card&&event.card.name=='sha'&&event.notLink()&&event.player.getCards('e',{subtype:['equip3','equip4']}).length>0 + return event.card&&event.card.name=='sha'&&event.notLink()&&event.player.getCards('e',{subtype:['equip3','equip4','equip6']}).length>0 }, direct:true, audio:true, @@ -1634,7 +1634,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ var att=(get.attitude(player,trigger.player)<=0); var next=player.chooseButton(); next.set('att',att); - next.set('createDialog',['是否发动【麒麟弓】,弃置'+get.translation(trigger.player)+'的一张坐骑牌?',trigger.player.getCards('e',{subtype:['equip3','equip4']})]); + next.set('createDialog',['是否发动【麒麟弓】,弃置'+get.translation(trigger.player)+'的一张坐骑牌?',trigger.player.getCards('e',{subtype:['equip3','equip4','equip6']})]); next.set('ai',function(button){ if(_status.event.att) return get.buttonValue(button); return 0; diff --git a/character/shenhua.js b/character/shenhua.js index c1322f982..d431480b6 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -69,6 +69,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sunce:['zhouyu','taishici','daqiao'], zuoci:['yuji'], xunyu:['xunyou'], + lukang:['luxun'], + yuanshu:['jiling'], + zhangxiu:['jiaxu'], + wangping:['jiangfei'], }, characterFilter:{ zuoci:function(mode){ @@ -153,7 +157,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, mod:{ targetEnabled:function(card,player,target){ - if(target.storage.disableEquip!=undefined&&target.storage.disableEquip.contains(get.subtype(card))) return false; + if(target.isDisabled(get.subtype(card))) return false; }, }, trigger:{ diff --git a/character/sp.js b/character/sp.js index 101c7fd16..bbd0b179e 100755 --- a/character/sp.js +++ b/character/sp.js @@ -168,6 +168,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ quyi:'麴义(又作曲义、鞠义),生卒年不详,是东汉末年军阀袁绍部下的将领,能征善战,屡建战功,早年在凉州,精通羌人战法,率领着袁绍的精锐部队。后来由于自恃功高而骄纵不轨,被袁绍所杀。', taoqian:'陶谦(132年-194年),字恭祖。丹阳郡(治今安徽宣城)人。汉末群雄之一。陶谦最初为诸生,在州郡任职,被举茂才,历任舒、卢二县令、幽州刺史、议郎,性格刚直,有大志。后随左车骑将军皇甫嵩对抗北宫伯玉,任扬武校尉,之后又随张温征韩遂、边章。中平五年(188年),徐州黄巾起,陶谦被朝廷任为徐州刺史,击破徐州黄巾,并推行屯田,恢复生产。尔后听从王朗、赵昱建议遣使进京朝贡,获拜安东将军、徐州牧,封溧阳侯。晚年因战事上为曹操大败,徐州大半几乎遭兵祸所害,以致过度忧劳而逝,终年六十三岁。', wangyun:'王允(137~192年),字子师,太原郡祁县(今山西祁县)人。东汉末年时期大臣。出身太原王氏,世代官宦。举孝廉出身,司徒高第征为侍御史。出任豫州刺史,勤政爱民。斗争中常侍张让失败后,去官隐居。中平六年,大将军何进掌权之后,辟为从事中郎,迁河南尹。董卓拥立汉献帝即位后,代替杨彪,拜太仆、尚书令、司徒,密谋刺死董卓,联合吕布共同执政,日益骄傲自满。初平三年(192年),董卓余党李傕、郭汜、樊稠等攻破长安。王允兵败处死,时年五十六岁。', + bianfuren:'武宣皇后卞氏(159年12月30日-230年7月9日),琅邪开阳(今山东临沂)人,魏武帝曹操的正妻(继室),魏文帝曹丕、任城威王曹彰、陈思王曹植、萧怀王曹熊的母亲。原本是倡家,即汉代专门从事音乐歌舞的乐人家庭,后来与曹操成婚,建安初年,原配丁夫人被废,卞夫人成为曹操的正妻。曹丕继位后尊其为皇太后,曹叡继位后尊其为太皇太后。卞后在太和四年去世,与魏武帝曹操合葬高陵。', + shamoke:'沙摩柯(?-222年),东汉末三国时期五溪蛮首领。汉章武元年(221年)初,为报关羽被东吴杀害之仇,刘备亲自领兵攻孙权,以金锦爵赏诱沙摩柯助战。章武二年(222年),吴大都督陆逊以火攻破刘备,率诸军齐击,汉军四十多个营寨被攻破,沙摩柯在大乱中匹马奔逃,被乱军杀死。', + lvfan:'吕范(?-228年),字子衡。汝南郡细阳县(今安徽太和)人。汉末至三国时期吴国重臣。吕范年轻为汝南县吏,后避难寿春,结识孙策。此后随孙策、孙权征伐四方,对稳固孙氏在江东的统治做出了杰出的贡献,孙权将其比之于东汉开国元勋吴汉。吴国建立后,吕范累官至前将军、假节、扬州牧,封南昌侯。黄武七年(228年),吕范被拜为大司马,未得授官,便已病逝。孙权悲痛不已,遣使赠其大司马印绶。孙权还都建业后,以太牢礼祭祀吕范。', + liqueguosi:"请分别参考武将【李傕】和【郭汜】各自的介绍。", + cuimao:"关于【崔琰】的内容,请查看武将【崔琰】的介绍。
毛玠(?—216年),字孝先,陈留平丘(今河南封丘)人。东汉末年大臣。年少时为县吏,以清廉公正著称。因战乱而打算到荆州避乱,但中途知道刘表政令不严明,因而改往鲁阳。后来投靠曹操,提出“奉天子以令不臣,脩耕植,畜军资”的战略规划,得到曹操的欣赏。
毛玠与崔琰主持选举,所举用的都是清廉正直之士。而毛玠为人廉洁,激起天下廉洁之风,一改朝中奢华风气。曹操大为赞赏,曹丕也亲自去拜访他。
曹操获封魏公后,毛玠改任尚书仆射,再典选举。又密谏曹操应该立嫡长子曹丕为魏国太子。崔琰被杀后,毛玠十分不快。后来有人诬告毛玠,曹操大怒,将毛玠收于狱中。及后在桓阶、和洽营救下,只被免职,不久逝世于家中。曹操在他死后赐他棺材和钱帛。", huangfusong:'字义真。安定郡朝那县(今宁夏彭阳)人。于黄巾起义时,以中郎将身份讨伐黄巾,用火攻大破张梁、张宝。后接替董卓进攻张梁,连胜七阵。掘张角墓,拜左车骑将军、冀州牧,因拒绝贿赂宦官而被免职。 董卓死,王允命其与吕布等共至郿坞抄籍董卓家产、人口,皇甫嵩将坞中所藏良家子女,尽行释放。', zangba:'其父臧戒,有二子臧艾与臧舜。年少时曾召集数人将获罪的父亲救出,此后四处流亡。后来成为陶谦麾下的骑都尉,负责募兵抵抗黄巾军。与孙观、尹礼等人拥兵驻屯于开阳,自成一股独立势力,后跟随吕布。吕布战败后,投降了曹操。后与袁绍、孙权等的战役里战功赫赫,官至镇东将军。', @@ -266,7 +271,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mateng:['machao','madai','mayunlu'], chengpu:['zhouyu'], hanba:['swd_muyun'], - dongbai:['dongzhuo'] + dongbai:['dongzhuo'], + cuimao:['caopi'], }, card:{ ly_piliche:{ @@ -11514,10 +11520,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "step 1" if(result.bool){ player.logSkill('kuangfu'); - trigger.player.$give(result.links,player); - game.delay(2); - player.equip(result.links[0]); + event.card=result.links[0]; + if(player.isEmpty(get.subtype(event.card))){ + player.chooseBool('是否将'+get.translation(event.card)+'置入自己的装备区?').ai=function(){ + return true; + }; + } + else event._result={bool:false}; } + else event.finish(); + "step 2" + if(result.bool){ + trigger.player.$give(event.card,player); + player.equip(event.card); + } + else trigger.player.discard(event.card); } }, }, @@ -11907,7 +11924,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ juedi:'绝地', juedi_info:'锁定技,准备阶段,你选择一项:1.移去“引兵”牌,将手牌补至体力上限数;2.将“引兵”牌交给一名体力值不大于你的其他角色,其回复1点体力,摸等量的牌', kuangfu:'狂斧', - kuangfu_info:'每当你使用杀造成伤害,可以将对方的一张装备牌移到你的装备区', + kuangfu_info:'每当你使用杀造成伤害,可以将对方的一张装备牌移到你的装备区或弃置之。', xintan:'心惔', xintan_info:'出牌阶段限一次,你可以移去两张“焚”并选择一名角色,该角色失去一点体', fentian:'焚天', diff --git a/character/yijiang.js b/character/yijiang.js index 1b9a89319..d9e3fa873 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -176,6 +176,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sundeng:['sunquan'], liru:['dongzhuo'], liuchen:['liushan'], + yujin:['xiahoudun'], + fazheng:['liubei'], + wuguotai:['sunjian'], }, skill:{ zhenjun:{ diff --git a/game/asset.js b/game/asset.js index 37e8cd35f..56d74860f 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - '1.9.88.2', + '1.9.89.1', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/music_danji.mp3', @@ -1596,6 +1596,7 @@ window.noname_asset_list=[ 'image/card/linghunzhihuo.png', 'image/card/lingjiandai.png', 'image/card/liufengsan.png', + 'image/card/liulongcanjia.png', 'image/card/liutouge.png', 'image/card/liuxiaxianniang.png', 'image/card/liuxinghuoyu.png', @@ -1841,6 +1842,7 @@ window.noname_asset_list=[ 'image/character/chenlin.jpg', 'image/character/chenqun.jpg', 'image/character/cuiyan.jpg', + 'image/character/cuimao.jpg', 'image/character/daqiao.jpg', 'image/character/daxiaoqiao.jpg', 'image/character/dengai.jpg', @@ -1977,6 +1979,7 @@ window.noname_asset_list=[ 'image/character/gz_jiaxu.jpg', 'image/character/gz_lingtong.jpg', 'image/character/gz_lukang.jpg', + 'image/character/gz_luxun.jpg', 'image/character/gz_lvbu.jpg', 'image/character/gz_madai.jpg', 'image/character/gz_masu.jpg', @@ -2144,6 +2147,7 @@ window.noname_asset_list=[ 'image/character/jsp_guanyu.jpg', 'image/character/jsp_huangyueying.jpg', 'image/character/jsp_zhaoyun.jpg', + 'image/character/jun_caocao.jpg', 'image/character/jun_liubei.jpg', 'image/character/jun_sunquan.jpg', 'image/character/jun_zhangjiao.jpg', diff --git a/game/game.js b/game/game.js index fb51286fa..cc33b2c35 100644 --- a/game/game.js +++ b/game/game.js @@ -4526,7 +4526,7 @@ init:true, // frequent:true, restart:true, - intro:'开启后将使用国战君主替换原武将牌' + intro:'若开启此选项,玩家的第一个回合开始时,若其主武将牌有对应的君主武将牌,则其可以将此武将牌替换为对应的君主武将牌,然后重新调整体力上限。若玩家的体力上限因此增大,则玩家回复等量的体力。' }, // connect_ban_weak:{ // name:'屏蔽弱将', @@ -4636,7 +4636,7 @@ init:true, // frequent:true, restart:true, - intro:'开启后将使用国战君主替换原武将牌' + intro:'若开启此选项,玩家的第一个回合开始时,若其主武将牌有对应的君主武将牌,则其可以将此武将牌替换为对应的君主武将牌,然后重新调整体力上限。若玩家的体力上限因此增大,则玩家回复等量的体力。' }, double_hp:{ name:'双将体力上限', @@ -14314,10 +14314,17 @@ }, isDisabled:function(arg){ if(typeof arg=='number') arg='equip'+arg; + if(arg=='equip6'&&this.storage.disableEquip&&(this.storage.disableEquip.contains('equip3')||this.storage.disableEquip.contains('equip3'))) return true; if(this.storage.disableEquip&&this.storage.disableEquip.contains(arg)) return true; return false; }, isEmpty:function(num){ + if(num==6||num=='equip6'){ + if(!this.isEmpty(3)||!this.isEmpty(4)) return false; + } + else if([3,4,'equip3','equip4'].contains(num)){ + if(this.getEquip(6)) return false; + } return !this.isDisabled(num)&&!this.getEquip(num); }, disableJudge:function(){ @@ -19384,7 +19391,10 @@ if(get.type(name)=='card'){ name=get.equiptype(name); } - if(!replace&&this.getEquip(name)) return false; + var range=get.subtype(name); + if(this.isDisabled(range)) return false; + if(['equip3','equip4'].contains(range)&&!this.isEmpty(6)) return false; + if(!replace&&!this.isEmpty(range)) return false; return true; }, getEquip:function(name){ diff --git a/game/update.js b/game/update.js index c4c7c1449..388aa6612 100644 --- a/game/update.js +++ b/game/update.js @@ -1,13 +1,16 @@ window.noname_update={ - version:'1.9.89', - update:'1.9.88.4', + version:'1.9.89.1', + update:'1.9.89', changeLog:[ - '神武将开放联机使用', - '国战武将独立皮肤', - '新国战(请在更新后关闭相关扩展,避免产生冲突)', + '国战「君临天下•权」扩充包(by 隐面酱拌隐小面)', + '2019版新国战变包/势备篇', ], files:[ - 'character/extra.js', + 'card/guozhan.js', + 'card/standard.js', + 'character/sp.js', + 'character/yijiang.js', + 'character/shenhua.js', 'mode/guozhan.js', //'game/asset.js', 'game/game.js', diff --git a/image/card/liulongcanjia.png b/image/card/liulongcanjia.png new file mode 100644 index 000000000..908ed7fe3 Binary files /dev/null and b/image/card/liulongcanjia.png differ diff --git a/image/character/cuimao.jpg b/image/character/cuimao.jpg new file mode 100644 index 000000000..8303ed481 Binary files /dev/null and b/image/character/cuimao.jpg differ diff --git a/image/character/jun_caocao.jpg b/image/character/jun_caocao.jpg new file mode 100644 index 000000000..fcc6fce5d Binary files /dev/null and b/image/character/jun_caocao.jpg differ diff --git a/mode/guozhan.js b/mode/guozhan.js index e80504fb6..1ca9f53ad 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -177,6 +177,38 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } game.phaseLoop(player); }, + card:{ + junling1:{ + type:'junling', + vanish:true, + derivation:'guozhan', + }, + junling2:{ + type:'junling', + vanish:true, + derivation:'guozhan', + }, + junling3:{ + type:'junling', + vanish:true, + derivation:'guozhan', + }, + junling4:{ + type:'junling', + vanish:true, + derivation:'guozhan', + }, + junling5:{ + type:'junling', + vanish:true, + derivation:'guozhan', + }, + junling6:{ + type:'junling', + vanish:true, + derivation:'guozhan', + }, + }, characterPack:{ mode_guozhan:{ gz_shibing1wei:['male','wei',0,[],['unseen']], @@ -275,63 +307,1377 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ gz_jun_sunquan:['male','wu',4,['jiahe','lianzi','jubao','yuanjiangfenghuotu']], gz_liqueguosi:['male','qun',4,['xiongsuan']], - gz_zuoci:['male','qun',3,['gzhuashen','gzxinsheng'],['gzskin']], + gz_zuoci:['male','qun',3,['yigui','jihun'],['gzskin']], gz_bianfuren:['female','wei',3,['wanwei','yuejian']], gz_xunyou:['male','wei',3,['gzqice','zhiyu'],['gzskin']], gz_lingtong:['male','wu',4,['xuanlve','yongjin'],['gzskin']], - gz_lvfan:['male','wu',3,['diaodu','diancai']], + gz_lvfan:['male','wu',3,['xindiaodu','diancai']], gz_masu:['male','shu',3,['sanyao','gzzhiman'],['gzskin']], gz_shamoke:['male','shu',4,['gzjili']], gz_lingcao:['male','wu',4,['dujin']], - gz_lifeng:['male','shu',3,['tunchu','shuliang']], - gz_beimihu:["female","qun",3,["hmkguishu","hmkyuanyu"]], + gz_lifeng:['male','shu',3,['tunchu','shuliang']], + gz_beimihu:["female","qun",3,["hmkguishu","hmkyuanyu"]], + + gz_cuimao:['male','wei',3,['zhengbi','fengying'],[]], + gz_yujin:['male','wei',4,['gzjieyue'],['gzskin']], + gz_wangping:['male','shu',4,['jianglue'],['gzskin']], + gz_fazheng:['male','shu',3,['gzxuanhuo','gzenyuan'],['gzskin']], + gz_wuguotai:['female','wu',3,['gzbuyi','ganlu'],['gzskin']], + gz_lukang:['male','wu',3,['keshou','zhuwei'],['gzskin']], + gz_yuanshu:['male','qun',4,['gzweidi','gzyongsi'],['gzskin']], + gz_zhangxiu:['male','qun',4,['gzfudi','congjian'],['gzskin']], + gz_jun_caocao:['male','wei',4,['jianan','huibian','gzzongyu','wuziliangjiangdao'],[]], } }, skill:{ - + yigui:{ + init:function (player,skill){ + if(!player.storage.skill) player.storage[skill]={ + character:[], + used:[], + } + }, + enable:"chooseToUse", + filter:function (event,player){ + if(event.type=='wuxie') return false; + var storage=player.storage.yigui; + if(!storage||!storage.character.length) return false; + if(event.type=='dying'){ + if((!event.filterCard({name:'tao'},player,event)||storage.used.contains('tao'))&& + (!event.filterCard({name:'jiu'},player,event)||storage.used.contains('jiu'))) return false; + var target=event.dying; + if(target.identity=='unknown') return true; + for(var i=0;i0; + }); + }, + direct:true, + content:function (){ + 'step 0' + player.chooseTarget(get.prompt2('xindiaodu'),function(card,player,current){ + return current!=player&¤t.isFriendOf(player)&¤t.countGainableCards(player,'e')>0; + }).ai=function(target){ + var num=1; + if(target.hasSkill('gzxiaoji')) num+=2.5; + if(target.isDamaged()&&target.getEquip('baiyin')) num+=2.5; + if(target.hasSkill('xuanlve')) num+=2; + return num; + }; + 'step 1' + if(result.bool){ + event.target1=result.targets[0]; + player.logSkill('xindiaodu',event.target1); + player.line(event.target1,'xindiaodu'); + player.gainPlayerCard(event.target1,'e',true); + } + else event.finish(); + 'step 2' + if(result.bool){ + event.card=result.cards[0]; + player.chooseTarget('是否将'+get.translation(event.card)+'交给一名其他角色?',function(card,player,current){ + return current!=player&¤t!=event.target1&¤t.isFriendOf(player); + }); + } + else event.finish(); + 'step 3' + if(result.bool){ + var target=result.targets[0]; + player.line(target,'green'); + target.gain(card,player) + player.$give(card,target); + } + }, + }, + gzbuyi:{ + trigger:{global:'dyingAfter'}, + usable:1, + filter:function(event,player){ + if(!(event.player&&event.player.isAlive()&&event.source&&event.source.isAlive())) return false; + return event.player.isFriendOf(player)&&event.reason&&event.reason.name=='damage'; + }, + check:function(event,player){return get.attitude(player,event.player)>0}, + logTarget:'source', + content:function(){ + 'step 0' + player.chooseJunlingFor(trigger.source); + 'step 1' + event.junling=result.junling; + event.targets=result.targets; + var choiceList=[]; + choiceList.push('执行该军令'); + choiceList.push('令'+get.translation(trigger.player)+(trigger.player==trigger.source?'(你)':'')+'回复一点体力'); + trigger.source.chooseJunlingControl(player,result.junling,result.targets).set('prompt','补益').set('choiceList',choiceList).set('ai',function(){ + return (get.attitude(trigger.source,trigger.player)<0&&get.junlingEffect(player,result.junling,trigger.source,result.targets,trigger.source)>=-2)?1:0; + return 0; + }); + 'step 2' + if(result.index==0) trigger.source.carryOutJunling(player,event.junling,targets); + else trigger.player.recover(player); + }, + audio:['buyi',2], + }, + keshou:{ + trigger:{player:'damageBegin'}, + direct:true, + filter:function(event,player){ + return event.num>0; + }, + content:function(){ + 'step 0' + var check=(player.countCards('h',{color:'red'})>1||player.countCards('h',{color:'black'})>1); + player.chooseCard(get.prompt2('keshou'),'he',2,function(card){ + if(ui.selected.cards.length) return get.color(card)==get.color(ui.selected.cards[0]); + return true; + }).set('complexCard',true).set('ai',function(card){ + if(!_status.event.check) return 0; + var player=_status.event.player; + if(player.hp==1){ + if(!player.countCards('h',function(card){return get.tag(card,'save')})&&!player.hasSkillTag('save',true)) return 10-get.value(card); + return 7-get.value(card); + } + return 6-get.value(card); + }).set('check',check); + 'step 1' + if(result.cards){ + player.logSkill('keshou'); + player.discard(result.cards); + trigger.num--; + if(trigger.num<=0) trigger.cancel(); + if(!game.hasPlayer(function(current){ + return current!=player&¤t.isFriendOf(player); + })) player.judge(function(card){ + if(get.color(card)=='red') return 1; + return 0; + }); + } + else event.finish(); + 'step 2' + if(result.judge>0) player.draw(); + } + }, + zhuwei:{ + trigger:{player:'judgeEnd'}, + filter:function(event){ + if(get.owner(event.result.card)) return false; + if(event.nogain&&event.nogain(event.result.card)) return false; + return event.result.card.name=='sha'||event.result.card.name=='juedou'; + }, + content:function(){ + 'step 0' + player.gain(trigger.result.card,'gain2'); + player.chooseBool('是否令当前回合角色获得【筑围】的加成效果?').ai=function(){ + return get.attitude(player,_status.currentPhase)>0; + }; + 'step 1' + if(result.bool){ + var target=_status.currentPhase; + if(!target.hasSkill('zhuwei_eff')){ + target.addTempSkill('zhuwei_eff'); + target.storage.zhuwei_eff=1; + } + else target.storage.zhuwei_eff++; + target.updateMarks(); + } + }, + subSkill:{ + eff:{ + sub:true, + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha') return num+player.storage.zhuwei_eff; + }, + maxHandcard:function(player,num){return num+player.storage.zhuwei_eff} + }, + mark:true, + intro:{ + content:function(storage){if(storage) return '使用【杀】的次数上限+'+storage+',手牌上限+'+storage} + } + } + } + }, + gzweidi:{ + init:function(player){player.storage.gzweidi=[]}, + enable:'phaseUse', + usable:1, + filterTarget:function(card,player,target){return target!=player&&player.storage.gzweidi.contains(target)}, + content:function(){ + 'step 0' + player.chooseJunlingFor(target); + 'step 1' + event.junling=result.junling; + event.targets=result.targets; + var choiceList=['执行该军令']; + if(target!=player) choiceList.push('令'+get.translation(player)+'获得你所有手牌,然后交给你等量的牌'); + else choiceList.push('不执行该军令'); + target.chooseJunlingControl(player,result.junling,result.targets).set('prompt','伪帝').set('choiceList',choiceList).set('ai',function(){ + if(get.attitude(target,player)>=0) return get.junlingEffect(player,result.junling,target,result.targets,target)>=0?0:1; + return get.junlingEffect(player,result.junling,target,result.targets,target)>=-1?0:1; + }); + 'step 2' + if(result.index==0) target.carryOutJunling(player,event.junling,targets); + else if(target!=player) { + event.num=target.countCards('h'); + player.gain(target.get('h'),target); + target.$give(event.num,player); + player.chooseCard('交给'+get.translation(target)+get.cnNumber(event.num)+'张牌','he',event.num,true).set('ai',function(card){ + return -get.value(card); + }); + } + else event.finish(); + 'step 3' + if(result.cards){ + target.gain(result.cards,player); + player.$give(num,target); + } + }, + group:['gzweidi_ft','gzweidi_ftc'], + ai:{ + order:3, + result:{ + player:1, + } + }, + subSkill:{ + ft:{ + sub:true, + trigger:{global:'gainBefore'}, + silent:true, + filter:function(event,player){ + if(player.storage.gzweidi.contains(event.player)||_status.currentPhase!=player) return false; + if(event.cards.length){ + if(event.getParent().name=='draw') return true; + for(var i=0;i
选择【知己知彼】的目标
',function(card,player,target){ + return player.canUse({name:'zhibi'},target); + },true).set('ai',function(target){ + var player=_status.event.player; + return get.effect(target,{name:'zhibi'},player,player); + }); + 'step 1' + if(result.bool){ + player.useCard({name:'zhibi'},result.targets); + } + }, + audio:['yongsi',2] + }, + eff3:{ + sub:true, + trigger:{global:'useCardToBegin'}, + priority:16, + forced:true, + filter:function(event,player){ + return event.target&&event.target==player&&event.card&&event.card.name=='zhibi' + }, + check:function(){return false}, + content:function(){ + player.showHandcards(); + } + } + } + }, + gzfudi:{ + trigger:{global:'damageEnd'}, + direct:true, + filter:function(event,player){return event.source&&event.source.isAlive()&&event.source!=player&&event.player==player&&player.countCards('h')&&event.num>0}, + content:function(){ + 'step 0' + event.players=game.filterPlayer(function(current){ + return current.isFriendOf(trigger.source)&¤t.hp>=player.hp&&!game.hasPlayer(function(current2){ + return current2.hp>current.hp&¤t2.isFriendOf(current); + }) + }); + var str=event.players.length?',然后对'+get.translation(event.players)+(event.players.length==1?'':'中的一名角色')+'造成一点伤害':''; + var check=true; + if(!event.players.length) check=false; + else{ + if(get.attitude(player,trigger.source)>=0) check=false; + else if(!player.countCards('h',function(card){return get.value(card)<9})) check=false; + } + player.chooseCard('附敌

交给'+get.translation(trigger.source)+'一张手牌'+str+'
').set('aicheck',check).set('ai',function(card){ + if(!_status.event.aicheck) return 0; + return 9-get.value(card); + }); + 'step 1' + if(result.cards){ + player.logSkill('gzfudi',trigger.source); + trigger.source.gain(result.cards,player); + player.$give(1,trigger.source); + if(event.players.length==1) event.target=event.players[0]; + else if(event.players.length) player.chooseTarget('附敌

对'+get.translation(event.players)+'中的一名角色造成一点伤害
',function(card,player,target){ + return target.isFriendOf(trigger.source)&&target.hp>=player.hp + },true).set('ai',function(target){return get.damageEffect(target,player,player)}); + else event.finish(); + } + else event.finish(); + 'step 2' + var target=event.target||result.targets[0]; + if(target){ + player.line(target,'green'); + target.damage(player); + } + }, + ai:{ + maixie:true, + maixie_defend:true, + effect:{ + target:function(card,player,target){ + if(get.tag(card,'damage')){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; + if(!target.countCards('h')) return [1,-1]; + if(game.countPlayer(function(current){return current.isFriendOf(player)&¤t.hp>=target.hp-1})) return [1,0,0,-2]; + } + } + } + } + }, + congjian:{ + trigger:{global:'damageBefore'}, + forced:true, + filter:function(event,player){ + if(event.num<=0) return false; + if(event.source&&event.source==player&&_status.currentPhase!=player&&event.notLink()) return true; + if(event.player&&event.player==player&&_status.currentPhase==player) return true; + }, + check:function(event,player){ + return _status.currentPhase!=player; + }, + content:function(){trigger.num++}, + ai:{ + //damageBones:true, + } + }, + jianan:{ + unique:true, + forceunique:true, + group:'wuziliangjiangdao', + derivation:'wuziliangjiangdao', + global:'g_jianan', + }, + g_jianan:{ + trigger:{player:'phaseBeginStart'}, + filter:function(event,player){ + if(!get.zhu(player,'jianan')) return false; + if(!player.countCards('he')) return false; + if(get.is.jun(player)&&player.isUnseen(1)) return false; + return !player.isUnseen(); + }, + direct:true, + content:function(){ + 'step 0' + var skills=['tuxi','qiaobian','gzxiaoguo','gzjieyue','new_duanliang']; + game.countPlayer(function(current){ + if(current==player) return; + if(current.hasSkill('tuxi')) skills.remove('tuxi'); + if(current.hasSkill('qiaobian')) skills.remove('qiaobian'); + if(current.hasSkill('gzxiaoguo')) skills.remove('gzxiaoguo'); + if(current.hasSkill('gzjieyue')) skills.remove('gzjieyue'); + if(current.hasSkill('new_duanliang')) skills.remove('new_duanliang'); + }); + if(!skills.length) event.finish(); + else{ + event.skills=skills; + var next=player.chooseToDiscard(); + next.prompt='是否弃置一张牌并发动【五子良将纛】?' + next.prompt2=get.translation('wuziliangjiangdao_info'); + next.logSkill='g_jianan'; + next.skills=skills; + next.ai=function(card){ + return -1; + }; + } + 'step 1' + if(!result.bool) event.finish(); + else{ + var list=["主将","副将"]; + if(player.isUnseen(0)||get.is.jun(player)) list.remove("主将"); + if(player.isUnseen(1)) list.remove("副将"); + if(!list.length) event.finish(); + else if(list.length<2) event._result={control:list[0]}; + else{ + player.chooseControl(list).prompt="请选择暗置一张武将牌"; + } + } + 'step 2' + if(!result.control) event.finish(); + else{ + var num=result.control=='主将'?0:1; + player.hideCharacter(num); + player.chooseControl(event.skills).prompt="选择获得其中的一个技能直到下回合开始"; + } + 'step 3' + var link=result.control; + player.addTempSkill(link,{player:"phaseBefore"}); + player.addTempSkill("jianan_eff",{player:"phaseBefore"}); + game.log(player,"获得了技能","#g【"+get.translation(result.control)+"】"); + }, + }, + jianan_eff:{ + ai:{nomingzhi:true} + }, + huibian:{ + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return game.countPlayer(function(current){ + return current.identity=='wei'; + })>1&&game.hasPlayer(function(current){ + return current.isDamaged()&¤t.identity=='wei'; + }); + }, + filterTarget:function(card,player,target){ + if(ui.selected.targets.length) return target.isDamaged()&&target.identity=='wei'; + return target.identity=='wei'; + }, + selectTarget:2, + multitarget:true, + targetprompt:['受到伤害
然后摸牌','回复体力'], + content:function(){ + 'step 0' + targets[0].damage(player); + 'step 1' + if(targets[0].isAlive()) targets[0].draw(2); + targets[1].recover(); + }, + ai:{ + threaten:1.2, + order:9, + result:{ + target:function(player,target){ + if(ui.selected.targets.length) return 1; + if(get.damageEffect(target,player,player)>0) return 2; + if(target.hp>2) return 1; + if(target.hp==1) return -1; + return 0.1; + } + }, + } + }, + gzzongyu:{ + unique:true, + forceunique:true, + group:['gzzongyu_others','gzzongyu_player'], + ai:{ + threaten:1.2, + }, + subSkill:{ + others:{ + trigger:{global:'equipAfter'}, + direct:true, + filter:function(event,player){ + if(event.player==player||!player.countCards('e',{subtype:['equip3','equip4']})) return false; + return event.card.name=='liulongcanjia'; + }, + check:function(event,player){ + if(get.attitude(player,target)<=0) return player.countCards('e',{subtype:['equip4','equip4']})<2; + return true; + }, + content:function(){ + 'step 0' + player.chooseBool('总御

是否与'+get.translation(trigger.player)+'交换装备区内坐骑牌'); + 'step 1' + if(result.bool){ + player.logSkill('gzzongyu_others',trigger.player); + event.cards=[player.getCards('e',{subtype:['equip3','equip4']}),trigger.player.getCards('e',{name:'liulongcanjia'})]; + player.lose(event.cards[0],ui.special); + trigger.player.lose(event.cards[1],ui.special); + if(event.cards[0].length) player.$give(event.cards[0],trigger.player); + if(event.cards[1].length) trigger.player.$give(event.cards[1],player); + } + else event.finish(); + 'step 2' + for(var i=0;i0.7; + return true; + } + }, + content:function(){ + 'step 0' + var choices=[]; + if(game.hasPlayer(function(current){return current.isUnseen()})) choices.push('选择一名未确定势力的角色'); + if(game.hasPlayer(function(current){return current!=player&&!current.isUnseen()})&&player.countCards('h',{type:'basic'})) choices.push('交给一名已确定势力角色一张基本牌'); + player.chooseControl(choices,ui.create.dialog('征辟

选择一项
','hidden')).set('ai',function(){ + if(choices.length>1){ + var player=_status.event.player; + if(!game.hasPlayer(function(current){ + return !current.isUnseen()&¤t.getEquip('yuxi')||current.hasSkill('gzyongsi')&&!game.hasPlayer(function(current){ + return current.getEquip('yuxi'); + }); + })&&game.hasPlayer(function(current){return current!=player&¤t.isUnseen()})){ + var identity; + for(var i=0;i=get.population(identity)) return 0; + return 1; + } + return 0; + }); + 'step 1' + if(result.control=='选择一名未确定势力的角色') player.chooseTarget('征辟

选择一名未确定势力角色,你对其使用牌没有次数和距离限制直到回合结束
',function(card,player,target){ + return target!=player&&target.identity=='unknown' + },true); + else player.chooseCardTarget({ + prompt:'征辟

交给一名已确定势力角色一张基本牌,然后该角色交给你一张非基本牌或两张基本牌
', + position:'h', + filterCard:function(card){return get.type(card)=='basic'}, + filterTarget:function(card,player,target){ + return target!=player&&target.identity!='unknown'; + }, + ai1:function(card){return 7-get.value(card)}, + //ai2:function(card,player,target){} + }).set('forced',true); + 'step 2' + event.target=result.targets[0]; + player.line(result.targets,'green'); + if(result.cards.length){ + event.cards=result.cards; + result.targets[0].gain(result.cards,player); + player.$give(result.cards,result.targets[0]); + } + else{ + player.storage.zhengbi_eff1=result.targets[0]; + player.addTempSkill('zhengbi_eff1'); + event.finish(); + } + 'step 3' + var choices=[]; + if(target.countCards('he',{type:['trick','delay','equip']})) choices.push('一张非基本牌'); + if(target.countCards('h',{type:'basic'})>1) choices.push('两张基本牌'); + if(choices.length) target.chooseControl(choices,ui.create.dialog('征辟

交给'+get.translation(player)+'
')).set('ai',function(event,player){ + if(choices.length>1){ + if(player.countCards('he',{type:['trick','delay','equip']},function(card){return get.value(card)<7})) return 0; + return 1; + } + return 0; + }); + else{ + if(target.countCards('h')){ + var cards=target.getCards('h'); + player.gain(cards,target); + target.$giveAuto(cards,player); + event.finish(); + } + else event.finish(); + } + 'step 4' + var check=(result.control=='一张非基本牌'); + target.chooseCard('he',(check?1:2),{type:(check?['trick','delay','equip']:'basic')},true); + 'step 5' + if(result.cards){ + player.gain(result.cards,target); + target.$giveAuto(result.cards,player); + } + }, + subSkill:{ + eff1:{ + sub:true, + mod:{ + targetInRange:function (card,player,target){ + if(target==player.storage.zhengbi_eff1) return true; + }, + cardUsable:function (card,player,num){ + if(typeof num=='number'&&player.storage.zhengbi_eff1.isAlive()&&player.storage.zhengbi_eff1.isUnseen()) return num+100; + }, + playerEnabled:function (card,player,target){ + if(player.storage.zhengbi_eff1.isAlive()&&player.storage.zhengbi_eff1.isUnseen()&&target!=player.storage.zhengbi_eff1){ + var num=player.getCardUsable(card)-100; + if(num<=0) return false; + } + }, + }, + onremove:true, + }, + eff2:{sub:true}, + } + }, + fengying:{ + limited:true, + enable:'phaseUse', + position:'h', + filterCard:true, + selectCard:-1, + filter:function(event,player){ + return !player.storage.fengying&&player.countCards('h')>0; + }, + filterTarget:function(card,player,target){ + return target==player; + }, + selectTarget:-1, + discard:false, + lose:false, + content:function(){ + 'step 0' + player.awakenSkill('fengying'); + player.storage.fengying=true; + player.useCard({name:'xietianzi'},cards,target); + 'step 1' + var list=game.filterPlayer(function(current){ + return current.isFriendOf(player)&¤t.countCards('h')=4) return 0; + for(var i=0;i0) return 11-get.value(card); + return 7-get.value(card); + }, + ai2:function(card,player,target){ + var att=get.attitude(player,target); + if(att<0) return -att; + return 1; + } + }); + 'step 1' + if(result.bool){ + event.target=result.targets[0]; + player.logSkill('gzjieyue',result.targets); + result.targets[0].gain(result.cards[0],player); + player.$give(1,result.targets[0]); + player.chooseJunlingFor(result.targets[0]); + } + else event.finish(); + 'step 2' + event.junling=result.junling; + event.targets=result.targets; + var choiceList=[]; + choiceList.push('执行该军令,然后'+get.translation(player)+'摸一张牌'); + choiceList.push('令'+get.translation(player)+'摸牌阶段额外摸三张牌'); + target.chooseJunlingControl(player,result.junling,result.targets).set('prompt','节钺').set('choiceList',choiceList).set('ai',function(){ + if(get.attitude(target,player)>0) return get.junlingEffect(player,result.junling,target,result.targets,target)>1?0:1; + return get.junlingEffect(player,result.junling,target,result.targets,target)>=-1?0:1; + }); + 'step 3' + if(result.index==0){ + target.carryOutJunling(player,event.junling,targets); + player.draw(); + } + else player.addTempSkill('gzjieyue_eff'); + }, + ai:{threaten:2}, + subSkill:{ + eff:{ + sub:true, + trigger:{global:'phaseDrawBegin'}, + filter:function(event,player){ + if(event.player!=player) return false; + return event.num>0; + }, + silent:true, + content:function(){ + trigger.num+=3; + } + } + }, + audio:['jieyue',2], + }, + + jianglue:{ + limited:true, + enable:'phaseUse', + prepare:function(cards,player){ + var targets=game.filterPlayer(function(current){ + return current.isFriendOf(player)||current.isUnseen(); + }); + player.line(targets,'fire'); + }, + content:function(){ + 'step 0' + player.awakenSkill('jianglue'); + player.addTempSkill('jianglue_count'); + player.chooseJunlingFor(player).set('prompt','选择一张军令牌,令与你势力相同的其他角色选择是否执行'); + 'step 1' + event.junling=result.junling; + event.targets=result.targets; + event.players=game.filterPlayer(function(current){ + if(current==player) return false; + return current.isFriendOf(player)||current.isUnseen(); + }).sort(lib.sort.seat); + event.num=0; + 'step 2' + if(num0.5?0:1;}).prompt='选择并展示一张武将牌,然后执行军令'; + } + 'step 4' + if(!event.list) event.list=[player]; + if(event.carry){ + if(event.showCharacter) event.current.showCharacter(result.index); + event.current.carryOutJunling(player,event.junling,targets); + event.list.push(event.current); + } + event.num++; + if(event.num0) player.draw(player.storage.jianglue_count); + }, + marktext:'略', + skillAnimation:'epic', + animationColor:'soil', + ai:{ + order:4, + result:{ + player:function(player){ + if(player.isUnseen()&&player.wontYe()){ + if(get.population(player._group)>=game.players.length/4) return 1; + return Math.random()>0.7?1:0; + } + else return 1; + } + } + }, + subSkill:{ + count:{ + sub:true, + trigger:{global:'recoverAfter'}, + silent:true, + filter:function(event){return event.getParent('jianglue')}, + content:function(){player.storage.jianglue_count++} + } + } + }, + gzxuanhuo:{ + global:'gzxuanhuo_others', + derivation:['wusheng','new_paoxiao','new_longdan','new_tieji','liegong','xinkuanggu'], + ai:{ + threaten:function(player,target){ + if(game.hasPlayer(function(current){ + return current!=target&¤t.isFriendOf(target); + })) return 1.5; + return 0.5; + }, + }, + subSkill:{ + others:{ + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return (!player.isUnseen())&&player.countCards('he')>2&&game.hasPlayer(function(current){ + return current!=player&¤t.hasSkill('gzxuanhuo')&&player.isFriendOf(current); + }); + }, + prompt:function(){ + var player=_status.event.player; + var list=game.filterPlayer(function(current){ + return current!=player&¤t.hasSkill('gzxuanhuo')&&player.isFriendOf(current); + }); + var str='选择两张牌。将第一张牌交给'+get.translation(list); + if(list.length>1) str+='中的一人'; + str+=',并弃置第二张牌'; + return str; + }, + position:'he', + filterCard:true, + selectCard:2, + complexSelect:true, + complexCard:true, + check:function(card,player,target){ + if(get.position(card)=='h') return 8-get.value(card); + return 6-get.value(card); + }, + filterTarget:function(card,player,target){return target!=player&&target.hasSkill('gzxuanhuo')&&target.isFriendOf(player)}, + discard:false, + lose:false, + content:function(){ + 'step 0' + target.gain(cards[0],player); + player.$giveAuto(cards[0],target); + player.discard(cards[1]); + 'step 1' + var list=['wusheng','new_paoxiao','new_longdan','new_tieji','liegong','xinkuanggu']; + for(var i=0;i0; + }, + content:function(){ + 'step 0' + event.num=trigger.num; + 'step 1' + event.num--; + player.logSkill('enyuan_damage',trigger.source); + trigger.source.chooseCard('交给'+get.translation(player)+'一张手牌,或失去一点体力','h').set('ai',function(card){ + if(get.attitude(_status.event.player,_status.event.getParent().player)>0) return 11-get.value(card); + return 7-get.value(card); + }); + 'step 2' + if(result.bool){ + player.gain(result.cards[0],trigger.source); + trigger.source.$give(1,player); + } + else trigger.source.loseHp(); + if(event.num>0) event.goto(1); + }, + audio:'enyuan2', + }, + } + }, + "new_jushou":{ audio:"jushou", trigger:{ player:"phaseEnd", }, content:function (){ - 'step 0' - event.num=game.countGroup(); - player.draw(event.num); - if(event.num>2) player.turnOver(); - 'step 1' - player.chooseCard('h',true,'弃置一张手牌,若以此法弃置的是装备牌,则你改为使用之').set('ai',function(card){ - if(get.type(card)=='equip'){ - return 5-get.value(card); - } - return -get.value(card); - }).set('filterCard',lib.filter.cardDiscardable); - 'step 2' - if(result.bool&&result.cards.length){ - if(get.type(result.cards[0])=='equip'){ - player.$give(result.cards,player); - player.lose(result.cards,ui.special); - event.toequip=result.cards[0]; - } - else{ - player.discard(result.cards[0]); - } - } - 'step 3' - if(event.toequip){ - game.delay(); - } - 'step 4' - if(event.toequip){ - player.equip(event.toequip); - } - }, + 'step 0' + event.num=game.countGroup(); + player.draw(event.num); + if(event.num>2) player.turnOver(); + 'step 1' + player.chooseCard('h',true,'弃置一张手牌,若以此法弃置的是装备牌,则你改为使用之').set('ai',function(card){ + if(get.type(card)=='equip'){ + return 5-get.value(card); + } + return -get.value(card); + }).set('filterCard',lib.filter.cardDiscardable); + 'step 2' + if(result.bool&&result.cards.length){ + if(get.type(result.cards[0])=='equip'&&player.canEquip(result.cards[0],true)){ + player.$give(result.cards,player); + player.lose(result.cards,ui.special); + event.toequip=result.cards[0]; + } + else{ + player.discard(result.cards[0]); + } + } + 'step 3' + if(event.toequip){ + game.delay(); + } + 'step 4' + if(event.toequip){ + player.equip(event.toequip); + } + }, ai:{ effect:{ target:function (card,player,target){ - if(card.name=='guiyoujie') return [0,1]; - }, + if(card.name=='guiyoujie') return [0,1]; + }, }, }, }, @@ -343,31 +1689,28 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, mod:{ targetInRange:function (card,player,target){ - if(card.name=='bingliang'){ - return true; - } - }, + if(card.name=='bingliang'){ + return true; + } + }, }, audio:"duanliang1", enable:"chooseToUse", filterCard:function (card){ - if(get.type(card)!='basic'&&get.type(card)!='equip') return false; - return get.color(card)=='black'; - }, + if(get.type(card)!='basic'&&get.type(card)!='equip') return false; + return get.color(card)=='black'; + }, filter:function (event,player){ - if(player.hasSkill('new_duanliang_off')) return false; - return player.countCards('he',{type:['basic','equip'],color:'black'}) - }, + if(player.hasSkill('new_duanliang_off')) return false; + return player.countCards('he',{type:['basic','equip'],color:'black'}) + }, position:"he", viewAs:{ name:"bingliang", - suit:"spade", - number:12, - cards:[{"node":{"image":{},"info":{},"name":{},"name2":{},"background":{},"intro":{},"range":{}},"storage":{},"vanishtag":[],"_uncheck":[],"suit":"spade","number":12,"name":"zhangba","cardid":"9310260344","clone":{"name":"zhangba","suit":"spade","number":12,"node":{"name":{},"info":{},"intro":{},"background":{},"image":{}},"_transitionEnded":true,"timeout":2638},"original":"j","_transform":"translateY(0px)","viewAs":"bingliang","timeout":2625}], }, onuse:function (result,player){ - if(get.distance(player,result.targets[0])>2) player.addTempSkill('new_duanliang_off'); - }, + if(get.distance(player,result.targets[0])>2) player.addTempSkill('new_duanliang_off'); + }, prompt:"将一黑色的基本牌或装备牌当兵粮寸断使用", check:function (card){return 6-get.value(card)}, ai:{ @@ -379,9 +1722,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, result:{ target:function (player,target){ - if(target.hasJudge('caomu')) return 0; - return -1.5/Math.sqrt(target.countCards('h')+1); - }, + if(target.hasJudge('caomu')) return 0; + return -1.5/Math.sqrt(target.countCards('h')+1); + }, }, tag:{ skip:"phaseDraw", @@ -395,24 +1738,24 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, direct:true, content:function (){ - 'step 0' - event.num=trigger.num||1; - "step 1" - player.chooseTarget(get.prompt2('new_shushen'),function(card,player,target){ - return target!=player; - }).set('ai',function(target){ - return get.attitude(_status.event.player,target); - }); - "step 2" - if(result.bool){ - player.logSkill('new_shushen',result.targets); - result.targets[0].draw(); - if(event.num>1){ - event.num--; - event.goto(1); - } - } - }, + 'step 0' + event.num=trigger.num||1; + "step 1" + player.chooseTarget(get.prompt2('new_shushen'),function(card,player,target){ + return target!=player; + }).set('ai',function(target){ + return get.attitude(_status.event.player,target); + }); + "step 2" + if(result.bool){ + player.logSkill('new_shushen',result.targets); + result.targets[0].draw(); + if(event.num>1){ + event.num--; + event.goto(1); + } + } + }, ai:{ threaten:0.8, expose:0.1, @@ -886,9 +2229,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, viewAs:{ name:"sha", - suit:"heart", - number:11, - cards:[{"node":{"image":{},"info":{},"name":{},"name2":{},"background":{},"intro":{},"range":{}},"storage":{},"vanishtag":[],"_uncheck":[],"suit":"heart","number":11,"name":"shan","cardid":"4014933310","_transform":"translateX(0px)","clone":{"name":"shan","suit":"heart","number":11,"node":{"name":{},"info":{},"intro":{},"background":{},"image":{}},"_transitionEnded":true,"timeout":720},"timeout":702,"original":"h"}], }, viewAsFilter:function (player){ if(!player.countCards('h','shan')) return false; @@ -1891,6 +3231,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ player:"phaseBefore", }, forced:true, + priority:22, filter:function (event,player){ if(get.mode()!='guozhan') return false; if(_status.connectMode&&!lib.configOL.aozhan) return false; @@ -2155,7 +3496,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ _lianheng:{ mode:['guozhan'], enable:'phaseUse', - prompt:'将可连横的牌交给一名与你势力不同的角色,或未确定势力的角色,若你交给与你势力不同的角色,则你摸一张牌', + usable:1, + prompt:'将至多三张可合纵的牌交给一名与你势力不同的角色,或未确定势力的角色,若你交给与你势力不同的角色,则你摸等量的牌', filter:function(event,player){ return (player.getCards('h',function(card){ return card.hasTag('lianheng'); @@ -2170,6 +3512,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ if(player.identity=='ye') return true; return target.identity!=player.identity; }, + selectCard:[1,3], prepare:'give', discard:false, // delay:0.5, @@ -2178,7 +3521,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ target.gain(cards,player); "step 1" if(!target.isUnseen()){ - player.draw(); + player.draw(cards.length); } }, ai:{ @@ -2209,6 +3552,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ ai:{ threaten:1.8 }, + audio:2, subSkill:{ add:{ trigger:{global:'damageEnd'}, @@ -2328,6 +3672,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ return player.storage.gzjili==player.getAttackRange(); }, + audio:2, content:function(){ player.draw(player.getAttackRange()); }, @@ -2351,6 +3696,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, diancai:{ group:['diancai_count','diancai_init'], + audio:2, trigger:{global:'phaseUseEnd'}, filter:function(event,player){ return _status.currentPhase!=player&&player.storage.diancai>=player.hp; @@ -2389,6 +3735,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, diaodu:{ enable:'phaseUse', + audio:2, usable:1, filterTarget:function(card,player,target){ return player.sameIdentityAs(target); @@ -2526,7 +3873,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ next.set('createDialog',info); next.set('filterButton',function(button){ return game.hasPlayer(function(current){ - return !current.countCards('e',{subtype:get.subtype(button.link)}); + return current.isEmpty(get.subtype(button.link)); }); }); next.set('ai',function(button){ @@ -2559,8 +3906,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ if(event.num0 }, @@ -3034,6 +4387,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ backup:function(links,player){ return { filterCard:true, + audio:"qice", selectCard:-1, selectTarget:function(){ var select=get.select(get.info(get.card()).selectTarget); @@ -3088,6 +4442,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ return event.player!=player&&!event.directresult; }, + audio:2, content:function(){ 'step 0' player.choosePlayerCard(player,get.prompt('wanwei'),trigger.position).set('ai',function(button){ @@ -3106,6 +4461,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ init:function(player){ player.storage.yuejian={}; }, + audio:2, filter:function(event,player){ if(player.sameIdentityAs(event.player)){ var targets=player.storage.yuejian[event.player.playerid]; @@ -4150,7 +5506,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, position:'he', filterTarget:function(card,player,target){ - return !target.getEquip(card); + return target.isEmpty(get.subtype(card)); }, ai1:function(card){ return 6-get.value(card); @@ -5093,15 +6449,37 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } }, _mingzhi3:{ - trigger:{player:'phaseBeginStart'}, + trigger:{player:'phaseBefore'}, priority:19.1, forced:true, popup:false, filter:function(event,player){ - return player.isUnseen(0)&&get.is.jun(player.name1); + if(_status.connectMode){ + if(!lib.configOL.junzhu) return false; + } + else if(!get.config('junzhu')) return false; + if(player.storage._mingzhi3) return false; + return true; }, content:function(){ - player.showCharacter(0); + 'step 0' + player.storage._mingzhi3=true; + var name=player.name1; + if(!player.isUnseen(0)&&name.indexOf('gz_')!=0||!lib.junList.contains(name.slice(3))) event.finish(); + else{ + player.chooseBool("是否将主武将牌替换为君主武将?").ai=function(){return true}; + } + 'step 1' + if(result.bool){ + var from=player.name1; + var to='gz_jun_'+player.name1.slice(3); + event.maxHp=player.maxHp; + player.reinit(from,to,4); + player.showCharacter(0); + } + else event.finish(); + 'step 2' + if(player.maxHp>event.maxHp) player.recover(player.maxHp-event.maxHp); } }, _zhenfazhaohuan:{ @@ -5633,12 +7011,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ if(lib.filter.characterDisabled(i)) continue; if(get.config('onlyguozhan')){ if(!lib.characterPack.mode_guozhan[i]) continue; - if(get.config('junzhu')){ - if(lib.junList.contains(i.slice(3))) continue; - } - else{ - if(get.is.jun(i)) continue; - } + if(get.is.jun(i)) continue; } if(lib.character[i][2]==3||lib.character[i][2]==4||lib.character[i][2]==5) event.list.push(i); @@ -5697,12 +7070,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ if(i.indexOf('gz_shibing')==0) return true; if(get.config('onlyguozhan')){ if(!lib.characterPack.mode_guozhan[i]) return true; - if(get.config('junzhu')){ - if(lib.junList.contains(i.slice(3))) return true; - } - else{ - if(get.is.jun(i)) return true; - } + if(get.is.jun(i)) return true; } },get.config('onlyguozhanexpand')?'expandall':undefined,get.config('onlyguozhan')?'onlypack:mode_guozhan':undefined); if(ui.cheat2){ @@ -5854,12 +7222,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ list=[]; for(var i in lib.characterPack.mode_guozhan){ if(i.indexOf('gz_shibing')==0) continue; - if(lib.configOL.junzhu){ - if(lib.junList.contains(i.slice(3))) continue; - } - else{ - if(get.is.jun(i)) continue; - } + if(get.is.jun(i)) continue; list.push(i); } } @@ -6034,6 +7397,88 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ _zhenfazhaohuan:'阵法召唤', _zhenfazhaohuan_info:'由拥有阵法技的角色发起,满足此阵法技条件的未确定势力角色均可按逆时针顺序一次明置其一张武将牌(响应阵法召唤),以发挥阵法技的效果', + + junling:'军令', + junling1:'军令一', + junling1_bg:'令', + junling1_info:'若被执行,执行者对发起者指定的一名角色造成一点伤害。', + junling2:'军令二', + junling2_bg:'令', + junling2_info:'若被执行,执行者摸一张牌,然后依次交给发起者两张牌。', + junling3:'军令三', + junling3_bg:'令', + junling3_info:'若被执行,执行者失去一点体力。', + junling4:'军令四', + junling4_bg:'令', + junling4_info:'若被执行,直到回合结束,执行者不能使用或打出手牌。', + junling4_eff:'军令四', + junling5:'军令五', + junling5_bg:'令', + junling5_info:'若被执行,执行者将武将牌叠置,且不能回复体力直到回合结束。', + junling5_eff:'军令五', + junling6:'军令六', + junling6_bg:'令', + junling6_info:'若被执行,执行者选择一张手牌和一张装备区内牌(若有),然后弃置其余的牌。', + + gz_cuimao:'崔琰毛玠', + zhengbi:'征辟', + zhengbi_info:'出牌阶段开始时,你可以选择一项:选择一名未确定势力的角色,你对其使用的牌无距离限制且不计入使用次数,直到其明置武将牌或回合结束;或将一张基本牌交给一名有明置武将牌的角色,然后其交给你一张非基本牌或两张基本牌。', + fengying:'奉迎', + fengying_info:'限定技,你可以将所有手牌当【挟天子以令诸侯】使用(无视大势力限制),然后所有与你势力相同的角色将手牌补至体力上限。', + gz_yujin:'于禁', + gzjieyue:'节钺', + gzjieyue_info:'准备阶段开始时,你可以将一张手牌交给一名非魏势力角色,然后选择一个“军令”,然后令其选择一项:执行该军令,然后你摸一张牌;或令你于此回合摸牌阶段摸牌时,额外摸三张牌。', + gz_wangping:'王平', + jianglue:'将略', + jianglue_info:'限定技,出牌阶段,你可以选择一个“军令”,然后与你势力相同的其他角色可以执行该军令(未确定势力角色可以在此时明置一张武将牌)。你与每名执行该军令的角色增加一点体力上限,然后回复一点体力,然后你摸X张牌(X为以此法回复了体力的角色数)。', + gz_fazheng:'法正', + gzxuanhuo:'眩惑', + gzxuanhuo_info:'与你势力相同的其他角色的出牌阶段限一次,该角色可以交给你一张牌并弃置一张牌,然后获得以下一项场上没有的技能直到回合结束:“武圣”、“咆哮”、“龙胆”、“铁骑”、“烈弓”、“狂骨”。', + gzenyuan:'恩怨', + gzenyuan_info:'锁定技,当其他角色对你使用【桃】时,该角色摸一张牌;当你受到伤害后,伤害来源须交给你一张手牌或失去1点体力。', + gzbuyi:'补益', + gzbuyi_info:'每名角色的回合限一次,当一名与你势力相同的角色脱离濒死状态后,你可以选择一个“军令”,令伤害来源选择一项:执行该军令,或令该脱离濒死状态的角色回复一点体力。', + gz_lukang:'陆抗', + keshou:'恪守', + keshou_info:'当你受到伤害时,你可以弃置两张颜色相同的牌。若如此做,此伤害-1,然后若没有与你势力相同的其他角色,你进行一次判定,若结果为红色,你摸一张牌。', + zhuwei:'筑围', + zhuwei_info:'当你的判定牌生效后,若此牌为【杀】或【决斗】,你可以获得之,然后你可令当前回合角色本回合可额外使用一张【杀】,且手牌上限+1。', + gz_yuanshu:'袁术', + gzweidi:'伪帝', + gzweidi_info:'出牌阶段限一次,你可以指定本回合从牌堆获得过牌的角色,然后选择一个“军令”,令其选择一项:执行该军令;或令你获得其所有手牌,然后交给其等量的牌。', + gzyongsi:'庸肆', + gzyongsi_info:'锁定技,若场上没有【玉玺】,视为你装备之;当你成为【知己知彼】的目标时,你展示你的所有手牌。', + //gzyongsi_eff1:'玉玺', + //gzyongsi_eff2:'玉玺', + gz_zhangxiu:'张绣', + gzfudi:'附敌', + gzfudi_info:'当你受到伤害后,你可以交给伤害来源一张手牌。若如此做,你对其势力中的体力值最大且不小于你的一名角色造成一点伤害。', + congjian:'从谏', + congjian_info:'锁定技,你于回合外造成的伤害,于回合内受到的伤害+1。', + gz_jun_caocao:'君曹操', + jianan:'建安', + jianan_info:'君主技,只要此武将处于明置状态,你便拥有“五子良将纛”。', + g_jianan:'五子良将纛', + wuziliangjiangdao:'五子良将纛', + wuziliangjiangdao_ab:'将纛', + wuziliangjiangdao_bg:'纛', + wuziliangjiangdao_info:'魏势力角色的准备阶段开始时,其可以弃置一张牌。若如此做,其选择一张暗置的武将牌(若没有,则选择一张暗置),然后获得下列技能中的一项(其他角色已有的技能无法选择)且不能明置选择的武将牌直到其的下个回合开始:“突袭”,“巧变”,“骁果”,“节钺”,“断粮”。', + huibian:'挥鞭', + huibian_info:'出牌阶段限一次,你可以选择一名魏势力角色和另一名已受伤的魏势力角色。若如此做,你对前者造成一点伤害,然后其摸两张牌,然后后者回复一点体力。', + gzzongyu:'总御', + gzzongyu_info:'当【六龙骖驾】进入其他角色的装备区后,你可以用你装备区内所有坐骑牌(至少一张)与【六龙骖驾】交换位置。锁定技,当你使用一张坐骑牌后,若场上或弃牌堆中有【六龙骖驾】,则将【六龙骖驾】置入你的装备区。', + + xindiaodu:"调度", + "xindiaodu_info":"当与你势力相同的角色使用装备牌时,该角色可以摸一张牌;出牌阶段开始时,你可以获得与你势力相同的一名角色装备区里的一张牌,然后你可以将此牌交给另一名角色。", + yigui:"役鬼", + "yigui_info":"当你第一次明置此武将牌时,你将剩余武将牌堆的两张牌扣置于游戏外,称为“魂”;你可以将一张“魂”亮出并置入剩余武将牌堆,视为你使用一张本回合你未以此法使用过的基本牌或普通锦囊牌,且目标须为与此“魂”势力相同或未确定势力的角色。 ", + "yigui_init":"役鬼", + "yigui_init_info":"", + "yigui_refrain":"役鬼", + "yigui_refrain_info":"", + jihun:"汲魂", + jihun_info:"当你受到伤害后,或与你势力不同的角色进入濒死状态被救回后,你可以将剩余武将牌堆的一张牌当“魂”扣置于游戏外。", + "xianqu_skill":"先驱", "xianqu_skill_info":"", @@ -6123,8 +7568,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ gzshushen:'淑慎', gzshushen_info:'当你回复1点体力时,你可令与你势力相同的一名其他角色摸一张牌。', - _lianheng:'连横', - lianheng_tag:'连', + _lianheng:'合纵', + lianheng_tag:'合', guo_tag:'国', qianhuan:'千幻', qianhuan_bg:'幻', @@ -6144,6 +7589,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ lianzi:'敛资', lianzi_info:'出牌阶段限一次,你可以弃置一张手牌,然后亮出牌堆顶X张牌(X为吴势力角色装备区里的牌和“烽火”的总和),获得其中所有与你弃置牌类别相同的牌,将其余的牌置入弃牌堆,若一次获得的牌超过三张,则你失去技能“敛资”并获得技能“制衡”。', gzqice:'奇策', + gzqice_backup:'奇策', gzqice_info:'出牌阶段限一次,你可以将所有手牌当任意一张普通锦囊牌使用,你不能以此法使用目标数超过X的牌(X为你的手牌数),然后你可以变更副将。', wanwei:'挽危', wanwei_info:'当你因被其他角色获得或弃置而失去牌时,你可以改为自己选择失去的牌', @@ -6265,7 +7711,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ gzduanliang:'断粮', gzduanliang_info:'你可以将一张黑色基本牌或黑色装备牌当【兵粮寸断】使用;你可以对距离为2的角色使用【兵粮寸断】', }, - junList:['liubei','zhangjiao','sunquan'], + junList:['liubei','zhangjiao','sunquan','caocao'], guozhanPile:[ ['spade',1,'juedou'], ['spade',1,'shandian','thunder'], @@ -6436,9 +7882,112 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ ['diamond',13,'shan'], ['diamond',6,'dinglanyemingzhu'], + ['heart',13,'liulongcanjia'], ], element:{ content:{ + chooseJunlingFor:function(){ + 'step 0' + var list=['junling1','junling2','junling3','junling4','junling5','junling6']; + list=list.randomGets(2).sort(); + for(var i=0;i选项'+get.cnNumber(i+1,true)+':'+event.choiceList[i]+''); + controls.push('选项'+get.cnNumber(i+1,true)); + } + } + else if(event.controls) controls=event.controls; + else controls=['执行该军令','不执行该军令']; + if(!event.ai) event.ai=function(){return Math.floor(controls.length*Math.random())}; + player.chooseControl(controls).set('dialog',dialog).set('ai',event.ai); + 'step 1' + event.result={ + index:result.index, + control:result.control, + }; + }, + carryOutJunling:function(){ + 'step 0' + switch(event.junling){ + case 'junling1':{ + if(targets[0].isAlive()){ + player.line(targets,'green'); + targets[0].damage(player); + } + break; + } + case 'junling2':player.draw();event.num=1;break; + case 'junling3':player.loseHp();break; + case 'junling4':player.addTempSkill('junling4_eff');break; + case 'junling5':player.turnOver();player.addTempSkill('junling5_eff');break; + } + 'step 1' + if(event.junling=='junling2'&&source!=player&&player.countCards('he')>0){ + player.chooseCard('交给'+get.translation(source)+'第'+get.cnNumber(event.num)+'张牌(共两张)','he',true); + event.ing=true; + } + if(event.junling=='junling6'){ + var position='',num0=0; + if(player.countCards('h')){position+='h';num0++;} + if(player.countCards('e')){position+='e';num0++;} + player.chooseCard('选择一张手牌和一张装备区内牌(若有),然后弃置其余的牌',position,num0,function(card){ + if(ui.selected.cards.length) return get.position(card)!=get.position(ui.selected.cards[0]); + return true; + },true).set('complexCard',true).set('ai',function(card){return get.value(card)}); + } + 'step 2' + if(event.junling=='junling2'&&source!=player){ + if(result.cards.length&&event.ing){ + source.gain(result.cards,player); + player.$give(1,source); + } + event.num++; + if(event.num<3){ + event.ing=false; + event.goto(1); + } + } + if(event.junling=='junling6'){ + var cards=player.get('he'); + for(var i=0;i0})) eff1=2; + else{ + if(get.damageEffect(targets[0],performer,source)>=0) eff1=2; + else eff1=-2; + if(get.damageEffect(targets[0],source,performer)>=0) eff2=2; + else eff2=-2; + } + break; + case 'junling2': + if(performer.countCards('he')){eff1=1;eff2=0;} + else{eff1=2;eff2=-1;} + break; + case 'junling3': + if(performer.hp==1&&!performer.countCards(function(card){return get.tag(card,save)})&&!player.hasSkillTag('save',true)) eff2=-5; + else{ + if(performer==viewer){ + if(performer.hasSkillTag('maihp',true)) eff2=3; + else eff2=-2; + } + else{ + if(performer.hasSkillTag('maihp',false)) eff2=3; + else eff2=-2; + } + } + break; + case 'junling4':eff1=0;eff2=-2;break; + case 'junling5': + var td=performer.isTurnedOver(); + if(td){ + if(performer==viewer){ + if(_status.currentPhase==performer&&performer.hasSkill('jushou')) eff2=-3; + else eff2=3; + } + else eff2=3; + } + else{ + if(performer==viewer){ + if(performer.hasSkillTag('noturn',true)) eff2=0; + else eff2=-3; + } + else{ + if(performer.hasSkillTag('noturn',false)) eff2=0; + else eff2=-3; + } + } + break; + case 'junling6': + if(performer.countCards('h')>1) eff2+=1-performer.countCards('h'); + if(performer.countCards('e')>1) eff2+=1-performer.countCards('e'); + break; + } + return Math.sign(att1)*eff1+Math.sign(att2)*eff2; + }, realAttitude:function(from,toidentity,difficulty){ if(from.identity==toidentity&&toidentity!='ye'){ return 4+difficulty;