Merge pull request #685 from mengxinzxz/PR-Branch

翻译机制优化+技能更新+bugfix
This commit is contained in:
Spmario233 2023-11-29 23:42:07 +08:00 committed by GitHub
commit 6c4400f9da
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 90 additions and 41 deletions

View File

@ -3731,7 +3731,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
list.remove('锁定技');
if(list.length>0) continue;
var info=get.info(skill);
if(info&&(!info.unique||info.gainable)) skills.add(skill);
if(info&&(!info.unique||info.gainable)){
lib.skill.rehuashen.createAudio(name,skill,'jsrg_xushao');
skills.add(skill);
}
}
}
}

View File

@ -1212,7 +1212,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
target.turnOver(false);
},
getNum:function(player){
return Math.max(2,Math.floor(4-player.countCards('e',card=>get.subtype(card)!='equip5')/2));
return player.countCards('e',card=>get.subtype(card)!='equip5')>=3?2:3;
},
ai:{
expose:0.2,
@ -15723,7 +15723,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mbhuiyao:'慧夭',
mbhuiyao_info:'出牌阶段限一次。你可以受到1点无来源伤害然后你选择一名其他角色令其视为对另一名角色造成过1点伤害。',
mbquesong:'雀颂',
mbquesong_info:'一名角色的结束阶段若你于本回合受到过伤害你可以令一名角色选择一项1.摸X张牌并复原武将牌X为4-其装备区非宝物牌牌数的一半X向下取整且至少为22.回复1点体力。',
mbquesong_info:'一名角色的结束阶段若你于本回合受到过伤害你可以令一名角色选择一项1.摸X张牌并复原武将牌X为3若其装备区非宝物牌牌数不小于三张则X为22.回复1点体力。',
xin_yuanshao:'手杀界袁绍',
xin_yuanshao_prefix:'手杀界',
re_baosanniang:'手杀鲍三娘',

View File

@ -579,10 +579,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var top=[],att=get.sgn(get.attitude(player,target));
if(judges.length&&att!=0&&(target!=player||!player.hasWuxie())){
for(var i=0;i<judges.length;i++){
var judge=get.judge(judges[i])*att;
cards.sort((a,b)=>judge(b)-judge(a));
if(judge(cards[0])>0) top.unshift(cards.shift());
else break;
var judge=(card,num)=>get.judge(card)*num;
cards.sort((a,b)=>judge(b,att)-judge(a,att));
if(judge(cards[0],att)<0) break;
else top.unshift(cards.shift());
}
}
return [cards,top];
@ -763,7 +763,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
discard:false,
lose:false,
delay:0,
usable:2,
usable:3,
prompt:'将一张红色牌交给一名角色并令其获得此花色的“天香”标记',
content:function(){
player.give(cards,target);
@ -803,6 +803,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
target.removeSkill(skills);
num+=skills.length;
});
if(get.mode()=='versus'&&_status.mode=='two') num+=2;
player.draw(num);
},
},
@ -5715,7 +5716,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sb_xiaoqiao:'谋小乔',
sb_xiaoqiao_prefix:'谋',
sbtianxiang:'天香',
sbtianxiang_info:'①出牌阶段限两次你可以交给一名没有“天香”标记的其他角色一张红色牌然后令其获得此牌花色的“天香”标记。②当你受到伤害时你可以移去一名角色的“天香”标记若此“天香”标记为红桃你防止此伤害其受到伤害来源对其造成的1点伤害若没有伤害来源则改为无来源伤害方片其交给你两张牌。③准备阶段你移去场上所有的“天香”标记然后摸等量的牌。',
sbtianxiang_info:'①出牌阶段限三次你可以交给一名没有“天香”标记的其他角色一张红色牌然后令其获得此牌花色的“天香”标记。②当你受到伤害时你可以移去一名角色的“天香”标记若此“天香”标记为红桃你防止此伤害其受到伤害来源对其造成的1点伤害若没有伤害来源则改为无来源伤害方片其交给你两张牌。③准备阶段你移去场上所有的“天香”标记然后摸等量的牌。',
sbtianxiang_info_versus_two:'①出牌阶段限三次你可以交给一名没有“天香”标记的其他角色一张红色牌然后令其获得此牌花色的“天香”标记。②当你受到伤害时你可以移去一名角色的“天香”标记若此“天香”标记为红桃你防止此伤害其受到伤害来源对其造成的1点伤害若没有伤害来源则改为无来源伤害方片其交给你两张牌。③准备阶段你移去场上所有的“天香”标记然后摸X张牌X为移去的“天香”标记数+2。',
sb_sp_zhugeliang:'谋诸葛亮',
sb_sp_zhugeliang_prefix:'谋',
sb_zhugeliang:'谋诸葛亮',

View File

