diff --git a/character/huicui.js b/character/huicui.js index b7301ba44..da20ed7c5 100644 --- a/character/huicui.js +++ b/character/huicui.js @@ -3872,7 +3872,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, dcqizi:{ mod:{ - playerEnabled:function(card,player,target){ + cardSavable:function(card,player,target){ if(get.distance(player,target)>2&&card.name=='tao'&&target==_status.event.dying) return false; }, } diff --git a/character/mobile.js b/character/mobile.js index d14170729..80a33340a 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -6,7 +6,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connect:true, characterSort:{ mobile:{ - mobile_default:['xin_guozhao',"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","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu","sunhanhua","sp_maojie","peixiu","sp_jianggan","ruanhui","xin_mamidi","sp_caosong","yangfu","wangjun","sp_pengyang","qianzhao",'shichangshi'], + mobile_default:['xin_wuban','laimin','baoxin','jiangji','liwei','xin_guozhao',"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","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu","sunhanhua","sp_maojie","peixiu","sp_jianggan","ruanhui","xin_mamidi","sp_caosong","yangfu","wangjun","sp_pengyang","qianzhao",'shichangshi'], mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning",'yj_huangzhong','yj_weiyan','yj_zhoubuyi'], mobile_standard:["xin_xiahoudun","xin_zhangfei"], mobile_shenhua_feng:['re_xiaoqiao',"xin_zhoutai"], @@ -26,6 +26,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, character:{ + xin_wuban:['male','shu',4,['xinjintao'],['clan:陈留吴氏','character:wuban']], + baoxin:['male','qun',4,['mutao','yimou'],['character:tw_baoxin']], + jiangji:['male','wei',3,['twjichou','jilun'],['character:tw_jiangji']], + liwei:['male','shu',4,['jiaohua'],['character:tw_liwei','die:tw_liwei']], + laimin:['male','shu',3,['laishou','luanqun']], yj_zhoubuyi:['male','wei',3,['mbhuiyao','mbquesong']], xin_guozhao:['female','wei',3,['yichong','wufei']], xin_zhangyi:['male','shu',4,['xinwurong','shizhi']], @@ -166,6 +171,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ scs_gaowang:['male','qun','',['scsmiaoyu'],['unseen','sex:male_castrated']], }, characterIntro:{ + laimin:'来敏(165年—261年),字敬达,义阳新野人,东汉太中大夫来歙之后,司空来艳之子,三国时期蜀汉官员。东汉末年,逢董卓之乱,来敏跟随姐夫黄琬到荆州避难,黄琬是刘璋祖母的侄子,来敏又与姐姐来氏入蜀,被刘璋引为宾客。来敏喜欢读书,尤其喜欢《左氏春秋》。刘备平定益州后,以来敏为典学校尉,后立太子,来敏为家令。刘禅继位后,任命来敏为虎贲中郎将,诸葛亮驻汉中,请来敏为军祭酒、辅军将军。却因其口出狂言而被罢官,诸葛亮死后,来敏历任大长秋、光禄大夫、执慎将军等职,期间多次因说错话而被免官,蜀汉景耀年间,来敏去世,时年九十七岁。', shichangshi:'十常侍,指中国东汉(公元25年—220年)灵帝时期(168年-189年)操纵政权的十二个宦官:张让、赵忠、夏恽、郭胜、孙璋、毕岚、栗嵩、段珪、高望、张恭、韩悝、宋典(在小说《三国演义》里,十常侍指的是指张让、赵忠、封谞、段珪、曹节、侯览、蹇硕、程旷、夏恽、郭胜十人),他们都任职中常侍。玩弄小皇帝于股掌之中,以至灵帝称“张常侍是我父,赵常侍是我母”。十常侍自己横征暴敛,卖官鬻爵,他们的父兄子弟遍布天下,横行乡里,祸害百姓,无官敢管。人民不堪剥削、压迫,纷纷起来反抗。当时一些比较清醒的官吏,已看出宦官集团的黑暗腐败,导致大规模农民起义的形势。郎中张钧在给皇帝的奏章中明确指出,黄巾起义是外戚宦官专权逼出来的,他说:“张角所以能兴兵作乱,万人所以乐附之者,其源皆由十常侍多放父兄、子弟、婚宗、宾客典据州郡,辜确财利,侵略百姓,百姓之怨无所告诉,故谋议不轨,聚为‘盗贼’。”后被曹操、袁绍所歼。', sunzhang:'孙璋(?-189年?)东汉末期汉灵帝的宦官,官居中常侍,为十常侍之一,在张让、赵忠之下位居第三。光熹元年(189年),张让、赵忠、段珪等诛杀何进,袁绍率军入宫,诛杀孙璋。', bilan:'毕岚(?—189),东汉宦官,十常侍之一。十常侍朋比为奸,祸乱朝纲,制造出党锢之祸,后被袁绍诛杀。另外,毕岚曾制造翻车,用于取河水洒路。', @@ -380,6 +386,373 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //吴班 + xinjintao:{ + audio:'jintao', + inherit:'jintao', + content:function(){ + var evt=trigger.getParent('phaseUse'); + var index=player.getHistory('useCard',function(evtx){ + return evtx.card.name=='sha'&&evtx.getParent('phaseUse')==evt; + }).indexOf(trigger); + if(index==0){ + game.log(trigger.card,'不可被响应'); + trigger.directHit.addArray(game.players); + } + else{ + game.log(trigger.card,'伤害+1'); + if(typeof trigger.baseDamage!='number') trigger.baseDamage=1; + trigger.baseDamage++; + } + }, + }, + //鲍信 + mutao:{ + audio:'twmutao', + inherit:'twmutao', + content:function(){ + 'step 0' + event.togive=target.getNext(); + var cards=target.getCards('h',{name:'sha'}); + if(!cards.length){ + game.log('但',target,'没有','#y杀','!'); + event.finish(); + } + else target.addToExpansion(cards,target,'give').gaintag.add('mutao'); + 'step 1' + var card=target.getExpansions('mutao').randomGet(); + target.give(card,event.togive); + 'step 2' + if(target.getExpansions('mutao').length){ + event.togive=event.togive.getNext(); + event.goto(1); + } + else{ + target.line(event.togive); + event.togive.damage(Math.min(3,event.togive.countCards('h',{name:'sha'})),target); + } + }, + intro:{ + content:'expansion', + markcount:'expansion', + }, + }, + yimou:{ + audio:'twyimou', + inherit:'twyimou', + content:function(){ + 'step 0' + if(trigger.player!=player) player.addExpose(0.3); + var target=get.translation(trigger.player); + var choiceList=[ + '令'+target+'获得牌堆里的一张【杀】', + '令'+target+'将一张牌交给另一名角色,然后'+target+'摸两张牌', + ]; + var list=['选项一']; + if(trigger.player.countCards('h')) list.push('选项二'); + else choiceList[1]=''+choiceList[1]+''; + player.chooseControl(list).set('prompt','毅谋:请选择一项').set('choiceList',choiceList).set('ai',function(){ + var evt=_status.event.getTrigger(),list=_status.event.list; + var player=_status.event.player; + var target=evt.player; + if(target.countCards('h')&&list.contains('选项二')) return '选项二'; + return '选项一'; + }).set('list',list); + 'step 1' + event.choice=result.control; + 'step 2' + if(event.choice!='选项二'){ + var card=get.cardPile2(function(card){ + return card.name=='sha'; + }); + if(card) trigger.player.gain(card,'gain2'); + else game.log('但牌堆里已经没有','#y杀','了!'); + if(event.choice=='选项一') event.finish(); + } + 'step 3' + if(event.choice!='选项一'){ + if(trigger.player.countCards('h')) trigger.player.chooseCardTarget({ + prompt:'将一张手牌交给另一名其他角色并摸两张牌', + filterCard:true, + forced:true, + filterTarget:lib.filter.notMe, + ai1:function(card){ + return 1/Math.max(0.1,get.value(card)); + }, + ai2:function(target){ + var player=_status.event.player,att=get.attitude(player,target); + if(target.hasSkillTag('nogain')) att/=9; + return 4+att; + }, + }); + else event.finish(); + } + 'step 4' + var target=result.targets[0]; + trigger.player.line(target); + trigger.player.give(result.cards,target); + trigger.player.draw(2); + }, + }, + //蒋济 + jilun:{ + audio:'twjilun', + inherit:'twjilun', + filter:function(event,player){ + return player.hasSkill('twjichou'); + }, + content:function(){ + 'step 0' + var num=Math.min(Math.max(1,player.getStorage('twjichou').length),5); + event.num=num; + var choices=['选项一']; + var choiceList=[ + '摸'+get.cnNumber(num)+'张牌', + '获得一个“机论”标记', + ]; + if(!player.getStorage('twjichou').length||!player.getStorage('twjichou').filter(function(name){ + return !player.getStorage('jilun').contains(name)&&player.hasUseTarget({name:name}); + }).length) choiceList[1]=''+choiceList[1]+''; + else choices.push('选项二'); + player.chooseControl(choices,'cancel2').set('choiceList',choiceList).set('prompt',get.prompt('jilun')).set('ai',()=>{ + if(_status.event.choiceList.length==1||!player.getStorage('twjichou').length) return 0; + var val=_status.event.num>3?Math.min(1.5,1+(_status.event.num-3)*0.1):1; + for(var name of player.getStorage('twjichou')){ + if(player.getStorage('jilun').contains(name)) continue; + if(player.getUseValue({name:name})>4*val) return 1; + } + return 0; + }).set('num',num); + 'step 1' + if(result.control!='cancel2'){ + player.logSkill('jilun'); + if(result.control=='选项一') player.draw(num); + else player.addMark('jilun_mark',1); + } + }, + group:'jilun_effect', + subSkill:{ + mark:{ + intro:{content:'mark'}, + }, + effect:{ + audio:'twjilun', + trigger:{global:'phaseJieshuBegin'}, + filter:function(event,player){ + return player.hasMark('jilun_mark'); + }, + forced:true, + content:function(){ + 'step 0' + if(!player.getStorage('twjichou').length||!player.getStorage('twjichou').filter(function(name){ + return !player.getStorage('jilun').contains(name)&&player.hasUseTarget({name:name}); + }).length){ + if(player.hasMark('jilun_mark')) player.removeMark('jilun_mark',player.countMark('jilun_mark')); + event.finish(); + return; + } + var list=[]; + for(var name of player.getStorage('twjichou')){ + if(!player.getStorage('jilun').contains(name)){ + list.push(['锦囊','',name]); + } + } + player.chooseButton(['###机论:请选择你要执行的选项###
  • 失去1枚“机论”标记,视为使用一张〖急筹〗已记录但〖机论〗未记录的普通锦囊牌
  • 失去所有“机论”标记
  • ',[list,'vcard']]).set('filterButton',function(button){ + return _status.event.player.hasUseTarget({name:button.link[2]}); + }).set('ai',function(button){ + return _status.event.getParent().player.getUseValue({name:button.link[2]},null,true); + }); + 'step 1' + if(result.bool){ + player.removeMark('jilun_mark',1); + var card={name:result.links[0][2],isCard:true}; + player.chooseUseTarget(card,true); + player.markAuto('jilun',[card.name]); + player.syncStorage('jilun'); + } + else{ + player.removeMark('jilun_mark',player.countMark('jilun_mark')); + event.finish(); + } + 'step 2' + if(player.hasMark('jilun_mark')) event.goto(0); + }, + }, + }, + }, + //李遗 + jiaohua:{ + onremove:true, + audio:'twjiaohua', + enable:'phaseUse', + usable:3, + chooseButton:{ + dialog:function(event,player){ + return ui.create.dialog('###教化###选择一种牌的类型,令一名角色从牌堆获得此类型的一张牌'); + }, + chooseControl:function(event,player){ + var list=['basic','trick','equip'].filter(type=>!player.getStorage('jiaohua').contains(type)); + list.push('cancel2'); + return list; + }, + check:function(event,player){ + var list=['trick','equip','basic'].filter(type=>!player.getStorage('jiaohua').contains(type)); + return list[0]; + }, + backup:function(result,player){ + return{ + type:result.control, + audio:'twjiaohua', + filterTarget:true, + content:function(){ + 'step 0' + var type=lib.skill.jiaohua_backup.type; + var card=get.cardPile2(card=>get.type2(card)==type); + if(card) target.gain(card,'gain2'); + else game.log('但牌堆里已经没有','#y'+get.translation(type)+'牌','了!'); + 'step 1' + player.markAuto('jiaohua',[lib.skill.jiaohua_backup.type]); + 'step 2' + if(!['basic','trick','equip'].some(type=>!player.getStorage('jiaohua').contains(type))){ + player.popup('教化'); + player.unmarkAuto('jiaohua',player.getStorage('jiaohua')); + game.log(player,'清空了','#g【教化】','记录'); + } + }, + ai:{ + result:{target:1}, + }, + } + }, + prompt:function(result,player){ + return '令一名角色从牌堆中获得一张'+get.translation(result.control)+'牌'; + }, + }, + ai:{ + order:7, + result:{player:1}, + }, + intro:{content:'已记录$牌'}, + }, + //来敏 + laishou:{ + audio:2, + trigger:{player:['damageBegin4','phaseZhunbeiBegin']}, + filter:function(event,player){ + var num=9; + if(event.name=='damage') return event.num>=player.getHp()&&player.maxHp=num; + }, + forced:true, + content:function(){ + if(trigger.name=='damage'){ + player.gainMaxHp(trigger.num); + trigger.cancel(); + } + else player.die(); + }, + }, + luanqun:{ + audio:2, + enable:'phaseUse', + filter:function(event,player){ + return player.countCards('h'); + }, + usable:1, + content:function(){ + 'step 0' + var targets=game.filterPlayer(current=>current.countCards('h')).sortBySeat(); + event.targets=targets; + var next=player.chooseCardOL(targets,'乱群:请选择要展示的牌',true).set('ai',function(card){ + return -get.value(card); + }).set('source',player); + next.aiCard=function(target){ + var hs=target.getCards('h'); + return {bool:true,cards:[hs.randomGet()]}; + }; + next._args.remove('glow_result'); + 'step 1' + var cards=[]; + event.videoId=lib.status.videoId++; + for(var i=0;icardy!=card&&get.color(cardy,targets[cards.indexOf(cardy)])==get.color(card,player)); + if(cardx.length){ + player.chooseButton(['乱群:是否获得其中的一张牌',cardx]).set('forceAuto',true).set('ai',function(button){ + var cards=_status.event.list[0]; + var targets=_status.event.list[1]; + var player=_status.event.player; + if(get.attitude(player,targets[cards.indexOf(button.link)])) return 0; + return get.value(button.link,player); + }).set('list',[cards,targets]); + } + else event.goto(4); + 'step 3' + if(result.bool){ + var card=result.links[0]; + player.gain(card,get.owner(card),'give'); + } + 'step 4' + var card=cards[targets.indexOf(player)]; + targets=targets.filter(target=>get.color(cards[targets.indexOf(target)],target)!=get.color(card,player)); + if(targets.length){ + player.line(targets); + targets.forEach(target=>{ + target.addTempSkill('luanqun_effect',{player:'phaseUseAfter'}); + target.markAuto('luanqun_effect',[player]); + }); + } + }, + ai:{ + order:9, + result:{ + player:function(player,target){ + if(player.hasSkill('laishou')) return 1; + return player.hp>=2?1:0; + }, + }, + }, + subSkill:{ + effect:{ + charlotte:true, + onremove:true, + intro:{content:'出牌阶段第一张【杀】只能指定$为目标,且此牌不可被响应'}, + mod:{ + playerEnabled:function(card,player,target){ + if(!player.isPhaseUsing()) return; + if(card.name=='sha'&&player.getStorage('luanqun_effect').contains(target)) return false; + }, + }, + trigger:{player:'useCard1'}, + filter:function(event,player){ + return player.isPhaseUsing()&&event.card.name=='sha'; + }, + forced:true, + content:function(){ + trigger.directHit.addArray(player.getStorage('luanqun_effect')); + player.removeSkill('luanqun_effect'); + }, + }, + }, + }, //☆周不疑 mbhuiyao:{ audio:2, @@ -542,7 +915,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.markSkill('yichong'); game.broadcastAll(function(player,suit){ if(player.marks.yichong) player.marks.yichong.firstChild.innerHTML=get.translation(suit); - },player,suit) + },player,suit); if(target.countCards('he',{suit:suit})) player.gain(target.getCards('he',{suit:suit}),target,'giveAuto'); game.countPlayer(function(current){ current.removeSkill('yichong_'+player.playerid); @@ -14890,6 +15263,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_chenqun_prefix:'手杀', old_yuanshu:'手杀袁术', old_yuanshu_prefix:'手杀', + baoxin:'鲍信', + mutao:'募讨', + mutao_info:'出牌阶段限一次。你可以选择一名角色,令其将手牌中所有的【杀】置于武将牌上,然后将这些牌依次随机交给其下家开始的每一名角色。然后其对最后一名以此法获得【杀】的角色A造成X点伤害(X为A手牌中【杀】的数量且至多为3)。', + yimou:'毅谋', + yimou_info:'当一名角色受到伤害后,若其存活且你至其的距离不大于1,你可以选择一项:1.令其从牌堆中获得一张【杀】;2.令其将一张手牌交给另一名角色并摸两张牌。', + jiangji:'蒋济', + jilun:'机论', + jilun_info:'①当你受到伤害后,若你拥有技能〖急筹〗,则你可以一项:1.摸X张牌(X为〖急筹①〗记录数,且X且至少为1,至多为5)。2.获得1枚“机论”标记。②一名角色的结束阶段,若你拥有“机论”,则重复选择执行以下项直到你没有“机论”标记:1.失去1枚“机论”标记,视为使用一张〖急筹①〗记录过且未被〖机论②〗记录过的普通锦囊牌并记录此牌牌名。2.失去所有“机论”标记。', + liwei:'李遗', + jiaohua:'教化', + jiaohua_backup:'教化', + jiaohua_info:'出牌阶段限三次,你可以选择一个未被〖教化〗记录过的牌的类型,令一名角色从牌堆中获得一张此类型的牌,然后记录此类型,若基本、锦囊、装备均已被你发动〖教化〗记录,则你清空〖教化〗记录。', + laimin:'来敏', + laishou:'来寿', + laishou_info:'锁定技。①当你受到伤害值大于等于你的体力值的伤害时,若你的体力上限小于9,你防止此伤害并增加等量体力上限。②准备阶段,若你的体力上限不小于9,你死亡。', + luanqun:'乱群', + luanqun_info:'出牌阶段限一次,若你有手牌,则你可以令所有有手牌的角色同时展示一张手牌,然后你可以获得其中一张与你展示的牌颜色相同的展示牌,所有本次展示牌颜色与你展示的牌颜色不同的角色的下个出牌阶段使用的第一张【杀】只能对你使用,且此【杀】不可被响应。', + xin_wuban:'吴班', + xinjintao:'进讨', + xinjintao_info:'锁定技,你使用【杀】无距离限制且次数上限+1。你于出牌阶段内使用的第一张【杀】不可被响应,第二张【杀】伤害+1。', mobile_standard:'手杀异构·标准包', mobile_shenhua_feng:'手杀异构·其疾如风', diff --git a/character/sb.js b/character/sb.js index 85a25780e..2d87cac2c 100644 --- a/character/sb.js +++ b/character/sb.js @@ -38,6 +38,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sb_liubiao:['male','qun',3,['sbzishou','sbzongshi']], sb_zhurong:['female','shu',4,['sblieren','sbjuxiang']], sb_menghuo:['male','shu',4,['sbhuoshou','sbzaiqi']], + sb_yl_luzhi:['male','qun',3,['nzry_mingren','sbzhenliang']], + sb_xiaoqiao:['female','wu',3,['sbtianxiang','xinhongyan']], }, characterSort:{ sb:{ @@ -49,6 +51,185 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, skill:{ + //卢植 + sbzhenliang:{ + mark:true, + locked:false, + zhuanhuanji:true, + marktext:'☯', + intro:{ + content:function(storage,player){ + if(storage) return '你的回合外,一名角色使用或打出牌结算完成后,若此牌与“任”类别相同,则你可以令一名角色摸一张牌。'; + return '出牌阶段限一次,你可以弃置一张与“任”颜色相同的牌并对攻击范围内的一名角色造成1点伤害。'; + }, + }, + audio:2, + enable:'phaseUse', + filter:function(event,player){ + if(player.storage.sbzhenliang) return false; + var storage=player.getExpansions('nzry_mingren'); + if(!storage.length) return false; + var color=get.color(storage[0]); + return game.hasPlayer(function(current){ + return player.inRange(current)&&player.countCards('he',function(card){ + return get.color(card)==color; + })>=Math.max(1,Math.abs(player.getHp()-current.getHp())); + }); + }, + filterCard:function(card,player){ + return get.color(card)==get.color(player.getExpansions('nzry_mingren')[0]); + }, + selectCard:[1,Infinity], + complexSelect:true, + complexCard:true, + position:'he', + filterTarget:function(card,player,target){ + return player.inRange(target)&&ui.selected.cards.length==Math.max(1,Math.abs(player.getHp()-target.getHp())); + }, + check:function(card){ + return 6.5-get.value(card); + }, + prompt:'弃置与攻击范围内的一名角色体力值之差(至少为1)张与“任”颜色相同的牌,对其造成1点伤害。', + content:function(){ + player.changeZhuanhuanji('sbzhenliang'); + target.damage('nocard'); + }, + ai:{ + order:5, + result:{ + player:function(player,target){ + return get.damageEffect(target,player,player); + }, + }, + }, + group:'sbzhenliang_draw', + subSkill:{ + draw:{ + trigger:{global:['useCardAfter','respondAfter']}, + filter:function(event,player){ + if(_status.currentPhase==player||!player.storage.sbzhenliang) return false; + var card=player.getExpansions('nzry_mingren')[0]; + return card&&get.type2(event.card)==get.type2(card); + }, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt('sbzhenliang'),'令一名角色摸一张牌').set('ai',function(target){ + if(target.hasSkillTag('nogain')) return 0.1; + var att=get.attitude(player,target); + return att*(Math.max(5-target.countCards('h'),2)+3); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.changeZhuanhuanji('sbzhenliang'); + player.logSkill('sbzhenliang',target); + target.draw(); + } + }, + }, + }, + ai:{combo:'nzry_mingren'}, + }, + //小乔 + sbtianxiang:{ + audio:2, + enable:'phaseUse', + filter:function(event,player){ + return player.countCards('he',card=>lib.skill.sbtianxiang.filterCard(card,player))&&game.hasPlayer(target=>lib.skill.sbtianxiang.filterTarget(null,player,target)); + }, + filterCard:function(card,player){ + return get.color(card,player)=='red'; + }, + filterTarget:function(card,player,target){ + return target!=player&&!target.getSkills().some(skill=>skill.indexOf('sbtianxiang_')==0); + }, + discard:false, + lose:false, + delay:0, + usable:3, + prompt:'将一张红色牌交给一名角色并令其获得此花色的“天香”标记', + content:function(){ + player.give(cards,target); + var suit=get.suit(cards[0],player); + target.addSkill('sbtianxiang_'+suit); + }, + ai:{ + order:5, + result:{target:-1}, + }, + group:['sbtianxiang_draw','sbtianxiang_effect'], + subSkill:{ + heart:{ + charlotte:true, + mark:true, + marktext:'♥︎', + intro:{content:'伤害转移术'}, + }, + diamond:{ + charlotte:true, + mark:true, + marktext:'♦︎', + intro:{content:'掳掠大法'}, + }, + draw:{ + audio:'sbtianxiang', + trigger:{player:'phaseZhunbeiBegin'}, + filter:function(event,player){ + return game.hasPlayer(target=>target.getSkills().some(skill=>skill.indexOf('sbtianxiang_')==0)); + }, + forced:true, + locked:false, + content:function(){ + var num=0; + game.countPlayer(target=>{ + var skills=target.getSkills().filter(skill=>skill.indexOf('sbtianxiang_')==0); + target.removeSkill(skills); + num+=skills.length; + }); + player.draw(num); + }, + }, + effect:{ + trigger:{player:'damageBegin3'}, + filter:function(event,player){ + return game.hasPlayer(target=>target.getSkills().some(skill=>skill.indexOf('sbtianxiang_')==0)); + }, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt('sbtianxiang'),'移去一名角色的“天香”标记并执行相应效果',function(card,player,target){ + return target.getSkills().some(skill=>skill.indexOf('sbtianxiang_')==0); + }).set('ai',target=>{ + var player=_status.event.player; + return -get.attitude(player,target)*target.getSkills().filter(skill=>skill.indexOf('sbtianxiang_')==0).length; + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('sbtianxiang',target); + var skills=target.getSkills().filter(skill=>skill.indexOf('sbtianxiang_')==0); + target.removeSkill(skills); + if(skills.contains('sbtianxiang_heart')){ + target.damage(trigger.source?trigger.source:'nosource'); + trigger.cancel(); + } + if(skills.contains('sbtianxiang_diamond')){ + var cards=target.getCards('he'); + if(!cards.length) event.finish(); + else if(cards.length<=2) event._result={bool:true,cards:cards}; + else target.chooseCard('he',2,'天香:交给'+get.translation(player)+'两张牌',true); + } + else event.finish(); + } + else event.finish(); + 'step 2' + if(result.bool) player.gain(result.cards,target,'giveAuto'); + }, + }, + }, + }, //张郃 sbqiaobian:{ audio:2, @@ -4936,6 +5117,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sb_zhanghe:'谋张郃', sbqiaobian:'巧变', sbqiaobian_info:'每回合限一次。①你可以失去1点体力并跳过判定阶段,将判定区的所有牌移动给一名其他角色(无法置入其判定区的牌改为弃置之)。②你可以跳过摸牌阶段,于下个准备阶段摸两张牌并回复1点体力。③你可以将手牌数弃置至六张(若手牌数少于六张则跳过之)并跳过出牌阶段和弃牌阶段,然后移动场上的一张牌。', + sb_yl_luzhi:'谋卢植', + sb_yl_luzhi_prefix:'谋', + sbzhenliang:'贞良', + sbzhenliang_info:'转换技。阴:出牌阶段限一次,你可以弃置X张与“任”颜色相同的牌并对攻击范围内的一名角色造成1点伤害(X为你与其体力值值差且X至少为1)。阳:你的回合外,一名角色使用或打出牌结算完成后,若此牌与“任”类别相同,则你可以令一名角色摸一张牌。', + sb_xiaoqiao:'谋小乔', + sb_xiaoqiao_prefix:'谋', + sbtianxiang:'天香', + sbtianxiang_info:'①出牌阶段限三次,你可以交给一名没有“天香”标记的其他角色一张红色牌,然后令其获得此牌花色的“天香”标记。②当你受到伤害时,你可以移去一名角色的“天香”标记,若此“天香”标记为:红桃,你防止此伤害,其受到伤害来源对其造成的1点伤害(若没有伤害来源则改为无来源伤害);方片,其交给你两张牌。③准备阶段,你移去场上所有的“天香”标记,然后摸等量的牌。', sb_zhi:'谋攻篇·知', sb_shi:'谋攻篇·识', diff --git a/character/shenhua.js b/character/shenhua.js index 12d929fba..85d9d60e5 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -2270,6 +2270,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, nzry_mingren:{ audio:"nzry_mingren_1", + audioname:['sb_yl_luzhi'], marktext:"任", intro:{ content:'expansion', @@ -2283,6 +2284,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ subSkill:{ 1:{ audio:2, + audioname:['sb_yl_luzhi'], trigger:{ global:'phaseBefore', player:'enterGame', @@ -2307,7 +2309,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, 2:{ - audio:2, trigger:{ player:'phaseJieshuBegin', }, @@ -2317,7 +2318,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ direct:true, content:function(){ 'step 0' - player.chooseCard('h','是否用一张手牌替换“任”('+get.translation(player.getExpansions('nzry_mingren')[0])+')?').set('ai',function(card){ + player.chooseCard('h',get.prompt('nzry_mingren'),'选择一张手牌替换“任”('+get.translation(player.getExpansions('nzry_mingren')[0])+')').set('ai',function(card){ var player=_status.event.player; var color=get.color(card); if(color==get.color(player.getExpansions('nzry_mingren')[0])) return false; @@ -6922,6 +6923,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, xinhongyan:{ audio:2, + audioname:['sb_xiaoqiao'], mod:{ suit:function(card,suit){ if(suit=='spade') return 'heart'; diff --git a/character/tw.js b/character/tw.js index fa4d2145a..29d783d7c 100644 --- a/character/tw.js +++ b/character/tw.js @@ -14145,7 +14145,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ equan_info:'锁定技。①当有角色于你的回合内受到伤害后,其获得X枚“毒”(X为伤害值)。②准备阶段,你令所有拥有“毒”标记的角色移去所有“毒”标记并失去等量的体力。③当有角色因〖恶泉②〗进入濒死状态时,你令其所有技能失效直到回合结束。', manji:'蛮汲', manji_info:'锁定技。其他角色失去体力后,若你的体力值:不大于该角色,你回复1点体力;不小于该角色,你摸一张牌。', - wuban:'吴班', + wuban:'TW吴班', + wuban_prefix:'TW', jintao:'进讨', jintao_info:'锁定技,你使用【杀】无距离限制且次数上限+1。你于出牌阶段内使用的第一张【杀】伤害+1,第二张【杀】不可被响应。', yuejiu:'TW乐就', @@ -14301,7 +14302,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ twbingde_info:'出牌阶段限一次。你可以选择一个本阶段未选择过的花色并弃置一张牌,你摸等同于本阶段你使用此花色的牌数,然后若你以此法弃置的牌的花色与你选择的花色相同,你令你〖秉德〗于此阶段发动的次数上限+1。', twqingtao:'清滔', twqingtao_info:'①摸牌阶段结束时,你可以重铸一张牌。若此牌为【酒】或非基本牌,你摸一张牌。②结束阶段,若你本回合未发动〖清滔①〗,你可以发动〖清滔①〗。', - tw_jiangji:'蒋济', + tw_jiangji:'TW蒋济', + tw_jiangji_prefix:'TW', twjichou:'急筹', twjichou_info:'①每回合限一次。你可以视为使用一张未被〖急筹①〗记录过的普通锦囊牌并记录此牌。②你无法响应或{使用对应实体牌包含你的手牌的}〖急筹①〗记录过的锦囊牌。③出牌阶段限一次。你可将手牌中的一张〖急筹①〗记录过的锦囊牌交给其他角色。', twjilun:'机论', @@ -14334,7 +14336,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ twxiongzheng_info:'一轮游戏开始时,①若你上一轮发动过〖雄争〗且选择过“雄争”角色,你可以选择一项:1.视为对任意名上一轮内未对“雄争”角色造成过伤害的角色依次使用一张【杀】;2.令任意名上一轮对“雄争”角色造成过伤害的角色摸两张牌。②你可以选择一名未以此法选择过的角色,称为“雄争”角色。', twluannian:'乱年', twluannian_info:'主公技。其他群势力角色的出牌阶段限一次。其可以弃置X张牌并对“雄争”角色造成1点伤害(X为所有角色于本轮发动〖乱年〗的次数+1)。', - tw_baoxin:'鲍信', + tw_baoxin:'TW鲍信', + tw_baoxin_prefix:'TW', twmutao:'募讨', twmutao_info:'出牌阶段限一次。你可以选择一名角色,令其将手牌中所有的【杀】依次交给其下家开始的每一名角色。然后其对最后一名以此法获得【杀】的角色A造成X点伤害(X为A手牌中【杀】的数量且至多为2)。', twyimou:'毅谋', @@ -14499,7 +14502,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ tw_liuzhang_prefix:'TW', twyaohu:'邀虎', twyaohu_info:'每轮限一次。回合开始时,你须选择场上的一个势力。该势力的角色的出牌阶段开始时,其获得你的一张“生”,然后其须选择一项:1.对你指定的另一名的其他角色使用一张【杀】(无距离限制);2.本回合其使用伤害牌指定你为目标时须交给你两张牌,否则取消此目标。', - tw_liwei:'李遗', + tw_liwei:'TW李遗', + tw_liwei_prefix:'TW', twjiaohua:'教化', twjiaohua_info:'当你或体力值最小的其他角色因摸牌而得到牌后,你可以令该角色从牌堆或弃牌堆中获得一张本次未获得的类别的牌(每种类别每回合限一次)。', tw_yanxiang:'阎象', diff --git a/character/yijiang.js b/character/yijiang.js index ea57992f9..0c594624c 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -12802,7 +12802,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, enable:'phaseUse', filter:function(event,player){ - return true;//player.countCards('h')>player.maxHp; + return player.countCards('h')>player.maxHp; }, usable:1, content:function(){ @@ -14508,7 +14508,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ olddanshou_info:'当你造成伤害后,你可以摸一张牌。若如此做,终止一切结算,当前回合结束。', xindanshou_info:'①每回合限一次,当你成为基本牌或锦囊牌的目标后,你可以摸X张牌(X为你本回合内成为过基本牌或锦囊牌的目标的次数)。②一名其他角色的结束阶段,若你本回合内没有发动过〖胆守①〗,则你可以弃置X张牌并对其造成1点伤害(X为其手牌数,无牌则不弃)。', yizhong_info:'锁定技,当你的防具栏为空时,黑色的【杀】对你无效', - xinzhan_info:'出牌阶段限一次,你可以观看牌堆顶的3张牌,然后展示其中任意数量♥的牌并获得之。', + xinzhan_info:'出牌阶段限一次,若你的手牌数大于你的体力上限,你可以观看牌堆顶的三张牌,然后展示其中任意红桃牌并获得之。', huilei_info:'锁定技,当你死亡时,杀死你的角色弃置所有的牌。', enyuan_info:'锁定技。①当其他角色令你回复1点体力后,该角色摸一张牌。②当其他角色对你造成伤害后,其须交给你一张♥手牌,否则失去1点体力。', xuanhuo_info:'出牌阶段限一次,你可以将一张红桃手牌交给一名其他角色,获得该角色的一张牌,然后交给除该角色外的一名其他角色',