diff --git a/audio/die/mp_liuling.mp3 b/audio/die/mp_liuling.mp3 new file mode 100644 index 000000000..72ea826c1 Binary files /dev/null and b/audio/die/mp_liuling.mp3 differ diff --git a/audio/die/tw_gongsunfan.mp3 b/audio/die/tw_gongsunfan.mp3 new file mode 100644 index 000000000..f49509490 Binary files /dev/null and b/audio/die/tw_gongsunfan.mp3 differ diff --git a/audio/die/tw_yangang.mp3 b/audio/die/tw_yangang.mp3 new file mode 100644 index 000000000..b86891dc2 Binary files /dev/null and b/audio/die/tw_yangang.mp3 differ diff --git a/audio/die/xia_liubei.mp3 b/audio/die/xia_liubei.mp3 new file mode 100644 index 000000000..6e4549b86 Binary files /dev/null and b/audio/die/xia_liubei.mp3 differ diff --git a/audio/die/xia_xiahoudun.mp3 b/audio/die/xia_xiahoudun.mp3 new file mode 100644 index 000000000..d99e39944 Binary files /dev/null and b/audio/die/xia_xiahoudun.mp3 differ diff --git a/audio/die/xia_xiahousone.mp3 b/audio/die/xia_xiahousone.mp3 new file mode 100644 index 000000000..ef18f3380 Binary files /dev/null and b/audio/die/xia_xiahousone.mp3 differ diff --git a/audio/die/xia_zhangwei.mp3 b/audio/die/xia_zhangwei.mp3 new file mode 100644 index 000000000..7772b1298 Binary files /dev/null and b/audio/die/xia_zhangwei.mp3 differ diff --git a/audio/skill/dcshouze.mp3 b/audio/skill/dcshouze.mp3 new file mode 100644 index 000000000..aeeb2e981 Binary files /dev/null and b/audio/skill/dcshouze.mp3 differ diff --git a/audio/skill/mpbishi1.mp3 b/audio/skill/mpbishi1.mp3 new file mode 100644 index 000000000..751f82824 Binary files /dev/null and b/audio/skill/mpbishi1.mp3 differ diff --git a/audio/skill/mpbishi2.mp3 b/audio/skill/mpbishi2.mp3 new file mode 100644 index 000000000..c9dedc41f Binary files /dev/null and b/audio/skill/mpbishi2.mp3 differ diff --git a/audio/skill/mpjiusong1.mp3 b/audio/skill/mpjiusong1.mp3 new file mode 100644 index 000000000..637fdf6d7 Binary files /dev/null and b/audio/skill/mpjiusong1.mp3 differ diff --git a/audio/skill/mpjiusong2.mp3 b/audio/skill/mpjiusong2.mp3 new file mode 100644 index 000000000..b7757a67c Binary files /dev/null and b/audio/skill/mpjiusong2.mp3 differ diff --git a/audio/skill/mpmaotao1.mp3 b/audio/skill/mpmaotao1.mp3 new file mode 100644 index 000000000..32051c528 Binary files /dev/null and b/audio/skill/mpmaotao1.mp3 differ diff --git a/audio/skill/mpmaotao2.mp3 b/audio/skill/mpmaotao2.mp3 new file mode 100644 index 000000000..c70a6a039 Binary files /dev/null and b/audio/skill/mpmaotao2.mp3 differ diff --git a/audio/skill/twchengxi1.mp3 b/audio/skill/twchengxi1.mp3 new file mode 100644 index 000000000..5fd30c9ec Binary files /dev/null and b/audio/skill/twchengxi1.mp3 differ diff --git a/audio/skill/twchengxi2.mp3 b/audio/skill/twchengxi2.mp3 new file mode 100644 index 000000000..e3658e691 Binary files /dev/null and b/audio/skill/twchengxi2.mp3 differ diff --git a/audio/skill/twdanlie1.mp3 b/audio/skill/twdanlie1.mp3 new file mode 100644 index 000000000..c404d35f0 Binary files /dev/null and b/audio/skill/twdanlie1.mp3 differ diff --git a/audio/skill/twdanlie2.mp3 b/audio/skill/twdanlie2.mp3 new file mode 100644 index 000000000..6b6f0deeb Binary files /dev/null and b/audio/skill/twdanlie2.mp3 differ diff --git a/audio/skill/twfenwang1.mp3 b/audio/skill/twfenwang1.mp3 new file mode 100644 index 000000000..bc4e45c90 Binary files /dev/null and b/audio/skill/twfenwang1.mp3 differ diff --git a/audio/skill/twfenwang2.mp3 b/audio/skill/twfenwang2.mp3 new file mode 100644 index 000000000..af8e01b23 Binary files /dev/null and b/audio/skill/twfenwang2.mp3 differ diff --git a/audio/skill/twhuiyuan1.mp3 b/audio/skill/twhuiyuan1.mp3 new file mode 100644 index 000000000..cbd4c77b6 Binary files /dev/null and b/audio/skill/twhuiyuan1.mp3 differ diff --git a/audio/skill/twhuiyuan2.mp3 b/audio/skill/twhuiyuan2.mp3 new file mode 100644 index 000000000..f998cf7e4 Binary files /dev/null and b/audio/skill/twhuiyuan2.mp3 differ diff --git a/audio/skill/twhuzhong1.mp3 b/audio/skill/twhuzhong1.mp3 new file mode 100644 index 000000000..3a4351633 Binary files /dev/null and b/audio/skill/twhuzhong1.mp3 differ diff --git a/audio/skill/twhuzhong2.mp3 b/audio/skill/twhuzhong2.mp3 new file mode 100644 index 000000000..76e8ee413 Binary files /dev/null and b/audio/skill/twhuzhong2.mp3 differ diff --git a/audio/skill/twjuezhu1.mp3 b/audio/skill/twjuezhu1.mp3 new file mode 100644 index 000000000..b48a5444d Binary files /dev/null and b/audio/skill/twjuezhu1.mp3 differ diff --git a/audio/skill/twjuezhu2.mp3 b/audio/skill/twjuezhu2.mp3 new file mode 100644 index 000000000..15bf778ed Binary files /dev/null and b/audio/skill/twjuezhu2.mp3 differ diff --git a/audio/skill/twshenyi1.mp3 b/audio/skill/twshenyi1.mp3 new file mode 100644 index 000000000..cebd564b2 Binary files /dev/null and b/audio/skill/twshenyi1.mp3 differ diff --git a/audio/skill/twshenyi2.mp3 b/audio/skill/twshenyi2.mp3 new file mode 100644 index 000000000..e74c01e7d Binary files /dev/null and b/audio/skill/twshenyi2.mp3 differ diff --git a/audio/skill/twshoushou1.mp3 b/audio/skill/twshoushou1.mp3 new file mode 100644 index 000000000..98fec36ab Binary files /dev/null and b/audio/skill/twshoushou1.mp3 differ diff --git a/audio/skill/twshoushou2.mp3 b/audio/skill/twshoushou2.mp3 new file mode 100644 index 000000000..13133bff8 Binary files /dev/null and b/audio/skill/twshoushou2.mp3 differ diff --git a/audio/skill/twxianfeng1.mp3 b/audio/skill/twxianfeng1.mp3 new file mode 100644 index 000000000..5c214b454 Binary files /dev/null and b/audio/skill/twxianfeng1.mp3 differ diff --git a/audio/skill/twxianfeng2.mp3 b/audio/skill/twxianfeng2.mp3 new file mode 100644 index 000000000..7b8c66400 Binary files /dev/null and b/audio/skill/twxianfeng2.mp3 differ diff --git a/audio/skill/twxinghan1.mp3 b/audio/skill/twxinghan1.mp3 new file mode 100644 index 000000000..a7d2b9570 Binary files /dev/null and b/audio/skill/twxinghan1.mp3 differ diff --git a/audio/skill/twxinghan2.mp3 b/audio/skill/twxinghan2.mp3 new file mode 100644 index 000000000..f492c4376 Binary files /dev/null and b/audio/skill/twxinghan2.mp3 differ diff --git a/audio/skill/twzhiqu1.mp3 b/audio/skill/twzhiqu1.mp3 new file mode 100644 index 000000000..cf9cd0bd8 Binary files /dev/null and b/audio/skill/twzhiqu1.mp3 differ diff --git a/audio/skill/twzhiqu2.mp3 b/audio/skill/twzhiqu2.mp3 new file mode 100644 index 000000000..59b6d3773 Binary files /dev/null and b/audio/skill/twzhiqu2.mp3 differ diff --git a/card/extra.js b/card/extra.js index 7618ffc81..4bb555b7d 100644 --- a/card/extra.js +++ b/card/extra.js @@ -330,7 +330,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ res = 0.9; if(f&&t || target.hasSkillTag('nodamage')) return 0; if(f || t) res = 0.45; - if(target.getEquip('tengjia')) res *= 2; + if(!f&&target.getEquip('tengjia')) res *= 2; if(!target.isLinked()) res = -res; if(ui.selected.targets.length) return res; let fs = 0, diff --git a/card/guozhan.js b/card/guozhan.js index 12c4a36de..3171ef9e7 100644 --- a/card/guozhan.js +++ b/card/guozhan.js @@ -1343,7 +1343,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, target:(card,player,target)=>{ if(target._g_taipingyaoshu_temp) return; - if(get.subtype(card)==='equip2'&&target.getEquip('taipingyaoshu')&&!target.countEmpty(2)){ + if(get.subtype(card)==='equip2'&&target.getEquip('taipingyaoshu')&&!target.countEmptySlot(2)){ target._g_taipingyaoshu_temp=true; let lose=get.effect(target,{name:'losehp'},target,target), draw=2*get.effect(target,{name:'draw'},target,target); diff --git a/card/yongjian.js b/card/yongjian.js index e8bbf0af6..4209a7f77 100644 --- a/card/yongjian.js +++ b/card/yongjian.js @@ -527,15 +527,15 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(event.name=='phase'){ if(game.phaseNumber!=0) return false; if(!player._start_cards) return false; - var hs=player.getCards('h'); - for(var card of player._start_cards){ + let hs=player.getCards('h'); + for(let card of player._start_cards){ if(get.name(card,player)=='du'&&hs.includes(card)) return true; } } else{ if(event.getParent().name!='draw') return false; - var hs=player.getCards('h'); - for(var card of event.cards){ + let hs=player.getCards('h'); + for(let card of event.getg(player)){ if(get.name(card,player)=='du'&&hs.includes(card)) return true; } } diff --git a/character/ddd.js b/character/ddd.js index dbffc114c..cd6c20e47 100644 --- a/character/ddd.js +++ b/character/ddd.js @@ -4564,7 +4564,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, filter(event,player){ if(!event.source||!event.source.isIn()||event.source.group!='qun') return false; - if(!event.souce.countCards('he')<2) return false; + if(!event.source.countCards('he')<2) return false; if(!player.hasZhuSkill('dddfuyi',event.source)) return false; const skills=player.getStockSkills(true,true).filter(skill=>{ return !player.hasSkill(skill,null,false,false); diff --git a/character/extra.js b/character/extra.js index f6a092371..bbff8c975 100755 --- a/character/extra.js +++ b/character/extra.js @@ -6117,7 +6117,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, kuangfeng3:{ trigger:{global:'damageBegin3'}, - filter:function(event){ + filter:function(event,player){ return event.hasNature('fire')&&event.player.getStorage('kuangfeng2').includes(player); }, charlotte:true, diff --git a/character/huicui.js b/character/huicui.js index 3b48a38b6..2afc204ad 100644 --- a/character/huicui.js +++ b/character/huicui.js @@ -757,7 +757,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'useCardAfter'}, filter:function(event,player){ if(get.type(event.card)!='basic') return false; - if(player.getHistory('gain',evt=>evt.getParent().name=='dccaisi').length>player.maxHp) return false; + if(player.getHistory('gain',evt=>{ + return evt.getParent().name==='dccaisi'; + }).reduce((num,evt)=>{ + return num+evt.cards.length; + },0)>player.maxHp) return false; return _status.currentPhase; }, prompt2:function(event,player){ @@ -11171,6 +11175,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ liuchongluojun:'刘宠(?~197年),汉明帝刘庄玄孙,陈敬王刘羡曾孙,陈顷王刘崇之孙,陈孝王刘承之子,陈国第六位国君,也是东汉陈国的最后一位国君。骆俊(?-197),字孝远,东汉末年扬州会稽郡乌伤县(今浙江义乌)人。宗室陈王刘宠的国相,在任期间励精图治,深得民众爱戴。刘宠勇猛过人,善使弓弩,箭法高超。在其父刘承死后,继承陈王爵位。中平年间,黄巾军起义,郡县官兵都弃城逃走,刘宠于是征兵自守卫。当时天下饥荒,诸王侯都已不再享有租赋,反屡遭抢掠,有的甚至流离在外,死于荒野。只有陈国仍很富强,邻郡百姓纷纷前去投靠,陈国拥有部众达十余万人。初平元年(190年),各州郡起兵讨伐董卓,刘宠率军屯驻阳夏,自称辅汉大将军。建安二年(197年),袁术向陈国求取粮草,遭陈国国相骆俊拒绝,袁术大为生气,便派刺客张闿假装路过陈国,乘机杀死骆俊和刘宠。', yuechen:'乐綝(195~257年),字号不详,阳平郡卫国县(今河南省清丰县)人。三国时期曹魏将领,右将军乐进的儿子。果毅坚毅,袭封广昌亭侯,累迁扬州刺史。甘露二年,为叛乱的征东大将军诸葛诞所杀,追赠卫尉。', kuaiqi:'蒯祺(?~219年),南郡中卢人,荆州望族子弟,与荆州牧刘表帐下谋士蒯良、蒯越为同族,东汉末年房陵太守。建安二十四年(219年),汉中王刘备遣宜都太守孟达从秭归北攻房陵,蒯祺于战斗中被孟达所部士兵所杀。清朝任兆麟《心斋十种》中的《襄阳记》辑本引用《万历襄阳府志》“(蒯)钦从祖祺妇,即诸葛孔明之姊也”,称蒯祺娶故兖州泰山郡丞诸葛珪长女,即他是知名政治家、蜀汉丞相诸葛亮的姐夫。但在任兆麟之前的《襄阳记》辑本中,并没有这一条。', + pangshanmin:'庞山民,荆州襄阳人,三国时期曹魏大臣。庞山民出身荆州庞氏,为隐士庞德公之子、凤雏庞统的堂兄,娶诸葛亮二姐诸葛氏(“若雪”为网络小说虚构)为妻。后出仕曹魏,历任黄门、吏部郎等职。', }, characterTitle:{ }, diff --git a/character/jsrg.js b/character/jsrg.js index 042f0199f..3dc56ad68 100644 --- a/character/jsrg.js +++ b/character/jsrg.js @@ -1214,6 +1214,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ enable:'chooseToUse', viewAs:{name:'lebu'}, position:'hes', + round:1, viewAsFilter(player){ return player.countCards('hes'); }, @@ -8251,7 +8252,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jsrgeqian_info:'①结束阶段,你可以蓄谋任意次。②当你使用【杀】或蓄谋牌指定其他角色为唯一目标后,你可以令此牌不计入次数限制并获得目标一张牌,然后其可以令你本回合至其的距离+2。', jsrgfusha:'伏杀', jsrgfusha_info:'限定技。出牌阶段,若你的攻击范围内仅有一名角色,你可以对其造成X点伤害(X为你的攻击范围,至多为游戏人数)。', - jsrg_sunlubansunluyu:'合孙鲁班孙鲁育', + jsrg_sunlubansunluyu:'合大小虎', jsrg_sunlubansunluyu_prefix:'合', jsrgdaimou:'殆谋', jsrgdaimou_info:'每回合各限一次。当一名角色使用【杀】指定其他角色/你为目标时,你可以用牌堆顶的牌蓄谋/你须弃置你区域里的一张蓄谋牌。', diff --git a/character/mobile.js b/character/mobile.js index 4ea58ec39..d7cdeb14a 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -4112,7 +4112,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 1' var hp=player.hp-1,maxhp=player.maxHp-1; if(hp>0&&maxhp>0){ - player.chooseControl(choices).set('prompt','安国:请选择一项').set('choiceList',[ + player.chooseControl().set('prompt','安国:请选择一项').set('choiceList',[ '失去'+hp+'点体力,令'+get.translation(trigger.player)+'获得1点护甲', '减'+maxhp+'点体力上限,令'+get.translation(trigger.player)+'获得1点护甲' ]).set('ai',()=>'选项一'); @@ -6760,7 +6760,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mingzhi:false, effect:{ target:function(card,player,target,current){ - if((get.tag(card,'respondShan')||get.tag(card,'respondSha'))&&target.getStorage('jibing').length>0&&player.isMaxHp()){ + if((get.tag(card,'respondShan')||get.tag(card,'respondSha'))&&target.getExpansions('jibing').length>0&&player.isMaxHp()){ if(get.attitude(target,player)<=0){ return [0,0,1,0.3]; } diff --git a/character/sb.js b/character/sb.js index a6c1d00e8..0d55cec2d 100644 --- a/character/sb.js +++ b/character/sb.js @@ -404,6 +404,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, sbsongwei:{ audio:2, + init:(player)=>{ + player.addSkill('sbsongwei_delete'); + }, trigger:{player:'phaseUseBegin'}, filter:function(event,player){ return game.hasPlayer(target=>target.group=='wei'&&target!=player); @@ -414,7 +417,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ async content(event,trigger,player){ player.addMark('sbxingshang',game.countPlayer(target=>target.group=='wei'&&target!=player)); }, - group:'sbsongwei_delete', subSkill:{ delete:{ audio:'sbsongwei', @@ -453,7 +455,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ direct:true, content:function*(event,map){ var player=map.player; - var result=yield player.chooseTarget(get.prompt('sbwusheng'),'选择一名非主公的其他角色,本阶段对其使用【杀】无距离和次数限制,使用【杀】指定其为目标后摸一张牌,对其使用五张【杀】后不能对其使用【杀】',(card,player,target)=>{ + var result=yield player.chooseTarget(get.prompt('sbwusheng'),'选择一名非主公的其他角色,本阶段对其使用【杀】无距离和次数限制,使用【杀】指定其为目标后摸一张牌,对其使用三张【杀】后不能对其使用【杀】',(card,player,target)=>{ return target!=player&&!target.isZhu2(); }).set('ai',target=>{ var player=_status.event.player; @@ -462,6 +464,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(result.bool){ var target=result.targets[0]; player.logSkill('sbwusheng',target); + if(get.mode()!=='identity'||player.identity!=='nei') player.addExpose(0.25); player.addTempSkill('sbwusheng_effect',{player:'phaseUseAfter'}); player.storage.sbwusheng_effect[target.playerid]=0; } @@ -555,7 +558,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, playerEnabled:function(card,player,target){ if(card.name!='sha'||typeof player.storage.sbwusheng_effect[target.playerid]!='number') return; - if(player.storage.sbwusheng_effect[target.playerid]>=5) return false; + if(player.storage.sbwusheng_effect[target.playerid]>=3) return false; }, }, audio:'sbwusheng', @@ -645,7 +648,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, filterCardx:function(card,player){ //if(player.getStorage('sbqicai').includes(card.name)) return false; - return get.type(card)=='equip'&&get.hasPlayer(target=>target!=player&&target.hasEmptySlot(get.subtype(card))); + return get.type(card)=='equip'&&game.hasPlayer(target=>target!=player&&target.hasEmptySlot(get.subtype(card))); }, usable:1, chooseButton:{ @@ -6353,7 +6356,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sb_guanyu_prefix:'谋', sbwusheng:'武圣', sbwusheng_wusheng_backup:'武圣', - sbwusheng_info:'你可以将一张手牌当作任意【杀】使用或打出。出牌阶段开始时,你可以选择一名非主公的其他角色,本阶段对其使用【杀】无距离和次数限制,使用【杀】指定其为目标后摸一张牌,对其使用五张【杀】后不能对其使用【杀】。', + sbwusheng_info:'你可以将一张手牌当作任意【杀】使用或打出。出牌阶段开始时,你可以选择一名非主公的其他角色,本阶段对其使用【杀】无距离和次数限制,使用【杀】指定其为目标后摸一张牌,对其使用三张【杀】后不能对其使用【杀】。', sbyijue:'义绝', sbyijue_info:'锁定技,每名角色每局游戏限一次,当你对一名角色造成大于等于其体力值的伤害时,你防止此伤害,且本回合你使用牌指定其为目标后,取消之。', sb_caopi:'谋曹丕', @@ -6361,7 +6364,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sbxingshang:'行殇', sbxingshang_info:'①每回合限一次,当一名角色死亡时或受到伤害时,你获得1个“颂”标记。②出牌阶段限一次,你可以:1.移去1个“颂”标记,令一名角色复原武将牌;2.移去2个“颂”标记,令一名角色摸X张牌(X为场上阵亡角色数,且X至少为1,至多为5);3.移去3个“颂”标记,令一名体力上限小于10的角色加1点体力上限,回复1点体力,随机恢复一个已废除的装备栏;4.移去4个“颂”标记,获得一名阵亡角色武将牌上的所有技能,然后你失去武将牌上的所有技能。', sbfangzhu:'放逐', - sbfangzhu_info:'出牌阶段限一次,你可以:1.移去2个“颂”标记,令一名其他角色的非Charlotte技能失效直到其回合结束;2.移去2个“颂”标记,令一名其他角色不能响应除其以为的角色使用的牌直到其回合结束;3.移去2个“颂”标记,令一名其他角色将武将牌翻面;4.移去2个“颂”标记,令一名其他角色只能使用你选择的一种类型的牌直到其回合结束。', + sbfangzhu_info:'出牌阶段限一次,你可以:1.移去2个“颂”标记,令一名其他角色的非Charlotte技能失效直到其回合结束;2.移去2个“颂”标记,令一名其他角色不能响应除其以外的角色使用的牌直到其回合结束;3.移去3个“颂”标记,令一名其他角色将武将牌翻面;4.移去3个“颂”标记,令一名其他角色只能使用你选择的一种类型的牌直到其回合结束。', sbsongwei:'颂威', sbsongwei_info:'主公技。①出牌阶段开始时,你获得Y个“颂”标记(Y为场上其他魏势力角色数)。②每局游戏限一次,出牌阶段,你可以令一名其他魏势力角色失去所有武将牌的技能。', diff --git a/character/sp.js b/character/sp.js index 1445d4886..176a14ddb 100755 --- a/character/sp.js +++ b/character/sp.js @@ -942,7 +942,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, trigger:{ player:'loseAfter', - global:['gainAfter','equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'], + global:['gainAfter','equipAfter','addJudgeAfter','loseAsyncAfter','addToExpansionAfter'], }, filter(event,player){ if(!_status.currentPhase||!_status.currentPhase.isIn()) return false; @@ -3038,13 +3038,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var aimx=game.filterPlayer(current=>{ return target.canUse({name:'sha'},current)&&get.effect(current,{name:'sha'},target,target)>0; }).sort((a,b)=>get.effect(b,{name:'sha'},target,target)-get.effect(a,{name:'sha'},target,target))[0]; - if(get.effect(aimx,{name:'sha'},target,player)<0&&get.effect(aimx,{name:'sha'},target,aimx)<0&&!canSave(player,aimx)) return 0; + if(aimx&&get.effect(aimx,{name:'sha'},target,player)<0&&get.effect(aimx,{name:'sha'},target,aimx)<0&&!canSave(player,aimx)) return 0; } if(target.hasValueTarget({name:'juedou'})){ var aimy=game.filterPlayer(current=>{ return target.canUse({name:'juedou'},current)&&get.effect(current,{name:'juedou'},target,target)>0; }).sort((a,b)=>get.effect(b,{name:'juedou'},target,target)-get.effect(a,{name:'juedou'},target,target))[0]; - if(get.effect(aimy,{name:'juedou'},target,player)<0&&get.effect(aimy,{name:'sha'},target,aimy)<0&&!canSave(player,aimy)) return 0; + if(aimy&&get.effect(aimy,{name:'juedou'},target,player)<0&&get.effect(aimy,{name:'sha'},target,aimy)<0&&!canSave(player,aimy)) return 0; } return -1; }, @@ -14987,7 +14987,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.chooseCard('he',get.prompt('new_xingwu'),'将一张牌置于武将牌上作为“舞”').set('ai',function(card){ if(_status.event.goon) return 20-get.value(card); return 7-get.value(card); - }).set('goon',player.needsToDiscard()||player.getStorage('new_xingwu').length>1); + }).set('goon',player.needsToDiscard()||player.getExpansions('new_xingwu').length>1); 'step 1' if(result.bool){ player.logSkill('new_xingwu'); @@ -15061,7 +15061,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, new_luoyan:{ init:function(player){ - if(player.getStorage('new_xingwu').length) player.addAdditionalSkill('new_luoyan',['oltianxiang','liuli']); + if(player.getExpansions('new_xingwu').length) player.addAdditionalSkill('new_luoyan',['oltianxiang','liuli']); }, onremove:function(player){ player.removeAdditionalSkill('new_luoyan'); @@ -24834,7 +24834,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, forced:true, content:function(){ - player.addMark('xinfu_xionghuo',1); + if(player.countMark('xinfu_xionghuo')<3) player.addMark('xinfu_xionghuo',1); if(trigger.player.hp<0&&get.itemtype(trigger.parent.cards)=='cards'&&get.position(trigger.parent.cards[0],true)=='o'){ player.gain(trigger.parent.cards,'gain2'); } @@ -25815,7 +25815,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "xinfu_fujian":"伏间", "xinfu_fujian_info":"锁定技,结束阶段开始时,你观看一名随机的其他角色的随机X张手牌。(X为场上手牌最少的角色的手牌数)", xinfu_xionghuo:'凶镬', - xinfu_xionghuo_info:'游戏开始时,你获得3个“暴戾”标记。出牌阶段,你可以交给一名其他角色一个“暴戾”标记。当你对有“暴戾”标记的其他角色造成伤害时,此伤害+1。有“暴戾”标记的其他角色的出牌阶段开始时,其移去所有“暴戾”标记并随机执行一项:1.受到1点火焰伤害且本回合不能对你使用【杀】;2.失去1点体力且本回合手牌上限-1;3.你随机获得其一张手牌和一张装备区的牌。', + xinfu_xionghuo_info:'游戏开始时,你获得3个“暴戾”标记(标记上限为3)。出牌阶段,你可以交给一名其他角色一个“暴戾”标记。当你对有“暴戾”标记的其他角色造成伤害时,此伤害+1。有“暴戾”标记的其他角色的出牌阶段开始时,其移去所有“暴戾”标记并随机执行一项:1.受到1点火焰伤害且本回合不能对你使用【杀】;2.失去1点体力且本回合手牌上限-1;3.你随机获得其一张手牌和一张装备区的牌。', xinfu_shajue:'杀绝', xinfu_shajue_info:'锁定技,其他角色进入濒死状态时,你获得一个“暴戾”标记。然后若其体力值小于0,你获得使其进入濒死状态的牌。', xinfu_jianjie:"荐杰", diff --git a/character/sp2.js b/character/sp2.js index 887b94d17..8aeaf1f17 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -10998,7 +10998,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ gongxiu:'共修', gongxiu_info:'结束阶段,若你本回合内发动过〖经合〗,则你选择一项:①令所有本回合内成为过〖经合〗目标的角色各摸一张牌;②令所有本回合内未成为过〖经合〗目标的角色各弃置一张手牌。', jinghe:'经合', - jinghe_info:'出牌阶段限一次,你可以展示四张牌名各不相同的牌并选择等量的角色。系统从“写满技能的天书”中随机选择等量的技能,然后这些角色依次选择获得其中的一个。', + jinghe_info:'出牌阶段限一次,你可以展示至多四张牌名各不相同的牌并选择等量的角色。系统从“写满技能的天书”中随机选择等量的技能,然后这些角色依次选择获得其中的一个。', nhyinbing:'阴兵', nhyinbing_info:'锁定技,你使用的【杀】造成伤害改为失去体力。其他角色失去体力后,你摸一张牌。', nhhuoqi:'活气', diff --git a/character/tw.js b/character/tw.js index 65d3176ec..8e0cab2a5 100644 --- a/character/tw.js +++ b/character/tw.js @@ -13659,7 +13659,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return (get.suit(card)!=_status.event.suit?9:6)-get.value(card); }).set('num',num); if(lib.suit.includes(suit)){ - next.set('prompt2','若弃置的是'+get.suit(suit)+'牌,则改为'+get.translation(player)+'获得之'); + next.set('prompt2','若弃置的是'+get.translation(suit)+'牌,则改为'+get.translation(player)+'获得之'); next.set('suit',suit); } 'step 1' diff --git a/character/xianding.js b/character/xianding.js index 44b24a035..db0ccf014 100644 --- a/character/xianding.js +++ b/character/xianding.js @@ -1700,7 +1700,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if (!list.includes(get.suit(card))) att = 2; if (_status.event.goon) return (20 - get.value(card)) * att; return (7 - get.value(card)) * att; - }).set('goon', player.needsToDiscard() || player.getStorage('dcxingwu').length == 2); + }).set('goon', player.needsToDiscard() || player.getExpansions('dcxingwu').length == 2); 'step 1' if (result.bool) { player.logSkill('dcxingwu'); @@ -1901,7 +1901,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var player=_status.event.player; var target=_status.event.target; var left=0,right=0; - var leftx=target.getPrevious(),lefty=target.getNext(); + var leftx=target.getPrevious(),rightx=target.getNext(); while(leftx!=player){ if(get.damageEffect(leftx,player,player)<0) break; else{ @@ -4436,7 +4436,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 0' var cards=lib.skill.dcshexue.getLast(); cards=cards.filter(card=>player.hasUseTarget(card,false)); - player.chooseButton(['设学:是否将一张牌当作其中一张牌使用?',[cards,'vards']]); + player.chooseButton(['设学:是否将一张牌当作其中一张牌使用?',[cards,'vcard']]); 'step 1' if(!result.bool) return; var card=result.links[0]; @@ -6323,7 +6323,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, dcshouze:{ - audio:2, + audio:true, trigger:{player:'phaseJieshuBegin'}, forced:true, filter:function(event,player){ @@ -13507,6 +13507,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ tianshangyi:'田尚衣,一作陈尚衣,魏文帝曹丕宫中著名宫人。能歌善舞,一时冠绝于世,私以为比之汉宫飞燕也不遑多让。', malingli:'马伶俐,游卡桌游原创角色,设定上为,马超之女,其身形虽娇小,却继承了马超英勇略带冲动的个性,活泼阳光,调皮伶俐,爱摆弄爆竹烟花一类的小器具,包包里经常放置用五色彩纸包装的小炸弹球。马伶俐从小跟随马超和马云騄学习战斗技巧,战斗力超强,坚强的意志和勇气也得到了提升,同时擅长马术,有一匹可爱的小白马伴随其身边。后马伶俐成年,嫁与刘备之子刘理,获封梁王妃。两人琴瑟相和,极为恩爱,常结伴出游,被人誉为天作之合。', zhugeruoxue:'诸葛氏(“若雪”为网络小说虚构),诸葛亮的二姐,庞山民之妻。', + caoyi:'曹轶,游卡桌游旗下产品《三国杀》原创角色。设定上为曹纯所收养的孙女,从小受到曹纯的教导,在军营中长大,性情坚毅有担当,军事谋略丰富,战斗能力超强。曹轶喜欢美食,特别是甜食,并且擅长制作各种点心。她身边跟随的雪白小老虎是曹纯在她及笄时送的生辰礼物,希望她如小老虎一样,英勇无畏。曹轶与曹婴交好,两人以姐妹相称。曹轶成年后继承祖父衣钵,接手精锐部队“虎豹骑”,成为新的虎豹骑的统领者。', }, characterTitle:{ // wulan:'#b对决限定武将', @@ -14118,7 +14119,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dc_sb_lusu:'新杀谋鲁肃', dc_sb_lusu_prefix:'新杀谋', dcsbmingshi:'明势', - dcsbmingshi_info:'摸牌阶段,你可以多摸两张牌,然后令展示三张牌并令一名其他角色选择获得其中的一张牌。', + dcsbmingshi_info:'摸牌阶段,你可以多摸两张牌,然后展示三张牌并令一名其他角色选择获得其中的一张牌。', dcsbmengmou:'盟谋', dcsbmengmou_info:'转换技,每回合每项各限一次,当你得到其他角色的牌后,或其他角色得到你的牌后:阴,你可以令该角色使用至多X张【杀】,且其每以此法造成1点伤害,其回复1点体力;阳,你可令该角色打出至多X张【杀】,然后其失去Y点体力。(X为你的体力值,Y为X-其打出【杀】数)', dc_sb_zhouyu:'新杀谋周瑜', diff --git a/character/yijiang.js b/character/yijiang.js index a21f089f5..0369fa2cc 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -1182,7 +1182,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ getv=(name,player)=>{ let v=trigger.getTempCache('sangu',player.id+name); if(typeof v==='number') return v; - v=player.getUseValue({name:name,storage:{sangu:true}},arg); + v=player.getUseValue({name:name,storage:{sangu:true}}); trigger.putTempCache('sangu',player.id+name,v); return v; }; @@ -8094,7 +8094,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ const chooseToPutCard = async function(target){ await target.draw(); if(target.countCards('he')){ - const {result:{cards,bool}} = + const {result:{cards,bool}} = await target.chooseCard('选择一张牌置于牌堆顶','he',true); if(bool){ await target.lose(cards,ui.cardPile,'insert'); diff --git a/character/yingbian.js b/character/yingbian.js index 033269ff1..1d76c1e0b 100644 --- a/character/yingbian.js +++ b/character/yingbian.js @@ -971,7 +971,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ charlotte:true, forced:true, popup:false, - trigger:{global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','loseAfter','gainAfter','addToExpansionAfter']}, + trigger:{global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','loseAfter','addToExpansionAfter']}, usable:1, filter:function(event,player){ var target=player.storage.qimei_draw; @@ -1623,7 +1623,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var list,skills=[]; if(get.mode()=='guozhan'){ list=[]; - for(var i in lib.characterPack.mode_guozhan) list.push(i); + for(var i in lib.characterPack.mode_guozhan){ + if(lib.character[i])list.push(i); + } } else if(_status.connectMode) list=get.charactersOL(); else { diff --git a/noname/get/index.js b/noname/get/index.js index c92cf6e49..c2732e5b8 100644 --- a/noname/get/index.js +++ b/noname/get/index.js @@ -1871,7 +1871,10 @@ export class Get extends Uninstantable { if (card) return list[0]; return list; } - static judge(card) { return card.viewAs ? lib.card[card.viewAs].judge : get.info(card).judge; } + static judge(card) { + const cardInfo = (card.viewAs ? lib.card[card.viewAs] : get.info(card)); + return (cardInfo && cardInfo.judge) ? cardInfo.judge : ()=>0; + } static judge2(card) { return card.viewAs ? lib.card[card.viewAs].judge2 : get.info(card).judge2; } static distance(from, to, method) { if (from == to) return 0; diff --git a/noname/init/import.js b/noname/init/import.js index 5f1bd9671..1668a2812 100644 --- a/noname/init/import.js +++ b/noname/init/import.js @@ -34,7 +34,7 @@ export const importMode = generateImportFunction('mode', (name) => `../../mode/$ */ function generateImportFunction(type, pathParser) { return async (name) => { - if(type == 'extension' && !game.hasExtension(name)){ + if(type == 'extension' && !game.hasExtension(name) && !lib.config.all.stockextension.includes(name)){ await game.import(type,createEmptyExtension(name)); return; } diff --git a/noname/library/index.js b/noname/library/index.js index 6f2df5166..23b33d715 100644 --- a/noname/library/index.js +++ b/noname/library/index.js @@ -3921,8 +3921,8 @@ export class Library extends Uninstantable { item: { '6': '6', '12': '12', - '20': '24', - '30': '36', + '20': '20', + '30': '30', }, unfrequent: true },