noname/card/standard.js

3933 lines
128 KiB
JavaScript
Raw Normal View History

'use strict';
2017-04-17 05:18:46 +00:00
game.import('card',function(lib,game,ui,get,ai,_status){
2017-04-15 00:25:50 +00:00
return {
name:'standard',
connect:true,
card:{
damage:{
ai:{
result:{
target:-1.5
},
tag:{
damage:1
}
2015-04-29 03:25:17 +00:00
}
2017-04-15 00:25:50 +00:00
},
draw:{
ai:{
result:{
target:1
},
tag:{
draw:1
}
}
},
2022-07-25 14:24:03 +00:00
losehp:{
ai:{
result:{
target:-1.5
},
tag:{
2022-08-09 15:21:53 +00:00
loseHp:1
2022-07-25 14:24:03 +00:00
}
}
},
2017-04-15 00:25:50 +00:00
recover:{
ai:{
result:{
target:1.5
},
tag:{
recover:1
}
2015-04-29 03:25:17 +00:00
}
2017-04-15 00:25:50 +00:00
},
firedamage:{
ai:{
result:{
target:-1.5
},
tag:{
damage:1,
fireDamage:1,
natureDamage:1,
}
2015-04-29 03:25:17 +00:00
}
2017-04-15 00:25:50 +00:00
},
thunderdamage:{
ai:{
result:{
target:-1.5
},
tag:{
damage:1,
thunderDamage:1,
natureDamage:1,
}
2015-04-29 03:25:17 +00:00
}
2017-04-15 00:25:50 +00:00
},
2020-12-19 01:36:50 +00:00
icedamage:{
ai:{
result:{
target:-1.5
},
tag:{
damage:1,
iceDamage:1,
natureDamage:1,
}
}
},
2017-04-15 00:25:50 +00:00
respondShan:{
ai:{
result:{
target:-1.5,
},
tag:{
respond:1,
respondShan:1,
damage:1
}
2015-04-29 03:25:17 +00:00
}
},
2017-04-15 00:25:50 +00:00
sha:{
audio:true,
fullskin:true,
2020-12-19 01:36:50 +00:00
nature:['thunder','fire','kami','ice'],
2017-04-15 00:25:50 +00:00
type:'basic',
enable:true,
usable:1,
2020-10-05 05:33:08 +00:00
updateUsable:'phaseUse',
2020-12-19 01:36:50 +00:00
global:'icesha_skill',
2022-05-09 16:59:02 +00:00
range:function(card,player,target){
return player.inRange(target);
},
2017-04-15 00:25:50 +00:00
selectTarget:1,
2021-11-26 14:55:37 +00:00
cardPrompt:function(card){
var natures=get.natureList(Array.isArray(card)?card[3]:card);
if(lib.translate['sha_nature_'+natures[0]+'_info']) return lib.translate['sha_nature_'+natures[0]+'_info'];
var str='出牌阶段,对你攻击范围内的一名角色使用。其须使用一张【闪】,';
if(natures.includes('stab')){
str+='且在此之后需弃置一张手牌(没有则不弃)。';
}
str+='否则你对其造成1点';
var linked=lib.linked.filter(n=>natures.includes(n));
if(linked.length) str+=get.translation(get.nature(linked))+'属性';
str+='伤害。';
return str;
2021-11-26 14:55:37 +00:00
},
2023-08-29 07:14:15 +00:00
defaultYingbianEffect:'add',
2017-04-15 00:25:50 +00:00
filterTarget:function(card,player,target){return player!=target},
content:function(){
"step 0"
2017-07-13 02:23:11 +00:00
if(typeof event.shanRequired!='number'||!event.shanRequired||event.shanRequired<0){
event.shanRequired=1;
}
2019-11-22 05:15:05 +00:00
if(typeof event.baseDamage!='number') event.baseDamage=1;
if(typeof event.extraDamage!='number') event.extraDamage=0;
2017-07-13 02:23:11 +00:00
"step 1"
2020-05-23 04:37:37 +00:00
if(event.directHit||event.directHit2||(!_status.connectMode&&lib.config.skip_shan&&!target.hasShan())){
2017-04-15 00:25:50 +00:00
event._result={bool:false};
}
2017-11-07 11:58:19 +00:00
else if(event.skipShan){
2019-12-25 05:19:50 +00:00
event._result={bool:true,result:'shaned'};
2017-11-07 11:58:19 +00:00
}
2017-04-15 00:25:50 +00:00
else{
2019-12-05 15:05:56 +00:00
var next=target.chooseToUse('请使用一张闪响应杀');
2019-12-09 14:50:07 +00:00
next.set('type','respondShan');
2019-12-05 15:05:56 +00:00
next.set('filterCard',function(card,player){
if(get.name(card)!='shan') return false;
return lib.filter.cardEnabled(card,player,'forceEnable');
});
2017-07-13 02:23:11 +00:00
if(event.shanRequired>1){
2019-12-05 15:05:56 +00:00
next.set('prompt2','(共需使用'+event.shanRequired+'张闪)');
2017-07-13 02:23:11 +00:00
}
else if(game.hasNature(event.card,'stab')){
2021-11-23 04:58:31 +00:00
next.set('prompt2','(在此之后仍需弃置一张手牌)');
}
2019-12-05 15:05:56 +00:00
next.set('ai1',function(card){
2023-12-26 14:15:32 +00:00
if(_status.event.useShan) return get.order(card);
2019-12-05 15:05:56 +00:00
return 0;
2017-07-13 02:23:11 +00:00
}).set('shanRequired',event.shanRequired);
2019-12-05 15:05:56 +00:00
next.set('respondTo',[player,card]);
2023-12-26 14:15:32 +00:00
next.set('useShan',(()=>{
if(target.hasSkillTag('noShan',null,event)) return false;
if(target.hasSkillTag('useShan',null,event)) return true;
if(target.isLinked()&&game.hasNature(event.card)&&get.attitude(target,player._trueMe||player)>0) return false;
if(event.baseDamage+event.extraDamage<=0&&!game.hasNature(event.card,'ice')) return false;
2024-01-01 05:46:26 +00:00
if(event.baseDamage+event.extraDamage>=target.hp+
((player.hasSkillTag('jueqing',false,target)||target.hasSkill('gangzhi'))?target.hujia:0)) return true;
if(!game.hasNature(event.card,'ice')&&get.damageEffect(target,player,target,get.nature(event.card))>=0) return false;
2024-04-03 14:49:52 +00:00
if(event.shanRequired>1&&target.mayHaveShan(target,'use',null,'count')<event.shanRequired-(event.shanIgnored||0)) return false;
2023-12-26 14:15:32 +00:00
return true;
})());
2019-12-05 15:05:56 +00:00
//next.autochoose=lib.filter.autoRespondShan;
2017-04-15 00:25:50 +00:00
}
2017-07-13 02:23:11 +00:00
"step 2"
2019-12-12 15:00:19 +00:00
if(!result||!result.bool||!result.result||result.result!='shaned'){
2017-04-15 00:25:50 +00:00
event.trigger('shaHit');
}
else{
2017-07-13 02:23:11 +00:00
event.shanRequired--;
if(event.shanRequired>0){
event.goto(1);
}
else if(game.hasNature(event.card,'stab')&&target.countCards('h')>0){
2021-11-23 04:58:31 +00:00
event.responded=result;
event.goto(4);
}
2017-07-13 02:23:11 +00:00
else{
event.trigger('shaMiss');
event.responded=result;
}
2017-04-15 00:25:50 +00:00
}
2017-07-13 02:23:11 +00:00
"step 3"
2019-12-12 15:00:19 +00:00
if((!result||!result.bool||!result.result||result.result!='shaned')&&!event.unhurt){
2024-01-16 15:07:49 +00:00
if (!event.directHit&&!event.directHit2&&lib.filter.cardEnabled(new lib.element.VCard({name:'shan'}), target, 'forceEnable')&&
target.countCards('hs')>0&&get.damageEffect(target,player,target)<0) target.addGaintag(target.getCards('hs'),'sha_notshan');
target.damage(get.nature(event.card));
2017-04-15 00:25:50 +00:00
event.result={bool:true}
event.trigger('shaDamage');
}
else{
event.result={bool:false}
event.trigger('shaUnhirt');
}
2021-11-23 04:58:31 +00:00
event.finish();
"step 4"
target.chooseToDiscard('刺杀:请弃置一张牌,否则此【杀】依然造成伤害').set('ai',function(card){
var target=_status.event.player;
var evt=_status.event.getParent();
var bool=true;
if(get.damageEffect(target,evt.player,target,evt.card.nature)>=0) bool=false;
if(bool){
return 8-get.useful(card);
}
return 0;
});
"step 5"
if((!result||!result.bool)&&!event.unhurt){
target.damage(get.nature(event.card));
2021-11-23 04:58:31 +00:00
event.result={bool:true}
event.trigger('shaDamage');
2021-11-26 14:55:37 +00:00
event.finish();
}
else{
event.trigger('shaMiss');
}
"step 6"
if((!result||!result.bool)&&!event.unhurt){
target.damage(get.nature(event.card));
2021-11-26 14:55:37 +00:00
event.result={bool:true}
event.trigger('shaDamage');
event.finish();
2021-11-23 04:58:31 +00:00
}
else{
event.result={bool:false}
event.trigger('shaUnhirt');
}
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
ai:{
2021-07-28 08:46:10 +00:00
yingbian:function(card,player,targets,viewer){
if(get.attitude(viewer,player)<=0) return 0;
var base=0,hit=false;
if(get.cardtag(card,'yingbian_hit')){
hit=true;
2023-11-23 05:52:14 +00:00
if(targets.some(target=>{
return target.mayHaveShan(viewer,'use',target.getCards('h',i=>{
return i.hasGaintag('sha_notshan');
}))&&get.attitude(viewer,target)<0&&get.damageEffect(target,player,viewer,get.natureList(card))>0;
2021-07-28 08:46:10 +00:00
})) base+=5;
}
2023-11-23 05:52:14 +00:00
if(get.cardtag(card,'yingbian_add')){
2021-07-28 08:46:10 +00:00
if(game.hasPlayer(function(current){
return !targets.includes(current)&&lib.filter.targetEnabled2(card,player,current)&&get.effect(current,card,player,player)>0;
2021-07-28 08:46:10 +00:00
})) base+=5;
}
if(get.cardtag(card,'yingbian_damage')){
2023-11-23 05:52:14 +00:00
if(targets.some(target=>{
return get.attitude(player,target)<0&&(hit||!target.mayHaveShan(viewer,'use',target.getCards('h',i=>{
return i.hasGaintag('sha_notshan');
}))||player.hasSkillTag('directHit_ai',true,{
2021-07-28 08:46:10 +00:00
target:target,
card:card,
},true))&&!target.hasSkillTag('filterDamage',null,{
player:player,
card:card,
jiu:true,
})
})) base+=5;
}
return base;
},
2021-01-19 14:04:52 +00:00
canLink:function(player,target,card){
if(!target.isLinked()&&!player.hasSkill('wutiesuolian_skill')) return false;
2021-10-12 05:02:49 +00:00
if(player.hasSkill('jueqing')||player.hasSkill('gangzhi')||target.hasSkill('gangzhi')) return false;
2021-01-19 14:04:52 +00:00
return true;
},
2017-04-15 00:25:50 +00:00
basic:{
2021-10-12 05:02:49 +00:00
useful:[5,3,1],
value:[5,3,1],
2015-04-29 03:25:17 +00:00
},
order(item, player) {
let res = 3.2;
if (player.hasSkillTag('presha', true, null, true)) res = 10;
if (typeof item !== 'object' || !game.hasNature(item, 'linked') || game.countPlayer(cur => cur.isLinked()) < 2) return res;
//let used = player.getCardUsable('sha') - 1.5, natures = ['thunder', 'fire', 'ice', 'kami'];
let uv = player.getUseValue(item, true);
if (uv <= 0) return res;
let temp = player.getUseValue('sha', true) - uv;
if (temp < 0) return res + 0.15;
if (temp > 0) return res - 0.15;
return res;
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
result:{
2023-12-25 08:11:46 +00:00
target:function(player,target,card,isLink){
let eff=-1.5,odds=1.35,num=1;
if(isLink){
let cache=_status.event.getTempCache('sha_result','eff');
if(typeof cache!=='object'||cache.card!==get.translation(card)) return eff;
if(cache.odds<1.35&&cache.bool) return 1.35*cache.eff;
return cache.odds*cache.eff;
}
if(player.hasSkill('jiu')||player.hasSkillTag('damageBonus',true,{
target:target,
card:card
})){
if(target.hasSkillTag('filterDamage',null,{
player:player,
card:card,
jiu:true,
})) eff=-0.5;
else{
num=2;
if(get.attitude(player,target)>0) eff=-7;
else eff=-4;
2017-04-15 00:25:50 +00:00
}
}
if(!player.hasSkillTag('directHit_ai',true,{
2021-01-19 14:04:52 +00:00
target:target,
card:card,
},true)) odds-=0.7*target.mayHaveShan(player,'use',target.getCards('h',i=>{
return i.hasGaintag('sha_notshan');
}),'odds');
_status.event.putTempCache('sha_result','eff',{
bool:target.hp>num&&get.attitude(player,target)>0,
card:get.translation(card),
eff:eff,
odds:odds
});
return odds*eff;
2017-04-15 00:25:50 +00:00
},
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
tag:{
respond:1,
respondShan:1,
damage:function(card){
if(game.hasNature(card,'poison')) return;
2017-04-15 00:25:50 +00:00
return 1;
},
natureDamage:function(card){
2023-11-11 09:05:25 +00:00
if(game.hasNature(card,'linked')) return 1;
2017-04-15 00:25:50 +00:00
},
fireDamage:function(card,nature){
if(game.hasNature(card,'fire')) return 1;
2017-04-15 00:25:50 +00:00
},
thunderDamage:function(card,nature){
if(game.hasNature(card,'thunder')) return 1;
2017-04-15 00:25:50 +00:00
},
poisonDamage:function(card,nature){
if(game.hasNature(card,'poison')) return 1;
2017-04-15 00:25:50 +00:00
}
2015-04-29 03:25:17 +00:00
}
}
2017-04-15 00:25:50 +00:00
},
shacopy:{
ai:{
basic:{
2021-10-12 05:02:49 +00:00
useful:[5,3,1],
value:[5,3,1],
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
order:3,
result:{
target:-1.5,
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
tag:{
respond:1,
respondShan:1,
damage:function(card){
if(game.hasNature(card,'poison')) return;
2017-04-15 00:25:50 +00:00
return 1;
},
natureDamage:function(card){
if(game.hasNature(card)) return 1;
2017-04-15 00:25:50 +00:00
},
fireDamage:function(card,nature){
if(game.hasNature(card,'fire')) return 1;
2017-04-15 00:25:50 +00:00
},
thunderDamage:function(card,nature){
if(game.hasNature(card,'thunder')) return 1;
2017-04-15 00:25:50 +00:00
},
poisonDamage:function(card,nature){
if(game.hasNature(card,'poison')) return 1;
2017-04-15 00:25:50 +00:00
}
2015-04-29 03:25:17 +00:00
}
}
2016-05-11 15:50:00 +00:00
},
2017-04-15 00:25:50 +00:00
shan:{
audio:true,
fullskin:true,
type:'basic',
2017-05-01 06:19:34 +00:00
cardcolor:'red',
2019-12-05 15:05:56 +00:00
notarget:true,
2020-02-14 05:33:43 +00:00
nodelay:true,
2023-08-29 07:14:15 +00:00
defaultYingbianEffect:'draw',
2019-12-05 15:05:56 +00:00
content:function(){
event.result='shaned';
2020-02-14 05:33:43 +00:00
event.getParent().delayx=false;
game.delay(0.5);
2019-12-05 15:05:56 +00:00
},
2017-04-15 00:25:50 +00:00
ai:{
2020-05-23 04:37:37 +00:00
order:3,
2017-04-15 00:25:50 +00:00
basic:{
2023-11-11 05:27:11 +00:00
useful:(card,i)=>{
let player = _status.event.player, basic = [7, 5.1, 2], num = basic[Math.min(2, i)];
if(player.hp>2&&player.hasSkillTag('maixie')) num *= 0.57;
if(player.hasSkillTag('freeShan',false,null,true) || player.getEquip('rewrite_renwang')) num *= 0.8;
2023-11-11 05:27:11 +00:00
return num;
},
2021-10-12 05:02:49 +00:00
value:[7,5.1,2],
2019-12-05 15:05:56 +00:00
},
result:{player:1},
2019-12-06 04:56:09 +00:00
//expose:0.2
2017-04-15 00:25:50 +00:00
}
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
tao:{
fullskin:true,
type:'basic',
2017-05-01 06:19:34 +00:00
cardcolor:'red',
2017-07-06 16:25:54 +00:00
toself:true,
2017-04-15 00:25:50 +00:00
enable:function(card,player){
return player.hp<player.maxHp;
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
savable:true,
selectTarget:-1,
filterTarget:function(card,player,target){
return target==player&&target.hp<target.maxHp;
},
modTarget:function(card,player,target){
return target.hp<target.maxHp;
},
content:function(){
target.recover();
2017-04-15 00:25:50 +00:00
},
ai:{
basic:{
order:(card,player)=>{
if(player.hasSkillTag('pretao')) return 9;
2017-04-15 00:25:50 +00:00
return 2;
},
useful:(card,i)=>{
let player = _status.event.player;
if(!game.checkMod(card,player,'unchanged','cardEnabled2',player)) return 2/(1+i);
let fs = game.filterPlayer(current=>{
return get.attitude(player,current)>0&&current.hp<=2;
}), damaged = 0, needs = 0;
fs.forEach(f=>{
if(f.hp>3 || !lib.filter.cardSavable(card,player,f)) return;
if(f.hp>1) damaged++;
else needs++;
});
if(needs&&damaged) return 5*needs+3*damaged;
if(needs+damaged>1 || player.hasSkillTag('maixie')) return 8;
if(player.hp/player.maxHp<0.7) return 7+Math.abs(player.hp/player.maxHp-0.5);
if(needs) return 7;
if(damaged) return Math.max(3,7.8-i);
return Math.max(1,7.2-i);
},
2023-11-10 06:07:08 +00:00
value:(card,player)=>{
let fs = game.filterPlayer(current=>{
return get.attitude(_status.event.player,current)>0;
}), damaged = 0, needs = 0;
fs.forEach(f=>{
if(!player.canUse('tao',f)) return;
if(f.hp<=1) needs++;
else if(f.hp==2) damaged++;
});
2023-11-10 06:07:08 +00:00
if(needs&&damaged || player.hasSkillTag('maixie')) return Math.max(9,5*needs+3*damaged);
if(needs || damaged>1) return 8;
if(damaged) return 7.5;
return Math.max(5,9.2-player.hp);
}
},
result:{
target:(player,target)=>{
if(target.hasSkillTag('maixie')) return 3;
return 2;
},
target_use:(player,target,card)=>{
let mode = get.mode(),
2023-10-30 15:21:33 +00:00
taos = player.getCards('hs',i=>get.name(i)==='tao'&&lib.filter.cardEnabled(i,target,'forceEnable'));
2024-03-28 03:00:17 +00:00
if(target!==_status.event.dying){
if(!player.isPhaseUsing() || player.hasSkillTag('nokeep',true,{
card:card,
target:target
},true)) return 2;
2023-11-10 06:07:08 +00:00
let min = 7.2-4*player.hp/player.maxHp,
nd = player.needsToDiscard(0,(i,player)=>{
return !player.canIgnoreHandcard(i)&&(taos.includes(i)||get.value(i)>=min);
}),
2023-11-10 06:07:08 +00:00
keep = nd?0:2;
if(nd>2 || taos.length>1&&(nd>1||nd&&player.hp<1+taos.length) || target.identity==='zhu'&&(nd||target.hp<3)&&(mode==='identity'||mode==='versus'||mode==='chess') || !player.hasFriend()) return 2;
if(game.hasPlayer(current=>{
return player!==current&&current.identity==='zhu'&&current.hp<3&&(mode==='identity'||mode==='versus'||mode==='chess')&&get.attitude(player,current)>0;
2023-11-10 06:07:08 +00:00
})) keep = 3;
else if(nd===2||player.hp<2) return 2;
if(nd===2&&player.hp<=1) return 2;
if(keep===3) return 0;
if(taos.length<=player.hp/2) keep = 1;
if(keep&&game.countPlayer(current=>{
if(player!==current&&current.hp<3&&player.hp>current.hp&&get.attitude(player,current)>2){
keep += player.hp-current.hp;
return true;
2015-06-27 16:21:25 +00:00
}
2023-11-10 06:07:08 +00:00
return false;
})){
if(keep>2) return 0;
2017-04-15 00:25:50 +00:00
}
return 2;
2017-04-15 00:25:50 +00:00
}
if(target.isZhu2() || target===game.boss) return 2;
if(player!==target){
2023-10-30 15:21:33 +00:00
if(target.hp<0&&taos.length+target.hp<=0) return 0;
if(Math.abs(get.attitude(player,target))<1) return 0;
}
if(!player.getFriends().length) return 2;
let tri = _status.event.getTrigger(),
num = game.countPlayer(current=>{
2023-10-30 15:21:33 +00:00
if(get.attitude(current,target)>0) return current.countCards('hs',i=>get.name(i)==='tao'&&lib.filter.cardEnabled(i,target,'forceEnable'));
}),
dis = 1,
2023-10-17 15:09:16 +00:00
t = _status.currentPhase||game.me;
while(t!==target){
let att = get.attitude(player,t);
if(att<-2) dis++;
else if(att<1) dis += 0.45;
t = t.next;
}
if(mode==='identity'){
if(tri&&tri.name==='dying'){
if(target.identity==='fan') {
if(!tri.source&&player!==target || tri.source&&tri.source!==target&&player.getFriends().includes(tri.source.identity)){
if(num>dis || player===target&&player.countCards('hs',{type:'basic'})>1.6*dis) return 2;
return 0;
2017-04-15 00:25:50 +00:00
}
}
else if(tri.source&&tri.source.isZhu&&(target.identity==='zhong'||target.identity==='mingzhong')&&
(tri.source.countCards('he')>2||player===tri.source&&player.hasCard((i)=>i.name!=='tao','he'))) return 2;
//if(player!==target&&!target.isZhu&&target.countCards('hs')<dis) return 0;
2015-06-27 16:21:25 +00:00
}
if(player.identity==='zhu'){
if(player.hp<=1&&player!==target&&taos+player.countCards('hs','jiu')<=Math.min(dis,game.countPlayer(current=>{
return current.identity==='fan';
}))) return 0;
2017-04-15 00:25:50 +00:00
}
2015-04-29 03:25:17 +00:00
}
else if(mode==='stone'&&target.isMin()&&player!==target&&tri&&tri.name==='dying'&&player.side===target.side&&tri.source!==target.getEnemy()) return 0;
2017-04-15 00:25:50 +00:00
return 2;
}
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
tag:{
recover:1,
save:1,
}
2015-04-29 03:25:17 +00:00
}
},
2017-04-15 00:25:50 +00:00
bagua:{
fullskin:true,
type:'equip',
subtype:'equip2',
ai:{
basic:{
equipValue:7.5
}
},
skills:['bagua_skill']
},
jueying:{
fullskin:true,
type:'equip',
subtype:'equip3',
distance:{globalTo:1},
},
dilu:{
fullskin:true,
type:'equip',
subtype:'equip3',
distance:{globalTo:1},
},
zhuahuang:{
fullskin:true,
type:'equip',
subtype:'equip3',
distance:{globalTo:1},
},
chitu:{
fullskin:true,
type:'equip',
subtype:'equip4',
distance:{globalFrom:-1},
},
dawan:{
fullskin:true,
type:'equip',
subtype:'equip4',
distance:{globalFrom:-1},
},
zixin:{
fullskin:true,
type:'equip',
subtype:'equip4',
distance:{globalFrom:-1},
},
zhuge:{
fullskin:true,
type:'equip',
subtype:'equip1',
ai:{
2020-02-16 04:25:41 +00:00
order:function(){
return get.order({name:'sha'})-0.1;
},
2017-05-22 03:18:10 +00:00
equipValue:function(card,player){
2021-01-27 12:48:29 +00:00
if(player._zhuge_temp) return 1;
player._zhuge_temp=true;
var result=function(){
if(!game.hasPlayer(function(current){
return get.distance(player,current)<=1&&player.canUse('sha',current)&&get.effect(current,{name:'sha'},player,player)>0;
})){
return 1;
2017-04-15 00:25:50 +00:00
}
2021-01-27 12:48:29 +00:00
if(player.hasSha()&&_status.currentPhase==player){
if(player.getEquip('zhuge')&&player.countUsed('sha')||player.getCardUsable('sha')==0){
return 10;
}
}
var num=player.countCards('h','sha');
if(num>1) return 6+num;
return 3+num;
}();
delete player._zhuge_temp;
return result;
2017-05-22 03:18:10 +00:00
},
basic:{
equipValue:5
2017-04-15 00:25:50 +00:00
},
tag:{
valueswap:1
2015-04-29 03:25:17 +00:00
}
2017-04-02 08:29:11 +00:00
},
2017-04-15 00:25:50 +00:00
skills:['zhuge_skill']
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
cixiong:{
fullskin:true,
type:'equip',
subtype:'equip1',
distance:{attackFrom:-1},
ai:{
basic:{
equipValue:2
}
},
skills:['cixiong_skill']
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
qinggang:{
fullskin:true,
type:'equip',
subtype:'equip1',
distance:{attackFrom:-1},
ai:{
basic:{
equipValue:2
}
},
skills:['qinggang_skill']
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
qinglong:{
fullskin:true,
type:'equip',
subtype:'equip1',
distance:{attackFrom:-2},
ai:{
2017-05-22 03:18:10 +00:00
equipValue:function(card,player){
return Math.min(2.5+player.countCards('h','sha'),4);
},
2017-04-15 00:25:50 +00:00
basic:{
2017-05-22 03:18:10 +00:00
equipValue:3.5
2015-04-29 03:25:17 +00:00
}
2017-04-15 00:25:50 +00:00
},
2018-08-13 07:17:34 +00:00
skills:['qinglong_skill','qinglong_guozhan']
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
zhangba:{
fullskin:true,
type:'equip',
subtype:'equip1',
distance:{attackFrom:-2},
ai:{
2017-05-22 03:18:10 +00:00
equipValue:function(card,player){
var num=2.5+player.countCards('h')/3;
return Math.min(num,4);
},
2017-04-15 00:25:50 +00:00
basic:{
2017-05-22 03:18:10 +00:00
equipValue:3.5
2015-04-29 03:25:17 +00:00
}
2017-04-15 00:25:50 +00:00
},
skills:['zhangba_skill']
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
guanshi:{
fullskin:true,
type:'equip',
subtype:'equip1',
distance:{attackFrom:-2},
ai:{
2017-05-22 03:18:10 +00:00
equipValue:function(card,player){
var num=2.5+(player.countCards('h')+player.countCards('e'))/2.5;
return Math.min(num,5);
},
2017-04-15 00:25:50 +00:00
basic:{
2017-05-22 03:18:10 +00:00
equipValue:4.5,
2015-04-29 03:25:17 +00:00
}
2017-04-15 00:25:50 +00:00
},
skills:['guanshi_skill']
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
fangtian:{
fullskin:true,
type:'equip',
subtype:'equip1',
distance:{attackFrom:-3},
ai:{
basic:{
equipValue:2.5
}
},
2018-08-13 07:17:34 +00:00
skills:['fangtian_skill','fangtian_guozhan']
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
qilin:{
fullskin:true,
type:'equip',
subtype:'equip1',
distance:{attackFrom:-4},
ai:{
basic:{
equipValue:3
}
},
skills:['qilin_skill']
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
wugu:{
audio:true,
fullskin:true,
type:'trick',
enable:true,
2017-07-13 01:28:29 +00:00
cardcolor:'red',
2019-12-29 10:04:02 +00:00
selectTarget:-1,
2017-04-15 00:25:50 +00:00
filterTarget:true,
contentBefore:function(){
"step 0"
2020-04-18 05:32:41 +00:00
if(!targets.length){
event.finish();
return;
}
2023-11-12 08:16:18 +00:00
if(card.storage&&card.storage.chooseDirection||get.is.versus()){
2017-04-15 00:25:50 +00:00
player.chooseControl('顺时针','逆时针',function(event,player){
2023-11-12 08:16:18 +00:00
if(get.event('isVersus')&&player.next.side==player.side||get.attitude(player,player.next)>get.attitude(player,player.previous)) return '逆时针';
2017-04-15 00:25:50 +00:00
return '顺时针';
2023-11-12 09:16:49 +00:00
}).set('prompt','选择'+get.translation(card)+'的结算方向').set('isVersus',get.is.versus());
2017-02-08 01:53:23 +00:00
}
2017-04-15 00:25:50 +00:00
else{
2020-03-05 13:10:37 +00:00
event.goto(2);
2017-04-15 00:25:50 +00:00
}
2020-03-05 13:10:37 +00:00
"step 1"
2017-04-15 00:25:50 +00:00
if(result&&result.control=='顺时针'){
2022-09-15 12:33:17 +00:00
var evt=event.getParent(),sorter=(_status.currentPhase||player);
2017-04-15 00:25:50 +00:00
evt.fixedSeat=true;
2022-09-15 12:33:17 +00:00
evt.targets.sortBySeat(sorter);
2017-04-15 00:25:50 +00:00
evt.targets.reverse();
2022-09-15 12:33:17 +00:00
if(evt.targets[evt.targets.length-1]==sorter){
2017-04-15 00:25:50 +00:00
evt.targets.unshift(evt.targets.pop());
}
}
2020-03-05 13:10:37 +00:00
"step 2"
2017-04-15 00:25:50 +00:00
ui.clear();
2024-04-13 04:02:58 +00:00
var cards;
if(card.storage&&Array.isArray(card.storage.fixedShownCards)){
cards=card.storage.fixedShownCards.slice();
var lose_list=[],cards2=[];
cards.forEach(card=>{
var owner=get.owner(card);
if(owner){
var arr=lose_list.find(i=>i[0]==owner);
if(arr) arr[1].push(card);
else lose_list.push([owner,[card]]);
}
else cards2.add(card);
});
if(lose_list.length){
lose_list.forEach(list=>{
list[0].$throw(list[1]);
game.log(list[0],'将',list[1],'置于了处理区');
})
game.loseAsync({
lose_list:lose_list,
}).setContent('chooseToCompareLose');
}
2024-04-13 04:16:39 +00:00
if(cards2.length) game.cardsGotoOrdering(cards2);
game.delayex();
2017-04-23 06:40:20 +00:00
}
else{
2024-04-13 04:02:58 +00:00
var num;
if(event.targets){
num=event.targets.length;
}
else{
num=game.countPlayer();
}
if(card.storage&&typeof card.storage.extraCardsNum=='number') num+=card.storage.extraCardsNum;
cards=get.cards(num);
game.cardsGotoOrdering(cards).relatedEvent=event.getParent();
2017-04-23 06:40:20 +00:00
}
2016-04-02 08:05:24 +00:00
var dialog=ui.create.dialog('五谷丰登',cards,true);
_status.dieClose.push(dialog);
2017-04-15 00:25:50 +00:00
dialog.videoId=lib.status.videoId++;
game.addVideo('cardDialog',null,['五谷丰登',get.cardsInfo(cards),dialog.videoId]);
event.getParent().preResult=dialog.videoId;
game.broadcast(function(cards,id){
var dialog=ui.create.dialog('五谷丰登',cards,true);
_status.dieClose.push(dialog);
dialog.videoId=id;
},cards,dialog.videoId);
2017-11-18 10:26:57 +00:00
game.log(event.card,'亮出了',cards);
2017-04-15 00:25:50 +00:00
},
content:function(){
"step 0"
for(var i=0;i<ui.dialogs.length;i++){
if(ui.dialogs[i].videoId==event.preResult){
event.dialog=ui.dialogs[i];break;
}
}
if(!event.dialog || event.dialog.buttons.length == 0){
2017-04-15 00:25:50 +00:00
event.finish();
return;
}
if(event.dialog.buttons.length>1){
var next=target.chooseButton(true,function(button){
return get.value(button.link,_status.event.player);
});
next.set('dialog',event.preResult);
next.set('closeDialog',false);
next.set('dialogdisplay',true);
}
else{
event.directButton=event.dialog.buttons[0];
}
"step 1"
var dialog=event.dialog;
var card;
if(event.directButton){
card=event.directButton.link;
}
else{
2021-10-05 15:46:56 +00:00
for(var i of dialog.buttons){
if(i.link==result.links[0]){
card=i.link;
break;
}
}
if(!card) card=event.dialog.buttons[0].link;
2015-11-04 01:59:00 +00:00
}
2017-04-15 00:25:50 +00:00
var button;
for(var i=0;i<dialog.buttons.length;i++){
if(dialog.buttons[i].link==card){
button=dialog.buttons[i];
2020-06-13 04:51:36 +00:00
button.querySelector('.info').innerHTML=function(target){
2021-01-27 12:48:29 +00:00
if(target._tempTranslate) return target._tempTranslate;
var name=target.name;
if(lib.translate[name+'_ab']) return lib.translate[name+'_ab'];
return get.translation(name);
2020-06-13 04:51:36 +00:00
}(target);
2017-04-15 00:25:50 +00:00
dialog.buttons.remove(button);
break;
}
2016-04-02 08:05:24 +00:00
}
2017-04-15 00:25:50 +00:00
var capt=get.translation(target)+'选择了'+get.translation(button.link);
if(card){
2020-03-19 13:24:54 +00:00
target.gain(card,'visible');
2017-04-15 00:25:50 +00:00
target.$gain2(card);
game.broadcast(function(card,id,name,capt){
var dialog=get.idDialog(id);
if(dialog){
dialog.content.firstChild.innerHTML=capt;
for(var i=0;i<dialog.buttons.length;i++){
if(dialog.buttons[i].link==card){
dialog.buttons[i].querySelector('.info').innerHTML=name;
dialog.buttons.splice(i--,1);
break;
}
}
}
2020-06-13 04:51:36 +00:00
},card,dialog.videoId,function(target){
if(target._tempTranslate) return target._tempTranslate;
var name=target.name;
if(lib.translate[name+'_ab']) return lib.translate[name+'_ab'];
return get.translation(name);
}(target),capt);
2017-04-15 00:25:50 +00:00
}
dialog.content.firstChild.innerHTML=capt;
game.addVideo('dialogCapt',null,[dialog.videoId,dialog.content.firstChild.innerHTML]);
game.log(target,'选择了',button.link);
game.delay();
},
contentAfter:function(){
for(var i=0;i<ui.dialogs.length;i++){
if(ui.dialogs[i].videoId==event.preResult){
var dialog=ui.dialogs[i];
dialog.close();
_status.dieClose.remove(dialog);
if(dialog.buttons.length){
event.remained=[];
for(var i=0;i<dialog.buttons.length;i++){
event.remained.push(dialog.buttons[i].link);
2016-04-02 08:05:24 +00:00
}
2017-04-15 00:25:50 +00:00
event.trigger('wuguRemained');
2016-04-02 08:05:24 +00:00
}
2017-04-15 00:25:50 +00:00
break;
2016-04-02 08:05:24 +00:00
}
2017-04-15 00:25:50 +00:00
}
game.broadcast(function(id){
var dialog=get.idDialog(id);
if(dialog){
dialog.close();
_status.dieClose.remove(dialog);
}
},event.preResult);
game.addVideo('cardDialog',null,event.preResult);
},
ai:{
wuxie:function(){
if(Math.random()<0.5) return 0;
},
basic:{
order:3,
2021-10-12 05:02:49 +00:00
useful:0.5,
2017-04-15 00:25:50 +00:00
},
result:{
target:function(player,target){
2022-09-15 12:33:17 +00:00
var sorter=(_status.currentPhase||player);
2017-04-15 00:25:50 +00:00
if(get.is.versus()){
2022-09-15 12:33:17 +00:00
if(target==sorter) return 1.5;
2017-04-15 00:25:50 +00:00
return 1;
2017-02-05 11:55:50 +00:00
}
2017-04-15 00:25:50 +00:00
if(player.hasUnknown(2)){
return 0;
}
2022-09-15 12:33:17 +00:00
return (1-get.distance(sorter,target,'absolute')/game.countPlayer())*get.attitude(player,target)>0?0.5:0.7;
2017-02-05 11:55:50 +00:00
}
2017-04-15 00:25:50 +00:00
},
tag:{
draw:1,
multitarget:1
2015-11-04 01:59:00 +00:00
}
}
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
taoyuan:{
audio:true,
fullskin:true,
type:'trick',
enable:true,
2019-12-29 10:04:02 +00:00
selectTarget:-1,
2018-01-11 15:07:44 +00:00
cardcolor:'red',
2019-10-09 14:31:43 +00:00
reverseOrder:true,
2023-08-29 07:14:15 +00:00
defaultYingbianEffect:'remove',
2017-04-15 00:25:50 +00:00
filterTarget:function(card,player,target){
2019-06-17 07:19:46 +00:00
//return target.hp<target.maxHp;
return true;
2015-05-02 14:43:52 +00:00
},
2019-10-09 14:31:43 +00:00
ignoreTarget:function(card,player,target){
return target.isHealthy();
2019-07-31 12:01:43 +00:00
},
2017-04-15 00:25:50 +00:00
content:function(){
target.recover();
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
ai:{
basic:{
order:(item,player)=>{
2023-10-31 03:53:05 +00:00
if(game.hasPlayer(current=>current.hp<=1&&get.recoverEffect(current,player,_status.event.player)<0)) return 1;
return 10;
2020-03-19 13:24:54 +00:00
},
2017-04-15 00:25:50 +00:00
useful:[3,1],
2021-10-12 05:02:49 +00:00
value:0,
2017-04-15 00:25:50 +00:00
},
result:{
target:function(player,target){
return (target.hp<target.maxHp)?2:0;
2015-04-29 03:25:17 +00:00
}
2017-04-15 00:25:50 +00:00
},
tag:{
recover:0.5,
multitarget:1
2015-04-29 03:25:17 +00:00
}
}
},
2017-04-15 00:25:50 +00:00
nanman:{
audio:true,
fullskin:true,
type:'trick',
enable:true,
2019-12-29 10:04:02 +00:00
selectTarget:-1,
2023-08-29 07:14:15 +00:00
defaultYingbianEffect:'remove',
2017-04-15 00:25:50 +00:00
filterTarget:function(card,player,target){
return target!=player;
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
reverseOrder:true,
content:function(){
"step 0"
if(typeof event.shaRequired!='number'||!event.shaRequired||event.shaRequired<0) event.shaRequired=1;
2019-11-22 05:15:05 +00:00
if(typeof event.baseDamage!='number') event.baseDamage=1;
"step 1"
2019-10-31 04:40:01 +00:00
if(event.directHit) event._result={bool:false};
else{
var next=target.chooseToRespond({name:'sha'});
if(event.shaRequired>1){
next.set('prompt2','共需打出'+event.shaRequired+'张杀');
}
2019-10-31 04:40:01 +00:00
next.set('ai',function(card){
var evt=_status.event.getParent();
if(get.damageEffect(evt.target,evt.player,evt.target)>=0) return 0;
if(evt.player.hasSkillTag('notricksource')) return 0;
if(evt.target.hasSkillTag('notrick')) return 0;
2021-10-12 05:02:49 +00:00
return get.order(card);
2019-10-31 04:40:01 +00:00
});
next.autochoose=lib.filter.autoRespondSha;
}
"step 2"
2017-04-15 00:25:50 +00:00
if(result.bool==false){
target.damage();
2015-04-29 03:25:17 +00:00
}
else{
event.shaRequired--;
if(event.shaRequired>0) event.goto(1);
}
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
ai:{
wuxie(target, card, player, viewer, status) {
let att = get.attitude(viewer, target), eff = get.effect(target, card, player, target);
if (Math.abs(att) < 1 || status * eff * att >= 0) return 0;
let evt = _status.event.getParent('useCard'), pri = 1, bonus = player.hasSkillTag('damageBonus', true, {
target: target,
card: card
}), damage = 1, isZhu = function (tar) {
return tar.isZhu || tar === game.boss || tar === game.trueZhu || tar === game.falseZhu;
}, canSha = function (tar, blur) {
let known = tar.getKnownCards(viewer);
if (!blur) return known.some(card => {
let name = get.name(card, tar);
return (name === 'sha' || name === 'hufu' || name === 'yuchanqian') && lib.filter.cardRespondable(card, tar);
});
if (tar.countCards('hs', i => !known.includes(i)) > 4.67 - 2 * tar.hp / tar.maxHp) return true;
if (!tar.hasSkillTag('respondSha', true, 'respond', true)) return false;
if (tar.hp <= damage) return false;
if (tar.hp <= damage + 1) return isZhu(tar);
return true;
}, self = false;
if (canSha(target)) return 0;
if (bonus && !viewer.hasSkillTag('filterDamage', null, {
player: player,
card: card
})) damage = 2;
if ((viewer.hp <= damage || viewer.hp <= damage + 1 && isZhu(viewer)) && !canSha(viewer)) {
if (viewer === target) return status;
let fv = true;
if (evt && evt.targets) for (let i of evt.targets) {
if (fv) {
if (target === i) fv = false;
continue;
}
if (viewer == i) {
if (isZhu(viewer)) return 0;
self = true;
break;
}
}
2015-12-06 15:23:47 +00:00
}
let maySha = canSha(target, true);
if (bonus && !target.hasSkillTag('filterDamage', null, {
player: player,
card: card
})) damage = 2;
else damage = 1;
if (isZhu(target)) {
if (eff < 0) {
if (target.hp <= damage + 1 || !maySha && target.hp <= damage + 2) return 1;
if (maySha && target.hp > damage + 2) return 0;
else if (maySha || target.hp > damage + 2) pri = 3;
else pri = 4;
}
else if (target.hp > damage + 1) pri = 2;
else return 0;
}
else if (self) return 0;
else if (eff < 0) {
if (!maySha && target.hp <= damage) pri = 5;
else if (maySha) return 0;
else if (target.hp > damage + 1) pri = 2;
else if (target.hp === damage + 1) pri = 3;
else pri = 4;
}
else if (target.hp <= damage) return 0;
let find = false;
if (evt && evt.targets) for (let i = 0; i < evt.targets.length; i++) {
if (!find) {
if (evt.targets[i] === target) find = true;
continue;
}
let att1 = get.attitude(viewer, evt.targets[i]), eff1 = get.effect(evt.targets[i], card, player, evt.targets[i]), temp = 1;
if (Math.abs(att1) < 1 || att1 * eff1 >= 0 || canSha(evt.targets[i])) continue;
maySha = canSha(evt.targets[i], true);
if (bonus && !evt.targets[i].hasSkillTag('filterDamage', null, {
player: player,
card: card
})) damage = 2;
else damage = 1;
if (isZhu(evt.targets[i])) {
if (eff1 < 0) {
if (evt.targets[i].hp <= damage + 1 || !maySha && evt.targets[i].hp <= damage + 2) return 0;
if (maySha && evt.targets[i].hp > damage + 2) continue;
if (maySha || evt.targets[i].hp > damage + 2) temp = 3;
else temp = 4;
}
else if (evt.targets[i].hp > damage + 1) temp = 2;
else continue;
}
else if (eff1 < 0) {
if (!maySha && evt.targets[i].hp <= damage) temp = 5;
else if (maySha) continue;
else if (evt.targets[i].hp > damage + 1) temp = 2;
else if (evt.targets[i].hp === damage + 1) temp = 3;
else temp = 4;
}
else if (evt.targets[i].hp > damage + 1) temp = 2;
if (temp > pri) return 0;
}
return 1;
2015-04-29 03:25:17 +00:00
},
basic: {
order: 9,
useful: [5, 1],
value: 5
2017-04-15 00:25:50 +00:00
},
result: {
player(player, target) {
if (player._nanman_temp || player.hasSkillTag('jueqing', false, target)) return 0;
player._nanman_temp = true;
let eff = get.effect(target, new lib.element.VCard({ name: 'nanman' }), player, target);
delete player._nanman_temp;
if (eff >= 0) return 0;
if (target.hp > 2 || target.hp > 1 && !target.isZhu && target != game.boss && target != game.trueZhu && target != game.falseZhu) return 0;
if (target.hp > 1 && target.hasSkillTag('respondSha', true, 'respond', true)) return 0;
let known = target.getKnownCards(player);
if (known.some(card => {
let name = get.name(card, target);
if (name === 'sha' || name === 'hufu' || name === 'yuchanqian') return lib.filter.cardRespondable(card, target);
if (name === 'wuxie') return lib.filter.cardEnabled(card, target, 'forceEnable');
})) return 0;
if (target.hp > 1 || target.countCards('hs', i => !known.includes(i)) > 4.67 - 2 * target.hp / target.maxHp) return 0;
let res = 0, att = get.sgnAttitude(player, target);
res -= att * (0.8 * target.countCards('hs') + 0.6 * target.countCards('e') + 3.6);
if (get.mode() === 'identity' && target.identity === 'fan') res += 2.4;
if (get.mode() === 'guozhan' && player.identity !== 'ye' && player.identity === target.identity ||
get.mode() === 'identity' && player.identity === 'zhu' && (target.identity === 'zhong' || target.identity === 'mingzhong')) res -= 0.8 * player.countCards('he');
return res;
2017-04-15 00:25:50 +00:00
},
target(player, target) {
let zhu = (get.mode() === 'identity' && target.isZhu) || target.identity === 'zhu';
if (!lib.filter.cardRespondable({ name: 'sha' }, target)) {
if (zhu) {
if (target.hp < 2) return -99;
if (target.hp === 2) return -3.6;
}
return -2;
}
let known = target.getKnownCards(player);
if (known.some(card => {
let name = get.name(card, target);
if (name === 'sha' || name === 'hufu' || name === 'yuchanqian') return lib.filter.cardRespondable(card, target);
if (name === 'wuxie') return lib.filter.cardEnabled(card, target, 'forceEnable');
})) return -1.2;
let nh = target.countCards('hs', i => !known.includes(i));
if (zhu && target.hp <= 1) {
if (nh === 0) return -99;
if (nh === 1) return -60;
if (nh === 2) return -36;
if (nh === 3) return -12;
if (nh === 4) return -8;
return -5;
}
if (target.hasSkillTag('respondSha', true, 'respond', true)) return -1.35;
if (!nh) return -2;
if (nh === 1) return -1.8;
return -1.5;
}
2017-04-15 00:25:50 +00:00
},
tag: {
respond: 1,
respondSha: 1,
damage: 1,
multitarget: 1,
multineg: 1
2017-04-15 00:25:50 +00:00
}
2015-04-29 03:25:17 +00:00
}
},
2017-04-15 00:25:50 +00:00
wanjian:{
audio:true,
fullskin:true,
type:'trick',
enable:true,
2019-12-29 10:04:02 +00:00
selectTarget:-1,
2017-04-15 00:25:50 +00:00
reverseOrder:true,
2023-08-29 07:14:15 +00:00
defaultYingbianEffect:'remove',
2017-04-15 00:25:50 +00:00
filterTarget:function(card,player,target){
return target!=player;
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
content:function(){
"step 0"
if(typeof event.shanRequired!='number'||!event.shanRequired||event.shanRequired<0) event.shanRequired=1;
2019-11-22 05:15:05 +00:00
if(typeof event.baseDamage!='number') event.baseDamage=1;
"step 1"
2019-10-31 04:40:01 +00:00
if(event.directHit) event._result={bool:false};
else{
var next=target.chooseToRespond({name:'shan'});
if(event.shanRequired>1){
next.set('prompt2','共需打出'+event.shanRequired+'张闪');
}
2019-10-31 04:40:01 +00:00
next.set('ai',function(card){
var evt=_status.event.getParent();
if(get.damageEffect(evt.target,evt.player,evt.target)>=0) return 0;
if(evt.player.hasSkillTag('notricksource')) return 0;
if(evt.target.hasSkillTag('notrick')) return 0;
if(evt.target.hasSkillTag('noShan')){
return -1;
}
2021-10-12 05:02:49 +00:00
return get.order(card);
2019-10-31 04:40:01 +00:00
});
next.autochoose=lib.filter.autoRespondShan;
}
"step 2"
2017-04-15 00:25:50 +00:00
if(result.bool==false){
target.damage();
2017-04-15 00:25:50 +00:00
}
else{
event.shanRequired--;
if(event.shanRequired>0) event.goto(1);
}
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
ai:{
wuxie(target, card, player, viewer, status) {
let att = get.attitude(viewer, target), eff = get.effect(target, card, player, target);
if (Math.abs(att) < 1 || status * eff * att >= 0) return 0;
let evt = _status.event.getParent('useCard'), pri = 1, bonus = player.hasSkillTag('damageBonus', true, {
target: target,
card: card
}), damage = 1, isZhu = function (tar) {
return tar.isZhu || tar === game.boss || tar === game.trueZhu || tar === game.falseZhu;
}, canShan = function (tar, blur) {
let known = tar.getKnownCards(viewer);
if (!blur) return known.some(card => {
let name = get.name(card, tar);
return (name === 'shan' || name === 'hufu') && lib.filter.cardRespondable(card, tar);
});
if (tar.countCards('hs', i => !known.includes(i)) > 3.67 - 2 * tar.hp / tar.maxHp) return true;
if (!tar.hasSkillTag('respondShan', true, 'respond', true)) return false;
if (tar.hp <= damage) return false;
if (tar.hp <= damage + 1) return isZhu(tar);
return true;
}, self = false;
if (canShan(target)) return 0;
if (bonus && !viewer.hasSkillTag('filterDamage', null, {
player: player,
card: card
})) damage = 2;
if ((viewer.hp <= damage || viewer.hp <= damage + 1 && isZhu(viewer)) && !canShan(viewer)) {
if (viewer === target) return status;
let fv = true;
if (evt && evt.targets) for (let i of evt.targets) {
if (fv) {
if (target === i) fv = false;
continue;
}
if (viewer == i) {
if (isZhu(viewer)) return 0;
self = true;
break;
}
}
}
let mayShan = canShan(target, true);
if (bonus && !target.hasSkillTag('filterDamage', null, {
player: player,
card: card
})) damage = 2;
else damage = 1;
if (isZhu(target)) {
if (eff < 0) {
if (target.hp <= damage + 1 || !mayShan && target.hp <= damage + 2) return 1;
if (mayShan && target.hp > damage + 2) return 0;
else if (mayShan || target.hp > damage + 2) pri = 3;
else pri = 4;
}
else if (target.hp > damage + 1) pri = 2;
else return 0;
}
else if (self) return 0;
else if (eff < 0) {
if (!mayShan && target.hp <= damage) pri = 5;
else if (mayShan) return 0;
else if (target.hp > damage + 1) pri = 2;
else if (target.hp === damage + 1) pri = 3;
else pri = 4;
}
else if (target.hp <= damage) return 0;
let find = false;
if (evt && evt.targets) for (let i = 0; i < evt.targets.length; i++) {
if (!find) {
if (evt.targets[i] === target) find = true;
continue;
}
let att1 = get.attitude(viewer, evt.targets[i]), eff1 = get.effect(evt.targets[i], card, player, evt.targets[i]), temp = 1;
if (Math.abs(att1) < 1 || att1 * eff1 >= 0 || canShan(evt.targets[i])) continue;
mayShan = canShan(evt.targets[i], true);
if (bonus && !evt.targets[i].hasSkillTag('filterDamage', null, {
player: player,
card: card
})) damage = 2;
else damage = 1;
if (isZhu(evt.targets[i])) {
if (eff1 < 0) {
if (evt.targets[i].hp <= damage + 1 || !mayShan && evt.targets[i].hp <= damage + 2) return 0;
if (mayShan && evt.targets[i].hp > damage + 2) continue;
if (mayShan || evt.targets[i].hp > damage + 2) temp = 3;
else temp = 4;
}
else if (evt.targets[i].hp > damage + 1) temp = 2;
else continue;
}
else if (eff1 < 0) {
if (!mayShan && evt.targets[i].hp <= damage) temp = 5;
else if (mayShan) continue;
else if (evt.targets[i].hp > damage + 1) temp = 2;
else if (evt.targets[i].hp === damage + 1) temp = 3;
else temp = 4;
}
else if (evt.targets[i].hp > damage + 1) temp = 2;
if (temp > pri) return 0;
2015-12-06 15:23:47 +00:00
}
return 1;
2015-04-29 03:25:17 +00:00
},
basic: {
order: 9,
useful: 1,
value: 5
2017-04-15 00:25:50 +00:00
},
result: {
player(player, target) {
if (player._wanjian_temp || player.hasSkillTag('jueqing', false, target)) return 0;
player._wanjian_temp = true;
let eff = get.effect(target, new lib.element.VCard({ name: 'wanjian' }), player, target);
delete player._wanjian_temp;
if (eff >= 0) return 0;
if (target.hp > 2 || target.hp > 1 && !target.isZhu && target != game.boss && target != game.trueZhu && target != game.falseZhu) return 0;
if (target.hp > 1 && target.hasSkillTag('respondShan', true, 'respond', true)) return 0;
let known = target.getKnownCards(player);
if (known.some(card => {
let name = get.name(card, target);
if (name === 'shan' || name === 'hufu') return lib.filter.cardRespondable(card, target);
if (name === 'wuxie') return lib.filter.cardEnabled(card, target, 'forceEnable');
})) return 0;
if (target.hp > 1 || target.countCards('hs', i => !known.includes(i)) > 3.67 - 2 * target.hp / target.maxHp) return 0;
let res = 0, att = get.sgnAttitude(player, target);
res -= att * (0.8 * target.countCards('hs') + 0.6 * target.countCards('e') + 3.6);
if (get.mode() === 'identity' && target.identity === 'fan') res += 2.4;
if (get.mode() === 'guozhan' && player.identity !== 'ye' && player.identity === target.identity ||
get.mode() === 'identity' && player.identity === 'zhu' && (target.identity === 'zhong' || target.identity === 'mingzhong')) res -= 0.8 * player.countCards('he');
return res;
2017-04-15 00:25:50 +00:00
},
target(player, target) {
let zhu = (get.mode() === 'identity' && target.isZhu) || target.identity === 'zhu';
if (!lib.filter.cardRespondable({ name: 'shan' }, target)) {
if (zhu) {
if (target.hp < 2) return -99;
if (target.hp === 2) return -3.6;
}
return -2;
}
let known = target.getKnownCards(player);
if (known.some(card => {
let name = get.name(card, target);
if (name === 'shan' || name === 'hufu') return lib.filter.cardRespondable(card, target);
if (name === 'wuxie') return lib.filter.cardEnabled(card, target, 'forceEnable');
})) return -1.2;
let nh = target.countCards('hs', i => !known.includes(i));
if (zhu && target.hp <= 1) {
if (nh === 0) return -99;
if (nh === 1) return -60;
if (nh === 2) return -36;
if (nh === 3) return -8;
return -5;
}
if (target.hasSkillTag('respondShan', true, 'respond', true)) return -1.35;
if (!nh) return -2;
if (nh === 1) return -1.65;
return -1.5;
}
2017-04-15 00:25:50 +00:00
},
tag: {
respond: 1,
respondShan: 1,
damage: 1,
multitarget: 1,
multineg: 1
2017-02-08 01:53:23 +00:00
}
}
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
wuzhong:{
audio:true,
fullskin:true,
type:'trick',
enable:true,
selectTarget:-1,
2017-05-01 06:19:34 +00:00
cardcolor:'red',
2017-07-06 16:25:54 +00:00
toself:true,
2017-04-15 00:25:50 +00:00
filterTarget:function(card,player,target){
return target==player;
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
modTarget:true,
content:function(){
if(get.is.versus()){
if(game.friend.includes(target)){
2017-04-15 00:25:50 +00:00
if(game.friend.length<game.enemy.length){
target.draw(3);return;
2015-04-29 03:25:17 +00:00
}
}
else{
2017-04-15 00:25:50 +00:00
if(game.friend.length>game.enemy.length){
target.draw(3);return;
2015-04-29 03:25:17 +00:00
}
}
}
2017-04-15 00:25:50 +00:00
target.draw(2);
},
ai:{
2024-02-21 14:26:49 +00:00
wuxie:function(target,card,player,viewer){
2024-02-21 23:24:35 +00:00
if(get.mode()=='guozhan'){
if(!_status._aozhan){
if(!player.isMajor()){
if(!viewer.isMajor()) return 0;
}
}
}
2024-02-21 14:26:49 +00:00
},
2017-04-15 00:25:50 +00:00
basic:{
order:7.2,
2017-07-20 00:52:37 +00:00
useful:4.5,
2017-04-15 00:25:50 +00:00
value:9.2
},
result:{
target:2,
},
tag:{
draw:2
2015-04-29 03:25:17 +00:00
}
}
2017-04-15 00:25:50 +00:00
},
juedou:{
audio:true,
fullskin:true,
type:'trick',
enable:true,
2023-08-29 07:14:15 +00:00
defaultYingbianEffect:'hit',
2017-04-15 00:25:50 +00:00
filterTarget:function(card,player,target){
return target!=player;
},
content:function(){
"step 0"
if(event.turn==undefined) event.turn=target;
2019-11-22 05:15:05 +00:00
if(typeof event.baseDamage!='number') event.baseDamage=1;
2019-07-14 10:57:05 +00:00
if(typeof event.extraDamage!='number'){
event.extraDamage=0;
}
2020-09-25 10:40:43 +00:00
if(!event.shaReq) event.shaReq={};
if(typeof event.shaReq[player.playerid]!='number') event.shaReq[player.playerid]=1;
if(typeof event.shaReq[target.playerid]!='number') event.shaReq[target.playerid]=1;
2019-07-14 10:57:05 +00:00
event.playerCards=[];
event.targetCards=[];
2017-04-15 00:25:50 +00:00
"step 1"
event.trigger('juedou');
2019-11-22 05:15:05 +00:00
event.shaRequired=event.shaReq[event.turn.playerid];
2017-04-15 00:25:50 +00:00
"step 2"
if(event.directHit){
event._result={bool:false};
2015-04-29 03:25:17 +00:00
}
else{
2017-04-15 00:25:50 +00:00
var next=event.turn.chooseToRespond({name:'sha'});
2023-11-12 08:12:57 +00:00
if(event.shaRequired>1) next.set('prompt2','共需打出'+event.shaRequired+'张杀');
2017-04-15 00:25:50 +00:00
next.set('ai',function(card){
2023-11-12 08:12:57 +00:00
let event=_status.event,player=event.splayer,target=event.starget;
if(player.hasSkillTag('notricksource')||target.hasSkillTag('notrick')) return 0;
2019-11-22 05:15:05 +00:00
if(event.shaRequired>1&&player.countCards('h','sha')<event.shaRequired) return 0;
2023-11-12 08:12:57 +00:00
if(event.player===target){
if(_status.event.tdamage>=0||player.hasSkill('naman')) return -1;
if(get.attitude(target,player)<=0||event.player.hp<=1&&_status.event.tdamage<_status.event.pdamage){
2021-10-12 05:02:49 +00:00
return get.order(card);
2017-04-15 00:25:50 +00:00
}
return -1;
}
else{
2023-11-12 08:12:57 +00:00
if(_status.event.pdamage>=0||target.hasSkill('naman')) return -1;
if(get.attitude(player,target)<=0||event.player.hp<=1&&_status.event.tdamage>_status.event.pdamage){
2021-10-12 05:02:49 +00:00
return get.order(card);
2017-04-15 00:25:50 +00:00
}
return -1;
}
});
next.set('splayer',player);
next.set('starget',target);
2023-11-12 08:12:57 +00:00
next.set('pdamage',get.damageEffect(player,target,event.turn));
next.set('tdamage',get.damageEffect(target,player,event.turn));
2019-11-22 05:15:05 +00:00
next.set('shaRequired',event.shaRequired);
2017-04-15 00:25:50 +00:00
next.autochoose=lib.filter.autoRespondSha;
2015-12-03 16:28:06 +00:00
if(event.turn==target){
2017-04-15 00:25:50 +00:00
next.source=player;
}
else{
next.source=target;
}
}
"step 3"
2023-10-05 04:53:01 +00:00
if(result.bool){
event.shaRequired--;
if(event.turn==target){
if(result.cards) event.targetCards.addArray(result.cards);
if(event.shaRequired>0) event.goto(2);
2019-07-14 10:57:05 +00:00
else{
2023-10-05 04:53:01 +00:00
event.turn=player;
event.goto(1);
2019-07-14 10:57:05 +00:00
}
2015-12-03 16:28:06 +00:00
}
else{
2023-10-05 04:53:01 +00:00
if(result.cards) event.playerCards.addArray(result.cards);
if(event.shaRequired>0) event.goto(2);
2017-04-15 00:25:50 +00:00
else{
2023-10-05 04:53:01 +00:00
event.turn=target;
event.goto(1);
2017-04-15 00:25:50 +00:00
}
}
}
2023-10-05 04:53:01 +00:00
else{
if(event.turn==target){
target.damage();
}
else{
player.damage(target);
}
}
event._result={};
2017-04-15 00:25:50 +00:00
},
ai:{
wuxie:function(target,card,player,viewer,status){
if(player===game.me&&get.attitude(viewer,player._trueMe||player)>0) return 0;
if(status*get.attitude(viewer,target)*get.effect(target,card,player,target)>=0) return 0;
2019-12-28 14:03:35 +00:00
},
2017-04-15 00:25:50 +00:00
basic:{
order:5,
useful:1,
2018-01-10 10:21:50 +00:00
value:5.5
2017-04-15 00:25:50 +00:00
},
result:{
player(player, target, card) {
if (player.hasSkillTag('directHit_ai', true, {
target: target,
card: card
}, true)) return 0;
if (get.damageEffect(target, player, target) >= 0) return 0;
let pd = get.damageEffect(player, target, player), att = get.attitude(player, target);
if (att > 0 && get.damageEffect(target, player, player) > pd) return 0;
2024-03-26 13:38:09 +00:00
let ts = target.mayHaveSha(player, 'respond', null, 'count'), ps = player.mayHaveSha(player, 'respond', player.getCards('h', i => {
return card === i || card.cards && card.cards.includes(i) || ui.selected.cards.includes(i);
}), 'count');
if (ts < 1 && ts << 3 < Math.pow(player.hp, 2)) return 0;
if (att > 0) {
if (ts < 1) return 0;
2017-04-15 00:25:50 +00:00
return -2;
}
if (ts - ps + Math.exp(0.8 - player.hp) < 1) return -ts;
if (pd >= 0) return pd / get.attitude(player, player);
return -2 - ts;
},
target(player, target, card) {
if (player.hasSkillTag('directHit_ai', true, {
target: target,
card: card
}, true)) return -2;
let td = get.damageEffect(target, player, target);
if (td >= 0) return td / get.attitude(target, target);
let pd = get.damageEffect(player, target, player), att = get.attitude(player, target);
if (att > 0 && get.damageEffect(target, player, player) > pd) return -2;
2024-03-26 13:38:09 +00:00
let ts = target.mayHaveSha(player, 'respond', null, 'count'), ps = player.mayHaveSha(player, 'respond', player.getCards('h', i => {
return card === i || card.cards && card.cards.includes(i) || ui.selected.cards.includes(i);
}), 'count');
if (ts < 1) return -1.5;
if (att > 0) return -2;
if (ts - ps < 1) return -2 - ts;
if (pd >= 0) return -1;
return -ts;
2015-12-03 16:28:06 +00:00
}
2017-04-15 00:25:50 +00:00
},
tag:{
respond:2,
respondSha:2,
damage:1,
2015-04-29 03:25:17 +00:00
}
}
},
2017-04-15 00:25:50 +00:00
shunshou:{
audio:true,
fullskin:true,
type:'trick',
enable:true,
range:{global:1},
selectTarget:1,
postAi:function(targets){
return targets.length==1&&targets[0].countCards('j');
},
filterTarget:function(card,player,target){
if(player==target) return false;
2024-01-22 07:27:27 +00:00
return target.hasCard(card=>lib.filter.canBeGained(card,player,target),get.is.single()?'he':'hej');
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
content:function(){
2023-11-10 07:06:07 +00:00
let pos=get.is.single()?'he':'hej';
2024-04-11 23:58:51 +00:00
if(target.countGainableCards(player,pos)) player.gainPlayerCard(pos, target, true).set('target',target).set("complexSelect",false).set('ai',lib.card.shunshou.ai.button);
2017-04-15 00:25:50 +00:00
},
ai:{
wuxie:function(target,card,player,viewer){
if(get.attitude(viewer,player._trueMe||player)>0) return 0;
2017-04-15 00:25:50 +00:00
},
basic:{
order:7.5,
2023-11-11 05:27:11 +00:00
useful:(card,i)=>8/(3+i),
2023-11-10 07:06:07 +00:00
value:(card,player)=>{
let max=0;
game.countPlayer(cur=>{
max=Math.max(max,lib.card.shunshou.ai.result.target(player,cur)*get.attitude(player,cur));
});
if(max<=0) return 2;
return 0.53*max;
}
},
button:(button)=>{
let player = _status.event.player, target = _status.event.target;
if(!lib.filter.canBeGained(button.link,player,target)) return 0;
let att = get.attitude(player, target),
val = get.value(button.link,player)/60,
btv = get.buttonValue(button),
pos = get.position(button.link),
name = get.name(button.link);
if(pos=='j'){
if(name=='lebu'){
let needs=target.needsToDiscard(2);
btv*=1.08+0.2*needs;
}
else if(name=='shandian'||name=='fulei'||name=='plague') btv/=2;
}
if(get.attitude(player,get.owner(button.link))>0) btv=-btv;
if(pos!='e'){
if(pos=='h'&&!player.hasSkillTag('viewHandcard',null,target,true)) return btv+0.1;
return btv+val;
}
let sub = get.subtype(button.link);
if(sub=='equip1') return btv*Math.min(3.6,target.hp)/3;
if(sub=='equip2'){
if(name=='baiyin'&&pos=='e'&&target.isDamaged()){
let by=3-0.6*Math.min(5,target.hp);
return get.sgn(get.recoverEffect(target,player,player))*by;
}
return 1.57*btv+val;
}
if(att<=0&&(sub=='equip3'||sub=='equip4')&&(player.hasSkill('shouli')||player.hasSkill('psshouli'))) return 0;
if(sub=='equip3'&&!game.hasPlayer((cur)=>!cur.inRange(target)&&get.attitude(cur,target)<0)) return 0.4*btv+val;
if(sub=='equip4') return btv/2+val;
return btv+val;
2017-04-15 00:25:50 +00:00
},
result:{
2023-11-10 07:06:07 +00:00
player:function(player,target){
let att=get.attitude(player,target),
hs=target.hasCard((card)=>lib.filter.canBeGained(card,player,target),'h'),
lose=hs,
gain=att>0?0.52:1.28;
if(Math.abs(att)<5.03){
let temp=0.015*att*att;
if(att<0) gain=0.9+temp;
else gain=0.9-temp;
}
2023-11-10 07:06:07 +00:00
target.countCards('e',function(card){
if(card.name!='jinhe'&&lib.filter.canBeGained(card,player,target)&&att*get.value(card,target)<0){
lose=true;
let val=get.value(card,player);
if(val>0) gain=Math.max(gain,val/7);
}
});
target.countCards('j',function(card){
let cardj=card.viewAs?new lib.element.VCard({name:card.viewAs}):card;
if(lib.filter.canBeGained(card,player,target)&&att*get.effect(target,cardj,target,target)<0){
lose=true;
if(cardj.name=='lebu'){
let needs=target.needsToDiscard(2);
if(att>0) gain=Math.max(gain,1.6+needs/10);
}
else if(cardj.name=='shandian'||cardj.name=='fulei'||cardj.name=='plague') gain=Math.max(gain,1.5/Math.max(1,target.hp));
else if(att>0) gain=Math.max(gain,1.7);
}
});
if(!lose) return 0;
return gain;
2021-10-18 10:34:20 +00:00
},
2023-11-10 07:06:07 +00:00
target:function(player,target){
let att=get.attitude(player,target),
hs=target.countCards('h',(card)=>lib.filter.canBeGained(card,player,target)),
es=target.countCards('e',(card)=>lib.filter.canBeGained(card,player,target)),
js=target.countCards('j',(card)=>lib.filter.canBeGained(card,player,target)),
noh=!hs||target.hasSkillTag('noh'),
noe=!es||target.hasSkillTag('noe'),
check=[-1,att>0?-1.3:1.3,att>0?-2.5:2.5],
idx=-1;
if(hs){
idx=0;
if(noh) check[0]=0.7;
2017-04-15 00:25:50 +00:00
}
2023-11-10 07:06:07 +00:00
if(es){
if(idx<0) idx=1;
if(target.getEquip('baiyin')&&target.isDamaged()&&lib.filter.canBeGained(target.getEquip('baiyin'),player,target)){
let rec=get.recoverEffect(target,player,target);
if(es==1||att*rec>0){
let val=3-0.6*Math.min(5,target.hp);
if(rec>0) check[1]=val;
else if(rec<0) check[1]=-val;
}
}
target.countCards('e',function(card){
let val=get.value(card,target);
if(card.name=='jinhe'||att*val>=0||!lib.filter.canBeGained(card,player,target)) return false;
if(att>0){
check[1]=Math.max(1.3,check[1]);
return true;
}
let sub=get.subtype(card);
if(sub=='equip2'||sub=='equip5') val+=4;
else if(sub=='equip1') val*=0.4*Math.min(3.6,target.hp);
else val*=0.6;
if(target.hp<3&&sub!='equip2'&&sub!='equip5') val*=0.4;
check[1]=Math.min(-0.16*val,check[1]);
});
if(noe) check[1]+=0.9;
2021-10-18 10:34:20 +00:00
}
2023-11-10 07:06:07 +00:00
if(js){
let func=function(num){
if(att>0) check[2]=Math.max(check[2],num);
else check[2]=Math.min(check[2],0.6-num);
};
if(idx<0) idx=2;
target.countCards('j',function(card){
let cardj=card.viewAs?new lib.element.VCard({name:card.viewAs}):card;
if(!lib.filter.canBeGained(card,player,target)||att*get.effect(target,cardj,target,target)>=0) return false;
if(cardj.name=='lebu') func(2.1+0.4*target.needsToDiscard(2));
else if(cardj.name=='bingliang') func(2.4);
else if(cardj.name=='shandian'||cardj.name=='fulei'||cardj.name=='plague') func(Math.abs(check[2])/(1+target.hp));
else func(2.1);
});
}
if(idx<0) return 0;
for(let i=idx+1;i<3;i++){
if(i==1&&!es||i==2&&!js) continue;
if(att>0&&check[i]>check[idx]||att<=0&&check[i]<check[idx]) idx=i;
}
return check[idx];
2021-10-18 10:34:20 +00:00
}
},
tag:{
loseCard:1,
gain:1,
}
}
},
shunshou_copy:{
ai:{
basic:{
order:7.5,
useful:4,
value:9
},
result:{
target:function(player,target,card){
let position='hej';
if(card&&card.position) position=card.position;
const hs=position.includes('h')?target.getGainableCards(player,'h'):[];
const es=position.includes('e')?target.getGainableCards(player,'e'):[];
const js=position.includes('j')?target.getGainableCards(player,'j'):[];
if(get.attitude(player,target)<=0){
if(hs.length>0) return -1.5;
return (es.some(card=>{
return get.value(card,target)>0&&card!=target.getEquip('jinhe');
})||js.some(card=>{
var cardj=card.viewAs?{name:card.viewAs}:card;
return get.effect(target,cardj,target,player)<0;
}))?-1.5:1.5;
}
return (es.some(card=>{
return get.value(card,target)<=0;
})||js.some(card=>{
2021-10-18 10:34:20 +00:00
var cardj=card.viewAs?{name:card.viewAs}:card;
return get.effect(target,cardj,target,player)<0;
}))?1.5:-1.5;
2017-04-15 00:25:50 +00:00
},
player:function(player,target,card){
let position='hej';
if(card&&card.position) position=card.position;
const hs=position.includes('h')?target.getGainableCards(player,'h'):[];
const es=position.includes('e')?target.getGainableCards(player,'e'):[];
const js=position.includes('j')?target.getGainableCards(player,'j'):[];
const att=get.attitude(player,target);
if(att<0){
if(!hs.length&&!es.some(card=>{
return get.value(card,target)>0&&card!=target.getEquip('jinhe');
})&&!js.some(card=>{
var cardj=card.viewAs?{name:card.viewAs}:card;
return get.effect(target,cardj,target,player)<0;
})) return 0;
2017-04-15 00:25:50 +00:00
}
else if(att>1){
return (es.some(card=>{
return get.value(card,target)<=0;
})||js.some(card=>{
2021-10-18 10:34:20 +00:00
var cardj=card.viewAs?{name:card.viewAs}:card;
return get.effect(target,cardj,target,player)<0;
}))?1.5:0;
2021-10-18 10:34:20 +00:00
}
return 1;
}
},
tag:{
loseCard:1,
gain:1,
}
}
},
shunshou_copy2:{
ai:{
basic:{
order:7.5,
useful:4,
value:9
},
result:{
target:function(player,target,card,isLink){
return lib.card.shunshou_copy.ai.result.target(player,target,{
name:'shunshou_copy',
position:'he',
},isLink)
2021-10-18 10:34:20 +00:00
},
player:function(player,target,card,isLink){
return lib.card.shunshou_copy.ai.result.player(player,target,{
name:'shunshou_copy',
position:'he',
},isLink)
2015-04-29 03:25:17 +00:00
}
2017-04-15 00:25:50 +00:00
},
tag:{
loseCard:1,
gain:1,
2015-04-29 03:25:17 +00:00
}
}
},
2017-04-15 00:25:50 +00:00
guohe:{
audio:true,
fullskin:true,
type:'trick',
enable:true,
selectTarget:1,
postAi:function(targets){
return targets.length==1&&targets[0].countCards('j');
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
filterTarget:function(card,player,target){
if(player==target) return false;
2024-01-22 07:27:27 +00:00
return target.hasCard(card=>lib.filter.canBeDiscarded(card,player,target),get.is.single()?'he':'hej');
2015-04-29 03:25:17 +00:00
},
2023-08-29 07:14:15 +00:00
defaultYingbianEffect:'add',
2017-04-15 00:25:50 +00:00
content:function(){
2019-11-07 14:38:08 +00:00
'step 0'
2023-11-10 07:06:07 +00:00
if(get.is.single()){
let bool1 = target.countDiscardableCards(player, 'h'),
bool2 = target.countDiscardableCards(player, 'e');
if(bool1&&bool2) player.chooseControl('手牌区','装备区').set('ai',function(){
return Math.random() < 0.5 ? 1 : 0;
}).set('prompt', '弃置'+get.translation(target)+'装备区的一张牌,或观看其手牌并弃置其中的一张牌。');
2019-11-07 14:38:08 +00:00
else event._result={control:bool1?'手牌区':'装备区'};
2017-04-15 00:25:50 +00:00
}
2023-11-10 07:06:07 +00:00
else event._result={control:'所有区域'};
2019-11-07 14:38:08 +00:00
'step 1'
2023-11-10 07:06:07 +00:00
let pos, vis='visible';
if(result.control=='手牌区') pos='h';
else if(result.control=='装备区') pos='e';
else{
pos='hej';
vis=undefined;
}
2024-04-11 23:58:51 +00:00
if(target.countDiscardableCards(player,pos)) player.discardPlayerCard(pos, target, true, vis).set('target',target).set("complexSelect",false).set('ai',lib.card.guohe.ai.button);
2017-04-15 00:25:50 +00:00
},
ai:{
wuxie:(target,card,player,viewer,status)=>{
if(status*get.attitude(viewer,player._trueMe||player)>0 || target.hp>2&&!target.hasCard(i=>{
2023-11-10 07:06:07 +00:00
let val=get.value(i,target),subtypes=get.subtypes(i);
if(val<8&&target.hp<2&&!subtypes.includes('equip2')&&!subtypes.includes('equip5')) return false;
return val>3+Math.min(5,target.hp);
},'e')&&target.countCards('h')*_status.event.getRand('guohe_wuxie')>1.57) return 0;
},
2017-04-15 00:25:50 +00:00
basic:{
order:9,
2023-11-11 05:27:11 +00:00
useful:(card,i)=>10/(3+i),
2023-11-10 07:06:07 +00:00
value:(card,player)=>{
let max=0;
game.countPlayer(cur=>{
max=Math.max(max,lib.card.guohe.ai.result.target(player,cur)*get.attitude(player,cur));
});
if(max<=0) return 5;
return 0.42*max;
}
2015-04-29 03:25:17 +00:00
},
2021-05-21 12:54:33 +00:00
yingbian:function(card,player,targets,viewer){
if(get.attitude(viewer,player)<=0) return 0;
if(game.hasPlayer(function(current){
return !targets.includes(current)&&lib.filter.targetEnabled2(card,player,current)&&get.effect(current,card,player,player)>0;
2021-05-21 12:54:33 +00:00
})) return 6;
return 0;
},
2023-11-10 07:06:07 +00:00
button:(button)=>{
let player = _status.event.player, target = _status.event.target;
if(!lib.filter.canBeDiscarded(button.link,player,target)) return 0;
let att = get.attitude(player, target),
val = get.buttonValue(button),
pos = get.position(button.link),
name = get.name(button.link);
if(pos==='j'){
if(name==='lebu'){
let needs=target.needsToDiscard(2);
val *= 1.08+0.2*needs;
}
else if(name=='shandian'||name=='fulei'||name=='plague') val /= 2;
}
if(get.attitude(player,get.owner(button.link))>0) val = -val;
if(pos!=='e') return val;
let sub = get.subtypes(button.link);
if(sub.includes('equip1')) return val*Math.min(3.6,target.hp)/3;
if(sub.includes('equip2')){
if(name==='baiyin'&&pos==='e'&&target.isDamaged()){
let by=3-0.6*Math.min(5,target.hp);
return get.sgn(get.recoverEffect(target,player,player))*by;
}
return 1.57*val;
}
if(att<=0&&(sub.includes('equip3')||sub.includes('equip4'))&&(player.hasSkill('shouli')||player.hasSkill('psshouli'))) return 0;
if(sub.includes('equip6')) return val;
if(sub.includes('equip4')) return val/2;
if(sub.includes('equip3')&&!game.hasPlayer((cur)=>{
return !cur.inRange(target)&&get.attitude(cur,target)<0;
})) return 0.4*val;
return val;
},
2017-04-15 00:25:50 +00:00
result:{
target:function(player,target){
2023-11-10 07:06:07 +00:00
let att=get.attitude(player, target),
hs=target.countCards('h',(card)=>lib.filter.canBeDiscarded(card,player,target)),
es=target.countCards('e',(card)=>lib.filter.canBeDiscarded(card,player,target)),
js=target.countCards('j',(card)=>lib.filter.canBeDiscarded(card,player,target)),
noh=!hs||target.hasSkillTag('noh'),
noe=!es||target.hasSkillTag('noe'),
check=[-1,att>0?-1.3:1.3,att>0?-2.5:2.5],
idx=-1;
if(hs){
idx=0;
if(noh) check[0]=0.7;
}
if(es){
if(idx<0) idx=1;
if(target.getEquip('baiyin')&&target.isDamaged()&&lib.filter.canBeDiscarded(target.getEquip('baiyin'),player,target)){
let rec=get.recoverEffect(target,player,target);
if(es==1||att*rec>0){
let val=3-0.6*Math.min(5,target.hp);
if(rec>0) check[1]=val;
else if(rec<0) check[1]=-val;
}
2017-05-10 06:40:14 +00:00
}
2023-11-10 07:06:07 +00:00
target.countCards('e',function(card){
let val=get.value(card,target);
if(card.name=='jinhe'||att*val>=0||!lib.filter.canBeDiscarded(card,player,target)) return false;
if(att>0){
check[1]=Math.max(1.3,check[1]);
return true;
}
let sub=get.subtype(card);
if(sub=='equip2'||sub=='equip5') val+=4;
else if(sub=='equip1') val*=0.4*Math.min(3.6,target.hp);
else val*=0.6;
if(target.hp<3&&sub!='equip2'&&sub!='equip5') val*=0.4;
check[1]=Math.min(-0.16*val,check[1]);
});
if(noe) check[1]+=0.9;
}
2023-11-10 07:06:07 +00:00
if(js){
let func=function(num){
if(att>0) check[2]=Math.max(check[2],num);
else check[2]=Math.min(check[2],0.6-num);
};
if(idx<0) idx=2;
target.countCards('j',function(card){
let cardj=card.viewAs?new lib.element.VCard({name:card.viewAs}):card;
if(!lib.filter.canBeDiscarded(card,player,target)||att*get.effect(target,cardj,target,target)>=0) return false;
if(cardj.name=='lebu') func(2.1+0.4*target.needsToDiscard(2));
else if(cardj.name=='bingliang') func(2.4);
else if(cardj.name=='shandian'||cardj.name=='fulei'||cardj.name=='plague') func(Math.abs(check[2])/(1+target.hp));
else func(2.1);
});
}
if(idx<0) return 0;
for(let i=idx+1;i<3;i++){
if(i==1&&!es||i==2&&!js) continue;
if(att>0&&check[i]>check[idx]||att<=0&&check[i]<check[idx]) idx=i;
2021-10-18 10:34:20 +00:00
}
2023-11-10 07:06:07 +00:00
return check[idx];
2021-10-18 10:34:20 +00:00
},
},
tag:{
loseCard:1,
discard:1
}
}
},
guohe_copy:{
ai:{
basic:{
order:9,
useful:5,
value:5,
},
result:{
target:function(player,target,card){
let position='hej';
if(card&&card.position) position=card.position;
const att=get.attitude(player,target);
const hs=position.includes('h')?target.getDiscardableCards(player,'h'):[];
const es=position.includes('e')?target.getDiscardableCards(player,'e'):[];
const js=position.includes('j')?target.getDiscardableCards(player,'j'):[];
if(!hs.length&&!es.length&&!js.length) return 0;
2021-10-18 10:34:20 +00:00
if(att>0){
if(js.some(card=>{
const cardj=card.viewAs?{name:card.viewAs}:card;
2021-10-18 10:34:20 +00:00
return get.effect(target,cardj,target,player)<0;
})) return 3;
if(target.isDamaged()&&es.some(card=>card.name=='baiyin')&&
2021-10-18 10:34:20 +00:00
get.recoverEffect(target,player,player)>0){
if(target.hp==1&&!target.hujia) return 1.6;
}
if(es.some(card=>{
return get.value(card,target)<0;
})) return 1;
return -1.5;
}
else{
const noh=(hs.length==0||target.hasSkillTag('noh'));
const noe=(es.length==0||target.hasSkillTag('noe'));
const noe2=(noe||!es.some(card=>{
return get.value(card,target)>0;
}));
const noj=(js.length==0||!js.some(card=>{
const cardj=card.viewAs?{name:card.viewAs}:card;
return get.effect(target,cardj,target,player)<0;
}))
if(noh&&noe2&&noj) return 1.5;
return -1.5;
2021-10-18 10:34:20 +00:00
}
},
},
tag:{
loseCard:1,
discard:1
}
}
},
guohe_copy2:{
ai:{
basic:{
order:9,
useful:5,
value:5,
},
result:{
target:function(player,target,card,isLink){
return lib.card.guohe_copy.ai.result.target(player,target,{
name:'guohe_copy',
position:'he',
},isLink)
2017-04-15 00:25:50 +00:00
},
},
tag:{
loseCard:1,
discard:1
2015-11-06 10:05:08 +00:00
}
2015-04-29 03:25:17 +00:00
}
},
2017-04-15 00:25:50 +00:00
jiedao:{
audio:true,
fullskin:true,
type:'trick',
enable:true,
singleCard:true,
targetprompt:['被借刀','出杀目标'],
2022-04-30 12:32:57 +00:00
complexSelect:true,
2017-04-15 00:25:50 +00:00
complexTarget:true,
2017-08-05 02:57:53 +00:00
multicheck:function(){
2022-12-04 16:16:32 +00:00
var card={name:'sha',isCard:true};
2017-08-05 02:57:53 +00:00
return game.hasPlayer(function(current){
2023-08-11 16:58:25 +00:00
if(current.getEquips(1).length>0){
2017-08-05 02:57:53 +00:00
return game.hasPlayer(function(current2){
2022-12-04 16:16:32 +00:00
return current.inRange(current2)&&lib.filter.targetEnabled(card,current,current2);
2017-08-05 02:57:53 +00:00
})
}
});
},
2017-04-15 00:25:50 +00:00
filterTarget:function(card,player,target){
2022-12-04 16:16:32 +00:00
var card={name:'sha',isCard:true};
2023-08-11 16:58:25 +00:00
return player!=target&&target.getEquips(1).length>0&&game.hasPlayer(function(current){
2022-12-04 16:16:32 +00:00
return target!=current&&target.inRange(current)&&lib.filter.targetEnabled(card,target,current);
2022-04-30 12:32:57 +00:00
});
},
filterAddedTarget:function(card,player,target,preTarget){
2022-12-04 16:16:32 +00:00
var card={name:'sha',isCard:true};
return target!=preTarget&&preTarget.inRange(target)&&lib.filter.targetEnabled(card,preTarget,target);
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
content:function(){
"step 0"
2022-04-30 12:32:57 +00:00
if(event.directHit||!event.addedTarget||(!_status.connectMode&&lib.config.skip_shan&&!target.hasSha())){
2017-04-15 00:25:50 +00:00
event.directfalse=true;
}
else{
target.chooseToUse('对'+get.translation(event.addedTarget)+'使用一张杀,或令'+get.translation(player)+'获得你的武器牌',function(card,player){
if(get.name(card)!='sha') return false;
return lib.filter.filterCard.apply(this,arguments);
}).set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){
if(target!=_status.event.sourcex&&!ui.selected.targets.includes(_status.event.sourcex)) return false;
2019-11-14 05:47:38 +00:00
return lib.filter.filterTarget.apply(this,arguments);
2020-03-05 13:10:37 +00:00
}).set('sourcex',event.addedTarget).set('addCount',false).set('respondTo',[player,card]);
2017-04-15 00:25:50 +00:00
}
"step 1"
if(event.directfalse||result.bool==false){
2023-08-11 16:58:25 +00:00
var cards=target.getEquips(1);
2023-01-24 13:26:41 +00:00
if(cards.length) player.gain(cards,target,'give','bySelf');
2017-04-15 00:25:50 +00:00
}
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
ai:{
2020-04-18 05:32:41 +00:00
wuxie:function(target,card,player,viewer){
if(player==game.me&&get.attitude(viewer,player._trueMe||player)>0) return 0;
2020-04-18 05:32:41 +00:00
},
2017-04-15 00:25:50 +00:00
basic:{
order:8,
value:2,
useful:1,
},
result:{
2023-11-24 09:17:49 +00:00
player:(player,target)=>{
if(!target.hasSkillTag('noe')&&get.attitude(player,target)>0) return 0;
return (player.hasSkillTag('noe')?0.32:0.15)*target.getEquips(1).reduce((num,i)=>{
return num+get.value(i,player);
},0);
2017-04-15 00:25:50 +00:00
},
target:(player,target,card)=>{
2024-01-04 15:57:31 +00:00
let targets=[].concat(ui.selected.targets);
2023-11-24 09:17:49 +00:00
if(_status.event.preTarget) targets.add(_status.event.preTarget);
if(targets.length){
let preTarget=targets.lastItem,pre=_status.event.getTempCache('jiedao_result',preTarget.playerid);
if(pre&&pre.card===card&&pre.target.isIn()) return target===pre.target?pre.eff:0;
2023-11-24 09:17:49 +00:00
return get.effect(target,{name:'sha'},preTarget,player)/get.attitude(player,target);
}
let arms=(target.hasSkillTag('noe')?0.32:-0.15)*target.getEquips(1).reduce((num,i)=>{
return num+get.value(i,target);
},0);
if(!target.mayHaveSha(player,'use')) return arms;
let sha=game.filterPlayer(get.info({name:'jiedao'}).filterAddedTarget),addTar=null;
sha=sha.reduce((num,current)=>{
let eff=get.effect(current,{name:'sha'},target,player);
if(eff<=num) return num;
addTar=current;
return eff;
},-100);
if(!addTar) return arms;
sha/=get.attitude(player,target);
_status.event.putTempCache('jiedao_result',target.playerid,{
card:card,
2023-11-24 09:17:49 +00:00
target:addTar,
eff:sha
});
return Math.max(arms,sha);
}
2017-04-15 00:25:50 +00:00
},
tag:{
gain:1,
use:1,
useSha:1,
loseCard:1,
}
2015-04-29 03:25:17 +00:00
}
},
2017-04-15 00:25:50 +00:00
wuxie:{
audio:true,
fullskin:true,
type:'trick',
ai:{
basic:{
2021-10-12 05:02:49 +00:00
useful:[6,4,3],
value:[6,4,3],
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
result:{player:1},
expose:0.2
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
notarget:true,
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
finalDelay:false,
2023-08-29 07:14:15 +00:00
defaultYingbianEffect:'draw',
2019-10-09 14:31:43 +00:00
contentBefore:function(){
'step 0'
2020-03-05 13:10:37 +00:00
if(get.mode()=='guozhan'&&get.cardtag(card,'guo')){
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
var trigger=event.getParent(2)._trigger;
if(trigger.name!='phaseJudge'&&trigger.card.name!='wuxie'&&trigger.targets.length>1){
2019-10-09 14:31:43 +00:00
player.chooseControl('对单体使用','对势力使用').set('prompt','请选择'+get.translation(card)+'的使用方式').set('ai',function(){
return '对势力使用'
});
}
else event.finish();
}
else event.finish();
'step 1'
if(result.control=='对势力使用'){
player.chat('对势力使用');
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
event.getParent().guowuxie=true;
2019-10-09 14:31:43 +00:00
}
},
2017-04-15 00:25:50 +00:00
content:function(){
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
var trigger=event.getParent(2)._trigger;
if(trigger.name=='phaseJudge'){
trigger.untrigger('currentOnly');
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
trigger.cancelled=true;
}
else{
trigger.neutralize();
if(event.getParent().guowuxie==true){
trigger.getParent().excluded.addArray(game.filterPlayer(function(current){
return current.isFriendOf(trigger.target);
}));
}
}
/*
2019-10-31 04:40:01 +00:00
event.result={
wuxied:true,
directHit:evt.directHit||[],
nowuxie:evt.nowuxie,
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
};*/
2017-04-15 00:25:50 +00:00
if(player.isOnline()){
player.send(function(player){
if(ui.tempnowuxie&&!player.hasWuxie()){
ui.tempnowuxie.close();
delete ui.tempnowuxie;
}
},player);
}
else if(player==game.me){
2016-04-11 10:14:04 +00:00
if(ui.tempnowuxie&&!player.hasWuxie()){
ui.tempnowuxie.close();
delete ui.tempnowuxie;
}
}
2023-08-29 07:14:15 +00:00
}
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
lebu:{
audio:true,
fullskin:true,
type:'delay',
filterTarget:function(card,player,target){
return (lib.filter.judge(card,player,target)&&player!=target);
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
judge:function(card){
2021-12-09 13:57:51 +00:00
if(get.suit(card)=='heart') return 1;
return -2;
2017-04-15 00:25:50 +00:00
},
2021-09-23 15:07:50 +00:00
judge2:function(result){
if(result.bool==false) return true;
return false;
},
2017-04-15 00:25:50 +00:00
effect:function(){
if(result.bool==false){
player.skip('phaseUse');
2015-04-29 03:25:17 +00:00
}
},
2017-04-15 00:25:50 +00:00
ai:{
basic:{
order:1,
useful:1,
value:8,
},
result:{
2022-05-30 10:35:29 +00:00
ignoreStatus:true,
2023-11-26 06:23:45 +00:00
target:(player,target)=>{
if(target===_status.currentPhase&&target.skipList.includes('phaseUse')){
let evt=_status.event.getParent('phase');
if(evt&&evt.phaseList.indexOf('phaseJudge')<=evt.num) return 0;
}
let num=target.needsToDiscard(3),cf=Math.pow(get.threaten(target,player),2);
if(!num) return -0.01*cf;
if(target.hp>2) num--;
let dist=Math.sqrt(get.distance(player,target,'absolute'));
2017-04-15 00:25:50 +00:00
if(dist<1) dist=1;
2023-11-26 06:23:45 +00:00
if(target.isTurnedOver()) dist++;
2023-11-26 06:59:32 +00:00
return Math.min(-0.1,-num)*cf/dist;
2017-04-15 00:25:50 +00:00
}
},
tag:{
skip:'phaseUse'
}
2015-04-29 03:25:17 +00:00
}
2017-01-15 09:55:22 +00:00
},
2017-04-15 00:25:50 +00:00
shandian:{
audio:true,
fullskin:true,
type:'delay',
2017-05-06 17:25:44 +00:00
cardnature:'thunder',
2017-04-15 00:25:50 +00:00
modTarget:function(card,player,target){
return lib.filter.judge(card,player,target);
},
enable:function(card,player){
return player.canAddJudge(card);
},
filterTarget:function(card,player,target){
return (lib.filter.judge(card,player,target)&&player==target);
},
selectTarget:[-1,-1],
2023-01-24 13:26:41 +00:00
toself:true,
2017-04-15 00:25:50 +00:00
judge:function(card){
2021-12-09 13:57:51 +00:00
if(get.suit(card)=='spade'&&get.number(card)>1&&get.number(card)<10) return -5;
return 1;
2017-04-15 00:25:50 +00:00
},
2021-09-23 15:07:50 +00:00
judge2:function(result){
if(result.bool==false) return true;
return false;
},
2017-04-15 00:25:50 +00:00
effect:function(){
2017-04-15 00:57:33 +00:00
if(result.bool==false){
2017-04-15 00:25:50 +00:00
player.damage(3,'thunder','nosource');
}
else{
player.addJudgeNext(card);
}
},
cancel:function(){
2017-04-02 05:04:48 +00:00
player.addJudgeNext(card);
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
ai:{
basic:{
order:1,
useful:0,
value:0,
},
result:{
target:function(player,target){
var num=game.countPlayer(function(current){
//var skills=current.getSkills();
2017-04-15 00:25:50 +00:00
for(var j=0;j<current.skills.length;j++){
var rejudge=get.tag(current.skills[j],'rejudge',current);
if(rejudge!=undefined){
if(get.attitude(target,current)>0&&
get.attitude(current,target)>0){
return rejudge;
}
else{
return -rejudge;
}
}
}
});
if(num>0) return num;
if(num==0){
var mode=get.mode();
if(mode=='identity'){
if(target.identity=='nei') return 1;
var situ=get.situation();
if(target.identity=='fan'){
if(situ>1) return 1;
2017-02-11 14:16:35 +00:00
}
else{
2017-04-15 00:25:50 +00:00
if(situ<-1) return 1;
2017-02-11 14:16:35 +00:00
}
2015-04-29 03:25:17 +00:00
}
2017-04-15 00:25:50 +00:00
else if(mode=='guozhan'){
if(target.identity=='ye') return 1;
if(game.hasPlayer(function(current){
return current.identity=='unknown';
})){
return -1;
}
if(get.population(target.identity)==1){
if(target.maxHp>2&&target.hp<2) return 1;
if(game.countPlayer()<3) return -1;
if(target.hp<=2&&target.countCards('he')<=3) return 1;
}
2015-04-29 03:25:17 +00:00
}
}
2017-04-15 00:25:50 +00:00
return -1;
2015-04-29 03:25:17 +00:00
}
2017-04-15 00:25:50 +00:00
},
tag:{
damage:0.16,
natureDamage:0.16,
thunderDamage:0.16,
2015-04-29 03:25:17 +00:00
}
2016-07-05 14:11:33 +00:00
}
},
2017-04-15 00:25:50 +00:00
hanbing:{
fullskin:true,
type:"equip",
subtype:"equip1",
distance:{attackFrom:-1},
skills:['hanbing_skill'],
ai:{
basic:{
equipValue:2
}
2016-07-05 14:11:33 +00:00
},
},
2017-04-15 00:25:50 +00:00
renwang:{
fullskin:true,
type:"equip",
subtype:"equip2",
skills:['renwang_skill'],
ai:{
basic:{
equipValue:7.5
},
},
2016-07-05 14:11:33 +00:00
},
},
2017-04-15 00:25:50 +00:00
skill:{
2018-08-13 07:17:34 +00:00
qinglong_guozhan:{
2019-11-14 05:47:38 +00:00
equipSkill:true,
2018-08-13 07:17:34 +00:00
trigger:{player:'useCard'},
forced:true,
2020-02-14 05:33:43 +00:00
audio:'qinglong_skill',
2019-06-17 07:19:46 +00:00
filter:function(event,player){
return get.mode()=='guozhan'&&event.card.name=='sha';
2018-08-13 07:17:34 +00:00
},
content:function(){
2020-02-14 05:33:43 +00:00
if(!_status.qinglong_guozhan) _status.qinglong_guozhan=[];
_status.qinglong_guozhan.add(trigger);
game.countPlayer2(function(current){
current.addTempSkill('qinglong_guozhan_mingzhi');
});
2021-11-26 14:55:37 +00:00
game.broadcast(function(list){
_status.qinglong_guozhan=list;
},_status.qinglong_guozhan.map(function(i){
return {targets:i.targets};
}))
2020-02-14 05:33:43 +00:00
var next=game.createEvent('qinglong_guozhan');
event.next.remove(next);
trigger.after.add(next);
next.setContent(function(){
_status.qinglong_guozhan.remove(event.parent);
2021-11-26 14:55:37 +00:00
game.broadcast(function(list){
_status.qinglong_guozhan=list;
},_status.qinglong_guozhan.map(function(i){
return {targets:i.targets};
}));
2020-02-14 05:33:43 +00:00
});
2018-08-13 07:17:34 +00:00
}
},
qinglong_guozhan_mingzhi:{
ai:{
2020-02-14 05:33:43 +00:00
nomingzhi:true,
skillTagFilter:function(player){
if(_status.qinglong_guozhan){
for(var i=0;i<_status.qinglong_guozhan.length;i++){
if(_status.qinglong_guozhan[i].targets.includes(player)) return true;
2020-02-14 05:33:43 +00:00
}
}
return false;
},
2018-08-13 07:17:34 +00:00
}
},
2017-04-15 00:25:50 +00:00
hanbing_skill:{
2019-11-14 05:47:38 +00:00
equipSkill:true,
trigger:{source:'damageBegin2'},
2019-06-17 07:19:46 +00:00
//direct:true,
2017-04-15 00:25:50 +00:00
audio:true,
filter:function(event){
2019-06-17 07:19:46 +00:00
return event.card&&event.card.name=='sha'&&event.notLink()&&event.player.getCards('he').length>0;
2017-04-15 00:25:50 +00:00
},
2019-11-22 05:15:05 +00:00
//priority:1,
2019-06-17 07:19:46 +00:00
check:function(event,player){
2019-08-24 15:41:12 +00:00
var target=event.player;
2020-11-13 07:36:36 +00:00
var eff=get.damageEffect(target,player,player,event.nature);
2020-02-14 05:33:43 +00:00
if(get.attitude(player,target)>0){
if(eff>=0) return false;
return true;
}
if(eff<=0) return true;
if(target.hp==1) return false;
if(event.num>1||player.hasSkill('tianxianjiu')||
2019-06-17 07:19:46 +00:00
player.hasSkill('luoyi2')||player.hasSkill('reluoyi2')) return false;
2020-02-14 05:33:43 +00:00
if(target.countCards('he')<2) return false;
var num=0;
var cards=target.getCards('he');
for(var i=0;i<cards.length;i++){
if(get.value(cards[i])>6) num++;
}
if(num>=2) return true;
return false;
},
logTarget:"player",
2019-06-17 07:19:46 +00:00
content:function(){
"step 0"
2020-02-14 05:33:43 +00:00
trigger.cancel();
2017-04-15 00:25:50 +00:00
"step 1"
2019-06-17 07:19:46 +00:00
if(trigger.player.countDiscardableCards(player,'he')){
2019-08-24 15:41:12 +00:00
player.line(trigger.player);
2019-06-17 07:19:46 +00:00
player.discardPlayerCard('he',trigger.player,true);
}
"step 2"
if(trigger.player.countDiscardableCards(player,'he')){
2020-02-14 05:33:43 +00:00
player.line(trigger.player);
2019-06-17 07:19:46 +00:00
player.discardPlayerCard('he',trigger.player,true);
2016-07-05 14:11:33 +00:00
}
}
2017-04-15 00:25:50 +00:00
},
2020-12-19 01:36:50 +00:00
icesha_skill:{
inherit:'hanbing_skill',
2024-03-18 12:41:42 +00:00
trigger:{source:'damageBegin3'},
2020-12-19 01:36:50 +00:00
equipSkill:false,
ruleSkill:true,
filter:function(event){
return event.hasNature('ice')&&event.notLink()&&event.player.getCards('he').length>0;
2020-12-19 01:36:50 +00:00
},
},
2017-04-15 00:25:50 +00:00
renwang_skill:{
2019-11-14 05:47:38 +00:00
equipSkill:true,
2019-06-17 07:19:46 +00:00
trigger:{target:'shaBegin'},
2017-04-15 00:25:50 +00:00
forced:true,
priority:6,
audio:true,
2018-08-20 05:51:05 +00:00
filter:function(event,player){
2019-11-14 05:47:38 +00:00
if(player.hasSkillTag('unequip2')) return false;
2018-08-20 05:51:05 +00:00
if(event.player.hasSkillTag('unequip',false,{
name:event.card?event.card.name:null,
target:player,
card:event.card
})) return false;
2017-04-15 00:25:50 +00:00
return (event.card.name=='sha'&&get.color(event.card)=='black')
},
content:function(){
2017-09-15 07:51:09 +00:00
trigger.cancel();
2017-04-15 00:25:50 +00:00
},
ai:{
effect:{
2019-11-14 05:47:38 +00:00
target:function(card,player,target){
2023-11-15 12:20:40 +00:00
if(typeof card!=='object'||target.hasSkillTag('unequip2')) return;
2018-08-20 05:51:05 +00:00
if(player.hasSkillTag('unequip',false,{
name:card?card.name:null,
2021-01-19 14:04:52 +00:00
target:target,
2018-08-20 05:51:05 +00:00
card:card
2020-02-14 05:33:43 +00:00
})||player.hasSkillTag('unequip_ai',false,{
name:card?card.name:null,
2021-01-19 14:04:52 +00:00
target:target,
2020-02-14 05:33:43 +00:00
card:card
2018-08-20 05:51:05 +00:00
})) return;
2023-11-15 12:20:40 +00:00
if(card.name=='sha'&&get.color(card)=='black') return 'zeroplayertarget';
2017-02-08 01:53:23 +00:00
}
}
2015-04-29 03:25:17 +00:00
}
},
2017-04-15 00:25:50 +00:00
zhuge_skill:{
2019-11-14 05:47:38 +00:00
equipSkill:true,
2020-01-11 12:17:57 +00:00
audio:true,
firstDo:true,
trigger:{player:'useCard1'},
forced:true,
filter:function(event,player){
return !event.audioed&&event.card.name=='sha'&&player.countUsed('sha',true)>1&&event.getParent().type=='phase';
},
content:function(){
trigger.audioed=true;
},
2017-04-15 00:25:50 +00:00
mod:{
cardUsable:function(card,player,num){
2023-08-12 14:57:27 +00:00
var cards=player.getEquips('zhuge')
if(card.name=='sha'){
if(!cards.length||player.hasSkill('zhuge_skill',null,false)||cards.some(card=>(card!=_status.zhuge_temp&&!ui.selected.cards.includes(card)))){
2023-08-12 14:57:27 +00:00
if(get.is.versus()||get.is.changban()){
return num+3;
}
return Infinity;
2017-04-15 00:25:50 +00:00
}
}
2020-11-13 07:36:36 +00:00
},
cardEnabled2:function(card,player){
if(!_status.event.addCount_extra||player.hasSkill('zhuge_skill',null,false)) return;
2023-08-12 14:57:27 +00:00
var cards=player.getEquips('zhuge');
if(card&&cards.includes(card)){
2021-05-27 16:12:07 +00:00
try{
var cardz=get.card();
}
catch(e){
return;
}
2021-05-08 12:10:31 +00:00
if(!cardz||cardz.name!='sha') return;
2023-08-12 14:57:27 +00:00
_status.zhuge_temp=card;
2020-11-13 07:36:36 +00:00
var bool=lib.filter.cardUsable(get.autoViewAs({name:'sha'},ui.selected.cards.concat([card])),player);
delete _status.zhuge_temp;
if(!bool) return false;
}
},
2017-04-15 00:25:50 +00:00
},
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
cixiong_skill:{
2019-11-14 05:47:38 +00:00
equipSkill:true,
2019-10-24 04:55:01 +00:00
trigger:{player:'useCardToPlayered'},
2017-04-15 00:25:50 +00:00
audio:true,
logTarget:'target',
2020-03-13 10:02:18 +00:00
check:function(event,player){
if(get.attitude(player,event.target)>0) return true;
2020-03-13 13:15:17 +00:00
var target=event.target;
2020-03-13 10:02:18 +00:00
return target.countCards('h')==0||!target.hasSkillTag('noh');
},
2017-04-15 00:25:50 +00:00
filter:function(event,player){
2019-10-24 04:55:01 +00:00
if(event.card.name!='sha') return false;
2021-11-23 04:58:31 +00:00
return player.differentSexFrom(event.target);
2017-04-15 00:25:50 +00:00
},
content:function(){
"step 0"
v1.9.123 (#158) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js * Add files via upload * Add files via upload * UI fix, Pinyin * 李白 * Add files via upload * Add files via upload * collab pack, shen_dengai * 朱铁雄, 小约翰可汗, 铜雀台补全 * small change * 新增阮籍语音,修复阮籍的一个bug * 添加族王凌和界孙登的语音 * 调整火攻和雌雄剑效果为只有1牌/0牌的时候直接亮出/令摸牌;新增一些语音 * 添加武诸葛、神邓艾配音 * 更新武诸葛、袁姬技能,bug修复 * 新增严纲、公孙范、乐蔡文姬、OL王朗,bug修复,添加相关语音 * 添加十周年地主相关语音,修复张世平的一个AIbug * 修改intro的一个问题 * collab AI * 新增OL界二张、甘夫人糜夫人,线下小杀小闪小酒小桃小乐;解禁刘宠骆俊 * v1.9.123 update info --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn> Co-authored-by: lieren2023 <131325076+lieren2023@users.noreply.github.com>
2023-07-14 15:04:55 +00:00
if(!trigger.target.countCards('h')) event._result={bool:false};
else trigger.target.chooseToDiscard('弃置一张手牌,或令'+get.translation(player)+'摸一张牌').set('ai',function(card){
2017-04-15 00:25:50 +00:00
var trigger=_status.event.getTrigger();
v1.9.123 (#158) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js * Add files via upload * Add files via upload * UI fix, Pinyin * 李白 * Add files via upload * Add files via upload * collab pack, shen_dengai * 朱铁雄, 小约翰可汗, 铜雀台补全 * small change * 新增阮籍语音,修复阮籍的一个bug * 添加族王凌和界孙登的语音 * 调整火攻和雌雄剑效果为只有1牌/0牌的时候直接亮出/令摸牌;新增一些语音 * 添加武诸葛、神邓艾配音 * 更新武诸葛、袁姬技能,bug修复 * 新增严纲、公孙范、乐蔡文姬、OL王朗,bug修复,添加相关语音 * 添加十周年地主相关语音,修复张世平的一个AIbug * 修改intro的一个问题 * collab AI * 新增OL界二张、甘夫人糜夫人,线下小杀小闪小酒小桃小乐;解禁刘宠骆俊 * v1.9.123 update info --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn> Co-authored-by: lieren2023 <131325076+lieren2023@users.noreply.github.com>
2023-07-14 15:04:55 +00:00
return -get.attitude(trigger.target,trigger.player)-get.value(card)-Math.max(0,4-trigger.target.hp)*2;
2017-04-15 00:25:50 +00:00
});
"step 1"
if(result.bool==false) player.draw();
2017-02-28 05:24:12 +00:00
}
2016-04-04 14:15:58 +00:00
},
2017-04-15 00:25:50 +00:00
qinggang_skill:{
2019-11-14 05:47:38 +00:00
equipSkill:true,
audio:true,
trigger:{
player:'useCardToPlayered',
},
filter:function(event){
return event.card.name=='sha';
},
forced:true,
logTarget:'target',
content:function(){
trigger.target.addTempSkill('qinggang2');
trigger.target.storage.qinggang2.add(trigger.card);
2022-08-18 14:57:28 +00:00
trigger.target.markSkill('qinggang2');
2019-11-14 05:47:38 +00:00
},
2020-02-14 05:33:43 +00:00
ai:{
unequip_ai:true,
2017-04-15 00:25:50 +00:00
skillTagFilter:function(player,tag,arg){
if(arg&&arg.name=='sha') return true;
return false;
}
2020-02-14 05:33:43 +00:00
}
2019-11-14 05:47:38 +00:00
},
qinggang2:{
firstDo:true,
ai:{unequip2:true},
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=[];
},
onremove:true,
trigger:{
player:['damage','damageCancelled','damageZero'],
2020-12-09 13:40:44 +00:00
source:['damage','damageCancelled','damageZero'],
2022-12-04 16:16:32 +00:00
target:['shaMiss','useCardToExcluded','useCardToEnd','eventNeutralized'],
2020-10-15 05:41:31 +00:00
global:['useCardEnd'],
2019-11-14 05:47:38 +00:00
},
charlotte:true,
filter:function(event,player){
return player.storage.qinggang2&&event.card&&player.storage.qinggang2.includes(event.card)&&(event.name!='damage'||event.notLink());
2019-11-14 05:47:38 +00:00
},
silent:true,
forced:true,
popup:false,
priority:12,
content:function(){
Our Song. 马上就要高考了,这次的版本更新应该是考前的最后一次更新了。 真的很感谢这段时间以来身边的大家。身边的老师和同学也好,Key圈的各位键子们也好,无名杀玩家们也好,正是有了你们的陪伴和支持,我才能够坚持下来,走到今天的这一步。 祝愿包括我自己在内的所有考生高考顺利,金榜题名吧! 最后,在这里复制粘贴一下《Angel Beats!》TV版的ED,某种意义上也是仲村ゆり的角色歌的《Brave Song》的歌词: ``` いつもひとりで歩いてた 振り返るとみんなは遠く 一路走来形单影只 转身回首望去 大家已经远去 それでもあたしは歩いた それが強さだった 即使如此我依然前行 这正是我的坚强 もう何も恐くない そう呟いてみせる 经历 使我无所畏惧 再多冷漠也是一句叹息 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 孤独さえ愛し笑ってられるように あたしは戦うんだ 为了那笑容下与孤独作伴的勇气 我决定战斗到底 涙なんて見せないんだ 我已不再哭泣 いつもひとりで歩いてた 行く先には崖が待ってた 一路走来形单影只 而前方等着的却是山崖 それでもあたしは歩いた 強さの証明のため 即使如此我依然前行 为了证明这份坚强 吹き付ける強い風 汗でシャツが張りつく 强风吹过 汗水将衣服粘湿 いつか忘れてしまえるなら 生きることそれはたやすいもの 若有一天将一切尽数忘掉的话 生存其实并不困难 忘却の彼方へと落ちていくなら それは逃げることだろう 而若坠落在那忘却的彼端的话 那便成了逃避吧 生きた意味すら消えるだろう 就连生存的意义也会消失殆尽吧 風はやがて凪いでた 汗も乾いて 风终于停息 汗也干了 お腹が空いてきたな 何かあったっけ 肚子也饿了啊 有什么可吃的吗 賑やかな声と共にいい匂いがやってきた 同熙攘的声音一道 喷香的味道也传了过来 いつもひとりで歩いてた みんなが待っていた 一路走来形单影只 大家在前方等着我 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 それでもいい 安らかなこの気持ちは それを仲間と呼ぶんだ 这倒也没什么 这种安宁的感情 称之为伙伴 いつかみんなと過ごした日々も忘れてどこかで生きてるよ 有一天我会忘掉和大家在一起度过的日子而生活在他乡 その時はもう強くなんかないよ 到了那时 我不会再坚强了 普通の女の子の弱さで涙を零すよ 像普通的女孩一样流下柔弱的泪水 ```
2020-07-03 05:22:31 +00:00
player.storage.qinggang2.remove(trigger.card);
if(!player.storage.qinggang2.length) player.removeSkill('qinggang2');
2019-11-14 05:47:38 +00:00
},
2022-04-18 02:27:32 +00:00
marktext:'※',
intro:{content:'当前防具技能已失效'},
2016-07-01 03:09:23 +00:00
},
2017-04-15 00:25:50 +00:00
qinglong_skill:{
2019-11-14 05:47:38 +00:00
equipSkill:true,
2022-12-04 16:16:32 +00:00
trigger:{player:['shaMiss','eventNeutralized']},
2017-04-15 00:25:50 +00:00
direct:true,
filter:function(event,player){
2022-12-04 16:16:32 +00:00
if(get.mode()=='guozhan'||!event.card||event.card.name!='sha') return false;
2023-05-02 11:26:19 +00:00
return event.target.isIn()&&player.canUse('sha',event.target,false)&&(player.hasSha()||_status.connectMode&&player.countCards('hs'));
2017-04-15 00:25:50 +00:00
},
content:function(){
"step 0"
2022-12-04 16:16:32 +00:00
player.chooseToUse(get.prompt('qinglong',trigger.target),function(card,player,event){
2020-07-17 22:44:32 +00:00
if(get.name(card)!='sha') return false;
2023-08-12 14:57:27 +00:00
if(!player.hasSkill('qinglong_skill',null,false)){
var cards=player.getEquips('qinglong');
if(!cards.some(card2=>card2!=card&&!ui.selected.cards.includes(card2))) return false;
2023-08-12 14:57:27 +00:00
}
2020-07-17 22:44:32 +00:00
return lib.filter.filterCard.apply(this,arguments);
2023-07-28 17:28:39 +00:00
},trigger.target,-1).set('addCount',false).logSkill='qinglong_skill';
2017-04-15 00:25:50 +00:00
}
2016-01-24 08:34:21 +00:00
},
2017-04-15 00:25:50 +00:00
zhangba_skill:{
2019-11-14 05:47:38 +00:00
equipSkill:true,
2017-04-15 00:25:50 +00:00
enable:['chooseToUse','chooseToRespond'],
filterCard:true,
selectCard:2,
2021-05-18 07:57:26 +00:00
position:'hs',
2017-04-15 00:25:50 +00:00
viewAs:{name:'sha'},
2020-03-07 14:00:26 +00:00
complexCard:true,
2017-04-15 00:25:50 +00:00
filter:function(event,player){
2021-05-18 07:57:26 +00:00
return player.countCards('hs')>=2;
2016-07-01 03:09:23 +00:00
},
2017-04-15 00:25:50 +00:00
audio:true,
prompt:'将两张手牌当杀使用或打出',
check:function(card){
let player=_status.event.player;
if(player.hasCard(function(card){
return get.name(card)=='sha';
})) return 0;
if(_status.event&&_status.event.name=='chooseToRespond'&&player.hp<3&&!player.countCards('hs',function(card){
return get.name(card)!='tao'&&get.name(card)!='jiu';
})) return (player.hp>1?10:8)-get.value(card);
return Math.max(5,8-0.7*player.hp)-get.value(card);
2017-04-15 00:25:50 +00:00
},
ai:{
respondSha:true,
skillTagFilter:function(player){
2021-05-18 07:57:26 +00:00
return player.countCards('hs')>=2;
2017-04-15 00:25:50 +00:00
},
}
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
guanshi_skill:{
2019-11-14 05:47:38 +00:00
equipSkill:true,
2022-12-04 16:16:32 +00:00
trigger:{
player:['shaMiss','eventNeutralized'],
},
2017-04-15 00:25:50 +00:00
direct:true,
audio:true,
filter:function(event,player){
2023-08-11 16:58:25 +00:00
if(event.type!='card'||event.card.name!='sha'||!event.target.isIn()) return false;
var min=2;
if(!player.hasSkill('guanshi_skill',null,false)) min+=get.sgn(player.getEquips('guanshi').length)
return player.countCards('he')>=min;
2017-04-15 00:25:50 +00:00
},
content:function(){
"step 0"
2023-08-11 16:58:25 +00:00
//装备区内可能有多个贯石斧 或者玩家可能通过其他渠道获得贯石斧技能 只要留一张贯石斧不扔掉即可
var next=player.chooseToDiscard(get.prompt('guanshi'),2,'he',function(card,player){
if(_status.event.ignoreCard) return true;
var cards=player.getEquips('guanshi');
if(!cards.includes(card)) return true;
return cards.some(cardx=>(cardx!=card&&!ui.selected.cards.includes(cardx)));
2023-08-11 16:58:25 +00:00
}).set('ignoreCard',player.hasSkill('guanshi_skill',null,false)).set('complexCard',true)
2017-04-15 00:25:50 +00:00
next.logSkill='guanshi_skill';
next.set('ai',function(card){
2020-10-09 03:37:02 +00:00
var evt=_status.event.getTrigger();
if(get.attitude(evt.player,evt.target)<0){
if(player.needsToDiscard()) return 15-get.value(card);
if(evt.baseDamage+evt.extraDamage>=Math.min(2,evt.target.hp)) return 8-get.value(card);
return 5-get.value(card);
2015-04-29 03:25:17 +00:00
}
2017-04-15 00:25:50 +00:00
return -1;
});
"step 1"
if(result.bool){
2022-12-04 16:16:32 +00:00
if(event.triggername=='shaMiss'){
trigger.untrigger();
trigger.trigger('shaHit');
trigger._result.bool=false;
trigger._result.result=null;
}
else{
trigger.unneutralize();
}
2015-04-29 03:25:17 +00:00
}
2021-01-19 14:04:52 +00:00
},
ai:{
directHit_ai:true,
skillTagFilter:function(player,tag,arg){
2021-01-23 11:25:04 +00:00
if(player._guanshi_temp) return;
player._guanshi_temp=true;
2023-03-31 11:34:38 +00:00
var bool=(get.attitude(player,arg.target)<0&&arg.card&&arg.card.name=='sha'&&player.countCards('he',function(card){
return card!=player.getEquip('guanshi')&&card!=arg.card&&(!arg.card.cards||!arg.card.cards.includes(card))&&get.value(card)<5;
2021-01-23 11:25:04 +00:00
})>1);
delete player._guanshi_temp;
return bool;
2021-01-19 14:04:52 +00:00
},
},
2015-04-29 03:25:17 +00:00
},
2017-04-15 00:25:50 +00:00
fangtian_skill:{
2019-11-14 05:47:38 +00:00
equipSkill:true,
2019-12-13 14:13:01 +00:00
audio:true,
2020-01-11 12:17:57 +00:00
trigger:{player:'useCard1'},
forced:true,
firstDo:true,
filter:function(event,player){
if(event.card.name!='sha'||get.mode()=='guozhan') return false;
var card=event.card;
var range;
var select=get.copy(get.info(card).selectTarget);
if(select==undefined){
if(get.info(card).filterTarget==undefined) return false;
range=[1,1];
}
else if(typeof select=='number') range=[select,select];
else if(get.itemtype(select)=='select') range=select;
else if(typeof select=='function') range=select(card,player);
game.checkMod(card,player,range,'selectTarget',player);
return range[1]!=-1&&event.targets.length>range[1];
},
content:function(){},
2017-04-15 00:25:50 +00:00
mod:{
selectTarget:function(card,player,range){
if(card.name!='sha') return;
2018-08-13 07:17:34 +00:00
if(get.mode()=='guozhan') return;
2017-04-15 00:25:50 +00:00
if(range[1]==-1) return;
var cards=player.getCards('h');
2020-01-11 12:17:57 +00:00
if(!cards.length) return;
2017-04-15 00:25:50 +00:00
for(var i=0;i<cards.length;i++){
if(cards[i].classList.contains('selected')==false)
return;
}
range[1]+=2;
}
2015-04-29 03:25:17 +00:00
}
2016-07-17 03:28:46 +00:00
},
2018-08-13 07:17:34 +00:00
fangtian_guozhan:{
2019-11-14 05:47:38 +00:00
equipSkill:true,
2019-12-13 14:13:01 +00:00
trigger:{player:'useCard2'},
2018-08-13 07:17:34 +00:00
filter:function(event,player){
if(get.mode()!='guozhan') return false;
2019-12-13 14:13:01 +00:00
if(event.card.name!='sha') return false;
return game.hasPlayer(function(target){
if(event.targets.includes(target)) return false;
2019-12-13 14:13:01 +00:00
if(!lib.filter.filterTarget(event.card,player,target)) return false;
if(target.identity=='ye'||target.identity=='unknown') return true;
for(var i=0;i<event.targets.length;i++){
if(target.identity==event.targets[i].identity) return false;
}
return true;
});
2018-08-13 07:17:34 +00:00
},
2019-12-13 14:13:01 +00:00
direct:true,
2018-08-13 07:17:34 +00:00
content:function(){
2019-12-13 14:13:01 +00:00
'step 0'
player.chooseTarget(get.prompt2('fangtian'),[1,Infinity],function(card,player,target){
var cardx=_status.event.cardx;
if(!lib.filter.filterTarget(cardx,player,target)) return false;
var targets=_status.event.targets.slice(0).concat(ui.selected.targets);
if(targets.includes(target)) return false;
2019-12-13 14:13:01 +00:00
if(target.identity=='ye'||target.identity=='unknown') return true;
2019-08-13 04:37:11 +00:00
for(var i=0;i<targets.length;i++){
2019-12-13 14:13:01 +00:00
if(target.identity==targets[i].identity) return false;
2018-08-13 07:17:34 +00:00
}
2019-12-13 14:13:01 +00:00
return true;
2020-02-16 04:25:41 +00:00
}).set('promptbar','none').set('cardx',trigger.card).set('targets',trigger.targets).set('ai',function(target){
2019-12-13 14:13:01 +00:00
var player=_status.event.player;
return get.effect(target,_status.event.cardx,player,player)
});
'step 1'
if(result.bool){
player.logSkill('fangtian_skill',result.targets);
if(!player.storage.fangtian_guozhan_trigger) player.storage.fangtian_guozhan_trigger=[];
player.storage.fangtian_guozhan_trigger.add(trigger.card);
trigger.targets.addArray(result.targets);
player.addTempSkill('fangtian_guozhan_trigger');
2018-08-13 07:17:34 +00:00
}
2019-12-13 14:13:01 +00:00
},
2018-08-13 07:17:34 +00:00
},
fangtian_guozhan_trigger:{
trigger:{player:'shaMiss'},
silent:true,
onremove:true,
content:function(){
if(player.storage[event.name].includes(trigger.card)) trigger.getParent().excluded.addArray(trigger.getParent().targets);
2019-12-13 14:13:01 +00:00
},
group:'fangtian_guozhan_remove',
2018-08-13 07:17:34 +00:00
},
fangtian_guozhan_remove:{
2019-12-13 14:13:01 +00:00
trigger:{player:['useCardAfter','useCardCancelled']},
2018-08-13 07:17:34 +00:00
silent:true,
filter:function(event,player){
return player.storage.fangtian_guozhan_trigger&&player.storage.fangtian_guozhan_trigger.includes(event.card);
2018-08-13 07:17:34 +00:00
},
content:function(){
player.storage.fangtian_guozhan_trigger.remove(trigger.card);
}
},
2017-04-15 00:25:50 +00:00
qilin_skill:{
2019-11-14 05:47:38 +00:00
equipSkill:true,
trigger:{source:'damageBegin2'},
2017-04-15 00:25:50 +00:00
filter:function(event,player){
2019-07-07 10:35:24 +00:00
return event.card&&event.card.name=='sha'&&event.notLink()&&event.player.getCards('e',{subtype:['equip3','equip4','equip6']}).length>0
2017-04-15 00:25:50 +00:00
},
direct:true,
audio:true,
content:function(){
"step 0"
2019-06-17 07:19:46 +00:00
var att=(get.attitude(player,trigger.player)<=0);
2017-04-15 00:25:50 +00:00
var next=player.chooseButton();
next.set('att',att);
2019-07-07 10:35:24 +00:00
next.set('createDialog',['是否发动【麒麟弓】,弃置'+get.translation(trigger.player)+'的一张坐骑牌?',trigger.player.getCards('e',{subtype:['equip3','equip4','equip6']})]);
2017-04-15 00:25:50 +00:00
next.set('ai',function(button){
if(_status.event.att) return get.buttonValue(button);
return 0;
});
"step 1"
if(result.bool){
2019-06-17 07:19:46 +00:00
player.logSkill('qilin_skill',trigger.player);
trigger.player.discard(result.links[0]);
2017-04-15 00:25:50 +00:00
}
2015-04-29 03:25:17 +00:00
}
},
2017-04-15 00:25:50 +00:00
bagua_skill:{
2019-11-14 05:47:38 +00:00
equipSkill:true,
2019-12-05 15:05:56 +00:00
trigger:{player:['chooseToRespondBegin','chooseToUseBegin']},
2017-04-15 00:25:50 +00:00
filter:function(event,player){
if(event.responded) return false;
2020-02-14 05:33:43 +00:00
if(event.bagua_skill) return false;
2021-01-19 14:04:52 +00:00
if(!event.filterCard||!event.filterCard({name:'shan'},player,event)) return false;
2019-12-05 15:05:56 +00:00
if(event.name=='chooseToRespond'&&!lib.filter.cardRespondable({name:'shan'},player,event)) return false;
2019-11-14 05:47:38 +00:00
if(player.hasSkillTag('unequip2')) return false;
2017-04-15 00:25:50 +00:00
var evt=event.getParent();
2018-08-20 05:51:05 +00:00
if(evt.player&&evt.player.hasSkillTag('unequip',false,{
name:evt.card?evt.card.name:null,
target:player,
card:evt.card
})) return false;
2017-04-15 00:25:50 +00:00
return true;
},
audio:true,
check:function(event,player){
2024-04-03 14:49:52 +00:00
if(!event) return true;
if(event.ai){
var ai=event.ai;
2019-12-07 12:48:38 +00:00
var tmp=_status.event;
_status.event=event;
var result=ai({name:'shan'},_status.event.player,event);
_status.event=tmp;
return result>0;
}
2024-04-03 14:49:52 +00:00
let evt=event.getParent();
if(player.hasSkillTag('noShan',null,evt)) return false;
if(!evt||!evt.card||!evt.player||player.hasSkillTag('useShan',null,evt)) return true;
if(evt.card&&evt.player&&player.isLinked()&&game.hasNature(evt.card)&&get.attitude(player,evt.player._trueMe||evt.player)>0) return false;
2017-04-15 00:25:50 +00:00
return true;
},
content:function(){
"step 0"
2020-02-23 05:45:11 +00:00
trigger.bagua_skill=true;
2021-09-23 15:07:50 +00:00
player.judge('bagua',function(card){return (get.color(card)=='red')?1.5:-0.5}).judge2=function(result){
return result.bool;
};
2017-04-15 00:25:50 +00:00
"step 1"
if(result.judge>0){
trigger.untrigger();
2019-12-28 14:03:35 +00:00
trigger.set('responded',true);
2020-03-05 13:10:37 +00:00
trigger.result={bool:true,card:{name:'shan',isCard:true}}
2015-04-29 03:25:17 +00:00
}
2017-04-15 00:25:50 +00:00
},
ai:{
2019-12-06 15:36:01 +00:00
respondShan:true,
freeShan:true,
skillTagFilter(player,tag,arg){
if(tag!=='respondShan'&&tag!=='freeShan') return;
if(player.hasSkillTag('unequip2')) return false;
if(!arg||!arg.player) return true;
if(arg.player.hasSkillTag('unequip',false,{
target:player
})) return false;
return true;
},
2017-04-15 00:25:50 +00:00
effect:{
target:function(card,player,target,effect){
2020-02-14 05:33:43 +00:00
if(target.hasSkillTag('unequip2')) return;
2018-08-20 05:51:05 +00:00
if(player.hasSkillTag('unequip',false,{
name:card?card.name:null,
2021-01-19 14:04:52 +00:00
target:target,
2018-08-20 05:51:05 +00:00
card:card
2020-02-14 05:33:43 +00:00
})||player.hasSkillTag('unequip_ai',false,{
name:card?card.name:null,
2021-01-19 14:04:52 +00:00
target:target,
2020-02-14 05:33:43 +00:00
card:card
2018-08-20 05:51:05 +00:00
})) return;
2017-04-15 00:25:50 +00:00
if(get.tag(card,'respondShan')) return 0.5;
}
2017-02-04 17:02:18 +00:00
}
2016-04-02 08:05:24 +00:00
}
},
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
_wuxie:{
trigger:{player:['useCardToBegin','phaseJudge']},
priority:5,
popup:false,
forced:true,
2024-01-20 03:26:14 +00:00
silent:true,
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
filter:function(event,player){
if(event.card.storage&&event.card.storage.nowuxie) return false;
var card=event.card;
if(event.name=='phaseJudge'&&card.viewAs) card={name:card.viewAs};
var info=get.info(card);
if(info.wuxieable===false) return false;
if(event.name!='phaseJudge'){
if(event.getParent().nowuxie) return false;
if(event.player.hasSkillTag('playernowuxie',false,event.card)) return false;
if(get.type(event.card)!='trick'&&!info.wuxieable) return false;
}
return true;
},
forceLoad:true,
forceDie:true,
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
content:function(){
'step 0'
delete event.wuxieresult;
delete event.wuxieresult2;
//创建map存储各种信息用于hasHiddenWuxie判断
var map={};
event._info_map=map;
var card=trigger.card;
var state=true;
v1.9.123 (#158) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js * Add files via upload * Add files via upload * UI fix, Pinyin * 李白 * Add files via upload * Add files via upload * collab pack, shen_dengai * 朱铁雄, 小约翰可汗, 铜雀台补全 * small change * 新增阮籍语音,修复阮籍的一个bug * 添加族王凌和界孙登的语音 * 调整火攻和雌雄剑效果为只有1牌/0牌的时候直接亮出/令摸牌;新增一些语音 * 添加武诸葛、神邓艾配音 * 更新武诸葛、袁姬技能,bug修复 * 新增严纲、公孙范、乐蔡文姬、OL王朗,bug修复,添加相关语音 * 添加十周年地主相关语音,修复张世平的一个AIbug * 修改intro的一个问题 * collab AI * 新增OL界二张、甘夫人糜夫人,线下小杀小闪小酒小桃小乐;解禁刘宠骆俊 * v1.9.123 update info --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn> Co-authored-by: lieren2023 <131325076+lieren2023@users.noreply.github.com>
2023-07-14 15:04:55 +00:00
if(trigger.name=='phaseJudge'){
if(get.itemtype(card)=='card'&&card.viewAs) card=get.autoViewAs({name:card.viewAs},[card]);
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
map.target=trigger.player;
map.isJudge=true;
}
else{
map.player=trigger.player;
if(trigger.multitarget) map.multitargets=true;
map.target=trigger.target;
map.targets=trigger.targets;
map.tempnowuxie=(trigger.targets&&trigger.targets.length>1&&!trigger.multitarget);
v1.9.123 (#158) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js * Add files via upload * Add files via upload * UI fix, Pinyin * 李白 * Add files via upload * Add files via upload * collab pack, shen_dengai * 朱铁雄, 小约翰可汗, 铜雀台补全 * small change * 新增阮籍语音,修复阮籍的一个bug * 添加族王凌和界孙登的语音 * 调整火攻和雌雄剑效果为只有1牌/0牌的时候直接亮出/令摸牌;新增一些语音 * 添加武诸葛、神邓艾配音 * 更新武诸葛、袁姬技能,bug修复 * 新增严纲、公孙范、乐蔡文姬、OL王朗,bug修复,添加相关语音 * 添加十周年地主相关语音,修复张世平的一个AIbug * 修改intro的一个问题 * collab AI * 新增OL界二张、甘夫人糜夫人,线下小杀小闪小酒小桃小乐;解禁刘宠骆俊 * v1.9.123 update info --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn> Co-authored-by: lieren2023 <131325076+lieren2023@users.noreply.github.com>
2023-07-14 15:04:55 +00:00
map.noai=Boolean(trigger.getParent().noai);
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
//如果对拼无懈,获取历史数据
if(card.name=='wuxie'){
var evt=event;
while(true){
evt=evt.getParent(5);
if(evt&&evt.name=='_wuxie'){
state=!state;
var evtmap=evt._info_map;
if(evtmap.card.name!='wuxie'){
map._source=evtmap;
}
}
else break;
}
}
}
map.card=card;
map.state=state?1:-1;
map.id2=trigger.getParent().id;
event._global_waiting=true;
//发送函数
event.send=function(player,map,skillState){
//获取技能数据
if(skillState){
player.applySkills(skillState);
}
//生成描述提示
var prompt='',evtmap=map,state=map.state;
if(map._source) evtmap=map._source;
if(evtmap.isJudge){
prompt+=(get.translation(evtmap.target)+'的'+get.translation(evtmap.card)+'即将'+(state>0?'生':'失')+'效。');
}
else{
prompt+=get.translation(evtmap.player);
if(evtmap.multitarget){
if(evtmap.targets.length){
prompt+='对';
prompt+=get.translation(evtmap.targets);
}
}
else if(evtmap.target){
prompt+='对';
prompt+=(evtmap.target==evtmap.player?'自己':get.translation(evtmap.target));
}
prompt+=('使用的'+get.translation(evtmap.card));
prompt+=('即将'+(state>0?'生':'失')+'效。');
}
prompt+='是否使用【无懈可击】?';
if(player.isUnderControl(true)&&!_status.auto&&!ui.tempnowuxie&&map.tempnowuxie){
var translation=get.translation(map.card.name);
if(translation.length>=4){
translation=lib.translate[map.card.name+'_ab']||translation.slice(0,2);
}
ui.tempnowuxie=ui.create.control('不无懈'+translation,ui.click.tempnowuxie,'stayleft');
ui.tempnowuxie._origin=map.id2;
}
var next=player.chooseToUse({
filterCard:function(card,player){
if(get.name(card)!='wuxie') return false;
return lib.filter.cardEnabled(card,player,'forceEnable');
},
prompt:prompt,
type:'wuxie',
_global_waiting:true,
ai1:function(){
if(map.isJudge){
var card=evtmap.card,source=evtmap.target;
var name=card.viewAs||card.name;
var info=lib.card[name];
if(info&&info.ai&&info.ai.wuxie){
var aiii=info.ai.wuxie(source,card,source,_status.event.player,state);
if(typeof aiii=='number') return aiii;
}
if(Math.abs(get.attitude(_status.event.player,source))<3) return 0;
if(source.hasSkillTag('nowuxie_judge')||source.hasSkillTag('guanxing')&&(source!=player||!source.hasSkill('guanxing_fail'))) return 0;
if(name!='lebu'&&name!='bingliang'){
if(source!=_status.event.player){
return 0;
}
}
2023-07-19 19:54:40 +00:00
if(name=='bingliang'&&source.countCards('j')>0&&source.countCards('h')>=source.hp-1){
return 0;
}
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
var card2;
if(name!=card.name){
card2={name:name};
}
else{
card2=card;
}
var eff=get.effect(source,card2,source,source);
if(eff>=0) return 0;
return state*get.attitude(_status.event.player,source);
}
else if(evtmap.target){
var triggerevent=_status.event.getTrigger();
if(triggerevent&&triggerevent.parent&&
triggerevent.parent.postAi&&
triggerevent.player.isUnknown(_status.event.player)){
return 0;
}
var card=evtmap.card,target=evtmap.target,source=evtmap.player;
var info=get.info(card);
if(info.ai&&info.ai.wuxie){
var aiii=info.ai.wuxie(target,card,source,_status.event.player,state);
if(typeof aiii=='number') return aiii;
}
if(info.multitarget&&targets){
var eff=0;
for(var i=0;i<targets.length;i++){
eff+=get.effect(targets[i],card,source,_status.event.player)
}
return -eff*state;
}
if(Math.abs(get.attitude(_status.event.player,target))<3) return 0;
return -get.effect(target,card,source,_status.event.player)*state;
}
else{
var triggerevent=_status.event.getTrigger();
if(triggerevent&&triggerevent.parent&&
triggerevent.parent.postAi&&
triggerevent.player.isUnknown(_status.event.player)){
return 0;
}
var card=evtmap.card,source=evtmap.player;
var info=get.info(card);
if(info.ai&&info.ai.wuxie){
var aiii=info.ai.wuxie(target,card,source,_status.event.player,state);
if(typeof aiii=='number') return aiii;
}
if(Math.abs(get.attitude(_status.event.player,source))<3) return 0;
return -get.attitude(_status.event.player,source)*state;
}
},
source:evtmap.target,
source2:evtmap.targets,
id:map.id,
id2:map.id2,
state:state,
info_map:map,
});
if(map.card&&map.player) next.respondTo=[map.player,map.card]
if(game.online){
_status.event._resultid=map.id;
game.resume();
}
else{
next.nouse=true;
}
};
'step 1'
//判断谁有无懈
var map=event._info_map;
var list=game.filterPlayer(function(current){
if(event.triggername=='phaseJudge'){
if(game.checkMod(map.card,map.target,current,'unchanged','wuxieJudgeEnabled',current)==false) return false;
if(game.checkMod(map.card,map.target,current,'unchanged','wuxieJudgeRespondable',map.target)==false) return false;
}
else{
if(trigger.getParent().directHit.includes(current)) return false;
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
if(game.checkMod(map.card,map.player,map.target,current,'unchanged','wuxieEnabled',current)==false) return false;
if(game.checkMod(map.card,map.player,map.target,current,'unchanged','wuxieRespondable',map.player)==false) return false;
}
return current.hasWuxie(map);
});
event.list=list;
event.id=get.id();
map.id=event.id;
list.sortBySeat(_status.currentPhase);
'step 2'
if(event.list.length==0){
event.finish();
}
else if(_status.connectMode&&(event.list[0].isOnline()||event.list[0]==game.me)){
event.goto(4);
}
else{
event.current=event.list.shift();
event.send(event.current,event._info_map);
}
'step 3'
if(result.bool){
event.wuxieresult=event.current;
event.wuxieresult2=result;
event.goto(8);
}
else{
event.goto(2);
}
'step 4'
var id=event.id;
var sendback=function(result,player){
if(result&&result.id==id&&!event.wuxieresult&&result.bool){
event.wuxieresult=player;
event.wuxieresult2=result;
game.broadcast('cancel',id);
return (function(){
if(_status.event.id==id&&_status.event.name=='chooseToUse'&&_status.paused) event.resultOL=_status.event.resultOL;
if(_status.event._parent_id==id){
ui.click.cancel();
}
if(_status.event.id==id){
if(_status.event._backup) ui.click.cancel();
ui.click.cancel();
if(ui.confirm){
ui.confirm.close();
}
if(_status.event.result){
_status.event.result.id=id;
}
}
});
}
else{
if(_status.event.id==id&&_status.event.name=='chooseToUse'&&_status.paused){
return (function(){
event.resultOL=_status.event.resultOL;
});
}
}
};
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
var withme=false;
var withol=false;
var list=event.list;
for(var i=0;i<list.length;i++){
if(list[i].isOnline()){
withol=true;
list[i].wait(sendback);
list[i].send(event.send,list[i],event._info_map,get.skillState(list[i]));
list.splice(i--,1);
}
else if(list[i]==game.me){
withme=true;
event.send(list[i],event._info_map);
list.splice(i--,1);
}
}
if(!withme){
event.goto(6);
}
if(_status.connectMode){
if(withme||withol){
for(var i=0;i<game.players.length;i++){
game.players[i].showTimer();
}
}
}
event.withol=withol;
'step 5'
if(result&&result.bool&&!event.wuxieresult){
game.broadcast('cancel',event.id);
event.wuxieresult=game.me;
event.wuxieresult2=result;
}
'step 6'
if(event.withol&&!event.resultOL){
game.pause();
}
'step 7'
for(var i=0;i<game.players.length;i++){
game.players[i].hideTimer();
}
'step 8'
if(event.wuxieresult2&&event.wuxieresult2._sendskill) lib.skill[event.wuxieresult2._sendskill[0]]=event.wuxieresult2._sendskill[1];
if(event.wuxieresult&&event.wuxieresult2&&event.wuxieresult2.skill){
var info=get.info(event.wuxieresult2.skill);
if(info&&info.precontent&&!game.online){
var next=game.createEvent('pre_'+event.wuxieresult2.skill);
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
next.setContent(info.precontent);
next.set('result',event.wuxieresult2);
next.set('player',event.wuxieresult);
}
}
'step 9'
if(event.wuxieresult){
var next=event.wuxieresult.useResult(event.wuxieresult2);
if(event.triggername!='phaseJudge'){
next.respondTo=[trigger.player,trigger.card];
}
}
},
},
/*
2017-04-15 00:25:50 +00:00
_wuxie:{
2019-12-28 14:03:35 +00:00
trigger:{player:['useCardToBegin','phaseJudge']},
2017-04-15 00:25:50 +00:00
priority:5,
popup:false,
forced:true,
filter:function(event,player){
2017-11-08 02:40:40 +00:00
if(event.card.storage&&event.card.storage.nowuxie) return false;
2021-06-23 09:24:49 +00:00
var card=event.card;
if(event.name=='phaseJudge'&&card.viewAs) card={name:card.viewAs};
var info=get.info(card);
if(info.wuxieable===false) return false;
2017-04-15 00:25:50 +00:00
if(event.name!='phaseJudge'){
2019-10-31 04:40:01 +00:00
if(event.getParent().nowuxie) return false;
2017-04-15 00:25:50 +00:00
if(!event.target){
if(info.wuxieable) return true;
return false;
}
2017-04-15 03:39:51 +00:00
if(event.player.hasSkillTag('playernowuxie',false,event.card)) return false;
2017-04-15 00:25:50 +00:00
if(get.type(event.card)!='trick'&&!info.wuxieable) return false;
2016-04-13 04:17:17 +00:00
}
2017-04-15 00:25:50 +00:00
return true;
},
forceLoad:true,
2017-04-15 00:25:50 +00:00
content:function(){
'step 0'
2020-11-07 08:52:28 +00:00
delete event.wuxieresult;
delete event.wuxieresult2;
2017-04-15 00:25:50 +00:00
if(trigger.multitarget){
event.targets=trigger.targets;
}
event.target=trigger.target;
if(event.triggername=='phaseJudge'){
event.target=trigger.player;
2016-04-13 04:17:17 +00:00
}
2017-04-15 00:25:50 +00:00
event.sourcex=event.targets||event.target;
if(!event.targets&&trigger.targets&&trigger.targets.length==1){
event.sourcex2=trigger.player;
2016-04-02 08:05:24 +00:00
}
2017-04-15 00:25:50 +00:00
event.source=trigger.player;
2020-11-07 08:52:28 +00:00
if(event.state==undefined) event.state=true;
2017-04-15 00:25:50 +00:00
event.card=trigger.card;
event._global_waiting=true;
event.tempnowuxie=(trigger.targets&&trigger.targets.length>1&&!trigger.multitarget);
event.filterCard=function(card,player){
2019-11-22 05:15:05 +00:00
if(get.name(card)!='wuxie') return false;
2017-04-15 00:25:50 +00:00
return lib.filter.cardEnabled(card,player,'forceEnable');
};
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
event.send=function(player,state,isJudge,card,source,target,targets,id,id2,tempnowuxie,skillState,respondInfo){
2017-04-15 00:25:50 +00:00
if(skillState){
player.applySkills(skillState);
}
state=state?1:-1;
var str='';
if(isJudge){
str+=get.translation(source)+'的';
}
if(isJudge){
str+=get.translation(card,'viewAs');
}
else{
str+=get.translation(card);
}
if((targets||target)&&!isJudge){
str+='对'+get.translation(targets||target);
}
str+='将'+(state>0?'生效':'失效')+',是否无懈?';
2017-04-15 00:25:50 +00:00
if(player.isUnderControl(true)&&!_status.auto&&!ui.tempnowuxie&&tempnowuxie){
var translation=get.translation(card.name);
if(translation.length>=4){
translation=lib.translate[card.name+'_ab']||translation.slice(0,2);
}
ui.tempnowuxie=ui.create.control('不无懈'+translation,ui.click.tempnowuxie,'stayleft');
ui.tempnowuxie._origin=id2;
2016-07-16 03:32:55 +00:00
}
2017-04-15 00:25:50 +00:00
var next=player.chooseToUse({
filterCard:function(card,player){
2019-11-22 05:15:05 +00:00
if(get.name(card)!='wuxie') return false;
2017-04-15 00:25:50 +00:00
return lib.filter.cardEnabled(card,player,'forceEnable');
},
prompt:str,
type:'wuxie',
state:state,
_global_waiting:true,
ai1:function(){
if(isJudge){
var name=card.viewAs||card.name;
var info=lib.card[name];
if(info&&info.ai&&info.ai.wuxie){
var aiii=info.ai.wuxie(source,card,source,_status.event.player,state);
if(typeof aiii=='number') return aiii;
2016-04-02 08:05:24 +00:00
}
2017-04-15 00:25:50 +00:00
if(Math.abs(get.attitude(_status.event.player,source))<3) return 0;
2020-07-31 02:16:01 +00:00
if(source.hasSkillTag('nowuxie_judge')||source.hasSkillTag('guanxing')&&(source!=player||!source.hasSkill('guanxing_fail'))) return 0;
2017-04-15 00:25:50 +00:00
if(name!='lebu'&&name!='bingliang'){
if(source!=_status.event.player){
return 0;
}
}
var card2;
if(name!=card.name){
card2={name:name};
}
else{
card2=card;
}
var eff=get.effect(source,card2,source,source);
if(eff>=0) return 0;
return state*get.attitude(_status.event.player,source);
2016-04-11 06:13:35 +00:00
}
2020-03-07 14:00:26 +00:00
else if(target){
2017-04-15 00:25:50 +00:00
var triggerevent=_status.event.getTrigger();
if(triggerevent&&triggerevent.parent&&
triggerevent.parent.postAi&&
triggerevent.player.isUnknown(_status.event.player)){
return 0;
}
var info=get.info(card);
if(info.ai&&info.ai.wuxie){
var aiii=info.ai.wuxie(target,card,source,_status.event.player,state);
if(typeof aiii=='number') return aiii;
}
if(info.multitarget&&targets){
var eff=0;
for(var i=0;i<targets.length;i++){
eff+=get.effect(targets[i],card,source,_status.event.player)
}
return -eff*state;
}
if(Math.abs(get.attitude(_status.event.player,target))<3) return 0;
return -get.effect(target,card,source,_status.event.player)*state;
2016-04-11 06:13:35 +00:00
}
2020-03-07 14:00:26 +00:00
else{
var triggerevent=_status.event.getTrigger();
if(triggerevent&&triggerevent.parent&&
triggerevent.parent.postAi&&
triggerevent.player.isUnknown(_status.event.player)){
return 0;
}
var info=get.info(card);
if(info.ai&&info.ai.wuxie){
var aiii=info.ai.wuxie(target,card,source,_status.event.player,state);
if(typeof aiii=='number') return aiii;
}
if(Math.abs(get.attitude(_status.event.player,source))<3) return 0;
2020-06-13 04:51:36 +00:00
return -get.attitude(_status.event.player,source)*state;
2020-03-07 14:00:26 +00:00
}
2017-04-15 00:25:50 +00:00
},
source:target,
source2:targets,
id:id,
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
id2:id2,
respondInfo:respondInfo,
2017-04-15 00:25:50 +00:00
});
2019-10-09 14:31:43 +00:00
if(event.stateplayer&&event.statecard) next.set('respondTo',[event.stateplayer,event.statecard]);
else if(!isJudge){
2017-11-07 13:00:33 +00:00
next.set('respondTo',[source,card]);
}
2017-04-15 00:25:50 +00:00
if(game.online){
_status.event._resultid=id;
game.resume();
}
else{
next.nouse=true;
}
};
2018-08-13 10:54:35 +00:00
event.settle=function(){
2023-03-31 11:34:38 +00:00
if(event.respondWuxie) event.trigger('eventNeutralized');
2018-08-13 10:54:35 +00:00
if(!event.state){
if(event.triggername=='phaseJudge'){
trigger.untrigger();
trigger.cancelled=true;
}
else{
2022-12-04 16:16:32 +00:00
trigger.neutralize();
2019-10-09 14:31:43 +00:00
if(event.guowuxie==true){
2022-12-22 03:19:22 +00:00
trigger.getParent().excluded.addArray(game.filterPlayer(function(current){
return current.isFriendOf(trigger.target);
}));
2018-08-13 10:54:35 +00:00
}
}
}
event.finish();
};
2017-04-15 00:25:50 +00:00
'step 1'
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
var info={};
if(event.statecard){
info.player=event.stateplayer;
info.card=event.statecard;
}
else if(event.triggername=='phaseJudge'){
info.card=trigger.card;
info.target=trigger.player;
}
else{
info.player=trigger.player;
info.card=trigger.card;
if(trigger.multitarget){
info.targets=trigger.targets;
}
else info.target=trigger.target;
}
event.respond_info=info;
2017-04-15 00:25:50 +00:00
var list=game.filterPlayer(function(current){
2019-10-31 04:40:01 +00:00
if(event.nowuxie) return false;
if(event.directHit&&event.directHit.includes(current)) return false;
2017-07-28 08:21:24 +00:00
if(event.triggername=='phaseJudge'){
if(game.checkMod(trigger.card,player,current,'unchanged','wuxieJudgeEnabled',current)==false) return false;
if(game.checkMod(trigger.card,player,current,'unchanged','wuxieJudgeRespondable',player)==false) return false;
2019-10-09 14:31:43 +00:00
if(event.stateplayer&&event.statecard&&(game.checkMod(event.statecard,event.stateplayer,player,current,'unchanged','wuxieRespondable',event.stateplayer)==false)) return false;
2017-07-28 08:21:24 +00:00
}
else{
if(!event.statecard&&trigger.getParent().directHit.includes(current)) return false;
2017-07-28 08:21:24 +00:00
if(game.checkMod(trigger.card,player,trigger.target,current,'unchanged','wuxieEnabled',current)==false) return false;
if(game.checkMod(trigger.card,player,trigger.target,current,'unchanged','wuxieRespondable',player)==false) return false;
2019-10-09 14:31:43 +00:00
if(event.stateplayer&&event.statecard&&(game.checkMod(event.statecard,event.stateplayer,trigger.player,current,'unchanged','wuxieRespondable',event.stateplayer)==false)) return false;
2017-07-28 08:21:24 +00:00
}
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
return current.hasWuxie(info);
2017-04-15 00:25:50 +00:00
});
event.list=list;
event.id=get.id();
list.sort(function(a,b){
return get.distance(event.source,a,'absolute')-get.distance(event.source,b,'absolute');
});
'step 2'
if(event.list.length==0){
2018-08-13 10:54:35 +00:00
event.settle();
2017-04-15 00:25:50 +00:00
}
else if(_status.connectMode&&(event.list[0].isOnline()||event.list[0]==game.me)){
event.goto(4);
2016-04-02 08:05:24 +00:00
}
else{
2017-04-15 00:25:50 +00:00
event.current=event.list.shift();
event.send(event.current,event.state,event.triggername=='phaseJudge',
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
event.card,event.source,event.target,event.targets,event.id,trigger.parent.id,event.tempnowuxie,null,event.respond_info);
2016-04-02 08:05:24 +00:00
}
2017-04-15 00:25:50 +00:00
'step 3'
if(result.bool){
event.wuxieresult=event.current;
2016-04-02 08:05:24 +00:00
event.wuxieresult2=result;
2017-04-15 00:25:50 +00:00
event.goto(8);
2016-04-02 08:05:24 +00:00
}
else{
2017-04-15 00:25:50 +00:00
event.goto(2);
2016-04-02 08:05:24 +00:00
}
2017-04-15 00:25:50 +00:00
'step 4'
var id=event.id;
var sendback=function(result,player){
if(result&&result.id==id&&!event.wuxieresult&&result.bool){
event.wuxieresult=player;
event.wuxieresult2=result;
game.broadcast('cancel',id);
2023-02-22 05:47:10 +00:00
return (function(){
if(_status.event.id==id&&_status.event.name=='chooseToUse'&&_status.paused) event.resultOL=_status.event.resultOL;
if(_status.event._parent_id==id){
2017-04-15 00:25:50 +00:00
ui.click.cancel();
2023-02-22 05:47:10 +00:00
}
if(_status.event.id==id){
if(_status.event._backup) ui.click.cancel();
ui.click.cancel();
if(ui.confirm){
ui.confirm.close();
}
if(_status.event.result){
_status.event.result.id=id;
}
}
});
2017-04-15 00:25:50 +00:00
}
else{
if(_status.event.id==id&&_status.event.name=='chooseToUse'&&_status.paused){
return (function(){
event.resultOL=_status.event.resultOL;
});
}
}
};
var withme=false;
var withol=false;
var list=event.list;
for(var i=0;i<list.length;i++){
if(list[i].isOnline()){
withol=true;
list[i].wait(sendback);
list[i].send(event.send,list[i],event.state,event.triggername=='phaseJudge',
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
event.card,event.source,event.target,event.targets,event.id,trigger.parent.id,event.tempnowuxie,get.skillState(list[i]),event.respond_info);
2017-04-15 00:25:50 +00:00
list.splice(i--,1);
}
else if(list[i]==game.me){
withme=true;
event.send(list[i],event.state,event.triggername=='phaseJudge',
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
event.card,event.source,event.target,event.targets,event.id,trigger.parent.id,event.tempnowuxie,null,respondInfo);
2017-04-15 00:25:50 +00:00
list.splice(i--,1);
}
2016-04-02 08:05:24 +00:00
}
2017-04-15 00:25:50 +00:00
if(!withme){
event.goto(6);
}
if(_status.connectMode){
if(withme||withol){
for(var i=0;i<game.players.length;i++){
game.players[i].showTimer();
}
2016-04-04 11:20:05 +00:00
}
2016-04-03 09:56:33 +00:00
}
2017-04-15 00:25:50 +00:00
event.withol=withol;
'step 5'
if(result&&result.bool&&!event.wuxieresult){
game.broadcast('cancel',event.id);
event.wuxieresult=game.me;
event.wuxieresult2=result;
2016-04-02 08:05:24 +00:00
}
2017-04-15 00:25:50 +00:00
'step 6'
if(event.withol&&!event.resultOL){
game.pause();
}
'step 7'
for(var i=0;i<game.players.length;i++){
game.players[i].hideTimer();
}
'step 8'
2023-03-31 11:34:38 +00:00
if(event.wuxieresult2&&event.wuxieresult2._sendskill) lib.skill[event.wuxieresult2._sendskill[0]]=event.wuxieresult2._sendskill[1];
2021-07-15 04:47:00 +00:00
if(event.wuxieresult&&event.wuxieresult2&&event.wuxieresult2.skill){
var info=get.info(event.wuxieresult2.skill);
if(info&&info.precontent&&!game.online){
var next=game.createEvent('pre_'+event.wuxieresult2);
next.setContent(info.precontent);
next.set('result',event.wuxieresult2);
next.set('player',event.wuxieresult);
}
}
'step 9'
2017-04-15 00:25:50 +00:00
if(event.wuxieresult){
2017-11-07 13:00:33 +00:00
var next=event.wuxieresult.useResult(event.wuxieresult2);
2023-03-31 11:34:38 +00:00
if(event.stateplayer&&event.statecard){
event.respondWuxie=true;
next.respondTo=[event.stateplayer,event.statecard];
}
2020-03-05 13:10:37 +00:00
else if(event.triggername!='phaseJudge'){
next.respondTo=[trigger.player,trigger.card];
2017-11-07 13:00:33 +00:00
}
2017-04-15 00:25:50 +00:00
}
2021-07-15 04:47:00 +00:00
'step 10'
2017-04-15 00:25:50 +00:00
if(event.wuxieresult){
2019-10-31 04:40:01 +00:00
if(result.wuxied){
event.nowuxie=result.nowuxie;
event.directHit=result.directHit;
2020-02-23 05:45:11 +00:00
event.stateplayer=event.wuxieresult;
2019-10-09 14:31:43 +00:00
if(event.wuxieresult2&&event.wuxieresult2.used){
event.statecard=event.wuxieresult2.used;
}
else{
event.statecard=true;
2018-08-13 10:54:35 +00:00
}
2017-04-15 00:25:50 +00:00
event.state=!event.state;
2020-02-23 05:45:11 +00:00
event.goto(1);
2016-04-02 08:05:24 +00:00
}
2020-02-23 05:45:11 +00:00
else event.settle();
2017-04-15 00:25:50 +00:00
}
else if(event.list.length){
event.goto(2);
}
else{
2018-08-13 10:54:35 +00:00
event.settle();
2016-04-02 08:05:24 +00:00
}
2017-04-15 00:25:50 +00:00
delete event.resultOL;
delete event.wuxieresult;
delete event.wuxieresult2;
2016-04-02 08:05:24 +00:00
}
v1.9.122.3 (#146) * change lib.init.parsex, Enable 'step' to be used through nesting * Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error * zhangshiping; tw_madai bug fix * modify all the skills with incorrect "locked" tag * Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device * various bug fix * Revert "various bug fix" This reverts commit ca7a363172a837af9244fca300d6a008cafc03ac. * various bug fix * some sudio * unlock zhenghun, fix sbdiaochan * add and adjust some audio, fix some bugs * add trigger "useSkill" and "logSkillBegin" * brand new wuxie * Update standard.js * update 武安国 * iriya! * Add character lushi; fix clansankuang * add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio * fix: adjust the edit box style to fix the text overflow problem 🐛 * fix 修文 and some other small bugs * 伊莉雅·罗日杰斯特文斯卡娅 * Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db" * Some browsers do not support "autoplay", so "onconplay" listening has been added * sunwukong * more zooms * unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio * change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang * Add the default accept value of '*/*' to the HTML selection file label * longwang * add&modify some audio * add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug * add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji * add some audio, sort some characters in sp * sync 界SP黄月英 * add some character intros * make 谋弈 play audio correctly * revert some skills back to new ones * v1.9.122.3 * Update update.js --------- Co-authored-by: shijian <2954700422@qq.com> Co-authored-by: copcap <copcap@outlook.com> Co-authored-by: copcap <43802486+copcap@users.noreply.github.com> Co-authored-by: PBK-B <pbk-b@PBK6.cn>
2023-06-30 15:06:19 +00:00
},*/
2017-04-15 00:25:50 +00:00
},
translate:{
sha:'杀',
huosha:'火杀',
leisha:'雷杀',
2021-11-23 04:58:31 +00:00
icesha:'冰杀',
kamisha:'神杀',
cisha:'刺杀',
2017-04-15 00:25:50 +00:00
shan:'闪',
tao:'桃',
bagua:'八卦阵',
bagua_bg:'卦',
bagua_skill:'八卦阵',
jueying:'绝影',
dilu:'的卢',
zhuahuang:'爪黄飞电',
jueying_bg:'+马',
dilu_bg:'+马',
zhuahuang_bg:'+马',
chitu:'赤兔',
chitu_bg:'-马',
dawan:'大宛',
dawan_bg:'-马',
zixin:'紫骍',
zixin_bg:'-马',
zhuge:'诸葛连弩',
cixiong:'雌雄双股剑',
zhuge_bg:'弩',
cixiong_bg:'双',
qinggang:'青釭剑',
qinglong:'青龙偃月刀',
zhangba:'丈八蛇矛',
qinglong_bg:'偃',
zhangba_bg:'蛇',
guanshi:'贯石斧',
fangtian:'方天画戟',
qilin:'麒麟弓',
qilin_bg:'弓',
zhuge_skill:'诸葛连弩',
cixiong_skill:'雌雄双股剑',
qinggang_skill:'青釭剑',
qinglong_skill:'青龙偃月刀',
2020-02-14 05:33:43 +00:00
qinglong_guozhan:'青龙偃月刀',
2017-04-15 00:25:50 +00:00
zhangba_skill:'丈八蛇矛',
guanshi_skill:'贯石斧',
fangtian_skill:'方天画戟',
qilin_skill:'麒麟弓',
wugu:'五谷丰登',
taoyuan:'桃园结义',
nanman:'南蛮入侵',
wanjian:'万箭齐发',
wuzhong:'无中生有',
juedou:'决斗',
wugu_bg:'谷',
taoyuan_bg:'园',
nanman_bg:'蛮',
wanjian_bg:'箭',
wuzhong_bg:'生',
juedou_bg:'斗',
shunshou:'顺手牵羊',
guohe:'过河拆桥',
guohe_bg:'拆',
jiedao:'借刀杀人',
wuxie:'无懈可击',
wuxie_bg:'懈',
lebu:'乐不思蜀',
shandian:'闪电',
shandian_bg:'电',
hanbing:'寒冰剑',
renwang:'仁王盾',
hanbing_bg:'冰',
renwang_bg:'盾',
hanbing_skill:'寒冰剑',
renwang_skill:'仁王盾',
2023-01-24 13:26:41 +00:00
hanbing_info:'当你因执行【杀】的效果而造成伤害时,若目标角色有能被弃置的牌,则你可以防止此伤害,然后依次弃置目标角色的两张牌。',
hanbing_skill_info:'当你因执行【杀】的效果而造成伤害时,若目标角色有能被弃置的牌,则你可以防止此伤害,然后依次弃置目标角色的两张牌。',
2023-10-15 12:23:54 +00:00
renwang_info:'锁定技,黑色【杀】对你无效。',
renwang_skill_info:'锁定技,黑色【杀】对你无效。',
2021-11-26 14:55:37 +00:00
sha_info:'出牌阶段对你攻击范围内的一名角色使用。其须使用一张【闪】否则你对其造成1点伤害。',
2023-10-15 12:23:54 +00:00
shan_info:'抵消一张【杀】。',
2023-03-04 15:17:30 +00:00
tao_info:'①出牌阶段对自己使用目标角色回复1点体力。②当有角色处于濒死状态时对该角色使用。目标角色回复1点体力。',
2023-01-24 13:26:41 +00:00
bagua_info:'当你需要使用或打出一张【闪】时,你可以进行判定。若结果为红色,则你视为使用或打出一张【闪】。',
bagua_skill_info:'当你需要使用或打出一张【闪】时,你可以进行判定。若结果为红色,则你视为使用或打出一张【闪】。',
2019-12-13 14:13:01 +00:00
jueying_info:'锁定技,其他角色计算与你的距离+1。',
dilu_info:'锁定技,其他角色计算与你的距离+1。',
zhuahuang_info:'锁定技,其他角色计算与你的距离+1。',
chitu_info:'锁定技,你计算与其他角色的距离-1。',
dawan_info:'锁定技,你计算与其他角色的距离-1。',
zixin_info:'锁定技,你计算与其他角色的距离-1。',
zhuge_skill_info:'锁定技,你于出牌阶段内使用【杀】无次数限制。',
zhuge_info:'锁定技,你于出牌阶段内使用【杀】无次数限制。',
cixiong_skill_info:'当你使用【杀】指定一名异性的目标角色后你可以令其选择一项1.弃置一张手牌2.令你摸一张牌。',
cixiong_info:'当你使用【杀】指定一名异性的目标角色后你可以令其选择一项1.弃置一张手牌2.令你摸一张牌。',
qinggang_skill_info:'锁定技,当你使用【杀】指定一名目标角色后,你令其防具技能无效直到此【杀】被抵消或造成伤害。',
qinggang_info:'锁定技,当你使用【杀】指定一名目标角色后,你令其防具技能无效直到此【杀】被抵消或造成伤害。',
qinglong_skill_info:'当你使用的【杀】被目标角色使用的【闪】抵消时,你可以对其使用一张【杀】(无距离限制)。',
qinglong_guozhan_info:'锁定技,当你使用【杀】指定目标后,所有目标角色不能明置武将牌直到此【杀】结算完毕为止。',
qinglong_info:'当你使用的【杀】被目标角色使用的【闪】抵消时,你可以对其使用一张【杀】(无距离限制)。',
qinglong_info_guozhan:'锁定技,当你使用【杀】指定目标后,所有目标角色不能明置武将牌直到此【杀】结算完毕为止。',
2017-04-15 00:25:50 +00:00
zhangba_skill_info:'你可以将两张手牌当【杀】使用或打出。',
zhangba_info:'你可以将两张手牌当【杀】使用或打出。',
2019-12-13 14:13:01 +00:00
guanshi_skill_info:'当你使用的【杀】被目标角色使用的【闪】抵消时,你可以弃置两张牌,令此【杀】依然对其造成伤害。',
guanshi_info:'当你使用的【杀】被目标角色使用的【闪】抵消时,你可以弃置两张牌,令此【杀】依然对其造成伤害。',
2017-04-15 00:25:50 +00:00
fangtian_skill_info:'你使用的【杀】若是你最后的手牌,你可以额外选择至多两个目标。',
fangtian_info:'你使用的【杀】若是你最后的手牌,你可以额外选择至多两个目标。',
2018-08-13 07:17:34 +00:00
fangtian_info_guozhan:'你使用【杀】可以指定任意名角色为目标(不能包含势力相同的角色),若任意一名目标角色使用【闪】抵消了此【杀】,则此【杀】对剩余的目标角色无效。',
2019-12-13 14:13:01 +00:00
qilin_skill_info:'当你使用【杀】对目标角色造成伤害时,你可以弃置其装备区里的一张坐骑牌。',
qilin_info:'当你使用【杀】对目标角色造成伤害时,你可以弃置其装备区里的一张坐骑牌。',
2017-04-23 06:40:20 +00:00
wugu_info:'出牌阶段,对所有角色使用。(选择目标后)你从牌堆顶亮出等同于目标数量的牌,每名目标角色获得这些牌中(剩余的)的任意一张。',
2017-04-15 00:25:50 +00:00
taoyuan_info:'出牌阶段对所有角色使用。每名目标角色回复1点体力。',
nanman_info:'出牌阶段对所有其他角色使用。每名目标角色需打出一张【杀】否则受到1点伤害。',
wanjian_info:'出牌阶段对所有其他角色使用。每名目标角色需打出一张【闪】否则受到1点伤害。',
wuzhong_info:'出牌阶段,对你使用。你摸两张牌。',
juedou_info:'出牌阶段对一名其他角色使用。由其开始其与你轮流打出一张【杀】直到其中一方未打出【杀】为止。未打出【杀】的一方受到另一方对其造成的1点伤害。',
shunshou_info:'出牌阶段对距离为1且区域里有牌的一名其他角色使用。你获得其区域里的一张牌。',
guohe_info:'出牌阶段,对区域里有牌的一名其他角色使用。你弃置其区域里的一张牌。',
2021-10-18 10:34:20 +00:00
jiedao_info:'出牌阶段,对装备区里有武器牌且有使用【杀】的目标的一名其他角色使用。令其对你指定的一名角色使用一张【杀】,否则将其装备区里的武器牌交给你。',
jiedao_append:'<span class="text" style="font-family: yuanli">这是一种十分含蓄的计谋。</span>',
2017-04-15 00:25:50 +00:00
wuxie_info:'一张锦囊牌生效前,对此牌使用。抵消此牌对一名角色产生的效果,或抵消另一张【无懈可击】产生的效果。',
lebu_info:'出牌阶段,对一名其他角色使用。若判定结果不为红桃,跳过其出牌阶段。',
shandian_info:'出牌阶段对自己使用。若判定结果为黑桃2~9则目标角色受到3点雷电伤害。若判定不为黑桃2~9将之移动到下家的判定区里。',
2023-08-03 19:13:02 +00:00
icesha_skill:'冰冻',
2020-12-19 01:36:50 +00:00
icesha_skill_info:'防止即将造成的伤害,改为依次弃置其两张牌。',
sha_notshan:'invisible',
2022-04-18 02:27:32 +00:00
qinggang2:'破防',
2016-04-02 08:05:24 +00:00
},
2017-04-15 00:25:50 +00:00
list:[
["spade",7,"sha"],
["spade",8,"sha"],
["spade",8,"sha"],
["spade",9,"sha"],
["spade",9,"sha"],
["spade",10,"sha"],
["spade",10,"sha"],
["club",2,"sha"],
["club",3,"sha"],
["club",4,"sha"],
["club",5,"sha"],
["club",6,"sha"],
["club",7,"sha"],
["club",8,"sha"],
["club",8,"sha"],
["club",9,"sha"],
["club",9,"sha"],
["club",10,"sha"],
["club",10,"sha"],
["club",11,"sha"],
["club",11,"sha"],
["heart",10,"sha"],
["heart",10,"sha"],
["heart",11,"sha"],
["diamond",6,"sha"],
["diamond",7,"sha"],
["diamond",8,"sha"],
["diamond",9,"sha"],
["diamond",10,"sha"],
["diamond",13,"sha"],
["heart",2,"shan"],
["heart",2,"shan"],
["heart",13,"shan"],
["diamond",2,"shan"],
["diamond",2,"shan"],
["diamond",3,"shan"],
["diamond",4,"shan"],
["diamond",5,"shan"],
["diamond",6,"shan"],
["diamond",7,"shan"],
["diamond",8,"shan"],
["diamond",9,"shan"],
["diamond",10,"shan"],
["diamond",11,"shan"],
["diamond",11,"shan"],
["heart",3,"tao"],
["heart",4,"tao"],
["heart",6,"tao"],
["heart",7,"tao"],
["heart",8,"tao"],
["heart",9,"tao"],
["heart",12,"tao"],
["diamond",12,"tao"],
2017-04-15 00:25:50 +00:00
["spade",2,"bagua"],
["club",2,"bagua"],
["spade",5,"jueying"],
["club",5,"dilu"],
["heart",13,"zhuahuang"],
["heart",5,"chitu"],
["spade",13,"dawan"],
["diamond",13,"zixin"],
["club",1,"zhuge"],
["diamond",1,"zhuge"],
["spade",2,"cixiong"],
["spade",6,"qinggang"],
["spade",5,"qinglong"],
["spade",12,"zhangba"],
["diamond",5,"guanshi"],
["diamond",12,"fangtian"],
["heart",5,"qilin"],
2017-04-15 00:25:50 +00:00
["heart",3,"wugu"],
["heart",4,"wugu"],
["heart",1,"taoyuan"],
["spade",7,"nanman"],
["spade",13,"nanman"],
["club",7,"nanman"],
["heart",1,"wanjian"],
["spade",1,"juedou"],
["club",1,"juedou"],
["diamond",1,"juedou"],
["heart",7,"wuzhong"],
["heart",8,"wuzhong"],
["heart",9,"wuzhong"],
["heart",11,"wuzhong"],
["spade",3,'shunshou'],
["spade",4,'shunshou'],
["spade",11,'shunshou'],
["diamond",3,'shunshou'],
["diamond",4,'shunshou'],
["spade",3,'guohe'],
["spade",4,'guohe'],
["spade",12,'guohe'],
["club",3,'guohe'],
["club",4,'guohe'],
["heart",12,'guohe'],
["club",12,'jiedao'],
["club",13,'jiedao'],
["spade",11,'wuxie'],
["club",12,'wuxie'],
["club",13,'wuxie'],
["spade",6,'lebu'],
["club",6,'lebu'],
["heart",6,'lebu'],
2019-11-03 01:16:02 +00:00
["spade",1,'shandian'],
2017-04-15 00:25:50 +00:00
["spade",2,'hanbing'],
["club",2,'renwang'],
2019-11-03 01:16:02 +00:00
["heart",12,'shandian'],
2017-04-15 00:25:50 +00:00
["diamond",12,'wuxie'],
],
};
2017-04-14 23:35:56 +00:00
});