Merge pull request #330 from mengxinzxz/PR-Branch

张昭+昂扬技+武将资料页bug修复
This commit is contained in:
Spmario233 2023-09-14 21:15:08 +08:00 committed by GitHub
commit e8844d81c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 179 additions and 3 deletions

View File

@ -20,6 +20,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
tw_zhangzhao:['male','wu',3,['twlijian','twchungang'],[]],
tw_ol_sunjian:['male','wu','4/5',['gzyinghun','wulie','twpolu'],['zhu']],
tw_menghuo:['male','qun',4,['huoshou','rezaiqi','twqiushou'],['zhu']],
ol_liuyu:['male','qun',2,['zongzuo','zhige','twchongwang'],['zhu']],
@ -161,6 +162,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xiahouzie:'夏侯紫萼,游卡桌游《三国杀阵面对决》中虚构的人物。幼年因天天帮病种的母亲采紫萼得其名。亲眼目睹母亲被宦官所杀,愤怒之下夺过佩剑斩下宦官的头颅。被神秘人所救,发现了自己的身世,决心与宦官争斗到底。后再闯荡江湖的过程中,与夏侯惇义结金兰,以夏侯家姓氏称呼。',
yangang:'严纲163~191年东汉末年公孙瓒部下的冀州刺史。汉献帝初平二年191年袁绍与公孙瓒在界桥交战严纲为袁绍部下麹义所斩。',
gongsunfan:'公孙范辽西令支今河北迁安人。东汉末年武将公孙瓒从弟官至勃海太守。公孙瓒起兵攻打袁绍之时袁绍畏惧公孙瓒的势力将自己的勃海太守印绶给予公孙范意图和解结果公孙范反而起勃海之兵帮助公孙瓒。初平二年191年公孙范以勃海兵助公孙瓒率二万人大破青、徐黄巾军。最后于界桥之战与公孙瓒一同败走。',
zhangzhao:'张昭156年236年字子布。徐州彭城县今江苏省徐州市人。汉末三国时期孙吴政权重臣。东汉末年张昭为避战乱而南渡至扬州。孙策创业时任命其为长史、抚军中郎将将文武之事都委任于张昭。孙策临终前将其弟孙权托付给张昭张昭率群僚辅立孙权并安抚百姓、讨伐叛军与周瑜等辅助孙权稳定局势。孙权每次出征常留张昭镇守后方领幕府事并敬称他为“张公”。赤壁之战时张昭鉴于曹操势大持主降论从而被排挤出军政决策中心。孙权代理车骑将军时任命张昭为军师。孙权被封为吴王后任绥远将军封由拳侯。此后曾参与撰定朝仪。孙权两次要设立丞相时众人都推举张昭孙权以张昭敢于直谏、性格刚直为由而不用他先后用孙邵、顾雍。黄龙元年229年孙权称帝张昭以年老多病为由上还官位及所统领部属改拜辅吴将军、班亚三司改封娄侯。晚年时一度不参与政事在家著书即使偶有参加朝议也常与孙权产生激烈冲突。嘉禾五年236年张昭去世享年八十一岁谥号“文”。张昭容貌严正敢于直言谏诤一生以忠于孙氏基业为任但因其与孙权在个性、军政策略等方面的深层矛盾使其以“入宫则拜孤出宫则拜君”的地位却终身不得任丞相。著有《春秋左氏传解》及《论语注》今皆佚失。',
zhanghong:'张纮153年212年字子纲徐州广陵江苏省扬州市广陵区人人。东汉末年文学家、官员和张昭一起合称“二张”。曾被大将军何进、太尉朱儁、司空荀爽辟为掾属皆不就避难江东。孙策平定江东前亲自多次登门邀请张纮出仕为官。孙权即位时建议孙权迁都秣陵。建安十七年212年病逝时年六十岁孙权为之流涕。',
},
card:{
dz_mantianguohai:{
@ -274,6 +277,166 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//张昭
twlijian:{
getCards:function(event){
var cards=[];
game.countPlayer2(function(current){
current.checkHistory('lose',function(evt){
if(evt.position==ui.discardPile&&evt.getParent('phaseDiscard')==event) cards.addArray(evt.cards);
})
});
game.checkGlobalHistory('cardMove',function(evt){
if(evt.name=='cardsDiscard'&&evt.getParent('phaseDiscard')==event) cards.addArray(evt.cards);
});
return cards;
},
audio:2,
sunbenSkill:true,
trigger:{global:'phaseDiscardEnd'},
filter:function(event,player){
if(player.hasSkill('twlijian_sunben')) return false;
if(event.player!=player&&event.player.isIn()){
return lib.skill.twlijian.getCards(event).length;
}
return false;
},
direct:true,
content:function(){
'step 0'
var cards=lib.skill.twlijian.getCards(trigger),target=trigger.player;
event.cards=cards;event.target=target;
player.chooseButton([
get.prompt('twlijian',target),
'<span class="text center">选择任意张牌令其获得然后你获得剩余的牌若其获得的牌数大于你则你可以对其造成1点伤害</span>',
cards,
],[1,Infinity]).set('ai',function(button){
var player=_status.event.player;
var target=_status.event.getTrigger().player;
var att=get.attitude(player,target);
var cards=ui.selected.cards;
var cardx=_status.event.cards;
var card=button.link;
switch(get.sgn(att)){
case 1:
return 1;
break;
case 0:
if(!cards.length&&cardx.length>1) return 1/(get.value(card)||0.5);
return 0;
break;
case -1:
var num=Math.ceil(cardx.length/2)+(cardx.length%2==0?1:0);
if(num>1&&player.hasSkill('twchungang')) num--;
if(get.damageEffect(target,player,player)<=0||num>2){
if(!cards.length&&cardx.length>1) return 1/(get.value(card)||0.5);
return 0;
}
else{
var numx=0;
numx+=num;
if(num>0&&player.hasSkill('twchungang')) numx++;
if(cards.length<numx) return 1/(get.value(card)||0.5);
return 0;
}
break;
}
}).setHiddenSkill('twlijian').set('cards',cards);
'step 1'
if(result.bool){
player.logSkill('twlijian',target);
player.addSkill('twlijian_sunben');
target.gain(result.links,'gain2');
cards.removeArray(result.links);
player.gain(cards,'gain2');
if(result.links.length>cards.length){
player.chooseBool('是否对'+get.translation(target)+'造成1点伤害').set('choice',get.damageEffect(target,player,player)>0);
}
else event.finish();
}
else event.finish();
'step 2'
if(result.bool){
player.line(target);
target.damage();
}
},
subSkill:{
sunben:{
charlotte:true,
init:function(player){
player.storage.twlijian_sunben=0;
},
onremove:true,
mark:true,
intro:{
markcount:function(num){
return (num||0).toString();
},
content:'弃牌堆进入牌进度:#/8',
},
trigger:{global:['loseAfter','cardsDiscardAfter','loseAsyncAfter','equipAfter']},
filter:function(event,player){
var cards=event.getd();
if(!cards.length) return false;
var list=cards.slice();
game.checkGlobalHistory('cardMove',function(evt){
if(evt==event||evt.getParent()==event||(evt.name!='lose'&&evt.name!='cardsDiscard')) return false;
if(evt.name=='lose'&&evt.position!=ui.discardPile) return false;
list.removeArray(evt.cards);
},event);
return list.length>0;
},
forced:true,
popup:false,
firstDo:true,
content:function(){
'step 0'
var cards=trigger.getd().slice();
game.checkGlobalHistory('cardMove',function(evt){
if(evt==trigger||evt.getParent()==trigger||(evt.name!='lose'&&evt.name!='cardsDiscard')) return false;
if(evt.name=='lose'&&evt.position!=ui.discardPile) return false;
cards.removeArray(evt.cards);
},trigger);
player.addMark('twlijian_sunben',cards.length,false);
'step 1'
if(player.countMark('twlijian_sunben')>=8){
player.removeSkill('twlijian_sunben');
player.popup('力荐');
game.log(player,'恢复了技能','#g【力荐】');
}
},
},
},
},
twchungang:{
audio:2,
trigger:{global:['gainAfter','loseAsyncAfter']},
filter:function(event,player){
var evt=event.getParent('phaseDraw');
return game.hasPlayer(target=>{
if(target==player||(evt&&evt.player==target)) return false;
return event.getg(target).length>1&&target.countCards('he');
});
},
forced:true,
logTarget:function(event,player){
var evt=event.getParent('phaseDraw');
return game.filterPlayer(target=>{
if(target==player||evt&&evt.player==target) return false;
return event.getg(target).length>1&&target.countCards('he');
});
},
content:function(){
for(var i of lib.skill.twchungang.logTarget(trigger,player)){
i.chooseToDiscard('he',true);
}
},
ai:{
//能和一技能有配合但仍旧搅shi棍技能
threaten:3,
},
},
//海外主公技
//张鲁
twshijun: {
@ -14169,6 +14332,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ol_liuyu:'TW刘虞',
twchongwang:'崇望',
twchongwang_info:'主公技,其他群势力角色的出牌阶段开始时,其可以交给你一张牌,然后你与其使用【杀】或伤害性锦囊牌指定目标时不能指定对方为目标直至你的下回合结束(每名角色限发动一次)。',
tw_zhangzhao:'张昭',
twlijian:'力荐',
twlijian_info:'昂扬技。其他角色的弃牌阶段结束时你可以令其获得任意本阶段进入弃牌堆的牌然后你获得其余的牌若其得到的牌数大于你你可以对其造成1点伤害。<br>激昂:八张牌进入弃牌堆。',
twchungang:'纯刚',
twchungang_info:'锁定技。一名其他角色于摸牌阶段外得到超过一张牌时,你令其弃置一张牌。',
tw_zhanghong:'张纮',
tw_mobile:'海外服·稀有专属',
tw_yunchouzhi:'运筹帷幄·智',

View File

@ -7110,6 +7110,7 @@
'<li>妄行一种特殊的选项。若一名角色拥有带有“妄行”的技能则该技能触发时你须选择声明一个数字XX∈{1,2,3,4}技能后续中的X即为你选择的数字。选择完毕后你获得如下效果回合结束时你选择一项1.弃置X张牌2.减1点体力上限。'+
'<li>搏击:若一名角色拥有带有“搏击”的技能,则当该搏击技能触发时,若本次技能的目标角色在你攻击范围内,且你在其攻击范围内,则你执行技能主体效果时,同时额外执行“搏击”后的额外效果。'+
'<li>游击:若一名角色拥有带有“游击”的技能,则当该游击技能执行至“游击”处时,若本次技能的目标角色在你的攻击范围内,且你不在其攻击范围内,则你可以执行“游击”后的额外效果。'+
'<li>激昂:一名角色发动“昂扬技”标签技能后,此技能失效,直至从此刻至满足此技能“激昂”条件后。'+
''
},
path:{},
@ -53002,9 +53003,14 @@
if(lib.config.show_characternamepinyin){
var charactername=get.rawName(name);
var characterpinyin=get.pinyin(charactername);
var charactersex=get.translation(lib.character[name][0]);
var charactergroup=get.translation(lib.character[name][1]);
var characterhp=lib.character[name][2];
var nameinfo=lib.character[name];
if(!nameinfo){
const pack=Object.keys(lib.characterPack).find(pack=>Object.keys(lib.characterPack[pack]).contains(name));
if(pack) nameinfo=lib.characterPack[pack][name];
}
var charactersex=get.translation(nameinfo[0]);
var charactergroup=get.translation(nameinfo[1]);
var characterhp=nameinfo[2];
var characterintroinfo=get.characterIntro(name);
intro.innerHTML='<span style="font-weight:bold;margin-right:5px;line-height:2">'+charactername+'</span>'+'<span style="font-size:14px;font-family:SimHei,STHeiti,sans-serif">'+'['+characterpinyin+']'+'</span>'+' | '+charactersex+' | '+charactergroup+' | '+characterhp+'<br>'+characterintroinfo;
}
@ -54257,6 +54263,7 @@
if(info.lordSkill) list.add('君主技');
if(info.chargingSkill) list.add('蓄能技');
if(info.charlotte) list.add('Charlotte');
if(info.sunbenSkill) list.add('昂扬技');
if(info.categories) list.addArray(info.categories(skill,player));
return list;
},