v1.9.113.2

This commit is contained in:
Spmario233 2022-04-18 10:27:32 +08:00
parent cffbbd96f0
commit f4e24f600b
45 changed files with 757 additions and 92 deletions

Binary file not shown.

BIN
audio/die/ol_chendeng.mp3 Normal file

Binary file not shown.

BIN
audio/die/re_sunyi.mp3 Normal file

Binary file not shown.

BIN
audio/die/tianyu.mp3 Normal file

Binary file not shown.

BIN
audio/skill/juesheng1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/juesheng2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olfengji1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olfengji2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/saodi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/saodi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/syjiqiao1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/syjiqiao2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/syxiongyi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/syxiongyi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/yuanchou1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/yuanchou2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhuitao1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhuitao2.mp3 Normal file

Binary file not shown.

View File

@ -1149,6 +1149,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
intro:{
name:'诏书',
mark:function(dialog,content,player){
var content=player.getExpansions('zhaoshu_skill');
dialog.add(content);
dialog.addText('<br><li>与你势力相同的角色的出牌阶段限一次,其可以将一张手牌(小势力角色改为至多两张)置于【诏书】上,称为“应”。<br><li>出牌阶段限一次,若你的“应”中包含至少四种花色,则你可以发动“锦囊召唤”,将所有“应”置入弃牌堆,然后随机获得一张未加入游戏的势力锦囊牌。',false);
var cards=player.getExpansions('zhaoshu_cards');

View File

@ -2109,6 +2109,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
player.storage.qinggang2.remove(trigger.card);
if(!player.storage.qinggang2.length) player.removeSkill('qinggang2');
},
mark:true,
marktext:'※',
intro:{content:'当前防具技能已失效'},
},
qinglong_skill:{
equipSkill:true,
@ -2845,6 +2848,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
shandian_info:'出牌阶段对自己使用。若判定结果为黑桃2~9则目标角色受到3点雷电伤害。若判定不为黑桃2~9将之移动到下家的判定区里。',
icesha_skill:'冰杀',
icesha_skill_info:'防止即将造成的伤害,改为依次弃置其两张牌。',
qinggang2:'破防',
},
list:[
["spade",7,"sha"],

View File

@ -3945,6 +3945,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"nzry_longnu":{
mark:true,
locked:true,
zhuanhuanji:true,
marktext:'龙',
intro:{
content:function(storage,player,skill){

View File

@ -2763,9 +2763,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
moxie:{
trigger:{player:'duBegin'},
trigger:{player:'loseHpBegin'},
forced:true,
filter:(event)=>event.type=='du',
content:function(){
trigger.cancel();
player.draw(2);
},
ai:{
@ -9789,7 +9791,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
fuhua2:'腐化',
fuhua_info:'出牌阶段你可以将一张毒交给一名没有魔血技能的其他角色该角色选择一项1. 获得技能魔血此后每个结束阶段需交给你一张手牌2. 视为你对其使用一张决斗',
moxie:'魔血',
moxie_info:'锁定技,你失去毒时不流失体力;你使用毒时摸两张牌;结束阶段,你将一张随机手牌转化为毒',
moxie_info:'锁定技,当你因【毒】失去体力时,你改为摸两张牌;结束阶段,你将一张随机手牌转化为毒',
gfuhun:'附魂',
gfuhun_info:'结束阶段,若你未翻面,你可以和一名其他角色拼点,若你赢,你将武将牌翻至背面,该角色进入混乱状态直到下一回合结束',
hlongyi:'龙裔',

View File

@ -6781,12 +6781,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
muzhen1:{},
muzhen2:{},
sheyi2:{charlotte:true},
sheyi:{
audio:2,
trigger:{global:'damageBegin4'},
direct:true,
filter:function(event,player){
return player!=event.player&&event.player.hp<player.hp&&player.countCards('he')>=Math.max(1,player.hp);
return !player.hasSkill('sheyi2')&&player!=event.player&&event.player.hp<player.hp&&player.countCards('he')>=Math.max(1,player.hp);
},
content:function(){
'step 0'
@ -6806,6 +6807,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool){
var target=trigger.player;
player.logSkill('sheyi',target);
player.addTempSkill('sheyi2','roundStart');
target.gain(result.cards,player,'giveAuto');
trigger.cancel();
}
@ -16013,7 +16015,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
rejieyue_info:'结束阶段开始时,你可以将一张牌交给一名其他角色。然后其选择一项:令你摸三张牌:或其保留一张手牌和装备区的牌,然后弃置其余的牌。',
caizhenji:'蔡贞姬',
sheyi:'舍裔',
sheyi_info:'当有体力值小于你的其他角色受到伤害时你可以交给其至少X张牌并防止此伤害X为你的体力值。',
sheyi_info:'每轮限一次。当有体力值小于你的其他角色受到伤害时你可以交给其至少X张牌并防止此伤害X为你的体力值。',
tianyin:'天音',
tianyin_info:'锁定技,结束阶段开始时,你从牌堆中获得每种本回合未使用过的类型的牌各一张。',
xiangchong:'向宠',
@ -16205,7 +16207,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yiyong_info:'当你受到其他角色造成的渠道为【杀】的伤害后,若你的装备区内有武器牌,则你可以获得此【杀】对应的所有实体牌,然后将这些牌当做【杀】对伤害来源使用(无距离限制)。若其装备区内没有武器牌,则此伤害+1。',
shanxie:'擅械',
shanxie_info:'①出牌阶段限一次,你可选择一项:⒈从牌堆中获得一张武器牌。⒉获得其装备区内的一张武器牌并使用,然后其将一张手牌当做【杀】对你使用。②当其他角色使用【闪】响应你使用的【杀】时,若此【闪】没有点数或点数不大于你攻击范围的二倍,则你令此【闪】无效。',
sunyi:'孙翊',
sunyi:'手杀孙翊',
zaoli:'躁厉',
zaoli_info:'锁定技。①你不能于回合内使用你手牌中不为本回合获得的牌。②当你使用或打出手牌时你获得一个“厉”至多4个。③回合开始时若你有“厉”则你移去所有“厉”并弃置任意张牌然后摸X+Y张牌。若X大于2你失去1点体力X为你移去的标记数Y为你弃置的牌数。',
sp_gaolan:'手杀高览',

View File

@ -5,7 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
characterSort:{
old:{
old_standard:['ol_yuanshu'],
old_shenhua:["yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","xiaoqiao","pangde"],
old_shenhua:["yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","xiaoqiao","pangde","xuhuang"],
old_refresh:["old_zhangfei","old_huatuo","old_zhaoyun","ol_huaxiong"],
old_yijiang1:["masu","xushu","xin_yujin","old_xusheng","old_lingtong","fazheng"],
old_yijiang2:["old_zhonghui"],
@ -19,6 +19,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
xuhuang:['male','wei',4,['gzduanliang']],
junk_simayi:['male','jin',3,['buchen','smyyingshi','xiongzhi','quanbian'],['hiddenSkill']],
fazheng:['male','shu',3,['enyuan','xuanhuo']],
ol_yuanshu:['male','qun',4,['wangzun','tongji']],

View File

@ -96,6 +96,7 @@ window.noname_character_rank={
'guansuo',
'yuantanyuanshang',
'dongyun',
're_sunyi',
'shen_xunyu',
'shen_guojia',
'key_kamome',
@ -741,6 +742,8 @@ window.noname_character_rank={
'wangyue',
'xin_sunxiu',
'sp_maojie',
'ol_xuhuang',
'ol_zhuling',
],
b:[
'diy_feishi',
@ -954,6 +957,8 @@ window.noname_character_rank={
're_xiahoushi',
'sp_yangwan',
'wangtao',
'tianyu',
'fanjiangzhangda',
],
bm:[
'diy_xizhenxihong',
@ -1283,6 +1288,7 @@ window.noname_character_rank={
'ol_dingyuan',
'wujing',
'yangwan',
're_sunyi',
'shen_guojia',
'shen_taishici',
'shen_xunyu',
@ -1844,6 +1850,8 @@ window.noname_character_rank={
'wuyan',
'sp_maojie',
'sp_zhujun',
'ol_chendeng',
'ol_xuhuang',
],
junk:[
'sunshao',
@ -1863,6 +1871,8 @@ window.noname_character_rank={
're_chenqun',
'sp_ol_zhanghe',
'key_youta',
'sp_xujing',
'fanjiangzhangda',
],
}
};

View File

@ -7,7 +7,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
refresh_standard:["re_caocao","re_simayi","re_guojia","re_lidian","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_xushu","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong",'re_gongsunzan'],
refresh_feng:['caoren','ol_xiahouyuan','re_huangzhong','ol_weiyan','ol_xiaoqiao','zhoutai','re_zhangjiao','xin_yuji'],
refresh_huo:["ol_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"],
refresh_lin:['re_menghuo','ol_sunjian','re_caopi','re_xuhuang','ol_dongzhuo','ol_zhurong','re_jiaxu','ol_lusu'],
refresh_lin:['re_menghuo','ol_sunjian','re_caopi','ol_xuhuang','ol_dongzhuo','ol_zhurong','re_jiaxu','ol_lusu'],
refresh_shan:['ol_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce','ol_dengai'],
refresh_yijiang1:['re_wuguotai','re_gaoshun','re_caozhi','yujin_yujin','re_masu','xin_xusheng','re_fazheng','xin_lingtong','re_zhangchunhua'],
refresh_yijiang2:['old_madai','re_wangyi','guanzhang','xin_handang','xin_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_bulianshi','xin_liubiao'],
@ -68,7 +68,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_zhangyi:['male','shu',5,['rewurong','reshizhi']],
re_wuguotai:['female','wu',3,['reganlu','buyi']],
re_gaoshun:['male','qun',4,['rexianzhen','rejinjiu']],
re_caocao:['male','wei',4,['new_rejianxiong','hujia'],['zhu']],
re_caocao:['male','wei',4,['new_rejianxiong','rehujia'],['zhu']],
re_simayi:['male','wei',3,['refankui','reguicai']],
re_guojia:['male','wei',3,['tiandu','new_reyiji']],
re_lidian:['male','wei',3,['xunxun','wangxi']],
@ -108,7 +108,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ol_xiaoqiao:['female','wu',3,['oltianxiang','olhongyan','piaoling']],
zhoutai:['male','wu',4,['buqu','fenji']],
ol_pangde:['male','qun',4,['mashu','rejianchu']],
re_xuhuang:['male','wei',4,['duanliang','jiezi']],
ol_xuhuang:['male','wei',4,['olduanliang','oljiezi']],
ol_sp_zhugeliang:["male","shu",3,["bazhen","rehuoji","rekanpo","cangzhuo"],[]],
re_xunyu:["male","wei",3,["quhu","rejieming"],[]],
re_dianwei:["male","wei",4,["reqiangxi"],[]],
@ -141,6 +141,123 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_xushu:['zhaoyun','sp_zhugeliang'],
},
skill:{
//徐晃
olduanliang:{
audio:2,
enable:'chooseToUse',
filterCard:function(card){
return (get.type2(card)!='trick'&&get.color(card)=='black');
},
filter:function(event,player){
return player.hasCard((card)=>(get.type2(card)!='trick'&&get.color(card)=='black'),'hes');
},
position:'hes',
viewAs:{name:'bingliang'},
prompt:'将一张黑色非锦囊牌当做兵粮寸断使用',
check:function(card){return 6-get.value(card)},
ai:{
order:9
},
mod:{
targetInRange:function(card,player,target){
if(card.name=='bingliang'&&!player.getStat('damage')) return true;
},
},
},
oljiezi:{
audio:2,
trigger:{global:['phaseDrawSkipped','phaseDrawCancelled']},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt('oljiezi'),'你可选择一名角色。若该角色:手牌数为全场最少且没有“辎”,则其获得一枚“辎”。否则其摸一张牌。').set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(!target.hasMark('oljiezi')&&target.isMinHandcard()) att*=2;
return att;
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('oljiezi',target);
if(!target.hasMark('oljiezi')&&target.isMinHandcard()) target.addMark('oljiezi',1);
else target.draw();
}
},
marktext:'辎',
intro:{
name2:'辎',
content:'mark',
onunmark:true,
},
group:'oljiezi_extra',
subSkill:{
extra:{
audio:'oljiezi',
trigger:{global:'phaseDrawAfter'},
forced:true,
filter:function(event,player){
return event.player.hasMark('oljiezi');
},
logTarget:'player',
content:function(){
var next=trigger.player.phaseDraw();
event.next.remove(next);
trigger.getParent().next.add(next);
trigger.player.removeMark('oljiezi',trigger.player.countMark('oljiezi'));
},
},
},
},
//界护驾
rehujia:{
audio:'hujia',
inherit:'hujia',
filter:function(event,player){
if(event.responded) return false;
if(player.storage.hujiaing) return false;
if(!player.hasZhuSkill('rehujia')) return false;
if(!event.filterCard({name:'shan'},player,event)) return false;
return game.hasPlayer(function(current){
return current!=player&&current.group=='wei';
});
},
ai:{
respondShan:true,
skillTagFilter:function(player){
if(player.storage.hujiaing) return false;
if(!player.hasZhuSkill('rehujia')) return false;
return game.hasPlayer(function(current){
return current!=player&&current.group=='wei';
});
},
},
group:'rehujia_draw',
subSkill:{
draw:{
trigger:{global:['useCard','respond']},
usable:1,
direct:true,
filter:function(event,player){
return event.card.name=='shan'&&event.player!=player&&event.player.group=='wei'&&event.player.isIn()&&
event.player!=_status.currentPhase&&player.hasZhuSkill('rehujia');
},
content:function(){
'step 0'
trigger.player.chooseBool('护驾:是否令'+get.translation(player)+'摸一张牌?').set('ai',function(){
var evt=_status.event;
return get.attitude(evt.player,evt.getParent().player)>0;
});
'step 1'
if(result.bool){
player.logSkill('rehujia');
trigger.player.line(player,'fire');
player.draw();
}
else player.storage.counttrigger.rehujia_draw--;
},
},
},
},
//夏侯氏
reqiaoshi:{
audio:2,
@ -2158,16 +2275,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
order:10,
result:{
target:function(player,target){
var num=player.getExpansions('gzquanji').length-1;
if(num==0){
if(target.countCards('h')>player.countCards('h')) return get.damageEffect(target,player,target);
return 0;
}
if(target!=player) return 0;
if(player.needsToDiscard()&&!player.getEquip('zhuge')&&!player.hasSkill('new_paoxiao')) return 0;
return 1;
}
},
var num=player.getExpansions('gzquanji').length-1;
if(num==0){
if(target.countCards('h')>player.countCards('h')) return get.damageEffect(target,player,target);
return 0;
}
if(target!=player) return 0;
if(player.needsToDiscard()&&!player.getEquip('zhuge')&&!player.hasSkill('new_paoxiao')) return 0;
return 1;
}
},
},
}
},
@ -2667,7 +2784,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'reenyuan',
trigger:{player:'gainEnd'},
filter:function(event,player){
if(!event.source||event.source==player||!event.source.isIn()) return false;
if(!event.source||event.source==player||!event.source.isIn()||event.cards.length<2) return false;
var evt=event.getl(event.source);
return evt&&evt.cards2&&evt.cards2.length>1;
},
@ -3757,11 +3874,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.count=trigger.num;
'step 1'
event.count--;
trigger.source.chooseBool('是否对'+get.translation(player)+'发动【暴虐】?').set('choice',get.attitude(trigger.source,player)>0);
player.chooseBool('是否发动【暴虐】?').set('choice',get.attitude(player,player)>0);
'step 2'
if(result.bool){
player.logSkill('olbaonue');
trigger.source.line(player,'green')
player.logSkill('olbaonue',trigger.source);
player.judge(function(card){
if(get.suit(card)=='spade') return 4;
return 0;
@ -5848,6 +5964,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
olhunzi:{
audio:2,
audioname:['re_sunyi'],
inherit:'hunzi',
content:function(){
player.loseMaxHp();
@ -10607,7 +10724,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
rezongshi_info:'锁定技,你的手牌上限+XX为势力数。准备阶段若你的手牌数大于体力值则你本回合内使用【杀】无次数限制。',
ol_dongzhuo:'界董卓',
olbaonue:'暴虐',
olbaonue_info:'主公技其他群雄角色造成1点伤害后可进行判定若为♠你回复1点体力并获得判定牌。',
olbaonue_info:'主公技其他群雄角色造成1点伤害后可进行判定若为♠你回复1点体力并获得判定牌。',
re_panzhangmazhong:'界潘璋马忠',
re_hanhaoshihuan:'界韩浩史涣',
re_bulianshi:'界步练师',
@ -10778,6 +10895,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
reyanyu:'燕语',
reyanyu2:'燕语',
reyanyu_info:'①出牌阶段你可以重铸【杀】。②出牌阶段结束时你可以令一名男性角色摸X张牌X为你本阶段内发动过〖燕语①〗的次数且至多为3。',
rehujia:'护驾',
rehujia_info:'主公技。①当你需要使用或打出一张【闪】时,你可以令其他魏势力角色选择是否打出一张【闪】。若有角色响应,则你视为使用或打出了一张【闪】。②每回合限一次。当有魏势力角色于回合外使用或打出【闪】时,其可以令你摸一张牌。',
ol_xuhuang:'界徐晃',
olduanliang:'断粮',
olduanliang_info:'你可以将一张黑色非锦囊牌当做【兵粮寸断】使用。若你于当前回合内未造成过伤害,则你使用【兵粮寸断】无距离限制。',
oljiezi:'截辎',
oljiezi_info:'①当有角色跳过摸牌阶段后,你可选择一名角色。若该角色:手牌数为全场最少且没有“辎”,则其获得一枚“辎”。否则其摸一张牌。②一名角色的摸牌阶段结束时,若其有“辎”,则你移去其“辎”,然后令其获得一个额外的摸牌阶段。',
refresh_standard:'界限突破·标',
refresh_feng:'界限突破·风',

View File

@ -8,7 +8,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shenhua:{
shenhua_feng:["sp_zhangjiao","re_yuji","old_zhoutai","old_caoren","re_xiahouyuan","re_xiaoqiao","huangzhong","re_weiyan"],
shenhua_huo:['dianwei','xunyu','pangtong','sp_zhugeliang','taishici','yanwen','re_yuanshao','re_pangde'],
shenhua_lin:['caopi','xuhuang','menghuo','zhurong','re_lusu','sunjian','dongzhuo','jiaxu'],
shenhua_lin:['caopi','re_xuhuang','menghuo','zhurong','re_lusu','sunjian','dongzhuo','jiaxu'],
shenhua_shan:['dengai','zhanghe','liushan','jiangwei','zhangzhang','sunce','caiwenji','zuoci'],
shenhua_yin:['wangji','kuailiangkuaiyue','yanyan','wangping','sunliang','luji','xuyou','yl_luzhi'],
shenhua_lei:['haozhao','guanqiujian','chendao','zhugezhan','lukang','zhoufei','zhangxiu','yl_yuanshu'],
@ -17,7 +17,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
character:{
old_zhoutai:['male','wu',4,['buqu','new_fenji']],
old_caoren:['male','wei',4,['moon_jushou','jiewei']],
xuhuang:['male','wei',4,['gzduanliang']],
re_xuhuang:['male','wei',4,['duanliang','jiezi']],
re_pangde:['male','qun',4,['mashu','jianchu']],
re_xiahouyuan:['male','wei',4,['xinshensu']],
huangzhong:['male','shu',4,['liegong']],
@ -3300,11 +3300,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
locked:false,
mod:{
globalFrom:function(from,to,distance){
if(from.storage.tuntian){
var num=distance-from.getExpansions('tuntian').length;
if(_status.event.skill=='jixi_backup'||_status.event.skill=='gzjixi_backup') num++;
return num;
}
var num=distance-from.getExpansions('tuntian').length;
if(_status.event.skill=='jixi_backup'||_status.event.skill=='gzjixi_backup') num++;
return num;
}
}
}
@ -3375,14 +3373,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return ui.create.dialog('急袭',player.getExpansions('tuntian'),'hidden');
},
backup:function(links,player){
var skill=_status.event.buttoned;
return {
audio:'jixi',
audioname:['re_dengai','gz_dengai','ol_dengai'],
selectCard:-1,
position:'x',
filterCard:function(card){
return card==lib.skill.jixi_backup.card;
},
filterCard:skill=='jixi'?(card)=>card==lib.skill.jixi_backup.card:(card)=>card==lib.skill.gzjixi_backup.card,
viewAs:{name:'shunshou'},
card:links[0],
}
@ -6638,7 +6635,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
mod:{
maxHandcardBase:function(player,num){
if(get.mode()!='guozhan'&&player.storage.buqu&&player.storage.buqu.length) return player.storage.buqu.length;
if(get.mode()!='guozhan'&&player.getExpansions('buqu').length) return player.getExpansions('buqu').length;
},
},
ai:{
@ -7306,7 +7303,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
pangde:['ol_pangde','re_pangde','pangde'],
yanwen:['re_yanwen','yanwen'],
caopi:['caopi','re_caopi'],
xuhuang:['re_xuhuang','xuhuang'],
xuhuang:['ol_xuhuang','re_xuhuang','xuhuang'],
menghuo:['re_menghuo','menghuo'],
zhurong:['re_zhurong','ol_zhurong','zhurong'],
sunjian:['ol_sunjian','re_sunjian','sunjian'],
@ -7522,7 +7519,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhurong:'祝融',
menghuo:'孟获',
caopi:'曹丕',
re_xuhuang:'徐晃',
re_xuhuang:'徐晃',
lusu:'旧鲁肃',
sunjian:'孙坚',
dongzhuo:'董卓',
@ -7641,7 +7638,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_zhoutai:'周泰',
old_caoren:'曹仁',
xuhuang:'徐晃',
xuhuang:'徐晃',
pangde:'旧庞德',
xiahouyuan:'旧夏侯渊',
caoren:'界曹仁',

View File

@ -6,11 +6,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
characterSort:{
sp:{
sp_tianji:["sunhao","liuxie","caoang","hetaihou","sunluyu",'ol_wangrong',"zuofen","ganfuren","ol_bianfuren"],
sp_sibi:["yangxiu","chenlin","chengyu","shixie","fuwan","wangyun","zhugejin","simalang","maliang","buzhi","dongyun","kanze","sunqian","xizhicai","sunshao",'duxi',"jianggan",'ol_dengzhi','ol_yangyi','ol_dongzhao'],
sp_sibi:["yangxiu","chenlin","chengyu","shixie","fuwan","wangyun","zhugejin","simalang","maliang","buzhi","dongyun","kanze","sunqian","xizhicai","sunshao",'duxi',"jianggan",'ol_dengzhi','ol_yangyi','ol_dongzhao','ol_chendeng'],
sp_tianzhu:["wutugu","yanbaihu","shamoke","panfeng","zhugedan",'huangzu','gaogan',"tadun"],
sp_nvshi:["lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu','ol_xinxianying',"daxiaoqiao"],
sp_shaowei:["simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan'],
sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan"],
sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","fanjiangzhangda"],
sp_liesi:['mizhu'],
sp_default:["sp_diaochan","sp_zhaoyun","sp_sunshangxiang","sp_caoren","sp_jiangwei","sp_machao","sp_caiwenji","jsp_guanyu","jsp_huangyueying","sp_pangde","sp_jiaxu","yuanshu",'sp_zhangliao','sp_ol_zhanghe'],
sp_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv'],
@ -22,8 +22,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_others:["hanba","caiyang"],
},
},
characterFilter:{},
characterFilter:{
tianyu:function(mode){
return mode!='chess'&&mode!='tafang'&&mode!='stone';
},
},
character:{
fanjiangzhangda:['male','wu',4,['yuanchou','juesheng']],
tianyu:['male','wei',4,['saodi','zhuitao']],
ol_chendeng:['male','qun',4,['olfengji']],
ol_zhuling:['male','wei',4,['jixian']],
wuyan:['male','wu',4,['lanjiang']],
sp_ol_zhanghe:['male','qun',4,['spolzhouxuan']],
ol_dongzhao:['male','wei',3,['olxianlve','olzaowang']],
@ -156,6 +164,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//kaisa:["male","western",4,["zhengfu"]],
},
characterIntro:{
fanjiangzhangda:'范强,在明朝小说《三国演义》里叫做范疆。二人均为张飞手下部将。蜀汉章武元年,刘备伐吴,张飞率军从阆中前往江州,出发前,范强和张达杀死张飞,带着张飞的首级投奔了东吴。',
tianyu:'田豫171年252年字国让渔阳雍奴今天津市武清区人。三国时期曹魏将领。初从刘备因母亲年老回乡后跟随公孙瓒公孙瓒败亡劝说鲜于辅加入曹操。曹操攻略河北时田豫正式得到曹操任用历任颖阴、郎陵令、弋阳太守等。后来田豫常年镇守曹魏北疆从征代郡乌桓、斩骨进、破轲比能多有功勋也曾参与对孙吴的作战在成山斩杀周贺于新城击败孙权。官至太中大夫封长乐亭侯。有一子田彭祖。',
wuyan:'吴国及西晋初年将领。初任通江县吏,后得到大司马陆抗的提拔重用,逐渐升至建平太守。',
fengfangnv:'冯方之女,司隶人,袁术妻妾。在史书中被记载为天姿国色的美人。钱大昭在《三国志辨疑》中认为冯方当为冯芳误字,冯方女实为是西园八校尉之一的冯芳的女儿。然而,在曹丕《典论》、《九州春秋》等书籍都有提及她,皆作冯方女字样,并无一书写作冯芳女或是明提是冯芳之女。最关键的一点是,冯芳是荆州西陵县人,她女儿不可能是司隶籍,冯芳也没担任过任何与司隶有关的官职。同时期名字为“○女”的并不少见,如施绩女儿施淑女,曹植女儿曹行女,夏侯令女等。',
zuofen:'左芬约253年300年4月23日出土墓志作左棻字兰芝齐国临淄今山东临淄西晋诗人。少好学善属文。为晋武帝贵人。今存诗、赋、颂、赞、诔等20余篇大都为应诏而作《离思赋》最著名。原有集已失传。',
@ -468,6 +478,426 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//范强张达
yuanchou:{
audio:2,
trigger:{
player:'useCardToPlayered',
target:'useCardToTargeted',
},
filter:function(event){
return event.card.name=='sha'&&get.color(event.card)=='black';
},
forced:true,
logTarget:'target',
content:function(){
trigger.target.addTempSkill('qinggang2');
trigger.target.storage.qinggang2.add(trigger.card);
},
ai:{
unequip_ai:true,
skillTagFilter:function(player,tag,arg){
if(arg&&arg.name=='sha'&&get.color(arg.card)=='black') return true;
return false;
}
},
global:'yuanchou_ai',
subSkill:{
ai:{
unequip_ai:true,
skillTagFilter:function(player,tag,arg){
if(arg&&arg.name=='sha'&&get.color(arg.card)=='black'&&arg.target&&arg.target.hasSkill('yuanchou')) return true;
return false;
}
},
},
},
juesheng:{
audio:2,
enable:'phaseUse',
limited:true,
skillAnimation:true,
animationColor:'orange',
viewAs:{name:'juedou',isCard:true},
filterCard:()=>false,
selectCard:-1,
precontent:function(){
player.awakenSkill('juesheng');
player.addTempSkill('juesheng_counter');
},
ai:{
result:{
player:function(player,target){
return target.getAllHistory('useCard',(evt)=>evt.card.name=='sha').length*lib.card.juedou.ai.result.player.apply(this,arguments);
},
target:function(player,target){
var num=target.getAllHistory('useCard',(evt)=>evt.card.name=='sha').length;
if(num<target.hp) return 0;
return num*lib.card.juedou.ai.result.target;
},
},
},
subSkill:{
counter:{
trigger:{global:'damageBegin1'},
forced:true,
charlotte:true,
filter:function(event,player){
var evt=event.getParent();
return evt.skill=='juesheng'&&evt.player==player;
},
content:function(){
var target=trigger.getParent().target;
trigger.num=target.getAllHistory('useCard',(evt)=>evt.card.name=='sha').length;
target.addTempSkill('juesheng',{player:'phaseAfter'});
},
},
},
},
//田之间
saodi:{
audio:2,
trigger:{
player:'useCardToPlayer',
},
direct:true,
filter:function(event,player){
if(event.targets.length!=1||event.target==player||event.target.hasSkill('nodis')) return false;
if(event.card.name!='sha'&&get.type(event.card)!='trick') return false;
var target=event.target;
var left=[],right=[],left2=player,right2=player;
while(left2!=target&&right2!=target){
left2=left2.getPrevious();
right2=right2.getNext();
if(left2!=target) left.push(left2);
if(right2!=target) right.push(right2);
}
if(target==left2){
for(var i of left){
if(lib.filter.targetEnabled2(event.card,player,i)) return true;
}
}
if(target==right2){
for(var i of right){
if(lib.filter.targetEnabled2(event.card,player,i)) return true;
}
}
return false;
},
aiJudge:function(card,player,target,bool){
var left=[],right=[],left2=player,right2=player,left3=false,right3=false;
var eff_left=0,eff_right=0;
while(left2!=target&&right2!=target){
left2=left2.getPrevious();
right2=right2.getNext();
if(left2!=target) left.push(left2);
if(right2!=target) right.push(right2);
}
if(target==left2){
for(var i of left){
if(lib.filter.targetEnabled2(card,player,i)){
left3=true;
eff_left+=get.effect(i,card,player,player);
}
}
}
if(target==right2){
for(var i of right){
if(lib.filter.targetEnabled2(card,player,i)){
right3=true;
eff_right+=get.effect(i,card,player,player);
}
}
}
if(left3&&right3){
if(!bool) return Math.max(eff_left,eff_right);
if(eff_left>Math.max(0,eff_right)) return '↖顺时针';
if(eff_right>Math.max(0,eff_left)) return '逆时针↗';
return 'cancel2';
}
else if(left3){
if(bool) return eff_left>0?'↖顺时针':'cancel2';
return eff_left;
}
else if(right3){
if(bool) return eff_right>0?'↖顺时针':'cancel2';
return eff_right;
}
else return bool?'cancel2':0;
},
content:function(){
'step 0'
var choices=[];
var target=trigger.target;
var left=[],right=[],left2=player,right2=player;
while(left2!=target&&right2!=target){
left2=left2.getPrevious();
right2=right2.getNext();
if(left2!=target) left.push(left2);
if(right2!=target) right.push(right2);
}
if(target==left2){
for(var i of left){
if(lib.filter.targetEnabled2(trigger.card,player,i)){
choices.push('↖顺时针');
break;
}
}
}
if(target==right2){
for(var i of right){
if(lib.filter.targetEnabled2(trigger.card,player,i)){
choices.push('逆时针↗');
break;
}
}
}
choices.push('cancel2');
player.chooseControl(choices).set('prompt',get.prompt('saodi')).set('prompt2','令自己和'+get.translation(trigger.target)+'某个方向之间的所有角色均成为'+get.translation(trigger.card)+'的目标').set('choices',choices).set('ai',function(){
var evt=_status.event.getTrigger();
return lib.skill.saodi.aiJudge(evt.card,evt.player,evt.target,true);
});
'step 1'
if(result.control!='cancel2'){
var targets=[];
if(result.control=='↖顺时针'){
var current=player.getPrevious();
while(current!=trigger.target){
if(lib.filter.targetEnabled2(trigger.card,player,current)) targets.push(current);
current=current.getPrevious();
}
}
else{
var current=player.getNext();
while(current!=trigger.target){
if(lib.filter.targetEnabled2(trigger.card,player,current)) targets.push(current);
current=current.getNext();
}
}
event.targets=targets;
if(!event.isMine()&&!event.isOnline()) game.delayx();
}
else event.finish();
'step 2'
player.logSkill('saodi',targets);
trigger.targets.addArray(targets);
},
ai:{
effect:{
player_use:function(card,player,target){
if(!target||player._saodi_judging||ui.selected.targets.length||player==target||target.hasSkill('nodis')) return;
if(typeof card!='object'||card.name!='sha'&&get.type(card)!='trick') return false;
player._saodi_judging=true;
var effect=lib.skill.saodi.aiJudge(card,player,target);
delete player._saodi_judging;
if(effect>0) return [1,effect/Math.max(0.01,get.attitude(player,player))];
},
},
},
},
zhuitao:{
audio:2,
direct:true,
locked:false,
trigger:{player:'phaseZhunbeiBegin'},
filter:function(event,player){
var storage=player.getStorage('zhuitao');
return game.hasPlayer(function(current){
return current!=player&&!storage.contains(current);
});
},
content:function(){
'step 0'
player.chooseTarget(get.prompt('zhuitao'),'令自己至一名其他角色的距离-1',function(card,player,target){
return target!=player&&!player.getStorage('zhuitao').contains(target);
}).set('ai',function(target){
var player=_status.event.player;
var att=get.attitude(player,target);
if(att<0&&get.distance(player,target)==2) return 100;
return get.distance(player,target)*(1-get.sgn(att)/3);
});
'step 1'
if(result.bool){
player.logSkill('zhuitao',result.targets[0]);
player.markAuto('zhuitao',result.targets);
game.delayx();
}
},
intro:{
content:'至$的距离-1',
onunmark:true,
},
onremove:true,
mod:{
globalFrom:function(player,target,distance){
if(player.getStorage('zhuitao').contains(target)) return distance-1;
},
},
group:'zhuitao_remove',
subSkill:{
remove:{
audio:'zhuitao',
trigger:{
source:'damageSource',
},
forced:true,
filter:function(event,player){
return player.getStorage('zhuitao').contains(event.player);
},
logTarget:'player',
content:function(){
player.unmarkAuto('zhuitao',[trigger.player]);
},
},
},
},
//生鱼片
olfengji:{
audio:2,
trigger:{player:'phaseDrawBegin2'},
forced:true,
locked:false,
filter:function(event,player){
return !player.numFixed;
},
content:function(){
'step 0'
player.chooseTarget('丰积:请选择增加摸牌的目标','令自己本回合的额定摸牌数-1且目标下回合的额定摸牌数+2。或者点击「取消」令自己的额定摸牌数+1',lib.filter.notMe).set('ai',function(target){
var player=_status.event.player;
if(target.hasJudge('lebu')||target.hasJudge('bingliang')) return 0;
var att=get.attitude(player,target),dist=get.distance(player,target,'absolute');
if(_status.event.goon){
return att/dist;
}
if(game.countPlayer(function(current){
return current!=player&&current!=target&&get.attitude(player,current)<0&&get.distance(player,current,'absolute')<dist;
})>=target.hp) return 0;
return att/dist;
}).set('goon',player.skipList.contains('lebu'));
'step 1'
if(!player.storage.olfengji_draw) player.storage.olfengji_draw=0;
if(result.bool){
var target=result.targets[0];
player.line(target,'thunder');
player.storage.olfengji_draw--;
if(!target.storage.olfengji_draw) target.storage.olfengji_draw=0;
target.storage.olfengji_draw+=2;
target.addTempSkill('olfengji_draw',{player:'phaseAfter'});
target.markSkill('olfengji_draw');
}
else{
player.storage.olfengji_draw++;
}
player.addTempSkill('olfengji_draw');
player.markSkill('olfengji_draw');
'step 2'
player.chooseTarget('丰积:请选择增加使用杀次数的目标','令自己本回合使用杀的次数上限-1且目标下回合使用杀的次数上限+2。或者点击「取消」令自己使用杀的次数上限+1',lib.filter.notMe).set('ai',function(target){
var player=_status.event.player;
if(target.countMark('olfengji_draw')>0&&target.getCardUsable('sha')<2) return get.attitude(player,target);
return 0;
});
'step 3'
if(!player.storage.olfengji_sha) player.storage.olfengji_sha=0;
if(result.bool){
var target=result.targets[0];
player.line(target,'fire');
player.storage.olfengji_sha--;
if(!target.storage.olfengji_sha) target.storage.olfengji_sha=0;
target.storage.olfengji_sha+=2;
target.addTempSkill('olfengji_sha',{player:'phaseAfter'});
target.markSkill('olfengji_sha');
}
else{
player.storage.olfengji_sha++;
}
player.addTempSkill('olfengji_sha');
player.markSkill('olfengji_sha');
},
subSkill:{
sha:{
charlotte:true,
onremove:true,
intro:{
content:function(storage){
return '使用【杀】的次数上限'+(storage>=0?'+':'')+storage;
},
},
mod:{
cardUsable:function(card,player,num){
if(card.name=='sha') return num+player.storage.olfengji_sha;
},
},
},
draw:{
charlotte:true,
onremove:true,
intro:{
content:function(storage){
return '额定摸牌数'+(storage>=0?'+':'')+storage;
},
},
trigger:{player:'phaseDrawBegin2'},
forced:true,
filter:function(event,player){
return !event.numFixed;
},
content:function(){
trigger.num+=player.storage.olfengji_draw;
},
},
},
},
//朱灵
jixian:{
audio:2,
trigger:{player:'phaseDrawAfter'},
direct:true,
filter:function(event,player){
return game.hasPlayer(function(current){
return current!=player&&lib.skill.jixian.getNum(player,current)>0&&player.canUse('sha',current,false);
})
},
content:function(){
'step 0'
player.chooseTarget(get.prompt('jixian'),'视为对一名满足条件的角色使用一张【杀】',function(card,player,target){
return target!=player&&lib.skill.jixian.getNum(player,target)>0&&player.canUse('sha',target,false);
}).set('ai',function(target){
var player=_status.event.player;
return get.effect(target,{name:'sha'},player,player)*Math.sqrt(lib.skill.jixian.getNum(player,target));
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('jixian',target);
var num=lib.skill.jixian.getNum(player,target);
player.useCard({name:'sha',isCard:true},target,false);
if(num>0) player.draw(num);
}
else event.finish();
'step 2'
if(!player.hasHistory('sourceDamage',function(evt){
var card=evt.card;
if(!card||card.name!='sha') return false;
var evtx=evt.getParent('useCard');
return evtx.card==card&&evtx.getParent()==event;
})) player.loseHp();
},
getNum:function(player,target){
var num=0;
if(target.isHealthy()) num++;
if(target.getEquip(2)) num++;
var countSkill=function(player){
return player.getSkills(null,null,false).filter(function(skill){
var info=get.info(skill);
if(!info||info.charlotte) return false;
if(info.zhuSkill) return player.hasZhuSkill(skill);
return true;
}).length;
}
if(countSkill(player)<countSkill(target)) num++;
return num;
},
},
//吾彦
lanjiang:{
audio:2,
@ -11664,7 +12094,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
delay:false,
content:function(){
if(!target.storage.rezhoufu2_markcount) target.storage.rezhoufu2_markcount=0;
target.markAuto(cards,player,'give').gaintag.add('rezhoufu2');
target.addToExpansion(cards,player,'give').gaintag.add('rezhoufu2');
},
ai:{
order:1,
@ -11752,7 +12182,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger.player.storage.rezhoufu2_markcount++;
if(trigger.player.storage.rezhoufu2_markcount>=2){
var cards=trigger.player.getExpansions('rezhoufu2');
trigger.player.loseToDiscardpile(cards);
player.gain(cards,trigger.player);
}
else trigger.player.markSkill('rezhoufu2');
},
@ -11763,6 +12193,34 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yingbin:{
audio:2,
},
kuiwei:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
check:function(event,player){
if(player.isTurnedOver()) return true;
var num=game.countPlayer(function(current){
return current.getEquip(1);
});
return num>1;
},
content:function(){
"step 0"
player.turnOver();
"step 1"
var num=game.countPlayer(function(current){
return current.getEquip(1);
});
player.draw(2+num);
player.addSkill('kuiwei2');
},
ai:{
effect:{
target:function(card){
if(card.name=='guiyoujie') return [0,2];
}
}
}
},
kuiwei2:{
trigger:{player:'phaseDrawBegin'},
forced:true,
@ -15425,6 +15883,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zongyu:['sp_zongyu','zongyu'],
ol_dongzhao:['ol_dongzhao','tw_dongzhao'],
mayunlu:['tw_mayunlu','mayunlu'],
zhuling:['ol_zhuling','zhuling'],
},
translate:{
"xinfu_lingren":"凌人",
@ -16067,7 +16526,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
spmengjin_info:'当你使用【杀】指定目标后,你可以弃置目标角色的一张牌。',
fenxun_info:'出牌阶段限一次你可以弃置一张牌并选择一名其他角色你于本回合内至其的距离视为1。',
rezhoufu_info:'出牌阶段限一次你可以用一张牌对一名其他角色施“咒”。当有“咒”的角色判定时将“咒”作为判定牌一名角色的回合结束时你令本回合移除过“咒”的角色各失去1点体力',
reyingbing_info:'锁定技,有“咒”的角色使用与“咒”颜色相同的牌时,你摸一张牌;若这是你第二次因该“咒”摸牌,你获得该"咒"。',
reyingbing_info:'锁定技,有“咒”的角色使用与“咒”颜色相同的牌时,你摸一张牌;若这是你第二次因该“咒”摸牌,你获得该"咒"。',
yingbin_info:'锁定技,有“咒”的角色使用与“咒”花色相同的牌时,你摸一张牌;当你因同一名角色的同一张“咒”的效果摸第二张牌时,移去该“咒”。',
zhoufu_info:'出牌阶段限一次你可以将一张手牌置于一名没有“咒”的其他角色的武将牌旁称为“咒”。当有“咒”的角色判定时其改为将“咒”作为判定牌一名角色的回合结束时若有角色于此回合因判定而移除过“咒”则你令这些角色各失去1点体力。',
yanzheng_info:'若你的手牌数大于你的体力值,则你可以将你装备区内的牌当作【无懈可击】使用。',
@ -16296,6 +16755,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
wuyan:'吾彦',
lanjiang:'澜疆',
lanjiang_info:'结束阶段你可以选择令所有手牌数不小于你的角色。这些角色依次选择是否令你摸一张牌。然后你可以对其中一名手牌数等于你的角色造成1点伤害随后可以对其中一名手牌数小于你的角色摸一张牌。',
ol_zhuling:'朱灵',
jixian:'急陷',
jixian_info:'摸牌阶段结束时你可以选择一名满足以下至少一项条件的角色⒈装备区内有防具牌⒉拥有的普通技能数大于你⒊体力值等于体力上限。你视为对其使用一张【杀】然后摸X张牌X为其于此【杀】结算前满足的条件数若此【杀】未造成伤害则你失去1点体力。',
ol_chendeng:'OL陈登',
olfengji:'丰积',
olfengji_info:'摸牌阶段开始时,你选择:⒈本回合摸牌阶段的额定摸牌数-1且令一名其他角色下回合摸牌阶段的额定摸牌数+2⒉本回合摸牌阶段的额定摸牌数+1。然后你选择⒈本回合使用【杀】的次数上限-1且令一名其他角色下回合使用【杀】的次数上限+2⒉本回合使用【杀】的次数上限+1。',
tianyu:'田豫',
saodi:'扫狄',
saodi_info:'当你使用【杀】或普通锦囊牌指定唯一其他角色为目标时,你可从逆时针方向和顺时针方向中选择一个你与其之间角色最少的方向。你令该方向下你与其之间的所有能成为此牌额外目标的角色均成为此牌的目标。',
zhuitao:'追讨',
zhuitao_info:'①准备阶段,你可选择一名未被〖追讨〗记录过的其他角色。②你至所有〖追讨〗记录过的角色的距离-1。③当你对一名被〖追讨〗记录过的角色造成伤害时你从〖追讨〗记录里移除该角色。',
fanjiangzhangda_ab:'范疆张达',
fanjiangzhangda:'范强张达',
yuanchou:'怨仇',
yuanchou_info:'锁定技。当你使用黑色【杀】指定目标角色后或成为黑色【杀】的目标角色后,你令目标角色的防具技能无效直到此【杀】被抵消或造成伤害。',
juesheng:'决生',
juesheng_info:'限定技。出牌阶段你可视为使用一张【决斗】。当你因此【决斗】造成伤害时你将伤害值改为XX为目标角色本局游戏内使用过【杀】的数量且令目标角色获得此技能直到其下回合结束。',
sp_tianji:'天极·皇室宗亲',
sp_sibi:'四弼·辅国文曲',

View File

@ -4,7 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sp2',
connect:true,
character:{
re_sunyi:['male','wu',4,['syjiqiao','syxiongyi'],['unseen']],
re_sunyi:['male','wu',5,['syjiqiao','syxiongyi']],
re_pangdegong:['male','qun',3,['heqia','yinyi']],
wangtao:['female','shu',3,['huguan','yaopei']],
wangyue:['female','shu',3,['huguan','mingluan']],
@ -158,7 +158,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
'step 0'
var cards=player.getExpansions('syjiqiao')
player.chooseButton(['激峭:选择获得一张牌',cards],true);
player.chooseButton(['激峭:选择获得一张牌',cards],true).set('ai',function(button){
var player=_status.event.player;
var color=get.color(button.link),cards=player.getExpansions('syjiqiao');
var num1=cards.filter((card)=>get.color(card)==color),num2=cards.length-num1;
if(num1>=num2) return get.value(button.link);
return 0;
});
'step 1'
if(result.bool){
player.gain(result.links,'gain2');
@ -209,6 +215,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(hp>0) player.recover(hp);
},
ai:{
order:1,
save:true,
skillTagFilter:function(player,arg,target){
return player==target;
@ -4063,7 +4070,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{global:'phaseUseEnd'},
forced:true,
filter:function(event,player){
if(player==event.player) return false;
if(player==event.player||!player.countCards('he')) return false;
var map={};
var list=event.player.getHistory('useCard',function(evt){
var evt2=evt.getParent('phaseUse');
@ -4075,10 +4082,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
else return true;
}
},
frequent:true,
logTarget:'player',
direct:true,
content:function(){
player.draw();
'step 0'
player.chooseToDiscard('he',get.prompt('langmie'),'弃置一张牌并摸两张牌').set('ai',(card)=>8-get.value(card)).logSkill='langmie';
'step 1'
if(result.bool) player.draw(2);
},
group:'langmie_damage',
},
@ -4842,6 +4851,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
enable:'phaseUse',
usable:1,
zhuanhuanji:true,
filter:function(event,player){
if(player.storage.bazhan){
return game.hasPlayer(function(current){
@ -12554,7 +12564,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
duanwei:'段煨',
langmie:'狼灭',
langmie_damage:'狼灭',
langmie_info:'其他角色的出牌阶段结束时,若其本阶段内使用过的牌中有类型相同的牌,则你可以摸一张牌其他角色的结束阶段开始时若其本回合内造成的伤害大于1则你可以弃置一张牌并对其造成1点伤害。',
langmie_info:'其他角色的出牌阶段结束时,若其本阶段内使用过的牌中有类型相同的牌,则你可以弃置一张牌并摸两张牌其他角色的结束阶段开始时若其本回合内造成的伤害大于1则你可以弃置一张牌并对其造成1点伤害。',
zhangheng:'张横',
dangzai:'挡灾',
dangzai_info:'出牌阶段开始时,你可将一名其他角色判定区内的一张牌移动至你的判定区内。',

View File

@ -59,9 +59,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
var evtx=event.getParent();
event.targets=targets.filter(function(target){
return target.getHistory('lose',function(evt){
return evt.getParent(3).name==''&&evt.getParent(4)==evtx;
})
return target.hasHistory('lose',function(evt){
return evt.getParent(3).name=='dz_mantianguohai'&&evt.getParent(4)==evtx;
});
});
if(!event.targets.length||!player.countCards('he')) event.finish();
'step 1'

View File

@ -2847,7 +2847,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
cards.sort(function(a,b){
return get.useful(a)-get.useful(b);
});
cards2=cards.splice(0,player.storage.bizhuan.length);
cards2=cards.splice(0,player.getExpansions('bizhuan').length);
}
return [cards2,cards];
});
@ -5558,7 +5558,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
audioname:['xin_chengpu'],
filter:function(event,player){
return player.countCards('h')>0&&(_status.connectMode||player.countCards('h','sha')>0)&&!player.getExpansion('chunlao').length;
return player.countCards('h')>0&&(_status.connectMode||player.countCards('h','sha')>0)&&!player.getExpansions('chunlao').length;
},
intro:{
content:'expansion',
@ -9128,8 +9128,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
"step 2"
player.logSkill('rechanhui',event.target);
event.target.chooseCard('交给'+get.translation(player)+'一张牌,或成为'+
get.translation(trigger.card)+'的额外目标').set('ai',function(card){
event.target.chooseCard('交给'+get.translation(player)+'一张牌,或成为'+
get.translation(trigger.card)+'的额外目标','he').set('ai',function(card){
return 5-get.value(card);
});
"step 3"

View File

@ -393,6 +393,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return 8-get.value(card);
},
discard:false,
lose:false,
filter:function(event,player){
if(player.countCards('h',{suit:'heart'})){
return true;

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.112.2',
'v1.9.113.2',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -847,6 +847,10 @@ window.noname_asset_list=[
'audio/die/wangyue.mp3',
'audio/die/wuyan.mp3',
'audio/die/xin_sunxiu.mp3',
'audio/die/fanjiangzhangda.mp3',
'audio/die/ol_chendeng.mp3',
'audio/die/re_sunyi.mp3',
'audio/die/tianyu.mp3',
'audio/skill/decadezishou1.mp3',
'audio/skill/decadezishou2.mp3',
@ -3858,6 +3862,22 @@ window.noname_asset_list=[
'audio/skill/yingfeng2.mp3',
'audio/skill/zjjuxiang1.mp3',
'audio/skill/zjjuxiang2.mp3',
'audio/skill/juesheng1.mp3',
'audio/skill/juesheng2.mp3',
'audio/skill/olfengji1.mp3',
'audio/skill/olfengji2.mp3',
'audio/skill/olhunzi_re_sunyi1.mp3',
'audio/skill/olhunzi_re_sunyi2.mp3',
'audio/skill/saodi1.mp3',
'audio/skill/saodi2.mp3',
'audio/skill/syjiqiao1.mp3',
'audio/skill/syjiqiao2.mp3',
'audio/skill/syxiongyi1.mp3',
'audio/skill/syxiongyi2.mp3',
'audio/skill/yuanchou1.mp3',
'audio/skill/yuanchou2.mp3',
'audio/skill/zhuitao1.mp3',
'audio/skill/zhuitao2.mp3',
'audio/voice/male/0.mp3',
'audio/voice/male/1.mp3',
@ -4890,6 +4910,11 @@ window.noname_asset_list=[
'image/character/wangyue.jpg',
'image/character/wuyan.jpg',
'image/character/xin_sunxiu.jpg',
'image/character/ol_chendeng.jpg',
'image/character/ol_xuhuang.jpg',
'image/character/ol_zhuling.jpg',
'image/character/re_sunyi.jpg',
'image/character/tianyu.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -11044,13 +11044,13 @@
}
var evt=event.relatedEvent||event.getParent();
if(!evt.orderingCards) evt.orderingCards=[];
if(!event.noOrdering&&!event.cardsOrdered){
event.cardsOrdered=true;
if(!evt.noOrdering&&!evt.cardsOrdered){
evt.cardsOrdered=true;
var next=game.createEvent('orderingDiscard',false,evt.getParent());
next.relatedEvent=evt;
next.setContent('orderingDiscard');
}
if(!event.noOrdering) evt.orderingCards.addArray(cards);
if(!evt.noOrdering) evt.orderingCards.addArray(cards);
},
cardsGotoSpecial:function(){
game.getGlobalHistory().cardMove.push(event);
@ -16029,15 +16029,14 @@
if(event.position==ui.ordering){
var evt=event.relatedEvent||event.getParent();
if(!evt.orderingCards) evt.orderingCards=[];
if(!event.noOrdering&&!event.cardsOrdered){
event.cardsOrdered=true;
if(!evt.noOrdering&&!evt.cardsOrdered){
evt.cardsOrdered=true;
var next=game.createEvent('orderingDiscard',false,evt.getParent());
next.relatedEvent=evt;
next.setContent('orderingDiscard');
}
if(!event.noOrdering){
if(!evt.noOrdering){
evt.orderingCards.addArray(cards);
evt.orderingCards.addArray(ss);
}
}
else if(event.position==ui.cardPile){
@ -16760,8 +16759,14 @@
if(player.getTopCards) cardj=player.getTopCards()[0];
else cardj=get.cards()[0];
}
var nextj=game.cardsGotoOrdering(cardj);
if(event.position!=ui.discardPile) nextj.noOrdering=true;
var owner=get.owner(cardj);
if(owner){
owner.lose(cardj,'visible',ui.ordering);
}
else{
var nextj=game.cardsGotoOrdering(cardj);
if(event.position!=ui.discardPile) nextj.noOrdering=true;
}
player.judging.unshift(cardj);
game.addVideo('judge1',player,[get.cardInfo(player.judging[0]),judgestr,event.videoId]);
game.broadcastAll(function(player,card,str,id,cardid){

View File

@ -1,19 +1,19 @@
window.noname_update={
version:'1.9.113.1',
update:'1.9.113',
version:'1.9.113.2',
update:'1.9.113.1',
changeLog:[
'功能性更新E(x)pansion区域独立化武将牌上的牌所在区域',
'孙翊、OL陈登、OL朱灵、OL界徐晃、范强张达',
'bug修复',
],
files:[
//'card/extra.js',
//'card/gujian.js',
//'card/guozhan.js',
'card/guozhan.js',
//'card/gwent.js',
//'card/huanlekapai.js',
//'card/mtg.js',
//'card/sp.js',
//'card/standard.js',
'card/standard.js',
//'card/swd.js',
//'card/yunchou.js',
//'card/yingbian.js',
@ -21,29 +21,29 @@ window.noname_update={
//'card/zhenfa.js',
//'card/zhulu.js',
//'character/diy.js',
//'character/extra.js',
//'character/hearth.js',
'character/extra.js',
'character/hearth.js',
//'character/gujian.js',
//'character/gwent.js',
//'character/hearth.js',
//'character/mobile.js',
'character/mobile.js',
//'character/mtg.js',
//'character/offline.js',
//'character/old.js',
'character/old.js',
//'character/ow.js',
//'character/rank.js',
//'character/refresh.js',
//'character/shenhua.js',
//'character/sp.js',
//'character/sp2.js',
//'character/tw.js',
'character/rank.js',
'character/refresh.js',
'character/shenhua.js',
'character/sp.js',
'character/sp2.js',
'character/tw.js',
//'character/standard.js',
//'character/swd.js',
//'character/xianjian.js',
//'character/xinghuoliaoyuan.js',
//'character/yingbian.js',
//'character/yijiang.js',
//'character/yxs.js',
'character/yijiang.js',
'character/yxs.js',
//'extension/boss/extension.js',
//'layout/default/layout.css',
//'layout/newlayout/global.css',
@ -51,13 +51,13 @@ window.noname_update={
//'layout/nova/layout.css',
//'layout/mobile/equip.css',
//'mode/boss.js',
//'mode/brawl.js',
'mode/brawl.js',
//'mode/chess.js',
//'mode/connect.js',
//'mode/doudizhu.js',
//'mode/guozhan.js',
'mode/guozhan.js',
//'mode/identity.js',
//'mode/single.js',
'mode/single.js',
//'mode/stone.js',
//'mode/tafang.js',
//'mode/versus.js',

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

BIN
image/character/tianyu.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

View File

@ -1155,7 +1155,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
var list=[
['re_yuanshao','re_lidian'],
['zhangliao','sunquan'],
['xin_fazheng','lvfan'],
['xin_fazheng','sp_lvfan'],
['sunjian','lvbu'],
['jin_simashi','re_weiyan'],
['guanyu','sunce'],

View File

@ -8217,7 +8217,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
if(list.length==1){
target.storage.gzxiongsuan_restore=list[0];
target.addTempSkill('gzxiongsuan_restore','phaseZhunbeiBegin');
target.addTempSkill('gzxiongsuan_restore');
event.finish();
}
else if(list.length>1){
@ -8232,9 +8232,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
subSkill:{
restore:{
trigger:{global:'phaseAfter'},
silent:true,
trigger:{global:'phaseEnd'},
forced:true,
popup:false,
charlotte:true,
onremove:true,
content:function(){
player.restoreSkill(player.storage.gzxiongsuan_restore);
}

View File

@ -355,12 +355,14 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}).set('dialog',event.videoId);
"step 4"
game.me.init(result.links[0]);
_status.characterlist.remove(result.links[0]);
game.addRecentCharacter(result.links[0]);
game.me.chooseButton(true).set('ai',function(button){
return Math.random();
}).set('dialog',event.videoId);
"step 5"
game.me.next.init(result.links[0]);
_status.characterlist.remove(result.links[0]);
game.addRecentCharacter(result.links[0]);
setTimeout(function(){
ui.arena.classList.remove('choose-character');
@ -583,6 +585,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
"step 2"
game.broadcastAll(function(player,character,id){
player.init(character);
_status.characterlist.remove(character);
if(player==game.me) game.addRecentCharacter(character);
},game.zhu,result.links[0]);
game.fan.chooseButton(true).set('ai',function(button){
@ -596,6 +599,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
dialog.close();
}
player.init(character);
_status.characterlist.remove(character);
if(player==game.me) game.addRecentCharacter(character);
setTimeout(function(){
ui.arena.classList.remove('choose-character');