@ -10596,6 +10596,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
olzaowang:{
mode:['identity'],
available:function(mode){
if(mode=='identity'&&_status.mode=='purple') return false;
},
audio:2,
enable:'phaseUse',
limited:true,
@ -17668,7 +17671,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
else num=get.population('fan');
}
else if(mode=='versus'){
num=player.getEnemies().length;
if(!_status.mode||_status.mode!='two') num=player.getEnemies().length;
else{
var target=game.findPlayer(x=>{
var num=x.getFriends().length;
return !game.hasPlayer(y=>{
return x!=y&&y.getFriends().length>num;
});
});
num=(target?target.getFriends(true).length:1);
}
}
else{
num=1;
@ -19871,18 +19883,45 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
fenxin:{
mode:['identity'],
mode:['identity','versus'],
available:function(mode){
if(mode=='identity'&&_status.mode=='purple') return false;
if(mode=='versus'&&_status.mode!='two') return false;
},
trigger:{global:'dieAfter'},
trigger:{global:['dieAfter','damageEnd']},
filter:function(event,player){
return ['fan','zhong','nei'].contains(event.player.identity)&&!player.hasSkill('fenxin_'+event.player.identity);
var list=['fan','zhong','nei'];
if(get.mode()=='identity') return event.name=='die'&&list.includes(event.player.identity)&&!player.hasSkill('fenxin_'+event.player.identity);
return event.name=='damage'&&event.player!=player&&list.some(identity=>!player.hasSkill('fenxin_'+identity))&&event.player.getHistory('damage').indexOf(event)==0;
},
forced:true,
logTarget:'player',
content:function(){
player.addSkill('fenxin_'+trigger.player.identity);
player.markSkill('fenxin');
'step 0'
if(get.mode()=='identity'){
event._result={
bool:true,
links:['fenxin_'+trigger.player.identity],
};
}
else{
player.chooseButton([
'焚心:请选择〖竭缘〗的升级方式',
[[
['fenxin_fan','发动〖竭缘〗增加伤害无体力值限制'],
['fenxin_zhong','发动〖竭缘〗减少伤害无体力值限制'],
['fenxin_nei','将〖竭缘〗中的黑色手牌和红色手牌改为一张牌'],
].filter(list=>!player.hasSkill(list[0])),'textbutton']
],true).set('ai',function(button){
return ['fenxin_fan','fenxin_zhong','fenxin_nei'].indexOf(button.link)+1;
});
}
'step 1'
if(result.bool){
var ideitity=result.links[0];
player.addSkill(identity);
player.markSkill('fenxin');
}
},
intro:{
mark:function(dialog,content,player){
@ -19902,9 +19941,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhong:{charlotte:true},
nei:{charlotte:true}
},
ai:{
combo:'jieyuan'
}
ai:{combo:'jieyuan'},
},
xisheng:{
enable:'chooseToUse',
@ -25754,6 +25791,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
hongde_info:'当你一次获得或失去至少两张牌后,你可以令一名其他角色摸一张牌。',
dingpan:'定叛',
dingpan_info_identity:'出牌阶段限X次你可以令一名装备区里有牌的角色摸一张牌然后其选择一项1.令你弃置其装备区里的一张牌2.获得其装备区里的所有牌若如此做你对其造成1点伤害。X为场上存活的反贼数',
dingpan_info_versus_two:'出牌阶段限X次你可以令一名装备区里有牌的角色摸一张牌然后其选择一项1.令你弃置其装备区里的一张牌2.获得其装备区里的所有牌若如此做你对其造成1点伤害。X为场上存活的最大阵营角色数',
dingpan_info_versus:'出牌阶段限X次你可以令一名装备区里有牌的角色摸一张牌然后其选择一项1.令你弃置其装备区里的一张牌2.获得其装备区里的所有牌若如此做你对其造成1点伤害。X为场上存活的敌方角色数',
dingpan_info:'出牌阶段限一次你可以令一名装备区里有牌的角色摸一张牌然后其选择一项1.令你弃置其装备区里的一张牌2.获得其装备区里的所有牌若如此做你对其造成1点伤害。',
weidi:'伪帝',
@ -25842,6 +25880,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
jieyuan_info:'当你对一名其他角色造成伤害时,若其体力值大于或等于你的体力值,你可弃置一张黑色手牌,令此伤害+1当你受到一名其他角色造成的伤害时若其体力值大于或等于你的体力值你可弃置一张红色手牌令此伤害-1。',
fenxin:'焚心',
fenxin_info:'锁定技,一名其他角色死亡后,若其身份为:忠臣,你本局内发动〖竭缘〗减少伤害时无视体力值限制;反贼,你本局内发动〖竭缘〗增加伤害时无视体力值限制;内奸,你本局内选择发动〖竭缘〗的牌时无颜色和区域限制。',
fenxin_info_versus:'锁定技一名其他角色首次受到伤害后你选择本局游戏未选择过的一项1.发动〖竭缘〗减少伤害时无视体力值限制2.发动〖竭缘〗增加伤害时无视体力值限制3.发动〖竭缘〗选择的牌时无颜色和区域限制。',
qingyi:'轻逸',
qingyi1:'轻逸',
qingyi2:'轻逸',

View File

@ -8297,9 +8297,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.addSkill('pingjian_check');
if(!player.storage.pingjian_check) player.storage.pingjian_check={};
},
onremove:function(player){
player.removeSkill('pingjian_check');
},
audio:2,
trigger:{player:['damageEnd','phaseJieshuBegin']},
frequent:true,
@ -8359,12 +8356,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
if(list.length>2) break;
}
if(skills.length) player.chooseControl(skills).set('dialog',['评鉴:请选择尝试发动的技能',[list,'character']]);
if(skills.length){
event.list=list;
player.chooseControl(skills).set('dialog',['评鉴:请选择尝试发动的技能',[list,'character']]);
}
else event.finish();
'step 1'
player.markAuto('pingjian',[result.control]);
player.addTempSkill(result.control);
player.storage.pingjian_check[result.control]=(trigger.name=='damage'?trigger:'phaseJieshu');
var name=event.list.find(name=>lib.character[name][3].includes(result.control));
if(name) lib.skill.rehuashen.createAudio(name,result.control,'xushao');
},
group:'pingjian_use',
phaseUse_special:[],
@ -8442,12 +8444,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
if(list.length>2) break;
}
if(skills.length) player.chooseControl(skills).set('dialog',['评鉴:请选择尝试发动的技能',[list,'character']]);
if(skills.length){
event.list=list;
player.chooseControl(skills).set('dialog',['评鉴:请选择尝试发动的技能',[list,'character']]);
}
else event.finish();
'step 1'
player.markAuto('pingjian',[result.control]);
player.addTempSkill(result.control);
player.storage.pingjian_check[result.control]='phaseUse';
var name=event.list.find(name=>lib.character[name][3].includes(result.control));
if(name) lib.skill.rehuashen.createAudio(name,result.control,'xushao');
},
ai:{order:12,result:{player:1}},
},
@ -8455,7 +8462,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
charlotte:true,
trigger:{player:['useSkill','logSkillBegin']},
filter:function(event,player){
if(get.info(event.skill).charlotte) return false;
var info=get.info(event.skill);
if(info&&info.charlotte) return false;
var skill=event.sourceSkill||event.skill;
return player.storage.pingjian_check[skill];
},

