程秉、郤正、神邓艾、董翓、朱灵、董绾技能调整

This commit is contained in:
mengxinzxz 2024-01-03 20:02:49 +08:00
parent 70a42e5065
commit eb96715ba2
4 changed files with 75 additions and 126 deletions

View File

@ -1131,11 +1131,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player:'damageEnd',
source:'damageSource',
},
forced:true,
filter:function(event,player,name){
var key=(name=='damageEnd'?'damage':'sourceDamage');
return player.getAllHistory(key).indexOf(event)%2==1;
filter:function(event,player){
return game.getGlobalHistory('damage',evt=>evt.player==player||(evt.source&&evt.source==player)).indexOf(event)%2==1;
},
forced:true,
content:function(){
'step 0'
var tags=['dctuoyu_fengtian','dctuoyu_qingqu','dctuoyu_junshan'];
@ -1158,20 +1157,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
dcqijing:{
derivation:'dccuixin',
audio:2,
trigger:{global:'phaseEnd'},
forced:true,
juexingji:true,
derivation:'dccuixin',
skillAnimation:true,
animationColor:'orange',
filter:function(event,player){
return player.getStorage('dctuoyu').length==3;
},
forced:true,
juexingji:true,
skillAnimation:true,
animationColor:'orange',
content:function(){
'step 0'
player.awakenSkill('dcqijing');
player.loseMaxHp();
player.addSkillLog('dccuixin');
'step 1'
if(game.countPlayer()>2){
if(player==trigger.player&&!trigger.skill){
@ -1202,7 +1202,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},player,target);
}
'step 3'
player.addSkill('dccuixin');
player.insertPhase();
},
},
@ -7977,9 +7976,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dctuoyu_junshan_tag:'<span data-nature="thundermm">峻山</span>',
dctuoyu_info:'①锁定技。当你使用拥有对应副区域标签的牌时,你令此牌获得对应效果。<br>丰田:伤害值或回复值+1清渠无次数和距离限制峻山不可被响应。②出牌阶段开始时和结束时你给你的手牌分配对应的已激活副区域标签每个区域至多五张。',
dcxianjin:'险进',
dcxianjin_info:'锁定技。当你造成或受到伤害后,若这是你本局游戏内第偶数次造成或受到伤害,则你激活一个副区域标签并摸X张牌X为你已激活的副区域数若你的手牌数为全场最多则改为摸一张牌。',
dcxianjin_info:'锁定技。当你造成或受到两次伤害后你激活一个副区域标签并摸X张牌X为你已激活的副区域数若你的手牌数为全场最多则改为摸一张牌。',
dcqijing:'奇径',
dcqijing_info:'觉醒技。一名角色的回合结束后若你的三个副区域标签均被激活则你减1点体力上限将座位移动至一名其他角色的上家之后,获得〖摧心〗和一个额外回合。',
dcqijing_info:'觉醒技。一名角色的回合结束后若你的三个副区域标签均被激活则你减1点体力上限获得〖摧心〗,将座位移动至一名其他角色的上家之后,然后执行一个额外回合。',
dccuixin:'摧心',
dccuixin_info:'当你不因此技能使用的基本牌或普通锦囊牌结算结束后,若此牌的目标于你使用此牌指定第一个目标时包含你的上家或下家,则你可以视为对下家或上家再使用一张牌名和元素相同的牌。',
shen_dianwei:'神典韦',

View File

@ -2074,8 +2074,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
direct:true,
content:function(){
'step 0'
if(target) event._result={bool:true,targets:[target]};
else player.chooseTarget(get.prompt2('dcshengdu'),lib.filter.notMe).set('ai',target=>{
player.chooseTarget(get.prompt2('dcshengdu'),lib.filter.notMe).set('ai',target=>{
var player=_status.event.player;
var att=get.attitude(player,target);
var eff=get.effect(target,{
@ -2085,56 +2084,37 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var value=att/5;
if(value<0) value=-value/1.3;
value=Math.max(value-eff/20,0.01);
var skills=target.getSkills(null,false,false);
for(var skill of skills){
var str=get.skillInfoTranslation(skill,target);
if(/摸牌阶段[^少放弃]{0,8}摸/.test(str)) value+=Math.random()/2+1.5;
}
return value;
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('dcshengdu',target);
target.addSkill('dcshengdu_effect');
target.markAuto('dcshengdu_effect',[player]);
target.addMark('dcshengdu',1);
}
},
intro:{content:'mark'},
group:'dcshengdu_effect',
subSkill:{
effect:{
trigger:{player:'gainAfter'},
charlotte:true,
forced:true,
popup:false,
audio:'dcshengdu',
trigger:{global:'gainAfter'},
filter:function(event,player){
return event.getParent(2).name=='phaseDraw';
return event.getParent(2).name=='phaseDraw'&&event.player.hasMark('dcshengdu');
},
forced:true,
logTarget:'player',
content:function(){
'step 0'
var targets=player.getStorage('dcshengdu_effect');
event.targets=targets.sortBySeat(player);
'step 1'
var target=targets.shift();
if(target.isIn()){
target.logSkill('dcshengdu_effect',player);
target.draw(trigger.cards.length);
}
if(targets.length) event.redo();
'step 2'
player.removeSkill('dcshengdu_effect');
game.delayx();
var num=trigger.player.countMark('dcshengdu');
player.draw(num);
trigger.player.removeMark('dcshengdu',num);
},
marktext:'绞',
intro:{
content:'下个摸牌阶段得到牌后,$摸等量的牌'
}
}
}
},
dcjieling:{
audio:2,
enable:'phaseUse',
usable:1,
position:'hs',
viewAs:{
name:'sha',
@ -2142,7 +2122,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
filterCard:function(card,player){
if(ui.selected.cards.length){
return get.color(card)!=get.color(ui.selected.cards[0]);
return get.suit(card)!=get.suit(ui.selected.cards[0]);
}
return true;
},
@ -2154,6 +2134,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
precontent:function(){
player.addTempSkill('dcjieling_after');
event.getParent().addCount=false;
player.addTempSkill('dcjieling_count','phaseUseAfter');
player.markAuto('dcjieling_count',event.result.cards.reduce((list,card)=>list.add(get.suit(card,player)),[]));
},
ai:{
order:function(item,player){
@ -2192,10 +2174,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
else{
for(var target of targets){
var next=game.createEvent('dcshengdu',false);
next.player=player;
next.target=target;
next.setContent(lib.skill.dcshengdu.content);
target.addMark('dcshengdu',1);
}
}
}
@ -11328,9 +11307,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcguangshi_info:'锁定技。准备阶段若所有其他角色均有“信众”你摸两张牌并失去1点体力。',
dongwan:'董绾',
dcshengdu:'生妒',
dcshengdu_info:'回合开始时,你可以选择一名其他角色。当其于其的下个摸牌阶段得到牌后,你摸等量的牌。',
dcshengdu_info:'回合开始时,你可以选择一名其他角色令其获得1枚“生妒”标记。有“生妒”标记的角色于摸牌阶段得到牌后你摸X张牌然后其移去所有“生妒”标记X为其拥有的“生妒”标记数。',
dcjieling:'介绫',
dcjieling_info:'出牌阶段限一次。你可以将两张颜色不同的手牌当无距离限制且无任何次数限制的【杀】使用。然后若此【杀】造成了伤害所有目标角色失去1点体力未造成伤害你对所有目标角色依次发动一次〖生妒〗。',
dcjieling_info:'出牌阶段每种花色限一次,你可以将两张花色不同的手牌当无距离限制且无任何次数限制的【杀】使用。然后若此【杀】造成了伤害所有目标角色失去1点体力未造成伤害所有目标角色依次获得1枚“生妒”标记。',
yuanyin:'袁胤',
dcmoshou:'墨守',
dcmoshou_info:'当你成为其他角色使用的黑色牌的目标后你可以摸X张牌X为你本局游戏此前发动过此技能的次数÷3的余数+1。',

View File

@ -795,6 +795,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(!player.isPhaseUsing()) return;
if(card.name=='sha'&&!player.getStorage('dcjiaoxia_mark').includes(target)) return true;
},
targetInRange:function(card,player,target){
if(!player.isPhaseUsing()) return;
if(card.name=='sha'&&!player.getStorage('dcjiaoxia_mark').includes(target)) return true;
},
},
audio:2,
locked:false,
@ -881,9 +885,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(!game.online&&!event.dchumei_num){
var player=event.player;
var evtx=event.getParent('phaseUse');
event.set('dchumei_num',player.getHistory('sourceDamage',function(evt){
event.set('dchumei_num',player.getHistory('sourceDamage',evt=>{
return evt.getParent('phaseUse')==evtx;
}).length);
}).reduce((sum,evt)=>sum+evt.num,0));
}
},
audio:2,
@ -3151,11 +3155,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:'使用基本牌无距离限制,且伤害值和回复值基数+1',
},
trigger:{source:['damageBegin1','recoverBegin']},
forced:true,
filter:function(event,player){
var evt=event.getParent();
return evt.type=='card'&&get.type(evt.card,false)=='basic';
},
forced:true,
logTarget:'player',
content:function(){
trigger.num++;
@ -3177,10 +3181,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:'使用锦囊牌时摸一张牌,且锦囊牌不计入本回合的手牌上限',
},
trigger:{player:'useCard'},
forced:true,
filter:function(event,player){
return get.type2(event.card)=='trick';
},
forced:true,
content:function(){
player.draw();
},
@ -3198,13 +3202,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
marktext:'装',
mark:true,
intro:{
content:'使用装备牌时,可弃置一名其他角色的一张牌',
content:'有装备牌进汝你的装备时,可弃置一名其他角色的一张牌',
},
trigger:{player:'useCard'},
direct:true,
trigger:{player:'equipAfter'},
filter:function(event,player){
return get.type(event.card)=='equip'&&game.hasPlayer((target)=>(target!=player&&target.countDiscardableCards(player,'he')>0));
return game.hasPlayer((target)=>(target!=player&&target.countDiscardableCards(player,'he')>0));
},
direct:true,
content:function(){
'step 0'
player.chooseTarget('战意:是否弃置一名其他角色的一张牌?',function(card,player,target){
@ -10890,9 +10894,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
jiaojie:'狡黠',
jiaojie_info:'锁定技,你的红色牌不计入手牌上限。你使用黑色牌无距离和次数限制。',
dcjiaoxia:'狡黠',
dcjiaoxia_info:'①出牌阶段开始时,你可以令自己的所有手牌于此阶段均视为【杀】。若如此做,你使用以此法转化的【杀】造成伤害后,你可以视为使用此牌对应的原卡牌。②出牌阶段,你对你本阶段未使用过【杀】的角色使用【杀】无次数限制。',
dcjiaoxia_info:'①出牌阶段开始时,你可以令自己的所有手牌于此阶段均视为【杀】。若如此做,你使用以此法转化的【杀】造成伤害后,你可以视为使用此牌对应的原卡牌。②出牌阶段,你对你本阶段未使用过【杀】的角色使用【杀】无距离和次数限制。',
dchumei:'狐魅',
dchumei_info:'出牌阶段各限一次你可以选择一名体力值不大于X的角色令其①摸一张牌。②交给你一张牌。③回复1点体力。X为你本阶段造成伤害的次数)',
dchumei_info:'出牌阶段各限一次你可以选择一名体力值不大于X的角色令其①摸一张牌。②交给你一张牌。③回复1点体力。X为你本阶段造成伤害数)',
buchen:'不臣',
buchen_info:'隐匿技,你于其他角色的回合登场时,可获得当前回合角色的一张牌。',
smyyingshi:'鹰视',
@ -11060,7 +11064,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
qibie_info:'一名角色死亡后若你有手牌且这些手牌均可被弃置则你可以弃置所有手牌然后回复1点体力并摸X+2张牌X为你弃置的牌数。',
dc_zhuling:'朱灵',
dczhanyi:'战意',
dczhanyi_info:'出牌阶段开始时,你可以弃置所有基本牌/锦囊牌/装备牌,然后获得另外两种类型的牌对应的效果直到回合结束:基本牌、你使用基本牌无距离限制,且伤害值和回复值基数+1锦囊牌、你使用锦囊牌时摸一张牌且锦囊牌不计入手牌上限装备牌你使用装备牌时,你可弃置一名其他角色的一张牌。',
dczhanyi_info:'出牌阶段开始时,你可以弃置所有基本牌/锦囊牌/装备牌,然后获得另外两种类型的牌对应的效果直到你的下个回合开始:基本牌、你使用基本牌无距离限制,且伤害值和回复值基数+1锦囊牌、你使用锦囊牌时摸一张牌且锦囊牌不计入手牌上限装备牌当装备牌进入你的装备区时,你可弃置一名其他角色的一张牌。',
yanrou:'阎柔',
choutao:'仇讨',
choutao_info:'当你使用【杀】时,或成为【杀】的目标后,你可以弃置此【杀】使用者的一张牌,令此【杀】不可被响应。若你是此【杀】的使用者,则你令此【杀】不计入次数限制。',

View File

@ -4363,68 +4363,30 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(!event.isFirstTarget) return false;
if(!event.targets||!event.targets.length) return false;
var evt=lib.skill.dcjianying.getLastUsed(player,event.getParent());
if(!evt||!evt.targets||!evt.targets.length||evt.targets.length!=event.targets.length) return false;
var targetsx=event.targets.slice();
var targetsy=evt.targets.slice();
return targetsx.slice().removeArray(targetsy).length==0&&targetsy.slice().removeArray(targetsx).length==0;
if(!evt||!evt.targets||!evt.targets.length) return false;
return event.targets.some(target=>evt.targets.includes(target));
},
frequent:true,
locked:false,
content:function(){
player.draw(trigger.targets.length);
var evt=lib.skill.dcjianying.getLastUsed(player,trigger.getParent());
player.draw(trigger.targets.filter(target=>evt.targets.includes(target)).length);
},
locked:false,
mod:{
aiOrder:function(player,card,num){
var evt=lib.skill.dcjianying.getLastUsed(player);
if(!evt) return;
var targets=evt.targets;
if(!targets.length) return;
var select=get.select(_status.event.selectTarget);
if(select[0]==-1){
var targetsx=game.filterPlayer(current=>player.canUse(card,current));
if(targetsx.length!=targets.length) return;
}
else if(targets.length>=select[0]&&targets.length<=select[1]){
var eff=0;
for(var i of targets){
eff+=get.effect(i,card,player,player);
}
if(eff<0) return;
}
return num+10;
var evt=player.getLastUsed();
if(evt&&evt.targets&&evt.targets.length&&game.hasPlayer(current=>{
return evt.targets.includes(current)&&player.canUse(card,current)&&get.effect(current,card,player,player)>0;
})) return num+10;
},
},
ai:{
threaten:2.5,
effect:{
player:function(card,player,target){
if(player._dcdanyi_aiChecking) return;
player._dcdanyi_aiChecking=true;
var evt=lib.skill.dcjianying.getLastUsed(player),targets;
if(evt){
targets=evt.targets;
var select=get.select(_status.event.selectTarget);
if(select[0]==-1){
var targetsx=game.filterPlayer(current=>player.canUse(card,current));
if(targetsx.length!=targets.length){
delete player._dcdanyi_aiChecking;
return;
}
}
else if(targets.length>=select[0]&&targets.length<=select[1]){
var eff=0;
for(var i of targets){
eff+=get.effect(i,card,player,player);
}
if(eff<0){
delete player._dcdanyi_aiChecking;
return;
}
}
}
delete player._dcdanyi_aiChecking;
if((targets||[]).includes(target)) return [1,1];
}
var evt=player.getLastUsed();
if(evt&&evt.targets.includes(target)) return [1.5,0];
},
},
},
},
@ -4436,14 +4398,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(ui.selected.targets.length){
if(ui.selected.targets[0].hp==target.hp) return false;
}
return target.hp!=player.hp;
return target!=player;
},
selectTarget:[1,2],
complexTarget:true,
multiline:true,
content:function(){
'step 0'
target.chooseToDiscard(get.translation(player)+'对你发动了【文灿】','是否弃置两张花色不同的牌?或者点击“取消”,令其本回合对你使用牌无次数限制','he',2,(card,player)=>{
target.chooseToDiscard(get.translation(player)+'对你发动了【文灿】','是否弃置两张花色不同的牌?或者点击“取消”,令其本回合对你使用牌无距离和次数限制','he',2,(card,player)=>{
if(!ui.selected.cards.length) return true;
var suit=get.suit(card,player);
for(var i of ui.selected.cards){
@ -4454,7 +4416,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(_status.event.nofear) return 0;
return 5-get.value(card);
}).set('nofear',player.countCards('hs',card=>{
return get.tag(card,'damage')&&player.canUse(card,target)&&get.effect(target,card,player,target)<=0;
return get.tag(card,'damage')&&player.canUse(card,target,false)&&get.effect(target,card,player,target)<=0;
})<target.hp);
'step 1'
if(!result.bool){
@ -4467,11 +4429,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
charlotte:true,
onremove:true,
marktext:'灿',
intro:{content:'对$使用牌无次数限制'},
intro:{content:'对$使用牌无距离和次数限制'},
mod:{
cardUsableTarget:function(card,player,target){
if(player.getStorage('dcwencan_paoxiao').includes(target)) return true;
},
targetInRange:function(card,player,target){
if(player.getStorage('dcwencan_paoxiao').includes(target)) return true;
},
}
}
},
@ -5849,8 +5814,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcjingzao:{
audio:2,
enable:'phaseUse',
filter:function(event,player) {
return !player.hasSkill('dcjingzao_ban')&&game.hasPlayer(current=>lib.skill.dcjingzao.filterTarget(null,player,current));
filter:function(event,player){
if(3+player.countMark('dcjingzao_add')-player.countMark('dcjingzao_ban')<=0) return false;
return game.hasPlayer(current=>lib.skill.dcjingzao.filterTarget(null,player,current));
},
filterTarget:function(card,player,target){
return player!=target&&!target.hasSkill('dcjingzao_temp');
@ -5858,7 +5824,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
'step 0'
target.addTempSkill('dcjingzao_temp');
var cards=game.cardsGotoOrdering(get.cards(3+player.countMark('dcjingzao_add'))).cards;
var cards=game.cardsGotoOrdering(get.cards(3+player.countMark('dcjingzao_add')-player.countMark('dcjingzao_ban'))).cards;
event.cards=cards;
game.log(player,'亮出了',event.cards);
event.videoId=lib.status.videoId++;
@ -5909,6 +5875,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
if(cards2.length) player.gain(cards2,'gain2');
player.addTempSkill('dcjingzao_ban');
player.addMark('dcjingzao_ban',cards2.length,false);
}
},
ai:{
@ -5919,7 +5886,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
subSkill:{
add:{charlotte:true,onremove:true},
ban:{charlotte:true},
ban:{charlotte:true,onremove:true},
temp:{charlotte:true}
}
},
@ -5932,7 +5899,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return current.hasHistory('useCard',evt=>{
return evt.card.name==event.card.name&&evt!=event.getParent()&&evt.targets&&evt.targets.includes(player);
});
});
})&&(event.card.name=='sha'||get.type(event.card)=='trick');
},
content:function(){
trigger.getParent().excluded.add(player);
@ -5943,7 +5910,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(player===target) return;
if(game.hasPlayer2(current=>{
return current.hasHistory('useCard',evt=>evt.card.name==card.name&&evt.targets&&evt.targets.includes(player));
})) return 'zeroplayertarget';
})&&(card.name=='sha'||get.type(card)=='trick')) return 'zeroplayertarget';
}
}
}
@ -13705,9 +13672,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcshouze_info:'锁定技。结束阶段若你有“绞”你弃1枚“绞”随机获得弃牌堆中的一张黑色牌失去1点体力。',
chengbing:'程秉',
dcjingzao:'经造',
dcjingzao_info:'出牌阶段每名角色限一次你可以选择一名其他角色并亮出牌堆顶三张牌其选择一项1.弃置一张牌名与这些牌的其中一张牌名相同的牌,然后你〖经造〗本回合亮出的牌数+12.令你随机获得这些牌中每种牌名的牌各一张,然后你本回合不能再发动〖经造〗。',
dcjingzao_info:'出牌阶段每名角色限一次你可以选择一名其他角色并亮出牌堆顶三张牌其选择一项1.弃置一张牌名与这些牌的其中一张牌名相同的牌,然后你本回合发动〖经造〗亮出的牌数+12.令你随机获得这些牌中每种牌名的牌各一张,然后你本回合发动〖经造〗亮出的牌数-XX为你获得的牌数。',
dcenyu:'恩遇',
dcenyu_info:'锁定技。当你成为其他角色使用牌的目标后,若你本回合成为过此牌名的牌的目标,此牌对你无效。',
dcenyu_info:'锁定技。当你成为其他角色使用【杀】或普通锦囊牌的目标后,若你本回合成为过此牌名的牌的目标,此牌对你无效。',
dc_zhouxuān:'周宣',
dcwumei:'寤寐',
dcwumei_info:'每轮限一次。回合开始时,你可以令一名角色记录场上所有角色的体力值并进行一个额外的回合,并将你的回合移至该回合后进行。该角色以此法进行的回合的结束阶段,将场上所有角色的体力值改为记录内的对应数值。',
@ -13776,9 +13743,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcshexue_info:'①出牌阶段开始时,你可以将一张牌当做上回合的角色于其出牌阶段内使用的最后一张基本牌或普通锦囊牌使用。②出牌阶段结束时,你可以令下回合的角色于其出牌阶段开始时可以将一张牌当做你于此阶段内使用的最后一张基本牌或普通锦囊牌使用(一名角色因〖设学〗使用的牌均无距离和次数限制)。',
xizheng:'郤正',
dcdanyi:'耽意',
dcdanyi_info:'当你使用牌指定第一个目标后,若此牌的目标与你使用的上一张牌目标相同你可以摸X张牌X为此牌目标数)。',
dcdanyi_info:'当你使用牌指定第一个目标后,你可以摸X张牌X为此牌目标数与你使用的上一张牌相同的目标数)。',
dcwencan:'文灿',
dcwencan_info:'出牌阶段限一次。你可以选择至多两名体力值不同且均与你的体力值不同的角色这些角色依次选择一项1.弃置两张花色不同的牌2.本回合你对其使用牌无次数限制。',
dcwencan_info:'出牌阶段限一次。你可以选择至多两名体力值不同的其他角色这些角色依次选择一项1.弃置两张花色不同的牌2.本回合你对其使用牌无距离和次数限制。',
zhangjinyun:'张瑾云',
dchuizhi:'蕙质',
dchuizhi_info:'准备阶段,你可以选择是否弃置任意张手牌,然后将手牌摸至与全场手牌数最多的角色相同(至少摸一张,至多摸五张)。',