diff --git a/card/yongjian.js b/card/yongjian.js index 428ee0b7b..f0ae886b4 100644 --- a/card/yongjian.js +++ b/card/yongjian.js @@ -546,7 +546,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ return 0; }, ai2:function(target){ - return -get.attitude(_status.event.player,target); + return -get.attitude(_status.event.player,target)+0.01; }, }); 'step 2' diff --git a/character/extra.js b/character/extra.js index 5f8b2308e..953de5394 100755 --- a/character/extra.js +++ b/character/extra.js @@ -1110,6 +1110,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ group:'twwuhun_gain', subSkill:{ gain:{ + audio:'twwuhun', trigger:{ player:'damageEnd', source:'damageSource', diff --git a/character/mobile.js b/character/mobile.js index c0622d352..8c9fc2d97 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -18393,7 +18393,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ heji_info:'当有角色使用的【决斗】或红色【杀】结算完成后,若此牌对应的目标数为1,则你可以对相同的目标使用一张【杀】或【决斗】(无距离和次数限制)。若你以此法使用的牌不为转化牌,则你从牌堆中随机获得一张红色牌。', liubing:'流兵', liubing_info:'锁定技。①当你声明使用【杀】后,若此牌是你本回合使用的第一张有唯一对应实体牌的【杀】,则你将此牌的花色改为♦。②其他角色于其出牌阶段内使用的非转化黑色杀结算结束后,若此【杀】未造成伤害,则你获得之。', - sp_mifuren:'糜夫人', + sp_mifuren:'手杀糜夫人', spcunsi:'存嗣', spcunsi2:'存嗣', spcunsi_info:'出牌阶段限一次,你可将武将牌翻至背面并选择一名其他角色。其从牌堆或弃牌堆中获得一张【杀】,且下一张杀的伤害值基数+1。', diff --git a/character/rank.js b/character/rank.js index da570799a..d7ce673ef 100644 --- a/character/rank.js +++ b/character/rank.js @@ -924,6 +924,7 @@ window.noname_character_rank={ 'vtb_xiaole', 'vtb_xiaojiu', 'ol_zhangzhang', + 'ol_mengda', ], b:[ 'diy_feishi', @@ -1212,6 +1213,7 @@ window.noname_character_rank={ 'sb_zhurong', 'vtb_xiaoshan', 'vtb_xiaotao', + 'zhangchu', ], bm:[ 'diy_xizhenxihong', diff --git a/character/refresh.js b/character/refresh.js index 8da8af055..b8b6aef28 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -9845,9 +9845,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.storage.rehuashen.current=event.card; game.broadcastAll(function(character,player){ player.sex=lib.character[character][0]; - player.group=lib.character[character][1]; - player.node.name.dataset.nature=get.groupnature(player.group); + //player.group=lib.character[character][1]; + //player.node.name.dataset.nature=get.groupnature(player.group); },event.card,player); + player.changeGroup(lib.character[event.card][1],false); } var link=result.control; player.storage.rehuashen.current2=link; diff --git a/character/shenhua.js b/character/shenhua.js index 74bb90e7f..c4eb1f74f 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -4494,8 +4494,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.markSkill('huashen'); game.broadcastAll(function(character,player){ player.sex=lib.character[character][0]; - player.group=lib.character[character][1]; - player.node.name.dataset.nature=get.groupnature(player.group); + //player.group=lib.character[character][1]; + //player.node.name.dataset.nature=get.groupnature(player.group); var mark=player.marks.huashen; if(mark){ mark.style.transition='all 0.3s'; @@ -4513,6 +4513,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ },200); } },character,player); + player.changeGroup(lib.character[character][1],false); } player.storage.huashen.current2=skill; if(!player.additionalSkills.huashen||!player.additionalSkills.huashen.contains(skill)){ diff --git a/character/sp.js b/character/sp.js index 10ed4d99b..882c26801 100755 --- a/character/sp.js +++ b/character/sp.js @@ -13,7 +13,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","huojun",'zhaoyǎn','dengzhong','ol_furong','macheng','ol_zhangyì','ol_zhujun','maxiumatie','luoxian'], sp_liesi:['mizhu','weizi','ol_liuba','zhangshiping'], sp_default:["sp_diaochan","sp_zhaoyun","sp_sunshangxiang","sp_caoren","sp_jiangwei","sp_machao","sp_caiwenji","jsp_guanyu","jsp_huangyueying","sp_pangde","sp_jiaxu","yuanshu",'sp_zhangliao','sp_ol_zhanghe','sp_menghuo'], - sp_waitforsort:['ol_huban'], + sp_waitforsort:['ol_huban','ol_mengda'], sp_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv','jin_zhouchu'], sp_wanglang:['ol_wanglang'], sp_zhongdan:["cuiyan","huangfusong"], @@ -28,6 +28,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, character:{ + ol_mengda:['male','shu',4,['olgoude']], ol_wanglang:['male','wei',3,['gushe','oljici']], ol_liuyan:['male','qun','4/6',['olpianan','olyinji','olkuisi'],['unseen']], lushi:['female','qun',3,['olzhuyan','olleijie']], @@ -683,6 +684,208 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //OL孟达 + olgoude:{ + audio:2, + trigger:{ + global:'phaseEnd', + }, + filter:function(event,player){ + var list=[]; + game.countPlayer(current=>{ + if(current.group!=player.group) return false; + var listx=lib.skill.olgoude.getActed(current); + list.addArray(listx); + }); + return list.length&&list.length<4; + }, + getActed:function(target){ + var list=[]; + if(target.hasHistory('gain',evt=>{ + return evt.getParent().name=='draw'&&evt.cards.length==1; + })){ + list.push(1); + } + if(game.hasPlayer2(current=>{ + return current.hasHistory('lose',evt=>{ + if(evt.type!='discard') return false; + if((evt.discarder||evt.getParent(2).player)!=target) return false; + var evtx=evt.getl(current); + if(!evtx||evtx.hs.length!=1) return false; + return true; + }); + })){ + list.push(2); + } + if(target.hasHistory('useCard',evt=>{ + if(evt.card.name=='sha'&&evt.cards&&!evt.cards.length) return true; + return false; + })){ + list.push(3); + } + if(target.hasHistory('custom',evt=>{ + return evt.name=='changeGroup'; + })){ + list.push(4); + } + return list; + }, + direct:true, + content:function(){ + 'step 0' + var list=[1,2,3,4]; + game.countPlayer(current=>{ + if(current.group!=player.group) return false; + var listx=lib.skill.olgoude.getActed(current); + list.removeArray(listx); + }); + var list2=list.slice(); + var nochai=false,nosha=false; + if(!game.hasPlayer(current=>{ + return current.countDiscardableCards(player,'h'); + })){ + nochai=true; + list2.remove(2); + } + if(!game.hasPlayer(current=>{ + return player.canUse({name:'sha',isCard:true},current,true,false); + })){ + nosha=true; + list2.remove(3); + } + var choices=list2.map(i=>{ + return '选项'+get.cnNumber(i,true); + }); + var choiceList=[ + '摸一张牌', + '弃置一名角色的一张手牌', + '视为使用一张【杀】', + '将势力改为任意一个势力' + ].map((text,ind)=>{ + var hint=''; + if(list.contains(ind+1)){ + return text; + } + else{ + hint+='已被执行过且'; + } + if(ind==1&&nochai&&!list2.contains(ind+1)) hint+='无有手牌角色且'; + if(ind==2&&nosha&&!list2.contains(ind+1)) hint+='无可选目标且'; + hint=hint.slice(0,-1); + return ''+text+'('+hint+')'; + }); + choices.push('cancel2'); + if(_status.connectMode) game.broadcastAll(function(){_status.noclearcountdown=true}); + player.chooseControl(choices).set('choiceList',choiceList).set('prompt',get.prompt('olgoude')).set('ai',()=>{ + return _status.event.choice; + }).set('choice',function(){ + var fn=function(control){ + switch(control){ + case '选项一': + return player.getUseValue({name:'wuzhong'})/2; + case '选项二': + return Math.max.apply(Math,game.filterPlayer().map(current=>{ + if(current.hasSkillTag('noh')) return -1; + return -1.5*get.attitude(player,current)-Math.max(0,current.countCards('h')-2)/3; + })); + case '选项三': + return player.getUseValue({name:'sha'}); + case '选项四': + var myPopulation=game.countPlayer(current=>{ + return current.group==player.group; + })-1; + var value=Math.max.apply(Math,lib.group.map(group=>{ + return game.countPlayer(current=>{ + return current.group==group&¤t!=player; + })-myPopulation; + })); + return 10*value+0.1*(Math.random()-0.5); + case 'cancel2': + return 0; + } + } + var choicesx=choices.map(choice=>{ + return [choice,fn(choice)]; + }); + choicesx=choicesx.sort((a,b)=>{ + return b[1]-a[1]; + }); + var choice=choicesx[0]; + if(choice[1]<0) return 'cancel2'; + return choice[0]; + }()); + 'step 1' + if(result.control=='cancel2'){ + event.finish(); + return; + } + var contents={ + 选项一:function(){ + player.logSkill('olgoude'); + player.draw(); + }, + 选项二:function(){ + 'step 0' + player.chooseTarget('苟得:弃置一名角色的一张手牌',true,(card,player,target)=>{ + return target.countDiscardableCards(player,'h'); + }).set('ai',target=>{ + if(target.hasSkillTag('noh')) return 0; + return -get.attitude(_status.event.player,target); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + if(_status.connectMode){game.broadcastAll(function(){delete _status.noclearcountdown;game.stopCountChoose()});} + player.logSkill('olgoude',target); + player.discardPlayerCard(target,true,'h'); + } + }, + 选项三:function(){ + player.chooseUseTarget('sha',true,false).set('logSkill','olgoude'); + }, + 选项四:function(){ + 'step 0' + var list=lib.group.slice(); + var maxGroup=list.slice().sort((a,b)=>{ + return game.countPlayer(current=>{ + return current.group==b&¤t!=player; + })-game.countPlayer(current=>{ + return current.group==a&¤t!=player; + }); + })[0]; + player.chooseControl(list).set('prompt','苟得:请选择要变更为的势力').set('ai',()=>{ + return _status.event.choice; + }).set('choice',maxGroup); + 'step 1' + if(_status.connectMode){game.broadcastAll(function(){delete _status.noclearcountdown;game.stopCountChoose()});} + var group=result.control; + player.logSkill('olgoude'); + player.changeGroup(group); + player.popup(group+'2',get.groupnature(group,'raw')); + }, + } + var next=game.createEvent('olgoude_'+result.control); + next.player=player; + next.setContent(contents[result.control]); + }, + ai:{ + threaten:3, + effect:{ + player_use:function(card,player,target){ + if(typeof card=='object'&&card.cards&&card.cards.some(card=>{ + return get.position(card)=='h'; + })&&!get.tag(card,'draw')&&!get.tag(card,'gain')&&!get.tag(card,'discard')&& + player==_status.currentPhase&&player.needsToDiscard()==1&&game.countPlayer(current=>{ + return current.group==player.group&¤t!=player; + })<=1&&lib.group.some(group=>{ + return game.countPlayer(current=>{ + return current.group==group&¤t!=player; + })>2; + })) return 'zeroplayertarget'; + }, + }, + }, + }, //OL新改王朗 oljici:{ audio:'jici', @@ -22098,7 +22301,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhugejin:'诸葛瑾', zhugeke:'诸葛恪', guanyinping:'关银屏', - ganfuren:'甘夫人', + ganfuren:'SP甘夫人', sunhao:'孙皓', chengyu:'程昱', simalang:'司马朗', @@ -23095,6 +23298,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_wanglang:'OL王朗', oljici:'激词', oljici_info:'当你的拼点牌亮出后,若点数不大于X,你可令点数+X并令〖鼓舌〗视为未发动过(X为你的“饶舌”标记数)。', + ol_mengda:'OL孟达', + olgoude:'苟得', + olgoude_info:'一名角色的回合结束时,若有与你势力相同的角色执行过以下项,则你可以执行这些角色未执行过的一项:1.摸一张牌;2.弃置一名角色的一张手牌;3.使用一张无对应实体牌的【杀】;4.变更势力。', sp_tianji:'天极·皇室宗亲', sp_sibi:'四弼·辅国文曲', diff --git a/character/sp2.js b/character/sp2.js index b9b7a18cf..97d86dae9 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -32,7 +32,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xielingyu:['female','wu',3,['dcyuandi','dcxinyou']], yuanyin:['male','qun',3,['dcmoshou','dcyunjiu'],['unseen']], dongwan:['female','qun',3,['dcshengdu','dcxianjiao'],['unseen']], - zhangchu:['female','qun',3,['dcjizhong','dcjucheng','dcguangshi'],['unseen']], + zhangchu:['female','qun',3,['dcjizhong','dcrihui','dcguangshi']], peiyuanshao:['male','qun',4,['dcmoyu'],['unseen']], mengjie:['male','qun',3,['dcyinlu','dcyouqi']], //dc_fuwan:['male','qun',4,['dcmoukui']], @@ -3243,7 +3243,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } }, - dcjucheng:{ + dcrihui:{ audio:2, trigger:{player:'useCardAfter'}, usable:1, @@ -3262,9 +3262,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var card={name:trigger.card.name,nature:trigger.card.nature,isCard:true}; event.target=target; event.card=card; - if(target.hasMark('dcjizhong')) player.gainPlayerCard(get.prompt('dcjucheng',target),target,'hej').set('logSkill',['dcjucheng',target]); + if(target.hasMark('dcjizhong')) player.gainPlayerCard(get.prompt('dcrihui',target),target,'hej').set('logSkill',['dcrihui',target]); else{ - player.chooseBool(get.prompt('dcjucheng',target),'令所有有“信众”的角色依次视为对其使用一张'+get.translation(card)).set('ai',()=>{ + player.chooseBool(get.prompt('dcrihui',target),'令所有有“信众”的角色依次视为对其使用一张'+get.translation(card)).set('ai',()=>{ return _status.event.bool; }).set('bool',function(){ var eff=0; @@ -3277,13 +3277,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } 'step 1' if(!result.bool){ - player.storage.counttrigger.dcjucheng--; + player.storage.counttrigger.dcrihui--; return; } if(target.hasMark('dcjizhong')) event.finish(); else{ - player.logSkill('dcjucheng',target); + player.logSkill('dcrihui',target); event.targets=game.filterPlayer(current=>current.hasMark('dcjizhong')); + event.targets.sortBySeat(_status.currentPhase); } 'step 2' var current=event.targets.shift(); @@ -10033,6 +10034,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ group:'dcfuxue_draw', subSkill:{ draw:{ + audio:'dcfuxue', trigger:{player:'phaseJieshuBegin'}, forced:true, locked:false, @@ -28146,6 +28148,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ check:function(event,player){ return get.value(event.cards)+player.maxHp*2-18>0; }, + prompt2:function(event,player){ + return '你可以减1点体力上限,然后获得'+get.translation(event.cards.filterInD())+'。'; + }, filter:function(event,player){ return player.isPhaseUsing()&&get.type(event.card)=='trick'&&event.cards.filterInD().length>0; }, @@ -29464,7 +29469,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mushun:'穆顺,小说《三国演义》中的人物,男,东汉末宦官。献帝欲修书与国舅伏完,共谋图曹公。因顺为宦官中之忠义可托者,乃命顺往送书。顺藏书于发中,潜出禁宫,径至完宅,将书呈上。及完回书付顺,顺乃藏于头髻内,辞完回宫。然公闻信,先于宫门等候,顺回遇公,公喝左右,遍搜身上,并无夹带,放行。忽然风吹落其帽。公又唤回,取帽视之,遍观无物,还帽令戴。顺双手倒戴其帽。公心疑,令左右搜其头发中,搜出伏完书来。公见书大怒,执下顺于密室问之,顺不肯招。当晚将顺、完等宗族二百余口,皆斩于市。', jsp_guanyu:'关羽,字云长。曾水淹七军、擒于禁、斩庞德、威震华夏,吓得曹操差点迁都躲避,但是东吴偷袭荆州,关羽兵败被害。后传说吕蒙因关羽之魂索命而死。', ruanji:'阮籍(公元210年~263年),字嗣宗,陈留尉氏(今河南省开封市)人,三国时期魏国诗人、竹林七贤之一。阮瑀之子,门荫入仕,累迁步兵校尉,世称阮步兵。崇奉老庄之学,政治上则采取谨慎避祸的态度。景元四年(公元263年),阮籍去世,享年五十三岁。作为“正始之音”的代表,著有《咏怀八十二首》、《大人先生传》等,其著作收录在《阮籍集》中。', - ganfurenmifuren:'甘夫人,刘备起兵后于沛城娶之为妾。后来,甘夫人随刘备到荆州,生了阿斗(也就是后主刘禅)。223年四月,刘备病死于白帝城,追谥甘夫人为“昭烈皇后”。
刘备夫人。徐州别驾糜竺之妹。长坂兵败,她怀抱年仅两岁的刘禅在乱军中走散,被赵云发现;但麋夫人因为赵云只有一匹马,不肯上马,在将阿斗托付给赵云后投井而亡。' + ganfurenmifuren:'甘夫人,刘备起兵后于沛城娶之为妾。后来,甘夫人随刘备到荆州,生了阿斗(也就是后主刘禅)。223年四月,刘备病死于白帝城,追谥甘夫人为“昭烈皇后”。
糜夫人,刘备夫人。徐州别驾糜竺之妹。长坂兵败,她怀抱年仅两岁的刘禅在乱军中走散,被赵云发现;但麋夫人因为赵云只有一匹马,不肯上马,在将阿斗托付给赵云后投井而亡。' }, characterTitle:{ // wulan:'#b对决限定武将', @@ -29633,7 +29638,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ duanwei:['duanwei','junk_duanwei'], xushao:['xushao','jsrg_xushao'], huban:['dc_huban','ol_huban'], - mengda:['dc_mengda','pe_mengda'], + mengda:['dc_mengda','ol_mengda','pe_mengda'], jsp_guanyu:['dc_jsp_guanyu','jsp_guanyu'], mushun:['mushun','sp_mushun'], }, @@ -30812,8 +30817,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhangchu:'张楚', dcjizhong:'集众', dcjizhong_info:'出牌阶段限一次。你可以令一名其他角色摸两张牌,然后其选择一项:1.若其没有“信众”标记,其获得“信众”标记;2.弃置三张手牌。', - dcjucheng:'聚逞', - dcjucheng_info:'每回合限一次。当你使用普通锦囊牌或黑色基本牌结算结束后,若此牌的目标数为1且目标不为你,且其:没有“信众”,所有有“信众”的角色依次视为对其使用一张与此牌牌名和属性相同的牌;有“信众”,你可以获得其区域里的一张牌。', + dcrihui:'日慧', + dcrihui_info:'每回合限一次。当你使用普通锦囊牌或黑色基本牌结算结束后,若此牌的目标数为1且目标不为你,且其:没有“信众”,则所有有“信众”的角色依次视为对其使用一张与此牌牌名和属性相同的牌;有“信众”,则你可以获得其区域里的一张牌。', dcguangshi:'光噬', dcguangshi_info:'锁定技。准备阶段,若所有其他角色均有“信众”,你失去1点体力并摸两张牌。', dongwan:'董绾', diff --git a/character/tw.js b/character/tw.js index e0e4bd63f..0a6a6f79f 100644 --- a/character/tw.js +++ b/character/tw.js @@ -6707,7 +6707,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ logTarget:'player', content:function(){ trigger.cancel(); - target.damage(trigger.source?trigger.source:'nosource',trigger.nature,trigger.num).set('card',trigger.card).set('cards',trigger.cards).twgonghuan=true; + player.damage(trigger.source?trigger.source:'nosource',trigger.nature,trigger.num).set('card',trigger.card).set('cards',trigger.cards).twgonghuan=true; }, }, //桥蕤 diff --git a/game/game.js b/game/game.js index 40bbdaaab..e2f7133fb 100644 --- a/game/game.js +++ b/game/game.js @@ -10543,6 +10543,21 @@ emptyEvent:function(){ event.trigger(event.name); }, + changeGroup:function(){ + 'step 0' + if(!event.group) event.group=player.group; + var group=event.group; + player.getHistory('custom').push(event); + if(event.broadcast!==false){ + game.broadcast(function(player,group){ + player.group=group; + player.node.name.dataset.nature=get.groupnature(group); + },player,group); + } + player.group=group; + player.node.name.dataset.nature=get.groupnature(group); + if(event.log!==false) game.log(player,'将势力变为了','#y'+get.translation(group+2)); + }, chooseToDebate:function(){ 'step 0' event.targets=event.list.filter(function(i){ @@ -18296,16 +18311,23 @@ return this.maxHp-Math.max(0,this.hp); }, changeGroup:function(group,log,broadcast){ - var player=this; - if(broadcast!==false){ - game.broadcast(function(player,group){ - player.group=group; - player.node.name.dataset.nature=get.groupnature(group); - },player,group); + var next=game.createEvent('changeGroup'); + next.player=this; + next.log=true; + for(var i=0;i=lib.configOL.number-1){ - alert('至少要有两名玩家才能开始游戏!'); - return; - } + // if(num>=lib.configOL.number-1){ + // alert('至少要有两名玩家才能开始游戏!'); + // return; + // } game.resume(); } button.delete(); diff --git a/image/character/ol_mengda.jpg b/image/character/ol_mengda.jpg new file mode 100644 index 000000000..255aa0728 Binary files /dev/null and b/image/character/ol_mengda.jpg differ diff --git a/image/character/zhangchu.jpg b/image/character/zhangchu.jpg new file mode 100644 index 000000000..2cbe9e27f Binary files /dev/null and b/image/character/zhangchu.jpg differ