From 692d9f8db3e5a9055553f119a335352223fd19c0 Mon Sep 17 00:00:00 2001
From: mengxinzxz <2223529500@qq.com>
Date: Thu, 4 Apr 2024 02:33:43 +0800
Subject: [PATCH 01/38] =?UTF-8?q?=E5=9B=BD=E6=88=98=E5=AE=98=E7=9B=972023?=
=?UTF-8?q?=C2=B72=EF=BC=88=E5=85=88=E4=BB=85=E8=A1=A5=E5=85=85=E6=8A=80?=
=?UTF-8?q?=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
新增
4.纵横捭阖,5.手杀专属,6.日版
---
mode/guozhan.js | 492 +++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 440 insertions(+), 52 deletions(-)
diff --git a/mode/guozhan.js b/mode/guozhan.js
index 13a282250..7976dffb2 100644
--- a/mode/guozhan.js
+++ b/mode/guozhan.js
@@ -1125,7 +1125,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
audio:'fakeyigui',
trigger:{player:'showCharacterAfter'},
filter(event,player){
- return event.toShow.includes('gz_zuoci')&&!player.storage.fakeyigui_init;
+ if(!event.toShow.some(i=>get.character(i,3).includes('fakeyigui'))) return false;
+ return game.getAllGlobalHistory('everything',evt=>{
+ return evt.name=='showCharacter'&&evt.toShow.some(i=>get.character(i,3).includes('fakeyigui'));
+ },event).indexOf(event)==0;
},
forced:true,
locked:false,
@@ -1694,6 +1697,381 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
await target.mayChangeVice();
},
},
+ fakexibing:{
+ audio:'xibing',
+ inherit:'xibing',
+ content(){
+ 'step 0'
+ var num=trigger.player.hp-trigger.player.countCards('h');
+ if(num>0) trigger.player.draw(num);
+ 'step 1'
+ trigger.player.addTempSkill('xibing2');
+ player._xibing=true;
+ if(get.mode()!='guozhan'||player.isUnseen(2)||trigger.player.isUnseen(2)) event.finish();
+ 'step 2'
+ var target=trigger.player;
+ var players1=[player.name1,player.name2];
+ var players2=[target.name1,target.name2];
+ player.chooseButton(2,[
+ '是否暗置自己和'+get.translation(target)+'的各一张武将牌?',
+ '
你的武将牌
',
+ [players1,'character'],
+ ''+get.translation(target)+'的武将牌
',
+ [players2,'character'],
+ ]).set('players',players1).set('complexSelect',true).set('filterButton',function(button){
+ return !get.is.jun(button.link)&&(ui.selected.buttons.length==0)==(_status.event.players.includes(button.link));
+ });
+ 'step 3'
+ if(result.bool){
+ var target=trigger.player;
+ player.hideCharacter(player.name1==result.links[0]?0:1);
+ target.hideCharacter(target.name1==result.links[1]?0:1);
+ player.addTempSkill('xibing3');
+ target.addTempSkill('xibing3');
+ }
+ },
+ },
+ fakechengshang:{
+ audio:'chengshang',
+ trigger:{player:'useCardAfter'},
+ filter(event,player){
+ if(!lib.suit.includes(get.suit(event.card,false))||typeof get.number(event.card)!='number') return false;
+ if(player.getHistory('sourceDamage',evt=>{
+ return evt.card==event.card;
+ }).length) return false;
+ const phsu=event.getParent('phaseUse');
+ if(!phsu||phsu.player!=player) return false;
+ return event.targets.some(i=>i.isEnemyOf(player));
+ },
+ preHidden:true,
+ async content(event,trigger,player){
+ await player.draw();
+ player.tempBanSkill('fakechengshang','phaseUseAfter',false);
+ player.addTempSkill('fakechengshang_effect');
+ player.markAuto('fakechengshang_effect',[[get.suit(trigger.card),get.number(trigger.card),trigger.card.name]]);
+ },
+ subSkill:{
+ effect:{
+ charlotte:true,
+ onremove:true,
+ hiddenCard(player,name){
+ const type=get.type(name);
+ if(type!='basic'&&type!='trick') return false;
+ const storage=player.getStorage('fakechengshang_effect');
+ return lib.card.list.some(list=>{
+ return name==list[2]&&storage.some(card=>{
+ return card[0]==list[0]&&card[1]==list[1]&&card[2]!=list[2];
+ });
+ });
+ },
+ audio:'chengshang',
+ enable:'phaseUse',
+ chooseButton:{
+ dialog(event,player){
+ const storage=player.getStorage('fakechengshang_effect');
+ const list=lib.card.list.filter(list=>{
+ const type=get.type(card[2]);
+ if(type!='basic'&&type!='trick') return false;
+ return storage.some(card=>card[0]==list[0]&&card[1]==list[1]&&card[2]!=list[2]);
+ }).map(card=>[get.translation(type),'',card[2],card[3]]);
+ return ui.create.dialog('承赏',[list,'vcard']);
+ },
+ filter(button,player){
+ return get.event().getParent().filterCard({name:button.link[2],nature:button.link[3]},player,event);
+ },
+ check(button){
+ const player=get.event('player');
+ const card={name:button.link[2],nature:button.link[3]};
+ if(player.countCards('hes',cardx=>cardx.name==card.name)) return 0;
+ return player.getUseValue(card);
+ },
+ backup(links,player){
+ return {
+ audio:'chengshang',
+ filterCard:true,
+ position:'hs',
+ popname:true,
+ precontent(){
+ player.logSkill('fakechengshang_effect');
+ delete event.result.skill;
+ const cardx=event.result.card;
+ const removes=player.getStorage('fakechengshang_effect').filter(card=>{
+ return lib.card.list.some(list=>{
+ return cardx.name==list[2]&&card[0]==list[0]&&card[1]==list[1]&&card[2]!=list[2];
+ });
+ });
+ player.unmarkAuto('fakechengshang_effect',removes);
+ },
+ viewAs:{
+ name:links[0][2],
+ nature:links[0][3],
+ },
+ }
+ },
+ prompt(links,player){
+ return '将一张手牌当作'+(get.translation(links[0][3])||'')+get.translation(links[0][2])+'使用';
+ },
+ },
+ },
+ },
+ },
+ fakezhente:{
+ audio:'zhente',
+ inherit:'zhente',
+ filter(event,player){
+ var color=get.color(event.card),type=get.type(event.card);
+ if(player==event.player||event.player.isDead()||color=='none') return false;
+ return type=='trick'||(type=='basic'&&color=='black');
+ },
+ },
+ fakezhiwei:{
+ audio:'zhiwei',
+ inherit:'zhiwei',
+ content(){
+ 'step 0'
+ player.chooseTarget('请选择【至微】的目标',true,lib.filter.notMe).set('ai',target=>{
+ var att=get.attitude(_status.event.player,target);
+ if(att>0) return 1+att;
+ return Math.random();
+ }).set('prompt2',lib.translate.fakezhiwei_info);
+ 'step 1'
+ if(result.bool){
+ var target=result.targets[0];
+ player.logSkill('fakezhiwei',target);
+ player.storage.fakezhiwei_effect=target;
+ player.addSkill('fakezhiwei_effect');
+ }
+ },
+ subSkill:{
+ effect:{
+ charlotte:true,
+ onremove:true,
+ audio:'zhiwei',
+ trigger:{player:'hideCharacterBefore'},
+ filter(event,player){
+ return get.character(event.toHide,3).includes('fakezhiwei');
+ },
+ forced:true,
+ content(){
+ trigger.cancel();
+ },
+ mark:'character',
+ intro:{content:'已选择$'},
+ group:['fakezhiwei_draw','fakezhiwei_discard','fakezhiwei_gain','fakezhiwei_clear'],
+ },
+ draw:{
+ audio:'zhiwei',
+ trigger:{global:'damageSource'},
+ forced:true,
+ filter(event,player){
+ return event.source==player.storage.fakezhiwei_effect;
+ },
+ logTarget:'source',
+ content(){
+ player.draw();
+ },
+ },
+ discard:{
+ audio:'zhiwei',
+ trigger:{global:'damageEnd'},
+ forced:true,
+ filter(event,player){
+ return event.player==player.storage.fakezhiwei_effect&&player.hasCard(card=>{
+ return _status.connectMode||lib.filter.cardDiscardable(card,player);
+ },'h');
+ },
+ logTarget:'player',
+ content(){
+ player.chooseToDiscard('h',true);
+ },
+ },
+ gain:{
+ audio:'zhiwei',
+ trigger:{
+ player:'loseAfter',
+ global:'loseAsyncAfter',
+ },
+ forced:true,
+ filter(event,player){
+ if(event.type!='discard'||event.getlx===false||event.getParent('phaseDiscard').player!=player||!player.storage.fakezhiwei_effect||!player.storage.fakezhiwei_effect.isIn()) return false;
+ var evt=event.getl(player);
+ return evt&&evt.cards2.filterInD('d').length>0;
+ },
+ logTarget(event,player){
+ return player.storage.fakezhiwei_effect;
+ },
+ content(){
+ if(trigger.delay===false) game.delay();
+ player.storage.fakezhiwei_effect.gain(trigger.getl(player).cards2.filterInD('d'),'gain2');
+ },
+ },
+ clear:{
+ audio:'zhiwei',
+ trigger:{
+ global:'die',
+ player:['hideCharacterEnd','removeCharacterEnd'],
+ },
+ forced:true,
+ filter(event,player){
+ if(event.name=='die') return event.player==player.storage.fakezhiwei_effect;
+ if(event.name=='removeCharacter') return get.character(event.toRemove,3).includes('fakezhiwei');
+ return get.character(event.toHide,3).includes('fakezhiwei');
+ },
+ content(){
+ 'step 0'
+ player.removeSkill('fakezhiwei_effect');
+ if(trigger.name!='die') event.finish();
+ 'step 1'
+ if(get.character(player.name1,3).includes('fakezhiwei')) player.hideCharacter(0);
+ if(get.character(player.name2,3).includes('fakezhiwei')) player.hideCharacter(1);
+ },
+ },
+ },
+ },
+ fakekuangcai:{
+ inherit:'gzrekuangcai',
+ content(){
+ const goon=Boolean(player.getHistory('useCard').length);
+ get.info('rekuangcai').change(player,goon?-1:1);
+ player.when({global:'phaseAfter'}).then(()=>{
+ get.info('rekuangcai').change(player,goon?1:-1);
+ }).vars({goon:goon});
+ },
+ },
+ faketunchu:{
+ audio:'tunchu',
+ trigger:{player:'phaseDrawBegin2'},
+ filter(event,player){
+ return !event.numFixed;
+ },
+ check(event,player){
+ return player.countCards('h')<=2;
+ },
+ locked:false,
+ preHidden:true,
+ content(){
+ trigger.num+=2;
+ player.when(['phaseDrawEnd','phaseDrawSkipped','phaseDrawCancelled'])
+ .filter(evt=>evt==trigger)
+ .then(()=>{
+ var nh=player.countCards('h');
+ if(nh){
+ player.chooseCard('h',[1,Math.min(nh,2)],'将至多两张手牌置于你的武将牌上',true).set('ai',card=>{
+ return 7.5-get.value(card);
+ });
+ }
+ else{
+ player.addTempSkill('faketunchu_effect');
+ event.finish();
+ }
+ })
+ .then(()=>{
+ if(result.bool) player.addToExpansion(result.cards,player,'giveAuto').gaintag.add('faketunchu');
+ })
+ .then(()=>{
+ player.addTempSkill('faketunchu_effect');
+ });
+ },
+ intro:{
+ content:'expansion',
+ markcount:'expansion',
+ },
+ marktext:'粮',
+ onremove(player,skill){
+ var cards=player.getExpansions(skill);
+ if(cards.length) player.loseToDiscardpile(cards);
+ },
+ subSkill:{
+ effect:{
+ charlotte:true,
+ mod:{
+ cardEnabled(card,player){
+ if(card.name=='sha') return false;
+ },
+ },
+ mark:true,
+ intro:{content:'本回合不能使用【杀】'},
+ },
+ },
+ },
+ fakeshuliang:{
+ audio:'shuliang',
+ trigger:{global:'phaseJieshuBegin'},
+ direct:true,
+ filter(event,player){
+ if(!event.player.isFriendOf(player)) return false;
+ return event.player.isIn()&&get.distance(player,event.player)<=player.getExpansions('faketunchu').length;
+ },
+ async cost(event,trigger,player){
+ const {result:{bool,links}}=await player.chooseButton([get.prompt2('fakeshuliang',trigger.player),player.getExpansions('faketunchu')]).set('ai',button=>{
+ if(get.attitude(get.event('player'),get.event().getTrigger().player)<=0) return 0;
+ return 1+Math.random();
+ });
+ event.result={bool:bool,cards:links,targets:[trigger.player]};
+ },
+ content(){
+ player.loseToDiscardpile(event.cards);
+ trigger.player.draw(2);
+ },
+ ai:{combo:'faketunchu'},
+ },
+ fakedujin:{
+ audio:'dujin',
+ inherit:'dujin',
+ filter(event,player){
+ return player.countCards('e')&&!event.numFixed;
+ },
+ content(){
+ trigger.num+=Math.ceil(player.countCards('e')/2);
+ },
+ group:'fakedujin_first',
+ subSkill:{
+ first:{
+ audio:'dujin',
+ trigger:{player:'showCharacterEnd'},
+ filter(event,player){
+ if(game.getAllGlobalHistory('everything',evt=>{
+ return evt.name=='showCharacter'&&evt.toShow.some(i=>get.character(i,3).includes('fakedujin'));
+ },event).indexOf(event)!=0) return false;
+ return game.getAllGlobalHistory('everything',evt=>{
+ return evt.name=='showCharacter'&&evt.player.isFriendOf(player);
+ })[0].player==player;
+ },
+ forced:true,
+ locked:false,
+ content(){
+ player.addMark('xianqu_mark',1);
+ },
+ },
+ },
+ },
+ fakeguishu:{
+ inherit:'hmkguishu',
+ usable:1,
+ },
+ fakeyuanyu:{
+ inherit:'hmkyuanyu',
+ filter(event,player){
+ if(event.num<=0||!event.source) return false;
+ return !event.source.inRange(player);
+ },
+ content(){
+ trigger.num--;
+ },
+ ai:{
+ effect:{
+ target(card,player,target){
+ if(player.hasSkillTag('jueqing',false,target)) return;
+ if(player.inRange(target)) return;
+ const num=get.tag(card,'damage');
+ if(num){
+ if(num>1) return 0.5;
+ return 'zeroplayertarget';
+ }
+ },
+ },
+ },
+ },
//国战典藏2023补充
//吕范
gzdiaodu:{
@@ -16104,6 +16482,24 @@ return event.junling=='junling5'?1:0;});
fakezisui_info:'锁定技。①一名角色被你移除副将后,你将被移除的武将牌称为“异”置于武将牌上。②摸牌阶段,你多摸X张牌。③结束阶段,若X大于你的体力上限,你死亡。(X为你武将牌上的“异”数)',
fakejujian:'举荐',
fakejujian_info:'副将技。①此武将牌计算体力上限时减少半个阴阳鱼。②结束阶段,你可以弃置一张非基本牌并选择一名友方角色,令其选择摸两张牌或回复1点体力,然后其可以变更副将。',
+ fakexibing:'息兵',
+ fakexibing_info:'当一名其他角色在其出牌阶段内使用第一张黑色【杀】或黑色普通锦囊牌指定唯一角色为目标后,你可令该角色将手牌摸至体力值且本回合不能再使用手牌。若你与其均明置了所有武将牌,则你可以暗置你与其各一张武将牌且本回合不能再明置此武将牌。',
+ fakezhente:'贞特',
+ fakezhente_info:'每回合限一次,当你成为其他角色使用普通锦囊牌或黑色基本牌的目标后,你可令使用者选择一项:1.本回合不能再使用与此牌颜色相同的牌;2.令此牌对你无效。',
+ fakezhiwei:'至微',
+ fakezhiwei_info:'你明置此武将牌时,选择一名其他角色。该角色造成伤害后,你摸一张牌,该角色受到伤害后,你随机弃置一张手牌。你弃牌阶段弃置的牌均被该角色获得。该角色死亡时,若你的两个武将牌均明置,你暗置此武将牌。若该角色未死亡,则此武将牌被暗置前,取消之。',
+ fakekuangcai:'狂才',
+ fakekuangcai_info:'锁定技,你于回合内使用牌无距离和次数限制;弃牌阶段开始时,若你本回合内:未使用过牌,则你本回合手牌上限+1;使用过牌但未造成过伤害,则你本回合手牌上限-1。',
+ faketunchu:'屯储',
+ faketunchu_info:'摸牌阶段,你可以额外摸两张牌,然后你将一至两张牌称为“粮”置于武将牌上。若如此做,你本回合不能使用【杀】。',
+ fakeshuliang:'输粮',
+ fakeshuliang_info:'友方角色的结束阶段,若你与其的距离不大于你武将牌上的“粮”数,则你可以移去一张“粮”,然后令其摸两张牌。',
+ fakedujin:'独进',
+ fakedujin_info:'①摸牌阶段,你可以额外摸X张牌(X为你装备区的牌数的一半,向上取整)。②当你首次明置此武将牌时,若你为你们势力第一个明置武将牌的角色,则你获得1个“先驱”标记。',
+ fakeguishu:'鬼术',
+ fakeguishu_info:'出牌阶段限一次,你可以将一张黑桃手牌当作【知己知彼】或【远交近攻】使用。若你本局游戏内已经发动过了〖鬼术〗,则你必须选择与上次不同的选项。',
+ fakeyuanyu:'远域',
+ fakeyuanyu_info:'锁定技,当你受到伤害时,若你不在伤害来源的攻击范围内,则防止此伤害。',
guozhan_default:"国战标准",
guozhan_zhen:"君临天下·阵",
@@ -16530,10 +16926,45 @@ return event.junling=='junling5'?1:0;});
element:{
content:{
hideCharacter:function(){
- 'step 0'
- event.trigger('hideCharacterEnd');
- 'step 1'
- event.trigger('hideCharacterAfter');
+ game.addVideo('hideCharacter',player,num);
+ var skills;
+ switch(num){
+ case 0:
+ if(log!==false) game.log(player,'暗置了主将'+get.translation(player.name1));
+ skills=lib.character[player.name1][3];
+ player.name=player.name2;
+ player.sex=lib.character[player.name2][0];
+ player.classList.add('unseen');
+ break;
+ case 1:
+ if(log!==false) game.log(player,'暗置了副将'+get.translation(player.name2));
+ skills=lib.character[player.name2][3];
+ player.classList.add('unseen2');
+ break;
+ }
+ game.broadcast(function(player,name,sex,num,skills){
+ player.name=name;
+ player.sex=sex;
+ switch(num){
+ case 0:player.classList.add('unseen');break;
+ case 1:player.classList.add('unseen2');break;
+ }
+ for(var i=0;i
Date: Thu, 4 Apr 2024 13:45:48 +0800
Subject: [PATCH 02/38] =?UTF-8?q?=E5=AE=98=E7=9B=97=E7=BE=A4=E6=9D=9C?=
=?UTF-8?q?=E9=A2=84=E3=80=81=E7=8E=8B=E5=87=8C=E3=80=81=E7=8E=8B=E5=9F=BA?=
=?UTF-8?q?=E3=80=81=E4=B8=A5=E9=A2=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mode/guozhan.js | 346 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 346 insertions(+)
diff --git a/mode/guozhan.js b/mode/guozhan.js
index 7976dffb2..3fee32e43 100644
--- a/mode/guozhan.js
+++ b/mode/guozhan.js
@@ -2045,6 +2045,75 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
},
},
+ fakezhufu:{
+ audio:'spwuku',
+ enable:'phaseUse',
+ filter(event,player){
+ return player.hasCard(card=>{
+ return get.info('fakezhufu').filterCard(card,player);
+ },'he');
+ },
+ filterCard(card,player){
+ return lib.filter.cardDiscardable(card,player)&&!player.getStorage('fakezhufu_effect').includes(get.suit(card));
+ },
+ position:'he',
+ check(card){
+ const player=get.event('player');
+ if(player.hasUseTarget(card,true,true)) return 0;
+ return 5+3*Math.random()-get.value(card);
+ },
+ async content(event,trigger,player){
+ const suit=get.suit(event.cards[0],player);
+ player.addTempSkill('fakezhufu_effect','phaseUseAfter');
+ player.markAuto('fakezhufu_effect',[[suit,false]]);
+ },
+ ai:{
+ order:7,
+ result:{player:1},
+ },
+ subSkill:{
+ effect:{
+ charlotte:true,
+ onremove:true,
+ intro:{
+ content(storage){
+ const suitStorage=storage.slice().sort((a,b)=>lib.suit.indexOf(a[0])-lib.suit.indexOf(b[0]));
+ const suits=suitStorage.reduce((str,list)=>str+get.translation(list[0]),'');
+ const usedSuits=suitStorage.filter(list=>list[1]).reduce((str,list)=>str+get.translation(list[0]),'');
+ let str='';
+ str+='已弃置过的花色:';
+ str+=suits;
+ if(used.length){
+ str+='
已触发过的花色:';
+ str+=usedSuits;
+ }
+ return str;
+ },
+ },
+ audio:'spwuku',
+ trigger:{player:'yingbian'},
+ filter(event,player){
+ return player.getStorage('fakezhufu_effect').some(list=>!list[1]);
+ },
+ forced:true,
+ content(){
+ if(!Array.isArray(trigger.temporaryYingbian)) trigger.temporaryYingbian=[];
+ trigger.forceYingbian=true
+ trigger.temporaryYingbian.addArray(player.getStorage('fakezhufu_effect').filter(list=>{
+ return !list[1];
+ }).map(list=>{
+ return get.info('fakezhufu').YingBianMap[list[0]];
+ }));
+ },
+ },
+ },
+ YingBianMap:{
+ 'heart':'yingbian_zhuzhan',
+ 'diamond':'yingbian_fujia',
+ 'spade':'yingbian_canqu',
+ 'club':'yingbian_kongchao',
+ },
+ },
fakeguishu:{
inherit:'hmkguishu',
usable:1,
@@ -2072,6 +2141,263 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
},
},
+ fakemibei:{
+ audio:'mibei',
+ trigger:{player:'phaseZhunbeiBegin'},
+ filter(event,player){
+ return !player.isMaxHandcard();
+ },
+ forced:true,
+ locked:false,
+ async cost(event,trigger,player){
+ const filterTarget=(card,player,target)=>{
+ return target!=player&&target.isMaxHandcard();
+ },targetx=game.filterPlayer(current=>filterTarget(null,player,current));
+ if(targetx.length==1) event.result={bool:true,targets:targetx};
+ else event.result=await player.chooseTarget(filterTarget,true)
+ .set('prompt2',lib.translate.fakemibei_info)
+ .set('prompt','请选择【秘备】的目标').set('ai',target=>{
+ const player=get.event('player');
+ return get.attitude(player,target);
+ }).forResult();
+ },
+ async content(event,trigger,player){
+ const target=event.targets[0];
+ const {result:{junling,targets}}=await target.chooseJunlingFor(player);
+ const {result:{index}}=await player.chooseJunlingControl(target,junling,targets).set('prompt','秘备:是否执行军令?');
+ if(index==0) await player.carryOutJunling(target,junling,targets);
+ },
+ group:'fakemibei_junling',
+ subSkill:{
+ junling:{
+ audio:'mibei',
+ trigger:{player:['carryOutJunlingEnd','chooseJunlingControlEnd']},
+ filter(event,player){
+ if(event.name=='carryOutJunling'){
+ return event.source.countCards('h')>player.countCards('h');
+ }
+ return event.index==1&&player.countCards('h');
+ },
+ forced:true,
+ locked:false,
+ async content(event,trigger,player){
+ if(trigger.name=='carryOutJunling'){
+ const num=Math.min(5,trigger.source.countCards('h')-player.countCards('h'));
+ await player.draw(num);
+ }
+ else{
+ const {result:{bool,cards}}=await player.chooseCard('秘备:展示一至三张手牌,本回合你可以将其中一张牌当作另一张基本牌或普通锦囊牌使用一次',[1,3],true).set('ai',card=>{
+ const player=get.event('player'),goon=_status.currentPhase==player;
+ if(goon) return player.getUseValue(card)/get.value(card);
+ return get.value(card);
+ });
+ if(bool){
+ await player.showCards(cards,get.translation(player)+'发动了【秘备】');
+ player.addGaintag(cards,'fakemibei_effect');
+ player.addTempSkill('fakemibei_effect');
+ }
+ }
+ },
+ },
+ effect:{
+ charlotte:true,
+ onremove(player){
+ player.removeGaintag('fakemibei_effect');
+ },
+ hiddenCard(player,name){
+ const cards=player.getCards('h',card=>card.hasGaintag('fakemibei_effect'));
+ if(cards.length<2) return false;
+ const type=get.type(name);
+ if(type!='basic'&&type!='trick') return false;
+ return cards.slice().map(i=>i.name).includes(name);
+ },
+ audio:'mibei',
+ enable:'phaseUse',
+ chooseButton:{
+ dialog(event,player){
+ const list=player.getCards('h',card=>{
+ const type=get.type(card);
+ if(type!='basic'&&type!='trick') return false;
+ return card.hasGaintag('fakemibei_effect');
+ }).sort((a,b)=>{
+ return lib.inpile.indexOf(a.name)+get.natureList(a,false).reduce((sum,nature)=>{
+ return sum+lib.inpile_nature.indexOf(nature);
+ },0)-lib.inpile.indexOf(b.name)-get.natureList(b,false).reduce((sum,nature)=>{
+ return sum+lib.inpile_nature.indexOf(nature);
+ },0);
+ }).slice().map(card=>[get.translation(type),'',card[2],card[3]]);
+ return ui.create.dialog('秘备',[list,'vcard']);
+ },
+ filter(button,player){
+ return get.event().getParent().filterCard({name:button.link[2],nature:button.link[3]},player,event);
+ },
+ check(button){
+ const player=get.event('player');
+ const card={name:button.link[2],nature:button.link[3]};
+ if(player.countCards('hes',cardx=>cardx.name==card.name)) return 0;
+ return player.getUseValue(card);
+ },
+ backup(links,player){
+ return {
+ audio:'chengshang',
+ filterCard(card,player){
+ const cardx=get.info('fakemibei_effect_backup').viewAs;
+ if(cardx.name==card.name&&cardx.nature==card.nature) return false;
+ return card.hasGaintag('fakemibei_effect');
+ },
+ position:'h',
+ popname:true,
+ precontent(){
+ player.logSkill('fakemibei_effect');
+ delete event.result.skill;
+ player.tempBanSkill('fakemibei_effect',null,false);
+ },
+ viewAs:{
+ name:links[0][2],
+ nature:links[0][3],
+ },
+ }
+ },
+ prompt(links,player){
+ return '将一张“秘备”牌当作'+(get.translation(links[0][3])||'')+get.translation(links[0][2])+'使用';
+ },
+ },
+ },
+ },
+ },
+ fakeqizhi:{
+ audio:'qizhi',
+ inherit:'qizhi',
+ trigger:{player:'useCard'},
+ filter(event,player){
+ if(!event.targets||!event.targets.length) return false;
+ if(_status.currentPhase!=player) return false;
+ if(get.type(event.card)=='equip') return false;
+ return game.hasPlayer(target=>!event.targets.includes(target)&&target.countCards('he')>0);
+ },
+ direct:false,
+ async cost(event,trigger,player){
+ event.result=await player.chooseTarget(get.prompt2('fakeqizhi'),(card,player,target)=>{
+ return !get.event().getTrigger().targets.includes(target)&&target.countCards('he')>0;
+ }).set('ai',target=>{
+ const player=get.event('player');
+ if(target==player) return 2;
+ if(get.attitude(player,target)<=0) return 1;
+ return 0.5;
+ }).forResult();
+ },
+ async content(event,trigger,player){
+ const target=event.targets[0];
+ const {result:{bool,cards}}=await player.discardPlayerCard(target,'he',true);
+ if(get.is.yingbianConditional(trigger.card)&&bool){
+ if(cards.some(i=>get.suit(i,target)==get.suit(trigger.card))){
+ player.when('yingbian')
+ .filter(evt=>evt.card==trigger.card)
+ .then(()=>trigger.forceYingbian=true);
+ }
+ }
+ },
+ },
+ fakejinqu:{
+ audio:2,
+ trigger:{player:'phaseJieshuBegin'},
+ check(event,player){
+ return player.getHistory('useSkill',evt=>{
+ return evt.skill=='fakeqizhi';
+ }).length>=player.countCards('h');
+ },
+ prompt2(event,player){
+ const num=player.getHistory('useSkill',evt=>evt.skill=='fakeqizhi').length;
+ return '摸两张牌,然后将手牌弃置至'+get.cnNumber(num)+'张';
+ },
+ content(){
+ 'step 0'
+ player.draw(2);
+ 'step 1'
+ var dh=player.countCards('h')-player.getHistory('useSkill',evt=>{
+ return evt.skill=='fakeqizhi';
+ }).length;
+ if(dh>0) player.chooseToDiscard(dh,true);
+ },
+ ai:{combo:'fakeqizhi'},
+ },
+ fakejuzhan:{
+ zhuanhuanji:true,
+ locked:false,
+ marktext:'☯',
+ intro:{
+ content(storage){
+ if(storage) return '当你使用【杀】指定目标后,你可以获得其X张牌,然后若你的武将牌均明置,则其可以暗置此武将牌,且你本回合不能明置此武将牌(X为你已损失的体力值且至少为1)';
+ return '当你成为【杀】的目标后,你可以与其各摸X张牌,然后其武将牌均明置,则你可以暗置其一张武将牌,且其本回合不能明置此武将牌(X为其已损失的体力值且至少为1)';
+ },
+ },
+ audio:'nzry_juzhan_1',
+ trigger:{
+ player:'useCardToPlayered',
+ target:'useCardToTargeted',
+ },
+ filter(event,player){
+ const storage=player.storage.fakejuzhan;
+ if((event.player==player)!=Boolean(storage)) return false;
+ if(storage&&!event.target.countCards('he')) return false;
+ return true;
+ },
+ logTarget(event,player){
+ const storage=player.storage.fakejuzhan;
+ return event[Boolean(storage)?'target':'player'];
+ },
+ async content(event,trigger,player){
+ const storage=player.storage.fakejuzhan;
+ player.changeZhuanhuanji('fakejuzhan');
+ const target=trigger[Boolean(storage)?'target':'player'];
+ const num=Math.max(target.getDamagedHp(),1);
+ if(!storage){
+ await player.draw(num,'nodelay');
+ await target.draw(num);
+ if(!target.isUnseen(2)){
+ const {result:{bool,links}}=await player.chooseButton([
+ '拒战:是否暗置'+get.translation(target)+'的一张武将牌?',
+ ''+get.translation(target)+'的武将牌
',
+ [[target.name1,target.name2],'character'],
+ ]).set('filterButton',button=>!get.is.jun(button.link));
+ if(bool){
+ await target.hideCharacter(target.name1==links[0]?0:1);
+ target.addTempSkill('donggui2');
+ }
+ }
+ }
+ else{
+ await player.gainPlayerCard(target,num,'he',true);
+ const names=[player.name1,player.name2].filter(i=>{
+ return get.character(i,3).includes('fakejuzhan');
+ });
+ if(!player.isUnseen(2)&&names.length){
+ const {result:{bool,links}}=await target.chooseBool('拒战:是否暗置'+get.translation(player)+'的'+(names.includes(player.name1)?'主将':'')+(names.length>1?'和':'')+(names.includes(player.name2)?'副将':'')+'?');
+ if(bool){
+ if(names.includes(player.name1)) await player.hideCharacter(0);
+ if(names.includes(player.name2)) await player.hideCharacter(1);
+ player.addTempSkill('donggui2');
+ }
+ }
+ }
+ },
+ group:'fakejuzhan_mark',
+ subSkill:{
+ mark:{
+ charlotte:true,
+ trigger:{player:['hideCharacterEnd','showCharacterEnd']},
+ filter(event,player){
+ return get.character(event[event.name=='hideCharacter'?'toHide':'toShow'],3).includes('fakejuzhan');
+ },
+ forced:true,
+ popup:false,
+ firstDo:true,
+ content(){
+ player[(trigger.name=='hideCharacter'?'un':'')+'markSkill']('fakejuzhan');
+ },
+ },
+ },
+ },
//国战典藏2023补充
//吕范
gzdiaodu:{
@@ -15819,6 +16145,16 @@ return event.junling=='junling5'?1:0;});
gzshiyong:function(player){
return player.awakenedSkills.includes('gzyaowu')?lib.translate.gzshiyongx_info:lib.translate.gzshiyong_info;
},
+ fakejuzhan(player){
+ let str='转换技。',storage=player.storage.fakejuzhan;
+ if(!storage) str+='';
+ str+='阴:当你成为【杀】的目标后,你可以与使用者各摸X张牌,然后若使用者的武将牌均明置,则你可以暗置其一张武将牌,且其本回合不能明置此武将牌。';
+ if(!storage) str+='';
+ if(storage) str+='';
+ str+='阳,当你使用【杀】指定目标后,你可以获得目标角色的X张牌,然后若你的武将牌均明置,则其可以暗置此武将牌,且你本回合不能明置此武将牌。';
+ if(storage) str+='';
+ return str+'(X为使用者已损失的体力值且X至少为1)';
+ },
},
translate:{
ye:'野',
@@ -16496,10 +16832,20 @@ return event.junling=='junling5'?1:0;});
fakeshuliang_info:'友方角色的结束阶段,若你与其的距离不大于你武将牌上的“粮”数,则你可以移去一张“粮”,然后令其摸两张牌。',
fakedujin:'独进',
fakedujin_info:'①摸牌阶段,你可以额外摸X张牌(X为你装备区的牌数的一半,向上取整)。②当你首次明置此武将牌时,若你为你们势力第一个明置武将牌的角色,则你获得1个“先驱”标记。',
+ fakezhufu:'注傅',
+ fakezhufu_info:'出牌阶段,你可以弃置一张本阶段未以此法弃置过的花色的牌,然后根据此牌的花色为你使用的下一张牌添加对应的应变效果(无视条件触发):红桃——助战;方片——富甲;黑桃——残躯;草花——空巢。',
fakeguishu:'鬼术',
fakeguishu_info:'出牌阶段限一次,你可以将一张黑桃手牌当作【知己知彼】或【远交近攻】使用。若你本局游戏内已经发动过了〖鬼术〗,则你必须选择与上次不同的选项。',
fakeyuanyu:'远域',
fakeyuanyu_info:'锁定技,当你受到伤害时,若你不在伤害来源的攻击范围内,则防止此伤害。',
+ fakemibei:'秘备',
+ fakemibei_info:'①准备阶段,若你的手牌数不为全场最多,则你须选择一名手牌数为全场最多的角色,令其对你发起军令。②当你执行军令后,你将手牌数摸至与发起者相同(至多摸五张)。③当你拒绝执行军令后,你展示一至三张牌,然后你本回合可以将其中一张牌当作另一张基本牌或非延时锦囊牌使用一次。',
+ fakeqizhi:'奇制',
+ fakeqizhi_info:'当你于回合内使用非装备牌A时,你可以弃置不是此牌目标的一名角色的一张牌B,然后其摸一张牌。若A具有应变效果,且A和B的花色相同,则你无视条件触发A的应变效果。',
+ fakejinqu:'进趋',
+ fakejinqu_info:'结束阶段,你可以摸两张牌,然后你将手牌弃置至X张(X为你本回合发动过〖奇制〗的次数)。',
+ fakejuzhan:'拒战',
+ fakejuzhan_info:'转换技。阴:当你成为【杀】的目标后,你可以与使用者各摸X张牌,然后若使用者的武将牌均明置,则你可以暗置其一张武将牌,且其本回合不能明置此武将牌。阳,当你使用【杀】指定目标后,你可以获得目标角色的X张牌,然后若你的武将牌均明置,则其可以暗置此武将牌,且你本回合不能明置此武将牌。(X为使用者已损失的体力值且X至少为1)',
guozhan_default:"国战标准",
guozhan_zhen:"君临天下·阵",
From 726a6253d64e4e97673f56cb1ba23bc82f8b3811 Mon Sep 17 00:00:00 2001
From: mengxinzxz <2223529500@qq.com>
Date: Thu, 4 Apr 2024 16:10:24 +0800
Subject: [PATCH 03/38] =?UTF-8?q?=E5=9B=BD=E6=88=98=E9=AB=98=E9=A1=BA?=
=?UTF-8?q?=E3=80=81=E5=9B=BD=E6=88=98=E6=9C=B1=E7=84=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mode/guozhan.js | 247 +++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 246 insertions(+), 1 deletion(-)
diff --git a/mode/guozhan.js b/mode/guozhan.js
index 3fee32e43..d94818655 100644
--- a/mode/guozhan.js
+++ b/mode/guozhan.js
@@ -1513,7 +1513,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
return ui.create.dialog('###怀异###'+get.translation('fakehuaiyi_info'));
},
chooseControl(event,player){
- var list=[],map={'h':'手牌区','e':'装备区','j':'判定区'};
+ let list=[],map={'h':'手牌区','e':'装备区','j':'判定区'};
list.addArray(['h','e','j'].filter(pos=>{
return player.getCards(pos).every(card=>lib.filter.cardDiscardable(card,player));
}).map(i=>map[i]));
@@ -2149,6 +2149,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
forced:true,
locked:false,
+ preHidden:true,
async cost(event,trigger,player){
const filterTarget=(card,player,target)=>{
return target!=player&&target.isMaxHandcard();
@@ -2398,6 +2399,244 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
},
},
+ fakedanshou:{
+ audio:'mobiledanshou',
+ trigger:{global:'phaseZhunbeiBegin'},
+ filter(event,player){
+ return ['h','e','j'].some(pos=>player.getCards(pos).every(card=>lib.filter.cardDiscardable(card,player)));
+ },
+ async cost(event,trigger,player){
+ let list=[],map={'h':'手牌区','e':'装备区','j':'判定区'};
+ list.addArray(['h','e','j'].filter(pos=>{
+ return player.getCards(pos).every(card=>lib.filter.cardDiscardable(card,player));
+ }).map(i=>map[i]));
+ list.push('cancel2');
+ const {result:{control}}=await player.chooseControl(list).set('prompt',get.prompt2('fakedanshou',trigger.player)).set('ai',()=>{
+ const player=get.event().player,controls=get.event().controls.slice();
+ if(controls.includes('判定区')) return '判定区';
+ if(controls.includes('装备区')&&player.countCards('e')<3) return '装备区';
+ if(controls.includes('手牌区')&&player.countCards('e')<5) return '手牌区';
+ return 'cancel2';
+ });
+ event.result={bool:(control!='cancel2'),cost_data:control};
+ },
+ round:1,
+ logTarget:'player',
+ async content(event,trigger,player){
+ player.popup(event.cost_data);
+ await player.discard(player.getCards({'手牌区':'h','装备区':'e','判定区':'j'}[event.cost_data]));
+ player.addTempSkill('fakedanshou_effect');
+ player.addMark('fakedanshou_effect',1,false);
+ },
+ subSkill:{
+ effect:{
+ charlotte:true,
+ onremove(player){
+ delete player.storage.fakedanshou_effect;
+ delete player._fakedanshou_effect;
+ },
+ audio:'mobiledanshou',
+ trigger:{global:['phaseJudgeBegin','phaseDrawBegin','phaseUseBegin','phaseDiscardBegin']},
+ async cost(event,trigger,player){
+ const {result:{control}}=await player.chooseControl('摸牌','增加摸牌数').set('prompt','胆守:请选择一项').set('ai',()=>{
+ const player=get.event().player,trigger=get.event().getTrigger();
+ if(trigger.name=='phaseJudge') return '增加摸牌数';
+ if(trigger.name=='phaseDiscard') return '摸牌';
+ if(trigger.name=='phaseDraw'){
+ if(get.damageEffect(trigger.player,player,player)>0){
+ player._fakedanshou_effect=true;
+ return '增加摸牌数';
+ }
+ }
+ return player._fakedanshou_effect?'增加摸牌数':'摸牌';
+ });
+ event.result={bool:true,cost_data:control};
+ },
+ logTarget:'player',
+ async content(event,trigger,player){
+ if(event.cost_data=='增加摸牌数'){
+ player.addMark('fakedanshou_effect',1,false);
+ }
+ else{
+ const num=player.countMark('fakedanshou_effect');
+ await player.draw(num);
+ if(num>=4){
+ const {result:{bool}}=await player.chooseBool('胆守:是否对'+get.translation(trigger.player)+'造成1点伤害?').set('choice',get.damageEffect(trigger.player,player,player)>0);
+ if(bool){
+ player.line(trigger.player);
+ await trigger.player.damage();
+ }
+ }
+ }
+ },
+ },
+ },
+ },
+ fakexunxi:{
+ trigger:{global:'showCharacterEnd'},
+ filter(event,player){
+ const card=new lib.element.VCard({name:'sha'});
+ return event.player!=player&&event.player!=_status.currentPhase&&player.canUse(card,event.player,false);
+ },
+ check(event,player){
+ const card=new lib.element.VCard({name:'sha'});
+ return get.effect(event.player,card,player,player)>0;
+ },
+ logTarget:'player',
+ async content(event,trigger,player){
+ const card=new lib.element.VCard({name:'sha'});
+ await player.useCard(card,trigger.player,false);
+ },
+ },
+ fakehuanjia:{
+ trigger:{
+ player:'useCardToPlayered',
+ target:'useCardToTargeted',
+ },
+ filter(event,player){
+ if(event.card.name!='sha') return false;
+ if(event.target==player){
+ if(player.getStorage('fakehuanjia_used').includes(2)) return false;
+ return event.player.getEquips(2).length;
+ }
+ if(event.targets.length!=1) return false;
+ if(player.getStorage('fakehuanjia_used').includes(1)) return false;
+ return event.target.getEquips(1).length;
+ },
+ logTarget(event,player){
+ return event.target==player?event.player:event.target;
+ },
+ forced:true,
+ async content(event,trigger,player){
+ player.addTempSkill('fakehuanjia_used');
+ if(trigger.target==player){
+ player.markAuto('fakehuanjia_used',[2]);
+ if(!player.getEquips(2).length&&player.hasEmptySlot(2)){
+ player.addSkill('fakehuanjia_equip2');
+ player.markAuto('fakehuanjia_equip2',[trigger.player]);
+ player.when({global:'phaseAfter',player:['equipEnd','disableEquipEnd','die']})
+ .filter((evt,player)=>{
+ if(evt.name=='phase'||evt.name=='die') return true;
+ if(evt.name=='discardEquip') return !player.hasEmptySlot(2);
+ return get.type(evt.card)=='equip2';
+ })
+ .then(()=>player.removeSkill('fakehuanjia_equip2'));
+ const cards=trigger.player.getEquips(2);
+ if(cards.length){
+ const skills=cards.reduce((list,card)=>{
+ if(get.info(card)&&get.info(card).skills) list.addArray(get.info(card).skills);
+ return list;
+ },[]);
+ if(skills.length) player.addAdditionalSkill('fakehuanjia_equip2',skills);
+ }
+ }
+ }
+ else{
+ player.markAuto('fakehuanjia_used',[1]);
+ if(!player.getEquips(1).length&&player.hasEmptySlot(1)){
+ player.addSkill('fakehuanjia_equip1');
+ player.markAuto('fakehuanjia_equip1',[trigger.target]);
+ player.when({global:'phaseAfter',player:['equipEnd','disableEquipEnd','die']})
+ .filter((evt,player)=>{
+ if(evt.name=='phase'||evt.name=='die') return true;
+ if(evt.name=='discardEquip') return !player.hasEmptySlot(1);
+ return get.type(evt.card)=='equip1';
+ })
+ .then(()=>player.removeSkill('fakehuanjia_equip1'));
+ const cards=trigger.target.getEquips(1);
+ if(cards.length){
+ const skills=cards.reduce((list,card)=>{
+ if(get.info(card)&&get.info(card).skills) list.addArray(get.info(card).skills);
+ return list;
+ },[]);
+ if(skills.length) player.addAdditionalSkill('fakehuanjia_equip1',skills);
+ }
+ }
+ }
+ },
+ subSkill:{
+ used:{
+ charlotte:true,
+ onremove:true,
+ },
+ equip1:{
+ charlotte:true,
+ onremove:true,
+ mark:true,
+ marktext:'攻',
+ mod:{
+ attackRange(player,num){
+ const targets=player.getStorage('fakehuanjia_equip1').filter(i=>i.isIn());
+ return num+targets.reduce((sum,target)=>{
+ return sum+target.getEquipRange();
+ },0);
+ },
+ },
+ intro:{content:'视为装备$的武器'},
+ trigger:{global:['loseAfter','equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter','die']},
+ filter(event,player){
+ return game.hasPlayer(target=>{
+ if(!player.getStorage('fakehuanjia_equip1').includes(target)) return false;
+ if(event.name=='die'&&event.player==target) return true;
+ if(event.name=='equip'&&event.player==target) return get.subtype(event.card)=='equip1';
+ const evt=event.getl(target);
+ return evt&&evt.player==target&&evt.es&&evt.es.some(i=>get.subtype(i)=='equip1');
+ });
+ },
+ forced:true,
+ popup:false,
+ content(){
+ const targets=player.getStorage('fakehuanjia_equip1').filter(i=>i.isIn());
+ const skills=targets.reduce((list,target)=>{
+ const cards=target.getEquips(1);
+ if(cards.length){
+ const skills=cards.reduce((listx,card)=>{
+ if(get.info(card)&&get.info(card).skills) listx.addArray(get.info(card).skills);
+ return listx;
+ },[]);
+ if(skills.length) list.addArray(skills);
+ }
+ return list;
+ },[]);
+ player.addAdditionalSkill('fakehuanjia_equip1',skills);
+ },
+ },
+ equip2:{
+ charlotte:true,
+ onremove:true,
+ mark:true,
+ marktext:'防',
+ intro:{content:'视为装备$的防具'},
+ trigger:{global:['loseAfter','equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter','die']},
+ filter(event,player){
+ return game.hasPlayer(target=>{
+ if(!player.getStorage('fakehuanjia_equip2').includes(target)) return false;
+ if(event.name=='die'&&event.player==target) return true;
+ if(event.name=='equip'&&event.player==target) return get.subtype(event.card)=='equip2';
+ const evt=event.getl(target);
+ return evt&&evt.player==target&&evt.es&&evt.es.some(i=>get.subtype(i)=='equip2');
+ });
+ },
+ forced:true,
+ popup:false,
+ content(){
+ const targets=player.getStorage('fakehuanjia_equip2').filter(i=>i.isIn());
+ const skills=targets.reduce((list,target)=>{
+ const cards=target.getEquips(2);
+ if(cards.length){
+ const skills=cards.reduce((listx,card)=>{
+ if(get.info(card)&&get.info(card).skills) listx.addArray(get.info(card).skills);
+ return listx;
+ },[]);
+ if(skills.length) list.addArray(skills);
+ }
+ return list;
+ },[]);
+ player.addAdditionalSkill('fakehuanjia_equip2',skills);
+ },
+ },
+ },
+ },
//国战典藏2023补充
//吕范
gzdiaodu:{
@@ -16846,6 +17085,12 @@ return event.junling=='junling5'?1:0;});
fakejinqu_info:'结束阶段,你可以摸两张牌,然后你将手牌弃置至X张(X为你本回合发动过〖奇制〗的次数)。',
fakejuzhan:'拒战',
fakejuzhan_info:'转换技。阴:当你成为【杀】的目标后,你可以与使用者各摸X张牌,然后若使用者的武将牌均明置,则你可以暗置其一张武将牌,且其本回合不能明置此武将牌。阳,当你使用【杀】指定目标后,你可以获得目标角色的X张牌,然后若你的武将牌均明置,则其可以暗置此武将牌,且你本回合不能明置此武将牌。(X为使用者已损失的体力值且X至少为1)',
+ fakedanshou:'胆守',
+ fakedanshou_info:'每轮限一次,一名角色的准备阶段,你可以弃置一个区域的所有牌。若如此做,本回合其每个阶段开始时(准备阶段和结束阶段除外),你摸一张牌或令本回合以此法摸牌数+1,然后若你选择了摸牌且你本次至少摸了四张牌,则你可以对其造成1点伤害。',
+ fakexunxi:'迅析',
+ fakexunxi_info:'其他角色于回合外明置武将牌时,你可以视为对其使用一张【杀】(无距离限制)。',
+ fakehuanjia:'擐甲',
+ fakehuanjia_info:'锁定技,每回合每项各限一次。①当你成为【杀】的目标后,本回合你视为装备此牌使用者的防具,直到你的装备区中有防具。②当你使用【杀】指定唯一目标后,本回合你视为装备目标角色的武器,直到你的装备区中有武器。',
guozhan_default:"国战标准",
guozhan_zhen:"君临天下·阵",
From 8c921a3ad29eac7939d800ff1507e6f856189905 Mon Sep 17 00:00:00 2001
From: copcap
Date: Wed, 20 Mar 2024 15:00:21 +0800
Subject: [PATCH 04/38] =?UTF-8?q?=E7=BC=A9=E7=9F=AD=E6=97=A0=E9=99=90?=
=?UTF-8?q?=E7=81=AB=E5=8A=9Bui=E6=8C=89=E9=92=AE=E5=86=85=E7=9A=84?=
=?UTF-8?q?=E6=96=87=E6=9C=AC=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=8A=95=E9=99=8D?=
=?UTF-8?q?=E6=8C=89=E9=92=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mode/single.js | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/mode/single.js b/mode/single.js
index 01f200f59..9ee0a27fa 100644
--- a/mode/single.js
+++ b/mode/single.js
@@ -362,6 +362,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(_status.connectMode&&lib.configOL.change_card) game.replaceHandcards(game.players.slice(0));
'step 4'
game.phaseLoop(game.zhu);
+ game.countPlayer(current=>current.showGiveup(),true);
},
game:{
canReplaceViewpoint:()=>true,
@@ -550,7 +551,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
ui.wuxianhuoliProgress.innerHTML='任务进度(0/3)';
const showTasks=()=>{
if(ui.wuxianhuoliInfo) return;
- ui.wuxianhuoliInfo=ui.create.system('无限火力·信息',null,true);
+ ui.wuxianhuoliInfo=ui.create.system('无限火力',null,true);
ui.wuxianhuoliInfo.currentProgress=0;
ui.wuxianhuoliInfo.currentLevel=0;
lib.setPopped(ui.wuxianhuoliInfo,()=>{
@@ -943,7 +944,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
ui.wuxianhuoliProgress.innerHTML='任务进度(0/3)';
const showTasks=()=>{
if(ui.wuxianhuoliInfo) return;
- ui.wuxianhuoliInfo=ui.create.system('无限火力·信息',null,true);
+ ui.wuxianhuoliInfo=ui.create.system('无限火力',null,true);
ui.wuxianhuoliInfo.currentProgress=0;
ui.wuxianhuoliInfo.currentLevel=0;
lib.setPopped(ui.wuxianhuoliInfo,()=>{
From 31cac2e9b3d19d656f4d7162d02e98eee9714974 Mon Sep 17 00:00:00 2001
From: mengxinzxz <2223529500@qq.com>
Date: Thu, 4 Apr 2024 21:30:23 +0800
Subject: [PATCH 05/38] =?UTF-8?q?=E5=9B=BD=E6=88=98=E8=B4=BE=E5=85=85?=
=?UTF-8?q?=E3=80=81=E7=BE=8A=E7=A5=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mode/guozhan.js | 238 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 238 insertions(+)
diff --git a/mode/guozhan.js b/mode/guozhan.js
index d94818655..3d73d8658 100644
--- a/mode/guozhan.js
+++ b/mode/guozhan.js
@@ -2637,6 +2637,226 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
},
},
+ fakexiongshu:{
+ audio:'xiongshu',
+ trigger:{global:'useCardToPlayered'},
+ filter(event,player){
+ if(!event.isFirstTarget) return false;
+ if(event.player==player&&game.countPlayer()<2) return false;
+ if(event.player!=player&&!player.countDiscardableCards(player,'he')) return false;
+ return event.card.name=='sha'||(get.type(event.card)=='trick'&&get.tag(event.card,'damage'));
+ },
+ check(event,player){
+ if(event.player==player){
+ if(event.targets.some(i=>i.hasSkill('gzduanchang'))) return true;
+ return !event.targets.some(i=>i.getHp()==1&&!i.hasSkill('gzbuqu')&&i.isEnemyOf(player));
+ }
+ if(event.targets.some(i=>i.hasSkill('gzduanchang'))) return false;
+ return event.targets.some(i=>i.getHp()==1&&!i.hasSkill('gzbuqu')&&i.isEnemyOf(player));
+ },
+ usable:1,
+ async content(event,trigger,player){
+ if(trigger.player==player){
+ await player.draw();
+ const {result:{bool,targets}}=await player.chooseTarget('令一名其他角色成为'+get.translation(trigger.card)+'的伤害来源',true,lib.filter.notMe).set('ai',target=>{
+ const player=get.event('player'),targets=get.event().getTrigger().targets;
+ const goon=(player.hasSkill('fakejianhui')&&targets.some(i=>i!=target&&i.isFriendOf(target)));
+ return targets.reduce((sum,i)=>sum+get.damageEffect(i,target,player),0)*(goon?3:1);
+ });
+ if(bool){
+ const target=targets[0];
+ player.line(target);
+ game.log(target,'成为了',trigger.card,'的伤害来源');
+ trigger.getParent().customArgs.default.customSource=target;
+ }
+ }
+ else{
+ await player.chooseToDiscard('he',true);
+ game.log(player,'成为了',trigger.card,'的伤害来源');
+ trigger.getParent().customArgs.default.customSource=player;
+ }
+ },
+ },
+ fakejianhui:{
+ audio:'jianhui',
+ trigger:{global:'damageSource'},
+ filter(event,player){
+ if(!event.source||!event.player||!event.source.isIn()||!event.player.isIn()) return false;
+ return event.source.isFriendOf(event.player)&&[event.source,event.player].some(target=>target.countCards('he'));
+ },
+ async cost(event,player){
+ event.result=await player.chooseTarget(get.prompt('fakejianhui'),(card,player,target)=>{
+ const trigger=get.event().getTrigger();
+ if(!(trigger.source==target&&trigger.player==target)) return false;
+ if(!ui.selected.targets.length) return true;
+ return target.countCards('he');
+ },2).set('targetprompt',['摸牌','拆牌']).set('ai',target=>{
+ const player=get.event('player'),trigger=get.event().getTrigger();
+ const source=trigger.source,playerx=trigger.player;
+ const min=-Math.min(get.effect(source,{name:'draw'},player,player),get.effect(playerx,{name:'draw'},player,player));
+ const max=Math.max(get.effect(source,{name:'guohe_copy'},player,player),get.effect(playerx,{name:'guohe_copy'},player,player));
+ if(min>max) return 0;
+ if(!ui.selected.targets.length) return -1/Math.min(get.effect(target,{name:'draw'},player,player),-0.001);
+ return get.effect(target,{name:'guohe_copy'},player,player);
+ }).set('complexSelect',true).set('complexTarget',true).forResult();
+ },
+ popup:false,
+ async content(event,trigger,player){
+ player.logSkill('fakejianhui',event.targets,false);
+ player.line2(event.targets);
+ await event.targets[0].draw();
+ await player.discardPlayerCard(event.targets[1],'he',true);
+ },
+ },
+ fakechongxin:{
+ audio:'chongxin',
+ enable:'phaseUse',
+ filter(event,player){
+ const card=new lib.element.VCard({name:'yiyi'});
+ return lib.filter.targetEnabled2(card,player,player)&&game.hasPlayer(target=>{
+ return lib.filter.targetEnabled2(card,player,target)&&target.isEnemyOf(player);
+ });
+ },
+ filterTarget(cardx,player,target){
+ const card=new lib.element.VCard({name:'yiyi'});
+ return lib.filter.targetEnabled2(card,player,target)&&target.isEnemyOf(player);
+ },
+ usable:1,
+ async content(event,trigger,player){
+ const card=new lib.element.VCard({name:'yiyi'});
+ await player.useCard(card,[player].concat(event.targets),false);
+ },
+ ai:{
+ order(item,player){
+ return get.order({name:'yiyi'},player)+0.1;
+ },
+ result:{
+ target(player,target){
+ const card=new lib.element.VCard({name:'yiyi'});
+ const num=get.sgn(get.attitude(player,target));
+ return num*(get.effect(player,card,player,player)-get.effect(target,card,player,player));
+ },
+ },
+ },
+ },
+ fakeweirong:{
+ zhuanhuanji:true,
+ locked:false,
+ marktext:'☯',
+ intro:{
+ content(storage){
+ if(storage) return '出牌阶段,你可以摸X张牌,然后当你于本轮不因此法失去牌后,你弃置一张牌。(X为你上一轮以此法摸和弃置的牌数之和,且X至少为1,至多为你的体力上限)';
+ return '出牌阶段,你可以弃置X张牌,然后当你于本轮不因此法得到牌后,你摸一张牌。(X为你上一轮以此法摸和弃置的牌数之和,且X至少为1,至多为你的体力上限)';
+ },
+ },
+ audio:'weishu',
+ enable:'phaseUse',
+ filter(event,player){
+ if(!get.info('fakeweirong').getNum(player)) return false;
+ const storage=player.storage.fakeweirong;
+ return storage||player.countCards('he',card=>lib.filter.cardDiscardable)>=get.info('fakeweirong').getNum(player);
+ },
+ filterCard(card,player){
+ return !Boolean(player.storage.fakeweirong)&&lib.filter.cardDiscardable(card,player);
+ },
+ selectCard(){
+ const player=get.event('player');
+ return player.storage.fakeweirong?-1:get.info('fakeweirong').getNum(player);
+ },
+ check(card){
+ return 7.5-get.value(card);
+ },
+ prompt(){
+ const player=get.event('player');
+ const num=get.info('fakeweirong').getNum(player);
+ if(player.storage.fakeweirong) return '摸张'+get.cnNumber(num)+'牌,然后当你于本轮不因此法失去牌后,你弃置一张牌';
+ return '弃置张'+get.cnNumber(num)+'牌,然后当你于本轮不因此法得到牌后,你摸一张牌';
+ },
+ round:1,
+ async content(event,trigger,player){
+ const storage=player.storage.fakeweirong;
+ player.changeZhuanhuanji('fakeweirong');
+ if(storage) await player.draw(get.info('fakeweirong').getNum(player));
+ player.addTempSkill('fakeweirong_'+(storage?'lose':'gain'),'roundStart');
+ },
+ ai:{
+ order(item,player){
+ const storage=player.storage.fakeweirong;
+ return storage?0.01:9;
+ },
+ result:{player:1},
+ },
+ group:'fakeweirong_mark',
+ subSkill:{
+ mark:{
+ charlotte:true,
+ trigger:{player:['hideCharacterEnd','showCharacterEnd']},
+ filter(event,player){
+ return get.character(event[event.name=='hideCharacter'?'toHide':'toShow'],3).includes('fakeweirong');
+ },
+ forced:true,
+ popup:false,
+ firstDo:true,
+ content(){
+ player[(trigger.name=='hideCharacter'?'un':'')+'markSkill']('fakeweirong');
+ },
+ },
+ gain:{
+ charlotte:true,
+ mark:true,
+ marktext:'↑',
+ intro:{content:'不因此法得到牌后,你摸一张牌'},
+ audio:'weishu',
+ trigger:{player:'gainAfter',global:'loseAsyncAfter'},
+ filter(event,player){
+ if(!event.getg||!event.getg(player).length) return false;
+ return event.getParent(2).name!='fakeweirong_gain';
+ },
+ forced:true,
+ content(){
+ player.draw();
+ },
+ },
+ lose:{
+ charlotte:true,
+ mark:true,
+ marktext:'↓',
+ intro:{content:'不因此法失去牌后,你弃置一张牌'},
+ trigger:{player:'loseAfter',global:'loseAsyncAfter'},
+ filter(event,player){
+ if(!player.countCards('he')) return false;
+ const evt=event.getl(player);
+ if(!evt||!evt.cards2||!evt.cards2.length) return false;
+ return event.getParent(3).name!='weishu_discard';
+ },
+ forced:true,
+ content(){
+ player.chooseToDiscard('he',true);
+ },
+ },
+ },
+ getNum(player){
+ let num=0,count=false;
+ const history=player.actionHistory;
+ for(let i=history.length-1;i>=0;i--){
+ if(history[i].isRound){
+ if(!count){
+ count=true;
+ continue;
+ }
+ else break;
+ }
+ if(!count) continue;
+ const allHistory=history[i].gain.filter(evt=>{
+ return evt.getParent(2).name=='fakeweirong'||evt.getParent(2).name=='fakeweirong_gain';
+ }).slice().concat(history[i].lose.filter(evt=>{
+ return evt.getParent(2).skill=='fakeweirong'||evt.getParent(3).name=='fakeweirong_lose';
+ }));
+ for(const evt of allHistory) num+=evt.cards.length;
+ }
+ return Math.max(1,Math.min(player.maxHp,num));
+ },
+ },
//国战典藏2023补充
//吕范
gzdiaodu:{
@@ -16394,6 +16614,16 @@ return event.junling=='junling5'?1:0;});
if(storage) str+='';
return str+'(X为使用者已损失的体力值且X至少为1)';
},
+ fakeweirong(player){
+ let str='转换技,每轮限一次,出牌阶段。',storage=player.storage.fakeweirong;
+ if(!storage) str+='';
+ str+='阴:你可以弃置X张牌,然后当你于本轮不因此法得到牌后,你摸一张牌。';
+ if(!storage) str+='';
+ if(storage) str+='';
+ str+='阳:你可以摸X张牌,然后当你于本轮不因此法失去牌后,你弃置一张牌。';
+ if(storage) str+='';
+ return str+'(X为你上一轮以此法摸和弃置的牌数之和,且X至少为1,至多为你的体力上限)';
+ },
},
translate:{
ye:'野',
@@ -17091,6 +17321,14 @@ return event.junling=='junling5'?1:0;});
fakexunxi_info:'其他角色于回合外明置武将牌时,你可以视为对其使用一张【杀】(无距离限制)。',
fakehuanjia:'擐甲',
fakehuanjia_info:'锁定技,每回合每项各限一次。①当你成为【杀】的目标后,本回合你视为装备此牌使用者的防具,直到你的装备区中有防具。②当你使用【杀】指定唯一目标后,本回合你视为装备目标角色的武器,直到你的装备区中有武器。',
+ fakexiongshu:'凶竖',
+ fakexiongshu_info:'每回合限一次,一名角色使用【杀】或伤害类锦囊牌指定第一个目标后,若你为/不为此牌使用者,则你可以摸一张牌并令一名其他角色成为此牌的伤害来源/弃置一张牌并成为此牌的伤害来源。',
+ fakejianhui:'奸回',
+ fakejianhui_info:'当一名角色受到其势力相同的另一名角色造成的伤害后,你可以令其中一名角色摸一张牌,然后弃置其中另一名角色的一张牌。',
+ fakechongxin:'崇信',
+ fakechongxin_info:'出牌阶段限一次,你可以选择一名与你势力不同的角色,视为你使用一张指定你与其为目标的【知己知彼】。',
+ fakeweirong:'卫戎',
+ fakeweirong_info:'转换技,每轮限一次,出牌阶段。阴:你可以弃置X张牌,然后当你于本轮不因此法得到牌后,你摸一张牌。阳:你可以摸X张牌,然后当你于本轮不因此法失去牌后,你弃置一张牌。(X为你上一轮以此法摸和弃置的牌数之和,且X至少为1,至多为你的体力上限)',
guozhan_default:"国战标准",
guozhan_zhen:"君临天下·阵",
From 583d25341a4defa5aeacde1bf4677ccfdfc8534e Mon Sep 17 00:00:00 2001
From: mengxinzxz <2223529500@qq.com>
Date: Thu, 4 Apr 2024 21:48:50 +0800
Subject: [PATCH 06/38] =?UTF-8?q?=E6=94=BE=E5=85=A52023=E5=AE=98=E6=AD=A3/?=
=?UTF-8?q?=E5=AE=98=E7=9B=97=E6=8A=80=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
把目前已有技能安插到各个武将中(无则添加新武将,徐庶未更改技能,群杜预等牌堆更换完毕后再替换技能
---
mode/guozhan.js | 92 +++++++++++++++++++++++++++++--------------------
1 file changed, 54 insertions(+), 38 deletions(-)
diff --git a/mode/guozhan.js b/mode/guozhan.js
index 3d73d8658..f6152041b 100644
--- a/mode/guozhan.js
+++ b/mode/guozhan.js
@@ -308,6 +308,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'gz_re_yuanshao','gz_yuanshu','gz_hetaihou',
'gz_jin_simashi','gz_sp_duyu','gz_shibao',
'gz_gongsunyuan','gz_panjun','gz_re_nanhualaoxian',
+ 'gz_wangji','gz_xin_zhuran','gz_jin_jiachong',
+ 'gz_jin_yanghu',
],
'6':[
'gz_zhenji','gz_guojia','gz_yujin',
@@ -318,6 +320,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'gz_liuba','gz_zhouyi','gz_re_xunchen',
'gz_fuwan','gz_zhugejin','gz_yangxiu',
'gz_yangyan','gz_tw_tianyu','gz_yangwan',
+ 'gz_wangling',
],
'5':[
'gz_zhangliao','gz_caocao','gz_xuhuang',
@@ -327,12 +330,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'gz_zhanghuyuechen','gz_re_xushu','gz_mifangfushiren',
'gz_huangzu','gz_weiguan','gz_miheng',
'gz_wenqin','gz_zumao','gz_xuangongzhu',
- 'gz_tw_xiahoushang'
+ 'gz_tw_xiahoushang',
],
'4':[
'gz_dianwei','gz_dengai','gz_xunyu',
'gz_madai','gz_liubei','gz_mifuren',
- 'gz_wuguotai','gz_luxun','gz_taishici',
+ 'gz_wuguotai','gz_luxun','gz_re_taishici',
'gz_zhangjiao','gz_pangde','gz_liuqi',
'gz_jin_zhangchunhua','gz_zongyu','gz_shixie',
'gz_jin_yanghuiyu','gz_tangzi','gz_yanbaihu',
@@ -346,7 +349,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'gz_zhangzhang','gz_lvmeng','gz_huanggai',
'gz_jiling','gz_lvbu','gz_dongzhuo',
'gz_jin_xiahouhui','gz_simazhou','gz_zhanglu',
- 'gz_chendao','gz_yangzhi','gz_old_huaxiong'
+ 'gz_chendao','gz_yangzhi','gz_old_huaxiong',
+ 'gz_gaoshun',
],
'2':[
'gz_cuimao','gz_xiahouyuan','gz_caohong',
@@ -360,12 +364,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'gz_menghuo','gz_ganfuren','gz_guanyu',
'gz_lukang','gz_jiangqing','gz_chendong',
'gz_zoushi','gz_panfeng','gz_tianfeng',
- 'gz_sufei',
+ 'gz_sufei','gz_yanyan',
],
},
characterSort:{
mode_guozhan:{
- guozhan_default:["gz_caocao","gz_simayi","gz_xiahoudun","gz_zhangliao","gz_xuzhu","gz_guojia","gz_zhenji","gz_xiahouyuan","gz_zhanghe","gz_xuhuang","gz_caoren","gz_dianwei","gz_xunyu","gz_caopi","gz_yuejin","gz_liubei","gz_guanyu","gz_zhangfei","gz_zhugeliang","gz_zhaoyun","gz_machao","gz_huangyueying","gz_huangzhong","gz_weiyan","gz_pangtong","gz_sp_zhugeliang","gz_liushan","gz_menghuo","gz_zhurong","gz_ganfuren","gz_sunquan","gz_ganning","gz_lvmeng","gz_huanggai","gz_zhouyu","gz_daqiao","gz_luxun","gz_sunshangxiang","gz_sunjian","gz_xiaoqiao","gz_taishici","gz_zhoutai","gz_re_lusu","gz_zhangzhang","gz_dingfeng","gz_huatuo","gz_lvbu","gz_diaochan","gz_re_yuanshao","gz_yanwen","gz_jiaxu","gz_pangde","gz_zhangjiao","gz_caiwenji","gz_mateng","gz_kongrong","gz_jiling","gz_tianfeng","gz_panfeng","gz_zoushi",],
+ guozhan_default:["gz_caocao","gz_simayi","gz_xiahoudun","gz_zhangliao","gz_xuzhu","gz_guojia","gz_zhenji","gz_xiahouyuan","gz_zhanghe","gz_xuhuang","gz_caoren","gz_dianwei","gz_xunyu","gz_caopi","gz_yuejin","gz_liubei","gz_guanyu","gz_zhangfei","gz_zhugeliang","gz_zhaoyun","gz_machao","gz_huangyueying","gz_huangzhong","gz_weiyan","gz_pangtong","gz_sp_zhugeliang","gz_liushan","gz_menghuo","gz_zhurong","gz_ganfuren","gz_sunquan","gz_ganning","gz_lvmeng","gz_huanggai","gz_zhouyu","gz_daqiao","gz_luxun","gz_sunshangxiang","gz_sunjian","gz_xiaoqiao","gz_re_taishici","gz_zhoutai","gz_re_lusu","gz_zhangzhang","gz_dingfeng","gz_huatuo","gz_lvbu","gz_diaochan","gz_re_yuanshao","gz_yanwen","gz_jiaxu","gz_pangde","gz_zhangjiao","gz_caiwenji","gz_mateng","gz_kongrong","gz_jiling","gz_tianfeng","gz_panfeng","gz_zoushi",],
guozhan_zhen:["gz_dengai","gz_caohong","gz_jiangfei","gz_jiangwei","gz_xusheng","gz_jiangqing","gz_hetaihou","gz_yuji"],
guozhan_shi:["gz_re_lidian","gz_zangba","gz_madai","gz_mifuren","gz_sunce","gz_chendong","gz_sp_dongzhuo","gz_zhangren"],
guozhan_bian:["gz_liqueguosi","gz_zuoci","gz_bianfuren","gz_xunyou","gz_lingtong","gz_lvfan","gz_masu","gz_shamoke",],
@@ -375,8 +379,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
guozhan_double:['gz_tangzi','gz_liuqi','gz_mengda','gz_mifangfushiren','gz_zhanglu','gz_shixie','gz_xuyou','gz_xiahouba','gz_panjun','gz_xf_sufei','gz_wenqin','gz_pengyang'],
guozhan_yexinjia:['gz_zhonghui','gz_simazhao','gz_gongsunyuan','gz_sunchen'],
guozhan_jin:['gz_jin_simayi','gz_jin_simazhao','gz_jin_simashi','gz_jin_zhangchunhua','gz_jin_wangyuanji','gz_jin_xiahouhui','gz_duyu','gz_zhanghuyuechen','gz_jin_yanghuiyu','gz_simazhou','gz_shibao','gz_weiguan','gz_zhongyan','gz_yangyan','gz_zuofen','gz_xinchang','gz_xuangongzhu','gz_yangzhi'],
- guozhan_zongheng:['gz_huaxin','gz_luyusheng','gz_zongyu','gz_miheng','gz_fengxi','gz_dengzhi','gz_re_xunchen','gz_dc_yanghu'],
- guozhan_decade:['gz_jianggan',"gz_zhouyi","gz_lvlingqi","gz_yangwan"],
+ guozhan_zongheng:['gz_jianggan','gz_huaxin','gz_luyusheng','gz_zongyu','gz_miheng','gz_fengxi','gz_dengzhi','gz_re_xunchen','gz_dc_yanghu'],
+ guozhan_decade:["gz_zhouyi","gz_lvlingqi","gz_yangwan",'gz_wangling','gz_wangji','gz_yanyan','gz_xin_zhuran','gz_gaoshun','gz_jin_jiachong','gz_jin_yanghu'],
guozhan_mobile:["gz_lingcao","gz_lifeng","gz_sp_duyu"],
guozhan_qunxiong:['gz_xf_huangquan','gz_guohuai','gz_guanqiujian','gz_zhujun','gz_chengong','gz_re_xugong'],
guozhan_tw:['gz_yangxiu','gz_tw_tianyu','gz_tw_xiahoushang','gz_liaohua','gz_chendao','gz_zhugejin','gz_zumao','gz_fuwan','gz_tw_liufuren','gz_old_huaxiong'],
@@ -400,10 +404,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gz_shibing1key:['male','key',0,[],['unseen']],
gz_shibing2key:['female','key',0,[],['unseen']],
- gz_zhonghui:['male','ye',4,['gzquanji','gzpaiyi'],['gzskin']],
+ gz_zhonghui:['male','ye',4,['fakequanji','fakepaiyi'],['gzskin']],
gz_simazhao:['male','ye',3,['gzzhaoxin','gzsuzhi'],['gzskin']],
- gz_gongsunyuan:['male','ye',4,['gzhuaiyi','gzzisui'],['gzskin']],
- gz_sunchen:['male','ye',4,['gzshilu','gzxiongnve']],
+ gz_gongsunyuan:['male','ye',4,['fakehuaiyi','fakezisui'],['gzskin']],
+ gz_sunchen:['male','ye',4,['fakeshilu','fakexiongnve']],
gz_tangzi:['male','wu',4,['gzxingzhao'],['doublegroup:wei:wu','gzskin']],
gz_mengda:['male','wei',4,['qiuan','liangfan'],['doublegroup:wei:shu']],
gz_liuqi:['male','qun',3,['gzwenji','gztunjiang'],['doublegroup:shu:qun','gzskin']],
@@ -425,21 +429,21 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gz_pengyang:['male','shu',3,['gztongling','gzjinyu'],['doublegroup:shu:qun','gzskin']],
gz_zhuling:['male','wei',4,['gzjuejue','gzfangyuan'],['gzskin']],
- gz_caocao:['male','wei',4,['jianxiong']],
+ gz_caocao:['male','wei',4,['rejianxiong']],
gz_simayi:['male','wei',3,['fankui','guicai']],
gz_xiahoudun:['male','wei',4,['reganglie']],
gz_zhangliao:['male','wei',4,['new_retuxi']],
gz_xuzhu:['male','wei',4,['gzluoyi']],
gz_guojia:['male','wei',3,['tiandu','gzyiji'],['gzskin']],
gz_zhenji:['female','wei',3,['luoshen','qingguo'],['gzskin']],
- gz_xiahouyuan:['male','wei',5,['gzshensu'],['gzskin']],
+ gz_xiahouyuan:['male','wei',4,['gzshensu'],['gzskin']],
gz_zhanghe:['male','wei',4,['qiaobian']],
gz_xuhuang:['male','wei',4,['new_duanliang']],
gz_caoren:['male','wei',4,['gzjushou']],
- gz_dianwei:['male','wei',4,['gzqiangxi'],['gzskin']],
+ gz_dianwei:['male','wei',5,['reqiangxi'],['gzskin']],
gz_xunyu:['male','wei',3,['quhu','gzjieming']],
gz_caopi:['male','wei',3,['xingshang','gzfangzhu'],['gzskin']],
- gz_yuejin:['male','wei',4,['gzxiaoguo'],['gzskin']],
+ gz_yuejin:['male','wei',4,['fakexiaoguo'],['gzskin']],
gz_liubei:['male','shu',4,['rerende']],
gz_guanyu:['male','shu',5,['new_rewusheng'],['gzskin']],
@@ -464,21 +468,21 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gz_huanggai:['male','wu',4,['new_kurou']],
gz_zhouyu:['male','wu',3,['reyingzi','refanjian'],['gzskin']],
gz_daqiao:['female','wu',3,['guose','liuli']],
- gz_luxun:['male','wu',3,['gzqianxun','duoshi'],['gzskin']],
+ gz_luxun:['male','wu',3,['gzqianxun','fakeduoshi'],['gzskin']],
gz_sunshangxiang:['female','wu',3,['jieyin','gzxiaoji'],['gzskin']],
gz_sunjian:['male','wu',5,['yinghun'],['gzskin']],
gz_xiaoqiao:['female','wu',3,['gztianxiang','gzhongyan'],['gzskin']],
- gz_taishici:['male','wu',4,['tianyi']],
+ gz_re_taishici:['male','wu',4,['tianyi','fakehanzhan']],
gz_zhoutai:['male','wu',4,['buqu','new_fenji']],
gz_re_lusu:['male','wu',3,['haoshi','dimeng']],
gz_zhangzhang:['male','wu',3,['zhijian','guzheng']],
- gz_dingfeng:['male','wu',4,['reduanbing','refenxun'],['gzskin']],
+ gz_dingfeng:['male','wu',4,['fakeduanbing','fenxun'],['gzskin']],
gz_huatuo:['male','qun',3,['new_chuli','jijiu']],
gz_lvbu:['male','qun',5,['gzwushuang'],['gzskin']],
gz_diaochan:['female','qun',3,['lijian','biyue'],['gzskin']],
gz_re_yuanshao:['male','qun',4,['new_luanji'],['gzskin']],
- gz_yanwen:['male','qun',4,['shuangxiong']],
+ gz_yanwen:['male','qun',4,['fakeshuangxiong']],
gz_jiaxu:['male','qun',3,['wansha','luanwu','gzweimu'],['gzskin']],
gz_pangde:['male','qun',4,['mashu','jianchu']],
gz_zhangjiao:['male','qun',3,['leiji','guidao']],
@@ -492,9 +496,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gz_dengai:['male','wei',4,['tuntian','ziliang','gzjixi'],['gzskin','die_audio']],
gz_caohong:['male','wei',4,['gzhuyuan','heyi'],['gzskin']],
- gz_jiangfei:['male','shu',3,['reshengxi','gzshoucheng']],
+ gz_jiangfei:['male','shu',3,['shengxi','gzshoucheng']],
gz_jiangwei:['male','shu',4,['tiaoxin','yizhi','tianfu'],['gzskin']],
- gz_xusheng:['male','wu',4,['gzyicheng'],['gzskin']],
+ gz_xusheng:['male','wu',4,['fakeyicheng'],['gzskin']],
gz_jiangqing:['male','wu',4,['gzshangyi','niaoxiang']],
gz_hetaihou:['female','qun',3,['zhendu','qiluan'],['gzskin']],
@@ -503,8 +507,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gz_madai:['male','shu',4,['mashu2','qianxi'],['gzskin']],
gz_mifuren:['female','shu',3,['gzguixiu','gzcunsi']],
gz_sunce:['male','wu',4,['jiang','yingyang','baka_hunshang'],['gzskin']],
- gz_chendong:['male','wu',4,['duanxie','fenming']],
- gz_sp_dongzhuo:['male','qun',4,['hengzheng','baoling']],
+ gz_chendong:['male','wu',4,['duanxie','fakefenming']],
+ gz_sp_dongzhuo:['male','qun',4,['hengzheng','fakebaoling']],
gz_zhangren:['male','qun',4,['chuanxin','fengshi']],
gz_jun_liubei:['male','shu',4,['zhangwu','jizhao','shouyue','wuhujiangdaqi']],
@@ -512,23 +516,23 @@ 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,['gzxiongsuan']],
- gz_zuoci:['male','qun',3,['yigui','jihun'],['gzskin']],
+ gz_zuoci:['male','qun',3,['fakeyigui','fakejihun'],['gzskin']],
gz_bianfuren:['female','wei',3,['wanwei','gzyuejian']],
gz_xunyou:['male','wei',3,['gzqice','zhiyu'],['gzskin']],
gz_lingtong:['male','wu',4,['xuanlve','yongjin'],['gzskin']],
- gz_lvfan:['male','wu',3,['xindiaodu','gzdiancai']],
+ gz_lvfan:['male','wu',3,['gzdiaodu','gzdiancai']],
gz_masu:['male','shu',3,['gzsanyao','gzzhiman'],['gzskin']],
gz_shamoke:['male','shu',4,['gzjili'],['gzskin']],
- gz_lingcao:['male','wu',4,['dujin']],
- gz_lifeng:['male','shu',3,['tunchu','shuliang']],
- gz_beimihu:["female","qun",3,["hmkguishu","hmkyuanyu"]],
+ gz_lingcao:['male','wu',4,['fakedujin']],
+ gz_lifeng:['male','shu',3,['faketunchu','fakeshuliang']],
+ gz_beimihu:["female","qun",3,["fakeguishu","fakeyuanyu"]],
gz_jianggan:["male","wei",3,["weicheng","daoshu"]],
gz_sp_duyu:['male','qun',4,['spwuku','spmiewu']],
- gz_huaxin:['male','wei',3,['wanggui','xibing']],
- gz_luyusheng:['female','wu',3,['zhente','zhiwei']],
- gz_zongyu:['male','shu',3,['zyqiao','chengshang']],
- gz_miheng:['male','qun',3,['gzrekuangcai','gzshejian'],['gzskin']],
+ gz_huaxin:['male','wei',3,['wanggui','fakexibing']],
+ gz_luyusheng:['female','wu',3,['fakezhente','fakezhiwei']],
+ gz_zongyu:['male','shu',3,['zyqiao','fakechengshang']],
+ gz_miheng:['male','qun',3,['fakekuangcai','gzshejian'],['gzskin']],
gz_fengxi:['male','wu',3,['gzyusui','gzboyan'],['gzskin']],
gz_dengzhi:['male','shu',3,['gzjianliang','gzweimeng'],['gzskin']],
gz_re_nanhualaoxian:['male','qun',3,['gzgongxiu','gztaidan','gzrejinghe']],
@@ -542,7 +546,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
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_lukang:['male','wu',3,['fakejueyan','keshou'],['gzskin']],
gz_yuanshu:['male','qun',4,['gzweidi','gzyongsi'],['gzskin']],
gz_zhangxiu:['male','qun',4,['gzfudi','gzcongjian'],['gzskin']],
gz_jun_caocao:['male','wei',4,['jianan','huibian','gzzongyu','wuziliangjiangdao'],[]],
@@ -587,6 +591,14 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gz_yangwan:['female','shu',3,['gzyouyan','gzzhuihuan'],['gzskin']],
gz_key_ushio:['female','key',3,['ushio_huanxin','ushio_xilv'],['doublegroup:key:wei:shu:wu:qun:jin']],
+
+ gz_wangling:['male','wei',4,['fakemibei']],
+ gz_wangji:['male','wei',3,['fakeqizhi','fakejinqu']],
+ gz_yanyan:['male','shu',4,['fakejuzhan']],
+ gz_xin_zhuran:['male','wu',3,['fakedanshou']],
+ gz_gaoshun:['male','qun',4,['fakexunxi','fakehuanjia']],
+ gz_jin_jiachong:['male','jin',3,['fakexiongshu','fakejianhui']],
+ gz_jin_yanghu:['male','jin',4,['fakechongxin','fakeweirong']],
}
},
skill:{
@@ -10433,12 +10445,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
event.finish();
return;
}
- var skills=['new_retuxi','qiaobian','gzxiaoguo','gzjieyue','new_duanliang'];
+ var skills=['new_retuxi','qiaobian','fakexiaoguo','gzjieyue','new_duanliang'];
game.countPlayer(function(current){
if(current==player) return;
if(current.hasSkill('new_retuxi')) skills.remove('new_retuxi');
if(current.hasSkill('qiaobian')) skills.remove('qiaobian');
- if(current.hasSkill('gzxiaoguo')) skills.remove('gzxiaoguo');
+ if(current.hasSkill('fakexiaoguo')) skills.remove('fakexiaoguo');
if(current.hasSkill('gzjieyue')) skills.remove('gzjieyue');
if(current.hasSkill('new_duanliang')) skills.remove('new_duanliang');
});
@@ -13262,7 +13274,7 @@ return event.junling=='junling5'?1:0;});
if(event.num>=1&&!player.hasSkill('jiahe_reyingzi')) list.push('reyingzi');
if(event.num>=2&&!player.hasSkill('jiahe_haoshi')) list.push('haoshi');
if(event.num>=3&&!player.hasSkill('jiahe_shelie')) list.push('shelie');
- if(event.num>=4&&!player.hasSkill('jiahe_duoshi')) list.push('duoshi');
+ if(event.num>=4&&!player.hasSkill('jiahe_duoshi')) list.push('fakeduoshi');
if(!list.length){
event.finish();
return;
@@ -13295,14 +13307,14 @@ return event.junling=='junling5'?1:0;});
if(controls.includes('reyingzi')){
return 'reyingzi';
}
- if(controls.includes('duoshi')){
- return 'duoshi';
+ if(controls.includes('fakeduoshi')){
+ return 'fakeduoshi';
}
return controls.randomGet();
});
'step 2'
if(result.control!='cancel2'){
- var skill='jiahe_'+result.control;
+ var skill=(result.control!='fakeduoshi'?'jiahe_':'')+result.control;
player.addTempSkills(skill);
if(!event.done) player.logSkill('jiahe_put');
// game.log(player,'获得了技能','【'+get.translation(skill)+'】');
@@ -17329,6 +17341,10 @@ return event.junling=='junling5'?1:0;});
fakechongxin_info:'出牌阶段限一次,你可以选择一名与你势力不同的角色,视为你使用一张指定你与其为目标的【知己知彼】。',
fakeweirong:'卫戎',
fakeweirong_info:'转换技,每轮限一次,出牌阶段。阴:你可以弃置X张牌,然后当你于本轮不因此法得到牌后,你摸一张牌。阳:你可以摸X张牌,然后当你于本轮不因此法失去牌后,你弃置一张牌。(X为你上一轮以此法摸和弃置的牌数之和,且X至少为1,至多为你的体力上限)',
+ gz_re_taishici:'太史慈',
+ gz_xin_zhuran:'朱然',
+ gz_jin_jiachong:'贾充',
+ gz_jin_yanghu:'羊祜',
guozhan_default:"国战标准",
guozhan_zhen:"君临天下·阵",
From 986d3f0aa8d7eaef78e671099f7920c6d3112240 Mon Sep 17 00:00:00 2001
From: mengxinzxz <2223529500@qq.com>
Date: Thu, 4 Apr 2024 21:54:02 +0800
Subject: [PATCH 07/38] =?UTF-8?q?=E7=BF=BB=E8=AF=91=E8=A1=A5=E5=85=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mode/guozhan.js | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/mode/guozhan.js b/mode/guozhan.js
index f6152041b..8b7c08427 100644
--- a/mode/guozhan.js
+++ b/mode/guozhan.js
@@ -1755,6 +1755,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(!phsu||phsu.player!=player) return false;
return event.targets.some(i=>i.isEnemyOf(player));
},
+ usable:1,
preHidden:true,
async content(event,trigger,player){
await player.draw();
@@ -17301,6 +17302,8 @@ return event.junling=='junling5'?1:0;});
fakejujian_info:'副将技。①此武将牌计算体力上限时减少半个阴阳鱼。②结束阶段,你可以弃置一张非基本牌并选择一名友方角色,令其选择摸两张牌或回复1点体力,然后其可以变更副将。',
fakexibing:'息兵',
fakexibing_info:'当一名其他角色在其出牌阶段内使用第一张黑色【杀】或黑色普通锦囊牌指定唯一角色为目标后,你可令该角色将手牌摸至体力值且本回合不能再使用手牌。若你与其均明置了所有武将牌,则你可以暗置你与其各一张武将牌且本回合不能再明置此武将牌。',
+ fakechengshang:'承赏',
+ fakechengshang_info:'出牌阶段限一次,当你使用存在花色和点数且指定了其他势力角色为目标的牌结算完毕后,若你未因此牌造成过伤害,则你可以摸一张牌,然后本阶段你可以将一张手牌当作初始游戏牌堆中与此牌花色和点数相同的另一张基本牌或普通锦囊牌使用一次。',
fakezhente:'贞特',
fakezhente_info:'每回合限一次,当你成为其他角色使用普通锦囊牌或黑色基本牌的目标后,你可令使用者选择一项:1.本回合不能再使用与此牌颜色相同的牌;2.令此牌对你无效。',
fakezhiwei:'至微',
@@ -17345,6 +17348,7 @@ return event.junling=='junling5'?1:0;});
gz_xin_zhuran:'朱然',
gz_jin_jiachong:'贾充',
gz_jin_yanghu:'羊祜',
+ gz_wangling:'王淩',
guozhan_default:"国战标准",
guozhan_zhen:"君临天下·阵",
From a23f09c109c66bed2ff6a9e58c25b1afe697a67a Mon Sep 17 00:00:00 2001
From: mengxinzxz <2223529500@qq.com>
Date: Thu, 4 Apr 2024 21:59:03 +0800
Subject: [PATCH 08/38] =?UTF-8?q?=E5=85=AC=E5=AD=99=E6=B8=8A=E6=94=B9?=
=?UTF-8?q?=E5=AE=98=E6=AD=A3=E6=8A=80=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mode/guozhan.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mode/guozhan.js b/mode/guozhan.js
index 8b7c08427..19b5e3bc1 100644
--- a/mode/guozhan.js
+++ b/mode/guozhan.js
@@ -406,7 +406,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gz_zhonghui:['male','ye',4,['fakequanji','fakepaiyi'],['gzskin']],
gz_simazhao:['male','ye',3,['gzzhaoxin','gzsuzhi'],['gzskin']],
- gz_gongsunyuan:['male','ye',4,['fakehuaiyi','fakezisui'],['gzskin']],
+ gz_gongsunyuan:['male','ye',4,['gzrehuaiyi','gzrezisui'],['gzskin']],
gz_sunchen:['male','ye',4,['fakeshilu','fakexiongnve']],
gz_tangzi:['male','wu',4,['gzxingzhao'],['doublegroup:wei:wu','gzskin']],
gz_mengda:['male','wei',4,['qiuan','liangfan'],['doublegroup:wei:shu']],
From 3307575a2ea85c6de51884fa1a82f14ad0c763a6 Mon Sep 17 00:00:00 2001
From: mengxinzxz <2223529500@qq.com>
Date: Thu, 4 Apr 2024 22:16:03 +0800
Subject: [PATCH 09/38] =?UTF-8?q?=E6=8F=8F=E8=BF=B0fix?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
character/sb.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/character/sb.js b/character/sb.js
index ba07cf518..df75407d9 100644
--- a/character/sb.js
+++ b/character/sb.js
@@ -985,7 +985,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dialog(){
var dialog=ui.create.dialog('放逐:请选择你要执行的一项','hidden');
dialog.add([[
- [1,'移去1个“颂”标记,令一名其他角色于手牌中只能使用装备牌直到其回合结束'],
+ [1,'移去1个“颂”标记,令一名其他角色于手牌中只能使用基本牌直到其回合结束'],
[2,'移去2个“颂”标记,令一名其他角色的非Charlotte技能失效直到其回合结束'],
[3,'移去2个“颂”标记,令一名其他角色不能响应除其外的角色使用的牌直到其回合结束'],
[4,'移去3个“颂”标记,令一名其他角色将武将牌翻面'],
From 7701de42bc3f3352f5e8af00f2525aaca5101009 Mon Sep 17 00:00:00 2001
From: mengxinzxz <2223529500@qq.com>
Date: Thu, 4 Apr 2024 22:31:55 +0800
Subject: [PATCH 10/38] =?UTF-8?q?=E5=9B=BD=E6=88=98onreinit=E7=A5=9E?=
=?UTF-8?q?=E5=8A=BF=E5=8A=9Bbugfix+gzwanyi=E5=B0=8F=E6=A8=A1=E5=BC=8F?=
=?UTF-8?q?=E7=BF=BB=E8=AF=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mode/guozhan.js | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/mode/guozhan.js b/mode/guozhan.js
index 19b5e3bc1..734a612e0 100644
--- a/mode/guozhan.js
+++ b/mode/guozhan.js
@@ -44,8 +44,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
for(var i in lib.character){
if(lib.character[i][1]=='shen'){
if(lib.character[i][4]){
- var group=lib.character[i][4].find(group=>lib.group.includes(group)||group=='key');
- if(group) lib.character[i][1]=group;
+ var group=lib.character[i][4].find(group=>lib.group.includes(group)||group=='key'||group.startsWith('gzgroup:'));
+ if(group){
+ if(group.startsWith('gzgroup:')) lib.character[i][1]=group.slice(8);
+ else lib.character[i][1]=group;
+ }
else lib.character[i][1]='qun';
}
else lib.character[i][1]='qun';
@@ -85,7 +88,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
case 'yingbian':
lib.card.list=lib.guozhanPile_yingbian.slice(0);
delete lib.translate.shuiyanqijunx_info_guozhan;
- lib.translate.gzwanyi_info='出牌阶段每项各限一次。你可以将一张带有“应变”标签的牌当做【逐近弃远】/【洞烛先机】/【水淹七军】/【出其不意】使用。';
break;
case 'normal':lib.card.list=lib.guozhanPile.slice(0);break;
}
@@ -115,7 +117,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
case 'yingbian':
lib.card.list=lib.guozhanPile_yingbian.slice(0);
delete lib.translate.shuiyanqijunx_info_guozhan;
- lib.translate.gzwanyi_info='出牌阶段每项各限一次。你可以将一张带有“应变”标签的牌当做【逐近弃远】/【洞烛先机】/【水淹七军】/【出其不意】使用。'
break;
default:lib.card.list=lib.guozhanPile.slice(0);break;
}
@@ -17168,6 +17169,7 @@ return event.junling=='junling5'?1:0;});
gzcaiyuan_info:'锁定技。结束阶段开始时,若你的手牌数大于本回合开始时的手牌数,则你摸两张牌或回复1点体力。',
gzwanyi:'婉嫕',
gzwanyi_info:'出牌阶段每项各限一次。你可以将一张带有“合纵”标签的牌当做【联军盛宴】/【火烧连营】/【挟天子以令诸侯】/【戮力同心】使用。',
+ gzwanyi_info_yingbian:'出牌阶段每项各限一次。你可以将一张带有“应变”标签的牌当做【逐近弃远】/【洞烛先机】/【水淹七军】/【出其不意】使用。',
gzmaihuo:'埋祸',
gzmaihuo_info:'限定技。当有己方角色成为【杀】的目标时,你可以取消此【杀】的所有目标。然后此【杀】的使用者下回合开始时,其视为对你使用一张【杀】。若此【杀】对你造成伤害,则你防止此伤害,摸两张牌并移除此武将牌(若此武将牌为副将则改为变更副将)。',
gzzhenxi:'震袭',
From af7ceec775caaafc47724c1620711d935bf98ee7 Mon Sep 17 00:00:00 2001
From: mengxinzxz <2223529500@qq.com>
Date: Thu, 4 Apr 2024 23:40:01 +0800
Subject: [PATCH 11/38] =?UTF-8?q?=E9=99=86=E6=8A=97=E4=BD=93=E5=8A=9Bfix+?=
=?UTF-8?q?=E5=9B=BD=E6=88=98=E5=BA=94=E5=8F=98=E7=89=8C=E5=A0=86=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9=E4=B8=BA23=E5=B9=B4=E5=BA=94=E5=8F=98=E5=8A=BF?=
=?UTF-8?q?=E5=A4=87=E7=B3=85=E5=90=88=E7=89=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mode/guozhan.js | 165 +++++++++++++++++++++++++++++++++---------------
1 file changed, 113 insertions(+), 52 deletions(-)
diff --git a/mode/guozhan.js b/mode/guozhan.js
index 734a612e0..98cc13e7a 100644
--- a/mode/guozhan.js
+++ b/mode/guozhan.js
@@ -547,7 +547,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
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,['fakejueyan','keshou'],['gzskin']],
+ gz_lukang:['male','wu',4,['fakejueyan','keshou'],['gzskin']],
gz_yuanshu:['male','qun',4,['gzweidi','gzyongsi'],['gzskin']],
gz_zhangxiu:['male','qun',4,['gzfudi','gzcongjian'],['gzskin']],
gz_jun_caocao:['male','wei',4,['jianan','huibian','gzzongyu','wuziliangjiangdao'],[]],
@@ -17371,117 +17371,178 @@ return event.junling=='junling5'?1:0;});
},
junList:['liubei','zhangjiao','sunquan','caocao'],
guozhanPile_yingbian:[
- ['spade',1,'juedou'],
+ //黑桃普通
['spade',1,'shandian'],
- ['spade',2,'cixiong'],
+ ['spade',1,'xietianzi'],
+ ['spade',1,'juedou'],
['spade',2,'bagua'],
+ ['spade',2,'heiguangkai'],
+ ['spade',2,'cixiong'],
['spade',2,'taigongyinfu'],
- ['spade',3,'shuiyanqijunx',null,['yingbian_zhuzhan']],
['spade',3,'zhujinqiyuan',null,['yingbian_zhuzhan']],
+ ['spade',3,'huoshaolianying'],
+ ['spade',3,'shuiyanqijunx',null,['yingbian_zhuzhan']],
['spade',4,'guohe'],
+ ['spade',4,'sha'],
['spade',4,'shuiyanqijunx',null,['yingbian_zhuzhan']],
- ['spade',5,'sha'],
['spade',5,'jueying'],
+ ['spade',5,'qinglong'],
+ ['spade',5,'sha'],
['spade',6,'qinggang'],
+ ['spade',6,'jiu'],
['spade',6,'sha','ice'],
['spade',7,'sha'],
+ ['spade',7,'sha'],
['spade',7,'sha','ice'],
['spade',8,'sha','ice'],
['spade',8,'sha','ice'],
- ['spade',9,'sha'],
+ ['spade',8,'sha'],
['spade',9,'jiu'],
- ['spade',10,'sha',null,['yingbian_canqu']],
+ ['spade',9,'sha','thunder'],
+ ['spade',9,'sha'],
['spade',10,'bingliang'],
- ['spade',11,'sha',null,['yingbian_canqu']],
+ ['spade',10,'sha','thunder'],
+ ['spade',10,'sha',null,['yingbian_canqu']],
['spade',11,'wuxie',null,['yingbian_kongchao']],
+ ['spade',11,'sha',null,['yingbian_canqu']],
+ ['spade',11,'sha','thunder'],
['spade',12,'zhangba'],
+ ['spade',12,'lulitongxin'],
['spade',12,'tiesuo'],
- ['spade',13,'nanman',null,['yingbian_fujia']],
['spade',13,'wutiesuolian'],
-
- ['heart',1,'taoyuan'],
+ ['spade',13,'wuxie'],
+ ['spade',13,'nanman',null,['yingbian_fujia']],
+ //草花普通
+ ['club',1,'juedou'],
+ ['club',1,'yuxi'],
+ ['club',1,'huxinjing'],
+ ['club',2,'sha'],
+ ['club',2,'tianjitu'],
+ ['club',2,'renwang'],
+ ['club',2,'tengjia'],
+ ['club',3,'sha'],
+ ['club',3,'chiling'],
+ ['club',3,'zhibi'],
+ ['club',4,'sha',null,['yingbian_kongchao']],
+ ['club',4,'sha','thunder'],
+ ['club',4,'zhibi'],
+ ['club',5,'sha',null,['yingbian_kongchao']],
+ ['club',5,'sha','thunder'],
+ ['club',5,'tongque'],
+ ['club',6,'sha','thunder'],
+ ['club',6,'sha',null,['yingbian_kongchao']],
+ ['club',6,'lebu'],
+ ['club',7,'sha','thunder'],
+ ['club',7,'sha'],
+ ['club',7,'nanman',null,['yingbian_fujia']],
+ ['club',8,'sha','thunder'],
+ ['club',8,'sha',null,['yingbian_canqu']],
+ ['club',8,'sha'],
+ ['club',9,'sha'],
+ ['club',9,'jiu'],
+ ['club',9,'jiu'],
+ ['club',10,'bingliang'],
+ ['club',10,'lulitongxin'],
+ ['club',10,'sha'],
+ ['club',11,'sha'],
+ ['club',11,'huoshaolianying'],
+ ['club',11,'sha'],
+ ['club',12,'zhujinqiyuan',null,['yingbian_zhuzhan']],
+ ['club',12,'jiedao',null,['yingbian_fujia']],
+ ['club',12,'tiesuo'],
+ ['club',13,'tiesuo'],
+ ['club',13,'wuxie',null,['guo']],
+ ['club',13,'wuxie',null,['guo']],
+ //红桃普通
['heart',1,'wanjian'],
+ ['heart',1,'taoyuan'],
+ ['heart',1,'lianjunshengyan'],
['heart',2,'shan'],
['heart',2,'chuqibuyi',null,['yingbian_zhuzhan']],
- ['heart',3,'wugu'],
+ ['heart',2,'diaohulishan'],
['heart',3,'chuqibuyi',null,['yingbian_zhuzhan']],
+ ['heart',3,'wugu'],
+ ['heart',3,'jingfanma'],
['heart',4,'tao'],
['heart',4,'sha','fire',['yingbian_canqu']],
+ ['heart',4,'shan'],
['heart',5,'qilin'],
['heart',5,'chitu'],
- ['heart',6,'tao'],
+ ['heart',5,'shan',null,['yingbian_kongchao']],
['heart',6,'lebu'],
+ ['heart',6,'tao'],
+ ['heart',6,'shan',null,['yingbian_kongchao']],
['heart',7,'tao'],
['heart',7,'dongzhuxianji'],
+ ['heart',7,'shan'],
['heart',8,'tao'],
['heart',8,'dongzhuxianji'],
+ ['heart',8,'tao'],
['heart',9,'tao'],
['heart',9,'yuanjiao'],
- ['heart',10,'tao'],
+ ['heart',9,'tao'],
+ ['heart',10,'sha'],
+ ['heart',10,'shan'],
['heart',10,'sha'],
- ['heart',11,'shan'],
['heart',11,'yiyi'],
+ ['heart',11,'tao'],
+ ['heart',11,'sha',null,['yingbian_zhuzhan']],
['heart',12,'tao'],
['heart',12,'sha'],
- ['heart',12,'guohe'],
- ['heart',13,'shan'],
+ ['heart',12,'huoshaolianying'],
['heart',13,'zhuahuang'],
-
- ['diamond',1,'zhuge'],
+ ['heart',13,'shan'],
+ ['heart',13,'huogong',null,['yingbian_zhuzhan']],
+ //方片普通
['diamond',1,'wuxinghelingshan'],
+ ['diamond',1,'zhuge'],
+ ['diamond',1,'xietianzi'],
['diamond',2,'shan'],
['diamond',2,'tao'],
- ['diamond',3,'shan'],
+ ['diamond',2,'tao'],
['diamond',3,'shunshou'],
+ ['diamond',3,'shan'],
+ ['diamond',3,'tao'],
['diamond',4,'yiyi'],
['diamond',4,'sha','fire',['yingbian_canqu']],
+ ['diamond',4,'sha','fire',['yingbian_zhuzhan']],
['diamond',5,'guanshi'],
['diamond',5,'sha','fire'],
- ['diamond',6,'shan'],
+ ['diamond',5,'muniu'],
['diamond',6,'wuliu'],
+ ['diamond',6,'shan'],
+ ['diamond',6,'shan'],
['diamond',7,'shan',null,['yingbian_kongchao']],
['diamond',7,'shan',null,['yingbian_kongchao']],
+ ['diamond',7,'shan'],
['diamond',8,'shan',null,['yingbian_kongchao']],
['diamond',8,'shan',null,['yingbian_kongchao']],
- ['diamond',9,'shan'],
+ ['diamond',8,'sha','fire'],
['diamond',9,'jiu'],
+ ['diamond',9,'shan'],
+ ['diamond',9,'sha','fire'],
['diamond',10,'shan'],
['diamond',10,'sha'],
- ['diamond',11,'shan'],
+ ['diamond',10,'diaohulishan'],
['diamond',11,'sha'],
+ ['diamond',11,'shan'],
+ ['diamond',11,'wuxie',null,['guo']],
['diamond',12,'sha'],
['diamond',12,'sanjian'],
['diamond',12,'wuxie',null,['guo']],
- ['diamond',13,'shan'],
+ ['diamond',12,'fangtian'],
['diamond',13,'zixin'],
-
- ['club',1,'juedou'],
- ['club',1,'huxinjing'],
- ['club',2,'sha'],
- ['club',2,'tengjia'],
- ['club',2,'renwang'],
- ['club',3,'guohe'],
- ['club',3,'zhibi'],
- ['club',4,'sha',null,['yingbian_kongchao']],
- ['club',4,'zhibi'],
- ['club',5,'sha',null,['yingbian_kongchao']],
- ['club',5,'tongque'],
- ['club',6,'lebu'],
- ['club',6,'sha','thunder'],
- ['club',7,'nanman'],
- ['club',7,'sha','thunder'],
- ['club',8,'sha'],
- ['club',8,'sha','thunder'],
- ['club',9,'sha'],
- ['club',9,'jiu'],
- ['club',10,'sha'],
- ['club',10,'bingliang'],
- ['club',11,'sha'],
- ['club',11,'sha'],
- ['club',12,'zhujinqiyuan',null,['yingbian_zhuzhan']],
- ['club',12,'tiesuo'],
- ['club',13,'wuxie',null,['guo']],
- ['club',13,'tiesuo'],
+ ['diamond',13,'shan'],
+ ['diamond',13,'shan'],
+ //特殊
+ ['heart',3,'taipingyaoshu'],
+ ['diamond',4,'dinglanyemingzhu'],
+ ['heart',5,'liulongcanjia'],
+ ['spade',6,'feilongduofeng'],
+ ['club',12,'gz_wenheluanwu'],
+ ['heart',1,'gz_guguoanbang'],
+ ['spade',12,'gz_haolingtianxia'],
+ ['diamond',1,'gz_kefuzhongyuan'],
],
guozhanPile_old:[
['spade',1,'juedou'],
From 9520cc6c30a32da1b11028e276707450ccf97e52 Mon Sep 17 00:00:00 2001
From: copcap
Date: Thu, 4 Apr 2024 23:40:22 +0800
Subject: [PATCH 12/38] =?UTF-8?q?=E6=96=B0=E6=9D=80=E6=9B=B9=E8=8A=B3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
audio/die/caofang.mp3 | Bin 0 -> 50612 bytes
audio/skill/dcjujian1.mp3 | Bin 0 -> 45908 bytes
audio/skill/dcjujian2.mp3 | Bin 0 -> 41348 bytes
audio/skill/dczhimin1.mp3 | Bin 0 -> 56924 bytes
audio/skill/dczhimin2.mp3 | Bin 0 -> 58748 bytes
character/rank.js | 2 +
character/xianding.js | 147 +++++++++++++++++++++++++++++++++++-
image/character/caofang.jpg | Bin 0 -> 94167 bytes
8 files changed, 148 insertions(+), 1 deletion(-)
create mode 100644 audio/die/caofang.mp3
create mode 100644 audio/skill/dcjujian1.mp3
create mode 100644 audio/skill/dcjujian2.mp3
create mode 100644 audio/skill/dczhimin1.mp3
create mode 100644 audio/skill/dczhimin2.mp3
create mode 100644 image/character/caofang.jpg
diff --git a/audio/die/caofang.mp3 b/audio/die/caofang.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..dcead531172d79ee423375121a0f5bbf81df91a2
GIT binary patch
literal 50612
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%0D({_x%3cofIO{D8u2+3(GKy{-6IX9&as0DZ^R
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