View File

@ -43166,25 +43166,23 @@ new Promise(resolve=>{
lib.translate[`${iInfo}_origin`]=lib.translate[iInfo];
if(!lib.config.vintageSkills.contains(i)) lib.translate[iInfo]=lib.translate[`${iInfo}_alter`];
}
else if(_status.mode&&lib.translate[iInfo+'_'+mode+'_'+_status.mode]) lib.translate[iInfo]=lib.translate[iInfo+'_'+mode+'_'+_status.mode];
else if(lib.translate[`${iInfo}_${mode}`]) lib.translate[iInfo]=lib.translate[`${iInfo}_${mode}`];
else if(lib.translate[`${iInfo}_zhu`]&&(mode=='identity'||mode=='guozhan'&&_status.mode=='four')) lib.translate[iInfo]=lib.translate[`${iInfo}_zhu`];
else if(lib.translate[`${iInfo}_combat`]&&get.is.versus()) lib.translate[iInfo]=lib.translate[`${iInfo}_combat`];
if(info.forbid&&info.forbid.contains(mode)){
lib.skill[i]={};
var deleteSkill=function(skill,iInfo){
var skillx={},info=get.info(skill);
if(info){
['audio','audioname','audioname2'].forEach(name=>{
if(info[name]) skillx[name]=info[name];
});
}
lib.skill[skill]=skillx;
if(lib.translate[iInfo]) lib.translate[iInfo]='此模式下不可用';
if(lib.dynamicTranslate[i]) lib.dynamicTranslate[i]=()=>'此模式下不可用';
return;
}
if(info.mode&&info.mode.contains(mode)==false){
lib.skill[i]={};
if(lib.translate[iInfo]) lib.translate[iInfo]='此模式下不可用';
if(lib.dynamicTranslate[i]) lib.dynamicTranslate[i]=()=>'此模式下不可用';
return;
}
if(info.available&&info.available(mode)==false){
lib.skill[i]={};
if(lib.translate[iInfo]) lib.translate[iInfo]='此模式下不可用';
if(lib.dynamicTranslate[i]) lib.dynamicTranslate[i]=()=>'此模式下不可用';
if(lib.dynamicTranslate[skill]) lib.dynamicTranslate[skill]=()=>'此模式下不可用';
};
if((info.forbid&&info.forbid.contains(mode))||(info.mode&&info.mode.contains(mode)==false)||(info.available&&info.available(mode)==false)){
deleteSkill(i,iInfo);
return;
}
if(info.viewAs&&typeof info.viewAs!='function'){
@ -43192,8 +43190,7 @@ new Promise(resolve=>{
name:info.viewAs
};
if(!lib.card[info.viewAs.name]){
lib.skill[i]={};
lib.translate[iInfo]='技能不可用';
deleteSkill(i,iInfo);
return;
}
if(info.ai==undefined) info.ai={};