2020-09-25 10:40:43 +00:00
|
|
|
|
'use strict';
|
|
|
|
|
game.import('character',function(lib,game,ui,get,ai,_status){
|
|
|
|
|
return {
|
|
|
|
|
name:'old',
|
2023-03-31 11:34:38 +00:00
|
|
|
|
connect:true,
|
2020-09-25 10:40:43 +00:00
|
|
|
|
characterSort:{
|
|
|
|
|
old:{
|
2020-10-27 10:59:52 +00:00
|
|
|
|
old_standard:['ol_yuanshu'],
|
2023-10-24 17:30:20 +00:00
|
|
|
|
old_shenhua:['old_shen_zhaoyun','old_caocao',"yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","old_xiaoqiao","pangde","xuhuang",'junk_sunquan',"huangzhong","new_caoren",'old_chendao'],
|
2023-10-23 16:42:15 +00:00
|
|
|
|
old_refresh:["old_zhangfei","old_huatuo","old_zhaoyun","ol_huaxiong",'old_re_lidian','old_guanyu'],
|
2023-09-23 09:26:44 +00:00
|
|
|
|
old_yijiang1:["masu","xushu","xin_yujin","old_xusheng","old_lingtong","fazheng",'old_gaoshun','re_yujin'],
|
|
|
|
|
old_yijiang2:["old_zhonghui","madai",'old_handang','old_liubiao','oldre_liubiao','old_guanzhang','old_wangyi'],
|
2020-10-27 10:59:52 +00:00
|
|
|
|
old_yijiang3:["liru","old_zhuran","old_fuhuanghou","old_caochong"],
|
2023-03-31 11:34:38 +00:00
|
|
|
|
old_yijiang4:["old_caozhen","old_chenqun","old_zhuhuan",'old_caorui'],
|
2022-07-06 13:38:15 +00:00
|
|
|
|
old_yijiang5:["old_caoxiu","old_zhuzhi"],
|
2023-09-07 15:40:34 +00:00
|
|
|
|
old_yijiang67:["ol_zhangrang",'old_huanghao','old_liyan'],
|
2023-10-20 06:39:02 +00:00
|
|
|
|
old_sp:["old_wanglang","old_maliang","old_zhangxingcai","old_wangyun",'old_dingfeng','old_guanyinping'],
|
2022-07-25 14:24:03 +00:00
|
|
|
|
old_yingbian:['junk_simayi','old_yangyan','old_yangzhi'],
|
2023-10-03 04:40:48 +00:00
|
|
|
|
old_mobile:["old_caochun"],
|
2020-09-25 10:40:43 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
character:{
|
2023-10-24 17:30:20 +00:00
|
|
|
|
old_shen_zhaoyun:['male','shen',2,['oldjuejing','oldlonghun'],['shu']],
|
2023-10-20 06:39:02 +00:00
|
|
|
|
old_guanyinping:['female','shu',3,['xueji_old','oldhuxiao','oldwuji']],
|
2023-09-08 13:22:05 +00:00
|
|
|
|
old_caocao:['male','shen',3,['junkguixin','feiying'],['die_audio']],
|
2023-05-02 11:26:19 +00:00
|
|
|
|
old_chendao:['male','shu',4,['drlt_wanglie']],
|
|
|
|
|
old_liyan:['male','shu',3,['duliang','fulin']],
|
|
|
|
|
old_re_lidian:['male','wei',3,['xunxun','wangxi']],
|
|
|
|
|
old_guanzhang:['male','shu',4,['old_fuhun']],
|
2023-03-31 11:34:38 +00:00
|
|
|
|
new_caoren:['male','wei',4,['jushou']],
|
|
|
|
|
huangzhong:['male','shu',4,['liegong']],
|
|
|
|
|
junk_sunquan:['male','shen',4,['dili','yuheng'],['wei']],
|
|
|
|
|
old_dingfeng:['male','wu',4,['fenxun','duanbing']],
|
|
|
|
|
old_huanghao:['male','shu',3,['oldqinqing','oldhuisheng']],
|
|
|
|
|
oldre_liubiao:['male','qun',3,['zishou','zongshi']],
|
|
|
|
|
old_liubiao:['male','qun',4,['oldzishou','zongshi']],
|
|
|
|
|
old_gaoshun:['male','qun',4,['xianzhen','jinjiu']],
|
|
|
|
|
old_caorui:['male','wei',3,['huituo','oldmingjian','xingshuai'],['zhu']],
|
|
|
|
|
old_handang:['male','wu',4,['oldgongji','oldjiefan']],
|
2022-07-25 14:24:03 +00:00
|
|
|
|
old_yangzhi:['female','jin',3,['wanyi','maihuo']],
|
|
|
|
|
old_yangyan:['female','jin',3,['xuanbei','xianwan']],
|
2022-04-30 12:32:57 +00:00
|
|
|
|
madai:['male','shu',4,['mashu','oldqianxi']],
|
2022-04-18 02:27:32 +00:00
|
|
|
|
xuhuang:['male','wei',4,['gzduanliang']],
|
2021-12-09 13:57:51 +00:00
|
|
|
|
junk_simayi:['male','jin',3,['buchen','smyyingshi','xiongzhi','quanbian'],['hiddenSkill']],
|
2021-02-05 14:52:19 +00:00
|
|
|
|
fazheng:['male','shu',3,['enyuan','xuanhuo']],
|
2020-10-27 10:59:52 +00:00
|
|
|
|
ol_yuanshu:['male','qun',4,['wangzun','tongji']],
|
2020-09-25 10:40:43 +00:00
|
|
|
|
pangde:['male','qun',4,['mashu','mengjin']],
|
|
|
|
|
ol_huaxiong:["male","qun",6,["new_reyaowu"]],
|
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
|
|
|
|
old_wangyun:['male','qun',4,['wylianji','moucheng'],['clan:太原王氏']],
|
2023-08-22 16:58:47 +00:00
|
|
|
|
old_xiaoqiao:['female','wu',3,['tianxiang','hongyan']],
|
2020-09-25 10:40:43 +00:00
|
|
|
|
weiyan:['male','shu',4,['kuanggu']],
|
|
|
|
|
xiahouyuan:['male','wei',4,['shensu']],
|
|
|
|
|
old_zhangxingcai:['female','shu',3,['oldshenxian','qiangwu']],
|
|
|
|
|
old_fuhuanghou:['female','qun',3,['oldzhuikong','oldqiuyuan']],
|
|
|
|
|
old_caochong:['male','wei',3,['oldrenxin','oldchengxiang']],
|
2023-03-31 11:34:38 +00:00
|
|
|
|
yuji:['male','qun',3,['old_guhuo']],
|
2020-09-25 10:40:43 +00:00
|
|
|
|
zhangjiao:['male','qun',3,['leiji','guidao','huangtian'],['zhu']],
|
2021-01-19 14:04:52 +00:00
|
|
|
|
old_zhangfei:['male','shu',4,['new_repaoxiao','new_tishen']],
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_zhaoyun:['male','shu',4,['longdan','new_yajiao']],
|
|
|
|
|
old_huatuo:['male','qun',3,['jijiu','chulao']],
|
2023-10-23 16:42:15 +00:00
|
|
|
|
old_guanyu:['male','shu',4,['wusheng','yijue']],
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_caochun:['male','wei',4,['shanjia']],
|
|
|
|
|
masu:['male','shu',3,['xinzhan','huilei']],
|
2023-08-24 14:56:06 +00:00
|
|
|
|
xushu:['male','shu',3,['xswuyan','jujian'],['border:wei']],
|
2020-09-25 10:40:43 +00:00
|
|
|
|
liru:['male','qun',3,['juece','mieji','fencheng']],
|
|
|
|
|
xin_yujin:['male','wei',4,['jieyue']],
|
|
|
|
|
//lusu:['male','wu',3,['haoshi','dimeng']],
|
|
|
|
|
//yuanshao:['male','qun',4,['luanji','xueyi'],['zhu']],
|
2023-07-27 21:43:02 +00:00
|
|
|
|
old_zhonghui:['male','wei',3,['zzhenggong','zquanji','zbaijiang'],['clan:颍川钟氏']],
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_xusheng:['male','wu',4,['pojun']],
|
|
|
|
|
old_zhuran:['male','wu',4,['olddanshou']],
|
|
|
|
|
old_lingtong:['male','wu',4,['oldxuanfeng']],
|
|
|
|
|
old_caoxiu:['male','wei',4,['taoxi']],
|
|
|
|
|
old_caozhen:['male','wei',4,['sidi']],
|
|
|
|
|
old_maliang:['male','shu',3,['xiemu','naman']],
|
|
|
|
|
old_chenqun:['male','wei',3,['dingpin','oldfaen']],
|
|
|
|
|
old_zhuhuan:['male','wu',4,['youdi']],
|
|
|
|
|
old_zhuzhi:['male','wu',4,['anguo']],
|
|
|
|
|
|
|
|
|
|
old_zhugezhan:["male","shu",3,["old_zuilun","old_fuyin"]],
|
2023-09-24 04:22:57 +00:00
|
|
|
|
ol_zhangrang:['male','qun',3,['xintaoluan'],['sex:male_castrated']],
|
2020-10-27 10:59:52 +00:00
|
|
|
|
//ol_manchong:['male','wei',3,['yuce','junxing']],
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_guanqiujian:["male","wei",4,["drlt_zhenrong","drlt_hongju"],[]],
|
2023-09-07 15:40:34 +00:00
|
|
|
|
old_wanglang:['male','wei',3,['gushe','jici']],
|
2023-09-23 09:26:44 +00:00
|
|
|
|
old_wangyi:['female','wei',3,['oldzhenlie','oldmiji']],
|
|
|
|
|
re_yujin:['male','wei',4,['yizhong']],
|
2020-09-25 10:40:43 +00:00
|
|
|
|
},
|
|
|
|
|
skill:{
|
2023-10-24 17:30:20 +00:00
|
|
|
|
//山包初版神赵
|
|
|
|
|
oldjuejing:{
|
|
|
|
|
audio:'xinjuejing',
|
|
|
|
|
trigger:{player:'phaseDrawBegin2'},
|
|
|
|
|
filter:function(event,player){
|
|
|
|
|
return !event.numFixed&&player.getHp()<player.maxHp;
|
|
|
|
|
},
|
|
|
|
|
forced:true,
|
|
|
|
|
content:function(){
|
|
|
|
|
trigger.num+=(player.getDamagedHp());
|
|
|
|
|
},
|
|
|
|
|
mod:{
|
|
|
|
|
maxHandcard:(player,num)=>num+2,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
oldlonghun:{
|
|
|
|
|
audio:'relonghun',
|
|
|
|
|
inherit:'xinlonghun',
|
|
|
|
|
prompt:()=>`将${get.cnNumber(Math.max(1,get.player().getHp()))}张♦牌当做杀,♥牌当做桃,♣牌当做闪,♠牌当做无懈可击使用或打出`,
|
|
|
|
|
selectCard:()=>Math.max(1,get.player().getHp()),
|
|
|
|
|
complexCard:true,
|
|
|
|
|
precontent:function(){
|
|
|
|
|
delete event.result.skill;
|
|
|
|
|
player.logSkill('oldlonghun');
|
|
|
|
|
},
|
|
|
|
|
ai:{
|
|
|
|
|
respondSha:true,
|
|
|
|
|
respondShan:true,
|
|
|
|
|
skillTagFilter:function(player,tag){
|
|
|
|
|
var name;
|
|
|
|
|
switch(tag){
|
|
|
|
|
case 'respondSha':name='diamond';break;
|
|
|
|
|
case 'respondShan':name='club';break;
|
|
|
|
|
case 'save':name='heart';break;
|
|
|
|
|
}
|
|
|
|
|
if(!player.countCards('hes',{suit:name})) return false;
|
|
|
|
|
},
|
|
|
|
|
order:function(item,player){
|
|
|
|
|
if(player&&_status.event.type=='phase'){
|
|
|
|
|
var max=0;
|
|
|
|
|
var list=['sha','tao'];
|
|
|
|
|
var map={sha:'diamond',tao:'heart'}
|
|
|
|
|
for(var i=0;i<list.length;i++){
|
|
|
|
|
var name=list[i];
|
|
|
|
|
if(player.countCards('hes',function(card){
|
|
|
|
|
return (name!='sha'||get.value(card)<5)&&get.suit(card,player)==map[name];
|
|
|
|
|
})>=Math.max(1,player.getHp())&&player.getUseValue({name:name,nature:name=='sha'?'fire':null})>0){
|
|
|
|
|
var temp=get.order({name:name,nature:name=='sha'?'fire':null});
|
|
|
|
|
if(temp>max) max=temp;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
max/=1.1;
|
|
|
|
|
return max;
|
|
|
|
|
}
|
|
|
|
|
return 2;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
hiddenCard:function(player,name){
|
|
|
|
|
if(name=='wuxie'&&_status.connectMode&&player.countCards('hes')>0) return true;
|
|
|
|
|
if(name=='wuxie') return player.countCards('hes',{suit:'spade'})>=Math.max(1,get.player().getHp());
|
|
|
|
|
if(name=='tao') return player.countCards('hes',{suit:'heart'})>=Math.max(1,get.player().getHp());
|
|
|
|
|
},
|
|
|
|
|
},
|
2023-09-08 13:22:05 +00:00
|
|
|
|
//魏武帝
|
|
|
|
|
junkguixin:{
|
|
|
|
|
init:function(){
|
|
|
|
|
if(!_status.junkguixin){
|
|
|
|
|
_status.junkguixin=[];
|
2023-10-15 16:12:04 +00:00
|
|
|
|
if(!_status.characterlist){
|
|
|
|
|
lib.skill.pingjian.initList();
|
|
|
|
|
}
|
|
|
|
|
for(const name of _status.characterlist){
|
2023-09-08 13:22:05 +00:00
|
|
|
|
if(!lib.character[name][3]) continue;
|
|
|
|
|
_status.junkguixin.addArray(lib.character[name][3].filter(skill=>{
|
|
|
|
|
var info=get.info(skill);
|
|
|
|
|
return info&&info.zhuSkill&&(!info.ai||!info.ai.combo);
|
|
|
|
|
}));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
unique:true,
|
|
|
|
|
audio:'guixin',
|
|
|
|
|
trigger:{player:'phaseEnd'},
|
|
|
|
|
direct:true,
|
|
|
|
|
content:function(){
|
|
|
|
|
'step 0'
|
|
|
|
|
var controls=['获得技能','修改势力','cancel2'];
|
|
|
|
|
if(!_status.junkguixin.some(skill=>!player.hasSkill(skill,null,false,false))) controls.shift();
|
|
|
|
|
player.chooseControl(controls).set('prompt',get.prompt2('junkguixin')).set('ai',()=>_status.event.controls.length==3?'获得技能':'cancel2');
|
|
|
|
|
'step 1'
|
|
|
|
|
if(result.control!='cancel2'){
|
|
|
|
|
var next=game.createEvent('junkguixinx');
|
|
|
|
|
next.player=player;
|
|
|
|
|
next.setContent(lib.skill.junkguixin['content_'+result.control]);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
content_获得技能:function(){
|
|
|
|
|
'step 0'
|
|
|
|
|
var list=_status.junkguixin.slice().filter(skill=>!player.hasSkill(skill,null,false,false));
|
|
|
|
|
if(!list.length){event.finish();return;}
|
|
|
|
|
list=list.map(skill=>{
|
|
|
|
|
return [
|
|
|
|
|
skill,
|
|
|
|
|
'<div class="popup text" style="width:calc(100% - 10px);display:inline-block"><div class="skill">【'+get.translation(skill)+'】</div><div>'+lib.translate[skill+'_info']+'</div></div>',
|
|
|
|
|
];
|
|
|
|
|
});
|
|
|
|
|
player.chooseButton([
|
|
|
|
|
'归心:选择获得一个主公技',
|
|
|
|
|
[list,'textbutton'],
|
|
|
|
|
],true).set('ai',button=>1+Math.random());
|
|
|
|
|
'step 1'
|
|
|
|
|
if(result.bool){
|
|
|
|
|
player.logSkill('junkguixin');
|
|
|
|
|
player.addSkillLog(result.links[0]);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
content_修改势力:function(){
|
|
|
|
|
'step 0'
|
|
|
|
|
player.chooseTarget('请选择【归心】的目标','更改一名其他角色的势力',lib.filter.notMe,true).set('ai',target=>1+Math.random());
|
|
|
|
|
'step 1'
|
|
|
|
|
if(result.bool){
|
|
|
|
|
var target=result.targets[0];
|
|
|
|
|
event.target=target;
|
|
|
|
|
player.logSkill('junkguixin',target);
|
|
|
|
|
var list=lib.group.slice();
|
|
|
|
|
list.removeArray(['shen',target.group]);
|
|
|
|
|
player.chooseControl(list).set('prompt','请选择'+get.translation(target)+'变更的势力').set('ai',()=>_status.event.controls.randomGet());
|
|
|
|
|
}
|
|
|
|
|
else event.finish();
|
2023-09-08 13:26:35 +00:00
|
|
|
|
'step 2'
|
2023-09-08 13:22:05 +00:00
|
|
|
|
if(result.control){
|
|
|
|
|
player.popup(get.translation(result.control+'2'));
|
|
|
|
|
target.changeGroup(result.control);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
},
|
2023-03-31 11:34:38 +00:00
|
|
|
|
oldqinqing:{
|
|
|
|
|
audio:'qinqing',
|
|
|
|
|
mode:['identity','versus'],
|
|
|
|
|
available:function(mode){
|
|
|
|
|
if(mode=='versus'&&_status.mode!='four') return false;
|
|
|
|
|
if(mode=='identity'&&_status.mode=='purple') return false;
|
|
|
|
|
},
|
|
|
|
|
trigger:{player:'phaseJieshuBegin'},
|
|
|
|
|
direct:true,
|
|
|
|
|
filter:function(event,player){
|
|
|
|
|
var zhu=get.zhu(player);
|
|
|
|
|
if(!zhu||!zhu.isZhu) return false;
|
|
|
|
|
return game.hasPlayer(function(current){
|
|
|
|
|
return current!=zhu&¤t!=player&¤t.inRange(zhu);
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
content:function(){
|
|
|
|
|
'step 0'
|
|
|
|
|
player.chooseTarget(get.prompt2('dcqinqing'),function(card,player,target){
|
|
|
|
|
var zhu=get.zhu(player);
|
|
|
|
|
return target!=player&&target.inRange(zhu);
|
|
|
|
|
}).set('ai',function(target){
|
|
|
|
|
var zhu=get.zhu(player);
|
|
|
|
|
var he=target.countCards('he');
|
|
|
|
|
if(get.attitude(_status.event.player,target)>0){
|
|
|
|
|
if(target.countCards('h')>zhu.countCards('h')+1) return 0.1;
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
if(he>zhu.countCards('h')+1) return 2;
|
|
|
|
|
if(he>0) return 1;
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
});
|
|
|
|
|
'step 1'
|
|
|
|
|
if(result.bool){
|
|
|
|
|
var target=result.targets[0];
|
|
|
|
|
event.target=target;
|
|
|
|
|
player.logSkill('dcqinqing',target);
|
|
|
|
|
if(target.countDiscardableCards(player,'he')) player.discardPlayerCard(target,'he',true);
|
|
|
|
|
target.draw();
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
event.finish();
|
|
|
|
|
}
|
|
|
|
|
'step 2'
|
|
|
|
|
var zhu=get.zhu(player);
|
|
|
|
|
if(zhu&&zhu.isIn()){
|
|
|
|
|
if(target.countCards('h')>zhu.countCards('h')) player.draw();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
oldhuisheng:{
|
|
|
|
|
audio:'huisheng',
|
|
|
|
|
trigger:{player:'damageBegin4'},
|
|
|
|
|
direct:true,
|
|
|
|
|
filter:function(event,player){
|
|
|
|
|
if(!player.countCards('he')) return false;
|
|
|
|
|
if(!event.source||event.source==player||!event.source.isIn()) return false;
|
|
|
|
|
if(player.storage.oldhuisheng&&player.storage.oldhuisheng.contains(event.source)) return false;
|
|
|
|
|
return true;
|
|
|
|
|
},
|
|
|
|
|
init:function(player){
|
|
|
|
|
if(player.storage.oldhuisheng) player.storage.oldhuisheng=[];
|
|
|
|
|
},
|
|
|
|
|
content:function(){
|
|
|
|
|
'step 0'
|
|
|
|
|
if(!player.storage.oldhuisheng) player.storage.oldhuisheng=[];
|
|
|
|
|
player.storage.oldhuisheng.push(trigger.source);
|
|
|
|
|
var att=(get.attitude(player,trigger.source)>0);
|
|
|
|
|
var goon=false;
|
|
|
|
|
if(player.hp==1){
|
|
|
|
|
goon=true;
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
var he=player.getCards('he');
|
|
|
|
|
var num=0;
|
|
|
|
|
for(var i=0;i<he.length;i++){
|
|
|
|
|
if(get.value(he[i])<8){
|
|
|
|
|
num++;
|
|
|
|
|
if(num>=2){
|
|
|
|
|
goon=true;break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
player.chooseCard('he',[1,player.countCards('he')],get.prompt2('oldhuisheng',trigger.source)).set('ai',function(card){
|
|
|
|
|
if(_status.event.att){
|
|
|
|
|
return 10-get.value(card);
|
|
|
|
|
}
|
|
|
|
|
if(_status.event.goon){
|
|
|
|
|
return 8-get.value(card);
|
|
|
|
|
}
|
|
|
|
|
if(!ui.selected.cards.length){
|
|
|
|
|
return 7-get.value(card);
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}).set('goon',goon).set('att',att);
|
|
|
|
|
'step 1'
|
|
|
|
|
if(result.bool){
|
|
|
|
|
player.logSkill('oldhuisheng',trigger.source);
|
|
|
|
|
game.delay();
|
|
|
|
|
event.num=result.cards.length;
|
|
|
|
|
var goon=false;
|
|
|
|
|
if(event.num>2||get.attitude(trigger.source,player)>=0){
|
|
|
|
|
goon=true;
|
|
|
|
|
}
|
|
|
|
|
var forced=false;
|
|
|
|
|
var str='获得其中一张牌并防止伤害';
|
|
|
|
|
if(trigger.source.countCards('he')<event.num){
|
|
|
|
|
forced=true;
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
str+=',或取消并弃置'+get.cnNumber(result.cards.length)+'张牌';
|
|
|
|
|
}
|
|
|
|
|
trigger.source.chooseButton([str,result.cards],forced).set('ai',function(button){
|
|
|
|
|
if(_status.event.goon){
|
|
|
|
|
return get.value(button.link);
|
|
|
|
|
}
|
|
|
|
|
return get.value(button.link)-8;
|
|
|
|
|
}).set('goon',goon);
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
event.finish();
|
|
|
|
|
}
|
|
|
|
|
'step 2'
|
|
|
|
|
if(result.bool){
|
|
|
|
|
var card=result.links[0];
|
|
|
|
|
trigger.source.gain(card,player,'giveAuto','bySelf');
|
|
|
|
|
trigger.cancel();
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
trigger.source.chooseToDiscard(event.num,true,'he');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
oldzishou:{
|
|
|
|
|
audio:'zishou',
|
|
|
|
|
audioname:['re_liubiao'],
|
|
|
|
|
trigger:{player:'phaseDrawBegin2'},
|
|
|
|
|
check:function(event,player){
|
|
|
|
|
return (player.countCards('h')<=2&&player.getDamagedHp()>=2)||player.skipList.contains('phaseUse');
|
|
|
|
|
},
|
|
|
|
|
filter:function(event,player){
|
|
|
|
|
return !event.numFixed&&player.isDamaged();
|
|
|
|
|
},
|
|
|
|
|
content:function(){
|
|
|
|
|
trigger.num+=player.getDamagedHp();
|
|
|
|
|
player.skip('phaseUse');
|
|
|
|
|
},
|
|
|
|
|
ai:{
|
|
|
|
|
threaten:1.5
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
oldgongji:{
|
|
|
|
|
audio:'gongji',
|
|
|
|
|
enable:['chooseToUse','chooseToRespond'],
|
|
|
|
|
locked:false,
|
|
|
|
|
filterCard:{type:'equip'},
|
|
|
|
|
position:'hes',
|
|
|
|
|
viewAs:{
|
|
|
|
|
name:'sha',
|
|
|
|
|
storage:{oldgongji:true}
|
|
|
|
|
},
|
|
|
|
|
viewAsFilter:function(player){
|
|
|
|
|
if(!player.countCards('hes',{type:'equip'})) return false;
|
|
|
|
|
},
|
|
|
|
|
prompt:'将一张装备牌当无距离限制的【杀】使用或打出',
|
|
|
|
|
check:function(card){
|
|
|
|
|
var val=get.value(card);
|
|
|
|
|
if(_status.event.name=='chooseToRespond') return 1/Math.max(0.1,val);
|
|
|
|
|
return 5-val;
|
|
|
|
|
},
|
|
|
|
|
mod:{
|
|
|
|
|
targetInRange:function(card){
|
|
|
|
|
if(card.storage&&card.storage.oldgongji) return true;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
ai:{
|
|
|
|
|
respondSha:true,
|
|
|
|
|
skillTagFilter:function(player){
|
|
|
|
|
if(!player.countCards('hes',{type:'equip'})) return false;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
oldjiefan:{
|
|
|
|
|
audio:'jiefan',
|
|
|
|
|
enable:'chooseToUse',
|
|
|
|
|
filter:function(event,player){
|
|
|
|
|
return event.type=='dying'&&_status.currentPhase&&_status.currentPhase.isIn()&&!event.oldjiefan;
|
|
|
|
|
},
|
|
|
|
|
direct:true,
|
|
|
|
|
content:function(){
|
|
|
|
|
'step 0'
|
|
|
|
|
if(_status.connectMode) game.broadcastAll(function(){_status.noclearcountdown=true});
|
|
|
|
|
player.chooseToUse(function(card,player,event){
|
|
|
|
|
if(get.name(card)!='sha') return false;
|
|
|
|
|
return lib.filter.filterCard.apply(this,arguments);
|
|
|
|
|
},get.prompt2('oldjiefan')).set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){
|
|
|
|
|
if(target!=_status.currentPhase&&!ui.selected.targets.contains(_status.currentPhase)) return false;
|
|
|
|
|
return lib.filter.filterTarget.apply(this,arguments);
|
|
|
|
|
}).set('logSkill','oldjiefan').set('oncard',function(){
|
|
|
|
|
_status.event.player.addTempSkill('oldjiefan_recover');
|
|
|
|
|
});
|
|
|
|
|
'step 1'
|
|
|
|
|
if(!result.bool){
|
|
|
|
|
var evt=event.getParent(2);
|
|
|
|
|
evt.oldjiefan=true;
|
|
|
|
|
evt.goto(0);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
ai:{
|
|
|
|
|
save:true,
|
|
|
|
|
order:3,
|
|
|
|
|
result:{player:1}
|
|
|
|
|
},
|
|
|
|
|
subSkill:{
|
|
|
|
|
recover:{
|
|
|
|
|
audio:'jiefan',
|
|
|
|
|
trigger:{source:'damageBegin2'},
|
|
|
|
|
filter:function(event,player){
|
|
|
|
|
return event.getParent(4).name=='oldjiefan';
|
|
|
|
|
},
|
|
|
|
|
forced:true,
|
|
|
|
|
popup:false,
|
|
|
|
|
charlotte:true,
|
|
|
|
|
content:function(){
|
|
|
|
|
trigger.cancel();
|
|
|
|
|
var evt=event.getParent('_save');
|
|
|
|
|
var card={name:'tao',isCard:true};
|
|
|
|
|
if(evt&&evt.dying&&player.canUse(card,evt.dying)){
|
|
|
|
|
player.useCard(card,evt.dying,'oldjiefan_recover');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
oldmingjian:{
|
|
|
|
|
audio:'mingjian',
|
|
|
|
|
trigger:{player:'phaseUseBefore'},
|
|
|
|
|
filter:function(event,player){
|
|
|
|
|
return player.countCards('h');
|
|
|
|
|
},
|
|
|
|
|
direct:true,
|
|
|
|
|
content:function(){
|
|
|
|
|
'step 0'
|
|
|
|
|
player.chooseTarget(get.prompt('oldmingjian'),'跳过出牌阶段并将所有手牌交给一名其他角色,你结束此回合,然后其于此回合后获得一个额外的出牌阶段',lib.filter.notMe).set('ai',target=>{
|
|
|
|
|
var player=_status.event.player,att=get.attitude(player,target);
|
|
|
|
|
if(target.hasSkillTag('nogain')) return 0.01*att;
|
|
|
|
|
if(player.countCards('h')==player.countCards('h','du')) return -att;
|
|
|
|
|
if(target.hasJudge('lebu')) att*=1.25;
|
|
|
|
|
if(get.attitude(player,target)>3){
|
|
|
|
|
var basis=get.threaten(target)*att;
|
|
|
|
|
if(player==get.zhu(player)&&player.hp<=2&&player.countCards('h','shan')&&!game.hasPlayer(function(current){
|
|
|
|
|
return get.attitude(current,player)>3&¤t.countCards('h','tao')>0;
|
|
|
|
|
})) return 0;
|
|
|
|
|
if(target.countCards('h')+player.countCards('h')>target.hp+2) return basis*0.8;
|
|
|
|
|
return basis;
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
});
|
|
|
|
|
'step 1'
|
|
|
|
|
if(result.bool){
|
|
|
|
|
var target=result.targets[0];
|
|
|
|
|
event.target=target;
|
|
|
|
|
player.logSkill('oldmingjian',target);
|
|
|
|
|
player.give(player.getCards('h'),target);
|
|
|
|
|
trigger.cancel();
|
|
|
|
|
}
|
|
|
|
|
else event.finish();
|
|
|
|
|
'step 2'
|
|
|
|
|
var evt=trigger.getParent('phase');
|
|
|
|
|
if(evt){
|
|
|
|
|
game.log(player,'结束了回合');
|
|
|
|
|
evt.finish();
|
|
|
|
|
}
|
|
|
|
|
var next=target.insertPhase();
|
|
|
|
|
next._noTurnOver=true;
|
|
|
|
|
next.setContent(lib.skill.oldmingjian.phase);
|
|
|
|
|
},
|
|
|
|
|
phase:function(){
|
|
|
|
|
'step 0'
|
|
|
|
|
player.phaseUse();
|
|
|
|
|
'step 1'
|
|
|
|
|
game.broadcastAll(function(){
|
|
|
|
|
if(ui.tempnowuxie){
|
|
|
|
|
ui.tempnowuxie.close();
|
|
|
|
|
delete ui.tempnowuxie;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
},
|
2020-09-25 10:40:43 +00:00
|
|
|
|
oldshenxian:{
|
|
|
|
|
audio:'shenxian',
|
|
|
|
|
inherit:'shenxian',
|
|
|
|
|
},
|
2023-03-31 11:34:38 +00:00
|
|
|
|
old_guhuo:{
|
|
|
|
|
audio:2,
|
|
|
|
|
group:['old_guhuo_guess'],
|
|
|
|
|
enable:['chooseToUse','chooseToRespond'],
|
|
|
|
|
hiddenCard:function(player,name){
|
|
|
|
|
return (lib.inpile.contains(name)&&player.countCards('hs')>0);
|
|
|
|
|
},
|
2022-04-10 16:34:02 +00:00
|
|
|
|
filter:function(event,player){
|
2021-05-18 07:57:26 +00:00
|
|
|
|
if(!player.countCards('hs')) return false;
|
2023-03-31 11:34:38 +00:00
|
|
|
|
for(var i of lib.inpile){
|
|
|
|
|
var type=get.type(i);
|
|
|
|
|
if((type=='basic'||type=='trick')&&event.filterCard({name:i},player,event)) return true;
|
|
|
|
|
if(i=='sha'){
|
|
|
|
|
for(var j of lib.inpile_nature){
|
|
|
|
|
if(event.filterCard({name:i,nature:j},player,event)) return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-09-25 10:40:43 +00:00
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
},
|
|
|
|
|
chooseButton:{
|
2023-03-31 11:34:38 +00:00
|
|
|
|
dialog:function(event,player){
|
2020-09-25 10:40:43 +00:00
|
|
|
|
var list=[];
|
2023-03-31 11:34:38 +00:00
|
|
|
|
for(var i of lib.inpile){
|
|
|
|
|
if(event.type!='phase') if(!event.filterCard({name:i},player,event)) continue;
|
|
|
|
|
var type=get.type(i);
|
|
|
|
|
if(type=='basic'||type=='trick') list.push([type,'',i]);
|
|
|
|
|
if(i=='sha'){
|
|
|
|
|
if(event.type!='phase') if(!event.filterCard({name:i,nature:j},player,event)) continue;
|
|
|
|
|
for(var j of lib.inpile_nature) list.push(['基本','','sha',j]);
|
2020-09-25 10:40:43 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return ui.create.dialog('蛊惑',[list,'vcard']);
|
|
|
|
|
},
|
2022-04-10 16:34:02 +00:00
|
|
|
|
filter:function(button,player){
|
2020-09-25 10:40:43 +00:00
|
|
|
|
var evt=_status.event.getParent();
|
2023-03-31 11:34:38 +00:00
|
|
|
|
return evt.filterCard({name:button.link[2],nature:button.link[3]},player,evt);
|
|
|
|
|
},
|
|
|
|
|
check:function(button){
|
|
|
|
|
var player=_status.event.player;
|
|
|
|
|
var order=Math.max(0,get.order(card)+1);
|
|
|
|
|
var enemyNum=game.countPlayer(function(current){
|
|
|
|
|
return current!=player&&(get.realAttitude||get.attitude)(current,player)<0&¤t.hp>0;
|
|
|
|
|
});
|
|
|
|
|
var card={name:button.link[2],nature:button.link[3]};
|
|
|
|
|
if(player.isDying()&&!player.hasCard(function(cardx){
|
|
|
|
|
if(get.suit(cardx)!='heart') return false;
|
|
|
|
|
var mod2=game.checkMod(cardx,player,'unchanged','cardEnabled2',player);
|
|
|
|
|
if(mod2!='unchanged') return mod2;
|
|
|
|
|
var mod=game.checkMod(cardx,player,player,'unchanged','cardSavable',player);
|
|
|
|
|
if(mod!='unchanged') return mod;
|
|
|
|
|
var savable=get.info(cardx).savable;
|
|
|
|
|
if(typeof savable=='function') savable=savable(card,player,player);
|
|
|
|
|
return savable;
|
|
|
|
|
},'hs')){
|
|
|
|
|
if(!player.getStorage('old_guhuo_cheated').contains(card.name+card.nature)&&Math.random()<0.4) return 1;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
var val=_status.event.getParent().type=='phase'?player.getUseValue(card):1;
|
|
|
|
|
if(player.getStorage('old_guhuo_cheated').contains(card.name+card.nature)&&!player.hasCard(function(cardx){
|
|
|
|
|
if(card.name==cardx.name){
|
|
|
|
|
if(card.name!='sha') return true;
|
2023-09-26 04:09:29 +00:00
|
|
|
|
return get.is.sameNature(card,cardx);
|
2023-03-31 11:34:38 +00:00
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
},'hs')&&Math.random()<0.7) return 0;
|
|
|
|
|
if(val<=0) return 0;
|
|
|
|
|
if(enemyNum){
|
|
|
|
|
if(!player.hasCard(function(cardx){
|
|
|
|
|
if(card.name==cardx.name){
|
|
|
|
|
if(card.name!='sha') return true;
|
2023-09-26 04:09:29 +00:00
|
|
|
|
return get.is.sameNature(card,cardx);
|
2023-03-31 11:34:38 +00:00
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
},'hs')){
|
|
|
|
|
if(get.value(card,player,'raw')<6) return Math.sqrt(val)*(0.25+Math.random()/1.5);
|
|
|
|
|
if(enemyNum<=2) return Math.sqrt(val)/1.5+order*10;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
return 3*val+order*10;
|
2020-09-25 10:40:43 +00:00
|
|
|
|
}
|
2023-03-31 11:34:38 +00:00
|
|
|
|
return val+order*10;
|
2020-09-25 10:40:43 +00:00
|
|
|
|
},
|
2022-04-10 16:34:02 +00:00
|
|
|
|
backup:function(links,player){
|
2020-09-25 10:40:43 +00:00
|
|
|
|
return {
|
2023-03-31 11:34:38 +00:00
|
|
|
|
filterCard:function(card,player,target){
|
|
|
|
|
var result=true;
|
|
|
|
|
var suit=card.suit,number=card.number;
|
|
|
|
|
card.suit='none';card.number=null;
|
|
|
|
|
var mod=game.checkMod(card,player,'unchanged','cardEnabled2',player);
|
|
|
|
|
if(mod!='unchanged') result=mod;
|
|
|
|
|
card.suit=suit;card.number=number;
|
|
|
|
|
return result;
|
|
|
|
|
},
|
2020-09-25 10:40:43 +00:00
|
|
|
|
selectCard:1,
|
2021-05-18 07:57:26 +00:00
|
|
|
|
position:'hs',
|
2023-03-31 11:34:38 +00:00
|
|
|
|
ignoreMod:true,
|
|
|
|
|
aiUse:Math.random(),
|
|
|
|
|
viewAs:{
|
|
|
|
|
name:links[0][2],
|
|
|
|
|
nature:links[0][3],
|
|
|
|
|
suit:'none',
|
|
|
|
|
number:null
|
|
|
|
|
},
|
|
|
|
|
ai1:function(card){
|
|
|
|
|
var player=_status.event.player;
|
|
|
|
|
var enemyNum=game.countPlayer(function(current){
|
|
|
|
|
return current!=player&&(get.realAttitude||get.attitude)(current,player)<0&¤t.hp>0;
|
|
|
|
|
});
|
|
|
|
|
var cardx=lib.skill.old_guhuo_backup.viewAs;
|
|
|
|
|
if(enemyNum){
|
2023-09-26 04:09:29 +00:00
|
|
|
|
if(card.name==cardx.name&&(card.name!='sha'||get.is.sameNature(card,cardx))||player.getStorage('old_guhuo_cheated').contains(card.name+card.nature)) return (get.suit(card)=='heart'?8:4)+Math.random()*3;
|
2023-03-31 11:34:38 +00:00
|
|
|
|
else if(lib.skill.old_guhuo_backup.aiUse<0.5&&!player.isDying()) return 0;
|
|
|
|
|
}
|
|
|
|
|
return get.value(cardx)-get.value(card);
|
|
|
|
|
},
|
|
|
|
|
precontent:function(){
|
|
|
|
|
player.logSkill('old_guhuo');
|
|
|
|
|
var card=event.result.cards[0];
|
|
|
|
|
event.result.card.suit=get.suit(card);
|
|
|
|
|
event.result.card.number=get.number(card);
|
|
|
|
|
},
|
2020-09-25 10:40:43 +00:00
|
|
|
|
}
|
|
|
|
|
},
|
2022-04-10 16:34:02 +00:00
|
|
|
|
prompt:function(links,player){
|
2023-03-31 11:34:38 +00:00
|
|
|
|
return '将一张手牌当做'+(links[0][3]?get.translation(links[0][3]):'')+'【'+get.translation(links[0][2])+'】'+(_status.event.name=='chooseToRespond'?'打出':'使用');
|
2020-09-25 10:40:43 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
2023-03-31 11:34:38 +00:00
|
|
|
|
ai:{
|
|
|
|
|
save:true,
|
|
|
|
|
respondSha:true,
|
|
|
|
|
respondShan:true,
|
|
|
|
|
fireAttack:true,
|
|
|
|
|
skillTagFilter:function(player){
|
|
|
|
|
if(!player.countCards('hs')) return false;
|
|
|
|
|
},
|
|
|
|
|
threaten:1.2,
|
|
|
|
|
order:10,
|
|
|
|
|
result:{player:1},
|
|
|
|
|
},
|
|
|
|
|
subSkill:{
|
|
|
|
|
cheated:{
|
|
|
|
|
trigger:{
|
|
|
|
|
player:'gainAfter',
|
|
|
|
|
global:'loseAsyncAfter',
|
|
|
|
|
},
|
|
|
|
|
charlotte:true,
|
|
|
|
|
forced:true,
|
|
|
|
|
silent:true,
|
|
|
|
|
popup:false,
|
|
|
|
|
firstDo:true,
|
|
|
|
|
onremove:true,
|
|
|
|
|
filter:function(event,player){
|
|
|
|
|
if(event.getParent().name=='draw') return true;
|
|
|
|
|
var cards=event.getg(player);
|
|
|
|
|
if(!cards.length) return false;
|
|
|
|
|
return game.hasPlayer(current=>{
|
|
|
|
|
if(current==player) return false;
|
|
|
|
|
var evt=event.getl(current);
|
|
|
|
|
if(evt&&evt.cards&&evt.cards.length) return true;
|
|
|
|
|
return false;
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
content:function(){
|
|
|
|
|
player.removeSkill('old_guhuo_cheated');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-09-25 10:40:43 +00:00
|
|
|
|
},
|
2023-03-31 11:34:38 +00:00
|
|
|
|
old_guhuo_guess:{
|
|
|
|
|
audio:'old_guhuo',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
trigger:{
|
2023-03-31 11:34:38 +00:00
|
|
|
|
player:['useCardBefore','respondBefore'],
|
2020-09-25 10:40:43 +00:00
|
|
|
|
},
|
2023-03-31 11:34:38 +00:00
|
|
|
|
forced:true,
|
|
|
|
|
silent:true,
|
|
|
|
|
popup:false,
|
|
|
|
|
firstDo: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
|
|
|
|
charlotte:true,
|
2022-04-10 16:34:02 +00:00
|
|
|
|
filter:function(event,player){
|
2023-03-31 11:34:38 +00:00
|
|
|
|
return event.skill&&event.skill.indexOf('old_guhuo_')==0;
|
2020-09-25 10:40:43 +00:00
|
|
|
|
},
|
2022-04-10 16:34:02 +00:00
|
|
|
|
content:function(){
|
2020-09-25 10:40:43 +00:00
|
|
|
|
'step 0'
|
2023-03-31 11:34:38 +00:00
|
|
|
|
event.fake=false;
|
|
|
|
|
event.goon=true;
|
|
|
|
|
event.betrayers=[];
|
|
|
|
|
var card=trigger.cards[0];
|
2023-09-26 04:09:29 +00:00
|
|
|
|
if(card.name!=trigger.card.name||(card.name=='sha'&&!get.is.sameNature(trigger.card,card))) event.fake=true;
|
2023-03-31 11:34:38 +00:00
|
|
|
|
if(event.fake){
|
|
|
|
|
player.addSkill('old_guhuo_cheated');
|
|
|
|
|
player.markAuto('old_guhuo_cheated',[trigger.card.name+trigger.card.nature]);
|
2020-09-25 10:40:43 +00:00
|
|
|
|
}
|
2023-03-31 11:34:38 +00:00
|
|
|
|
player.popup(trigger.card.name,'metal');
|
|
|
|
|
player.lose(card,ui.ordering).relatedEvent=trigger;
|
|
|
|
|
trigger.throw=false;
|
|
|
|
|
trigger.skill='old_guhuo_backup';
|
2023-05-02 11:26:19 +00:00
|
|
|
|
game.log(player,'声明',trigger.targets&&trigger.targets.length?'对':'',trigger.targets||'',trigger.name=='useCard'?'使用':'打出',trigger.card);
|
2023-03-31 11:34:38 +00:00
|
|
|
|
event.prompt=get.translation(player)+'声明'+(trigger.targets&&trigger.targets.length?'对'+get.translation(trigger.targets):'')+
|
2023-05-02 11:26:19 +00:00
|
|
|
|
(trigger.name=='useCard'?'使用':'打出')+(get.translation(trigger.card.nature)||'')+get.translation(trigger.card.name)+',是否质疑?';
|
2023-03-31 11:34:38 +00:00
|
|
|
|
event.targets=game.filterPlayer(i=>i!=player&&i.hp>0).sortBySeat(_status.currentPhase);
|
|
|
|
|
|
|
|
|
|
game.broadcastAll(function(card,player){
|
|
|
|
|
_status.old_guhuoNode=card.copy('thrown');
|
|
|
|
|
if(lib.config.cardback_style!='default'){
|
|
|
|
|
_status.old_guhuoNode.style.transitionProperty='none';
|
|
|
|
|
ui.refresh(_status.old_guhuoNode);
|
|
|
|
|
_status.old_guhuoNode.classList.add('infohidden');
|
|
|
|
|
ui.refresh(_status.old_guhuoNode);
|
|
|
|
|
_status.old_guhuoNode.style.transitionProperty='';
|
2020-09-25 10:40:43 +00:00
|
|
|
|
}
|
|
|
|
|
else{
|
2023-03-31 11:34:38 +00:00
|
|
|
|
_status.old_guhuoNode.classList.add('infohidden');
|
2020-09-25 10:40:43 +00:00
|
|
|
|
}
|
2023-03-31 11:34:38 +00:00
|
|
|
|
_status.old_guhuoNode.style.transform='perspective(600px) rotateY(180deg) translateX(0)';
|
|
|
|
|
player.$throwordered2(_status.old_guhuoNode);
|
|
|
|
|
},trigger.cards[0],player);
|
|
|
|
|
event.onEnd01=function(){
|
|
|
|
|
_status.old_guhuoNode.removeEventListener('webkitTransitionEnd',_status.event.onEnd01);
|
|
|
|
|
setTimeout(function(){
|
|
|
|
|
_status.old_guhuoNode.style.transition='all ease-in 0.3s';
|
|
|
|
|
_status.old_guhuoNode.style.transform='perspective(600px) rotateY(270deg)';
|
|
|
|
|
var onEnd=function(){
|
|
|
|
|
_status.old_guhuoNode.classList.remove('infohidden');
|
|
|
|
|
_status.old_guhuoNode.style.transition='all 0s';
|
|
|
|
|
ui.refresh(_status.old_guhuoNode);
|
|
|
|
|
_status.old_guhuoNode.style.transform='perspective(600px) rotateY(-90deg)';
|
|
|
|
|
ui.refresh(_status.old_guhuoNode);
|
|
|
|
|
_status.old_guhuoNode.style.transition='';
|
|
|
|
|
ui.refresh(_status.old_guhuoNode);
|
|
|
|
|
_status.old_guhuoNode.style.transform='';
|
|
|
|
|
_status.old_guhuoNode.removeEventListener('webkitTransitionEnd',onEnd);
|
|
|
|
|
}
|
|
|
|
|
_status.old_guhuoNode.listenTransition(onEnd);
|
|
|
|
|
},300);
|
|
|
|
|
};
|
|
|
|
|
if(!event.targets.length) event.goto(3);
|
2020-09-25 10:40:43 +00:00
|
|
|
|
'step 1'
|
2023-03-31 11:34:38 +00:00
|
|
|
|
event.target=event.targets.shift();
|
|
|
|
|
event.target.chooseButton([event.prompt,[['reguhuo_ally','reguhuo_betray'],'vcard']],true).set('ai',function(button){
|
|
|
|
|
var player=_status.event.player;
|
|
|
|
|
var evt=_status.event.getParent('old_guhuo_guess'),evtx=evt.getTrigger();
|
|
|
|
|
if(!evt) return Math.random();
|
|
|
|
|
var card={name:evtx.card.name,nature:evtx.card.nature,isCard:true};
|
|
|
|
|
var ally=button.link[2]=='reguhuo_ally';
|
|
|
|
|
if(ally&&(player.hp<=1||get.attitude(player,evt.player)>=0)) return 1.1;
|
|
|
|
|
if(!ally&&get.effect(player,{name:'losehp'},player,player)>=0) return 10;
|
|
|
|
|
if(!ally&&get.attitude(player,evt.player)<0){
|
|
|
|
|
if(evtx.name=='useCard'){
|
|
|
|
|
var eff=0;
|
|
|
|
|
var targetsx=evtx.targets||[];
|
|
|
|
|
for(var target of targetsx){
|
|
|
|
|
var isMe=target==evt.player;
|
|
|
|
|
eff+=get.effect(target,card,evt.player,player)/(isMe?1.35:1);
|
|
|
|
|
}
|
|
|
|
|
eff/=(1.5*targetsx.length)||1;
|
|
|
|
|
if(eff>0) return 0;
|
|
|
|
|
if(eff<-7) return (Math.random()+Math.pow(-(eff+7)/8,2))/Math.sqrt(evt.betrayers.length+1)+(player.hp-3)*0.05+Math.max(0,4-evt.player.hp)*0.05-(player.hp==1&&!get.tag(card,'damage')?0.2:0);
|
|
|
|
|
return Math.pow((get.value(card,evt.player,'raw')-4)/(eff==0?3.1:10),2)/Math.sqrt(evt.betrayers.length||1)+(player.hp-3)*0.05+Math.max(0,4-evt.player.hp)*0.05;
|
|
|
|
|
}
|
|
|
|
|
if(evt.player.getStorage('old_guhuo_cheated').contains(card.name+card.nature)) return Math.random()+0.3;
|
|
|
|
|
}
|
|
|
|
|
return Math.random();
|
|
|
|
|
});
|
2020-09-25 10:40:43 +00:00
|
|
|
|
'step 2'
|
2023-03-31 11:34:38 +00:00
|
|
|
|
if(result.links[0][2]=='reguhuo_betray'){
|
|
|
|
|
target.addExpose(0.2);
|
|
|
|
|
game.log(target,'#y质疑');
|
|
|
|
|
target.popup('质疑!','fire');
|
|
|
|
|
event.betrayers.push(target);
|
|
|
|
|
}
|
2020-09-25 10:40:43 +00:00
|
|
|
|
else{
|
2023-03-31 11:34:38 +00:00
|
|
|
|
game.log(target,'#g不质疑');
|
|
|
|
|
target.popup('不质疑','wood');
|
2020-09-25 10:40:43 +00:00
|
|
|
|
}
|
2023-03-31 11:34:38 +00:00
|
|
|
|
if(targets.length) event.goto(1);
|
2020-09-25 10:40:43 +00:00
|
|
|
|
'step 3'
|
2023-03-31 11:34:38 +00:00
|
|
|
|
game.delayx();
|
|
|
|
|
game.broadcastAll(function(onEnd){
|
|
|
|
|
_status.event.onEnd01=onEnd;
|
|
|
|
|
if(_status.old_guhuoNode) _status.old_guhuoNode.listenTransition(onEnd,300);
|
|
|
|
|
},event.onEnd01);
|
2020-09-25 10:40:43 +00:00
|
|
|
|
'step 4'
|
2023-03-31 11:34:38 +00:00
|
|
|
|
game.delay(2);
|
|
|
|
|
'step 5'
|
|
|
|
|
if(!event.betrayers.length){
|
|
|
|
|
event.goto(7);
|
|
|
|
|
}
|
|
|
|
|
'step 6'
|
|
|
|
|
if(event.fake){
|
|
|
|
|
for(var target of event.betrayers){
|
|
|
|
|
target.popup('质疑正确','wood');
|
2020-09-25 10:40:43 +00:00
|
|
|
|
}
|
2023-03-31 11:34:38 +00:00
|
|
|
|
event.goon=false;
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
for(var target of event.betrayers){
|
|
|
|
|
target.popup('质疑错误','fire');
|
|
|
|
|
target.loseHp();
|
|
|
|
|
}
|
|
|
|
|
if(get.suit(trigger.cards[0],player)!='heart'){
|
|
|
|
|
event.goon=false;
|
2020-09-25 10:40:43 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
2023-03-31 11:34:38 +00:00
|
|
|
|
'step 7'
|
|
|
|
|
if(!event.goon){
|
|
|
|
|
game.log(player,'声明的',trigger.card,'作废了');
|
|
|
|
|
trigger.cancel();
|
|
|
|
|
trigger.getParent().goto(0);
|
|
|
|
|
trigger.line=false;
|
|
|
|
|
}
|
|
|
|
|
'step 8'
|
|
|
|
|
game.delay();
|
|
|
|
|
'step 9'
|
|
|
|
|
if(!event.goon){
|
|
|
|
|
if(event.fake) game.asyncDraw(event.betrayers);
|
|
|
|
|
game.broadcastAll(ui.clear);
|
|
|
|
|
}
|
2020-09-25 10:40:43 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
old_zuilun:{
|
2021-05-18 07:57:26 +00:00
|
|
|
|
audio:'xinfu_zuilun',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
subSkill:{
|
|
|
|
|
e:{},
|
|
|
|
|
h:{},
|
|
|
|
|
},
|
|
|
|
|
enable:"phaseUse",
|
|
|
|
|
usable:2,
|
2022-04-10 16:34:02 +00:00
|
|
|
|
filterTarget:function(card,player,target){
|
2020-09-25 10:40:43 +00:00
|
|
|
|
if(player==target) return false;
|
|
|
|
|
var pos='he';
|
|
|
|
|
if(player.hasSkill('old_zuilun_h')) pos='e';
|
|
|
|
|
if(player.hasSkill('old_zuilun_e')) pos='h';
|
|
|
|
|
return target.countGainableCards(player,pos)>0;
|
|
|
|
|
},
|
2022-04-10 16:34:02 +00:00
|
|
|
|
content:function(){
|
2020-09-25 10:40:43 +00:00
|
|
|
|
'step 0'
|
|
|
|
|
var pos='he';
|
|
|
|
|
if(player.hasSkill('old_zuilun_h')) pos='e';
|
|
|
|
|
if(player.hasSkill('old_zuilun_e')) pos='h';
|
|
|
|
|
player.gainPlayerCard(target,pos,true);
|
|
|
|
|
'step 1'
|
|
|
|
|
if(result.bool&&result.cards&&result.cards.length){
|
|
|
|
|
target.draw();
|
|
|
|
|
var pos=result.cards[0].original;
|
|
|
|
|
if(pos=='h'||pos=='e') player.addTempSkill('old_zuilun_'+pos,'phaseUseAfter');
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
ai:{
|
|
|
|
|
order:7,
|
|
|
|
|
result:{
|
|
|
|
|
target:-1,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
old_fuyin:{
|
|
|
|
|
mod:{
|
|
|
|
|
targetEnabled:function(card,player,target){
|
2023-08-12 16:47:44 +00:00
|
|
|
|
if((card.name=='juedou'||card.name=='sha'||card.name=='huogong')&&player!=target&&player.countCards('h')>=target.countCards('h')&&target.hasEmptySlot(2)) return false;
|
2020-09-25 10:40:43 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2022-04-10 16:34:02 +00:00
|
|
|
|
old_jijun:{
|
2020-09-25 10:40:43 +00:00
|
|
|
|
marktext:"方",
|
|
|
|
|
audio:"xinfu_jijun",
|
|
|
|
|
intro:{
|
2022-04-10 16:34:02 +00:00
|
|
|
|
content:"expansion",
|
|
|
|
|
markcount:'expansion',
|
|
|
|
|
},
|
|
|
|
|
onremove:function(player,skill){
|
|
|
|
|
var cards=player.getExpansions(skill);
|
|
|
|
|
if(cards.length) player.loseToDiscardpile(cards);
|
2020-09-25 10:40:43 +00:00
|
|
|
|
},
|
|
|
|
|
enable:"phaseUse",
|
|
|
|
|
filterCard:true,
|
|
|
|
|
selectCard:[1,Infinity],
|
2022-04-10 16:34:02 +00:00
|
|
|
|
filter:function(event,player){
|
2020-09-25 10:40:43 +00:00
|
|
|
|
return player.countCards('h')>0;
|
|
|
|
|
},
|
2022-04-10 16:34:02 +00:00
|
|
|
|
check:function(card){
|
2020-09-25 10:40:43 +00:00
|
|
|
|
var player=_status.event.player;
|
2022-04-10 16:34:02 +00:00
|
|
|
|
if((36-player.getExpansions('old_jijun').length)<=player.countCards('h')) return 1;
|
2020-09-25 10:40:43 +00:00
|
|
|
|
return 5-get.value(card);
|
|
|
|
|
},
|
|
|
|
|
discard:false,
|
|
|
|
|
lose:false,
|
2022-04-10 16:34:02 +00:00
|
|
|
|
content:function(){
|
|
|
|
|
player.addToExpansion(cards,player,'give').gaintag.add('old_jijun');
|
2020-09-25 10:40:43 +00:00
|
|
|
|
},
|
2022-04-10 16:34:02 +00:00
|
|
|
|
ai:{order:1,result:{player:1}},
|
2020-09-25 10:40:43 +00:00
|
|
|
|
},
|
2022-04-10 16:34:02 +00:00
|
|
|
|
old_fangtong:{
|
2020-09-25 10:40:43 +00:00
|
|
|
|
trigger:{
|
|
|
|
|
player:"phaseJieshuBegin",
|
|
|
|
|
},
|
|
|
|
|
audio:"xinfu_fangtong",
|
|
|
|
|
forced:true,
|
|
|
|
|
skillAnimation:true,
|
|
|
|
|
animationColor:'metal',
|
2022-04-10 16:34:02 +00:00
|
|
|
|
filter:function(event,player){
|
|
|
|
|
return (player.getExpansions('old_jijun').length>35);
|
2020-09-25 10:40:43 +00:00
|
|
|
|
},
|
2022-04-10 16:34:02 +00:00
|
|
|
|
content:function(){
|
2023-03-31 11:34:38 +00:00
|
|
|
|
var winners=player.getFriends();
|
|
|
|
|
game.over(player==game.me||winners.contains(game.me));
|
2020-09-25 10:40:43 +00:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
oldanxu:{
|
|
|
|
|
enable:'phaseUse',
|
|
|
|
|
usable:1,
|
|
|
|
|
multitarget:true,
|
|
|
|
|
audio:2,
|
|
|
|
|
filterTarget:function(card,player,target){
|
|
|
|
|
if(player==target) return false;
|
|
|
|
|
var num=target.countCards('h');
|
|
|
|
|
if(ui.selected.targets.length){
|
|
|
|
|
return num<ui.selected.targets[0].countCards('h');
|
|
|
|
|
}
|
|
|
|
|
var players=game.filterPlayer();
|
|
|
|
|
for(var i=0;i<players.length;i++){
|
|
|
|
|
if(num>players[i].countCards('h')) return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
},
|
|
|
|
|
selectTarget:2,
|
|
|
|
|
content:function(){
|
|
|
|
|
'step 0'
|
|
|
|
|
var gainner,giver;
|
|
|
|
|
if(targets[0].countCards('h')<targets[1].countCards('h')){
|
|
|
|
|
gainner=targets[0];
|
|
|
|
|
giver=targets[1];
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
gainner=targets[1];
|
|
|
|
|
giver=targets[0];
|
|
|
|
|
}
|
|
|
|
|
gainner.gainPlayerCard(giver,'h',true).set('visible',true);
|
|
|
|
|
'step 1'
|
|
|
|
|
if(result.bool&&result.links.length&&get.suit(result.links[0])!='spade'){
|
|
|
|
|
player.draw();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
ai:{
|
|
|
|
|
order:10.5,
|
|
|
|
|
threaten:2,
|
|
|
|
|
result:{
|
|
|
|
|
target:function(player,target){
|
|
|
|
|
var num=target.countCards('h');
|
|
|
|
|
var att=get.attitude(player,target);
|
|
|
|
|
if(ui.selected.targets.length==0){
|
|
|
|
|
if(att>0) return -1;
|
|
|
|
|
var players=game.filterPlayer();
|
|
|
|
|
for(var i=0;i<players.length;i++){
|
|
|
|
|
var num2=players[i].countCards('h');
|
|
|
|
|
var att2=get.attitude(player,players[i]);
|
|
|
|
|
if(att2>=0&&num2<num) return -1;
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
player:0.1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
oldfaen:{
|
|
|
|
|
audio:'faen',
|
|
|
|
|
trigger:{global:['turnOverAfter','linkAfter']},
|
|
|
|
|
filter:function(event,player){
|
|
|
|
|
if(event.name=='link') return event.player.isLinked();
|
|
|
|
|
return true;
|
|
|
|
|
},
|
|
|
|
|
check:function(event,player){
|
|
|
|
|
return get.attitude(player,event.player)>0;
|
|
|
|
|
},
|
|
|
|
|
logTarget:'player',
|
|
|
|
|
content:function(){
|
|
|
|
|
trigger.player.draw();
|
|
|
|
|
},
|
|
|
|
|
ai:{
|
|
|
|
|
expose:0.2
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
oldxuanfeng:{
|
|
|
|
|
audio:'xuanfeng',
|
2023-03-31 11:34:38 +00:00
|
|
|
|
trigger:{
|
|
|
|
|
player:['loseAfter'],
|
|
|
|
|
global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'],
|
|
|
|
|
},
|
2020-09-25 10:40:43 +00:00
|
|
|
|
direct:true,
|
|
|
|
|
filter:function(event,player){
|
2023-03-31 11:34:38 +00:00
|
|
|
|
var evt=event.getl(player);
|
|
|
|
|
return evt&&evt.es&&evt.es.length>0;
|
2020-09-25 10:40:43 +00:00
|
|
|
|
},
|
|
|
|
|
content:function(){
|
2023-03-31 11:34:38 +00:00
|
|
|
|
'step 0'
|
2020-09-25 10:40:43 +00:00
|
|
|
|
player.chooseTarget(get.prompt('oldxuanfeng'),function(card,player,target){
|
|
|
|
|
if(target==player) return false;
|
|
|
|
|
return get.distance(player,target)<=1||player.canUse('sha',target,false);
|
|
|
|
|
}).set('ai',function(target){
|
|
|
|
|
if(get.distance(player,target)<=1){
|
|
|
|
|
return get.damageEffect(target,player,player)*2;
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
return get.effect(target,{name:'sha'},player,player);
|
|
|
|
|
}
|
|
|
|
|
});
|
2023-03-31 11:34:38 +00:00
|
|
|
|
'step 1'
|
2020-09-25 10:40:43 +00:00
|
|
|
|
if(result.bool){
|
|
|
|
|
player.logSkill('oldxuanfeng',result.targets);
|
|
|
|
|
var target=result.targets[0];
|
|
|
|
|
var distance=get.distance(player,target);
|
|
|
|
|
if(distance<=1&&player.canUse('sha',target,false)){
|
2023-03-31 11:34:38 +00:00
|
|
|
|
player.chooseControl('出杀','造成伤害').set('ai',function(){
|
2020-09-25 10:40:43 +00:00
|
|
|
|
return '造成伤害';
|
2023-03-31 11:34:38 +00:00
|
|
|
|
});
|
2020-09-25 10:40:43 +00:00
|
|
|
|
event.target=target;
|
|
|
|
|
}
|
|
|
|
|
else if(distance<=1){
|
|
|
|
|
target.damage();
|
|
|
|
|
event.finish();
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
player.useCard({name:'sha',isCard:true},target,false).animate=false;
|
|
|
|
|
game.delay();
|
|
|
|
|
event.finish();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
event.finish();
|
|
|
|
|
}
|
2023-03-31 11:34:38 +00:00
|
|
|
|
'step 2'
|
2020-09-25 10:40:43 +00:00
|
|
|
|
var target=event.target;
|
|
|
|
|
if(result.control=='出杀'){
|
|
|
|
|
player.useCard({name:'sha',isCard:true},target,false).animate=false;
|
|
|
|
|
game.delay();
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
target.damage();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
ai:{
|
|
|
|
|
effect:{
|
|
|
|
|
target:function(card,player,target,current){
|
|
|
|
|
if(get.type(card)=='equip') return [1,3];
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
reverseEquip:true,
|
|
|
|
|
noe:true
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
translate:{
|
|
|
|
|
old_zhangxingcai:'旧张星彩',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_zhangxingcai_prefix:'旧',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_xusheng:'旧徐盛',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_xusheng_prefix:'旧',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_lingtong:'旧凌统',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_lingtong_prefix:'旧',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_zhuran:'旧朱然',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_zhuran_prefix:'旧',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_caoxiu:'旧曹休',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_caoxiu_prefix:'旧',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_caozhen:'旧曹真',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_caozhen_prefix:'旧',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_maliang:'旧马良',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_maliang_prefix:'旧',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_chenqun:'旧陈群',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_chenqun_prefix:'旧',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_zhuhuan:'旧朱桓',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_zhuhuan_prefix:'旧',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_zhuzhi:'旧朱治',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_zhuzhi_prefix:'旧',
|
|
|
|
|
old_zhugezhan:'旧诸葛瞻',
|
|
|
|
|
old_zhugezhan_prefix:'旧',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
yuji:'旧于吉',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
yuji_prefix:'旧',
|
2023-08-15 04:11:36 +00:00
|
|
|
|
old_zhangfei:'新杀张飞',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_zhangfei_prefix:'新杀',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_huatuo:'OL华佗',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_huatuo_prefix:'OL',
|
2023-10-23 16:42:15 +00:00
|
|
|
|
old_guanyu:'旧关羽',
|
|
|
|
|
old_guanyu_prefix:'旧',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
ol_zhangrang:'旧张让',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
ol_zhangrang_prefix:'旧',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
ol_liaohua:'OL廖化',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
ol_liaohua_prefix:'OL',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
ol_zhuran:'OL朱然',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
ol_zhuran_prefix:'OL',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
ol_manchong:'OL满宠',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
ol_manchong_prefix:'OL',
|
2022-10-20 11:50:57 +00:00
|
|
|
|
old_fuhuanghou:'旧伏寿',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_fuhuanghou_prefix:'旧',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_caochong:'旧曹冲',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_caochong_prefix:'旧',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_guanqiujian:'旧毌丘俭',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_guanqiujian_prefix:'旧',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_wangyun:'旧王允',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_wangyun_prefix:'旧',
|
2023-08-15 04:11:36 +00:00
|
|
|
|
old_zhaoyun:'新杀赵云',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_zhaoyun_prefix:'新杀',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
ol_huaxiong:'旧华雄',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
ol_huaxiong_prefix:'旧',
|
2023-08-22 16:58:47 +00:00
|
|
|
|
old_xiaoqiao:'旧小乔',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_xiaoqiao_prefix:'旧',
|
2023-09-07 15:40:34 +00:00
|
|
|
|
old_wanglang:'旧王朗',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_wanglang_prefix:'旧',
|
2023-09-23 09:26:44 +00:00
|
|
|
|
old_wangyi:'旧王异',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_wangyi_prefix:'旧',
|
2023-09-23 09:26:44 +00:00
|
|
|
|
xin_yujin:'节钺于禁',
|
2023-10-03 04:40:48 +00:00
|
|
|
|
xin_yujin_prefix:'节钺',
|
2023-09-23 09:26:44 +00:00
|
|
|
|
re_yujin:'毅重于禁',
|
2023-10-03 04:40:48 +00:00
|
|
|
|
re_yujin_prefix:'毅重',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
|
2023-03-31 11:34:38 +00:00
|
|
|
|
old_guhuo:"蛊惑",
|
|
|
|
|
old_guhuo_info:"你可以扣置一张手牌当做一张基本牌或普通锦囊牌使用或打出,体力值不为0的其他角色依次选择是否质疑。然后,若有质疑的角色,你展示此牌:若为假,此牌作废,这些角色摸一张牌;若为真,这些角色失去1点体力,且若此牌不为♥,此牌作废。",
|
|
|
|
|
old_guhuo_guess:"蛊惑",
|
|
|
|
|
old_jijun:"集军",
|
|
|
|
|
old_jijun_info:"出牌阶段,你可以将任意张手牌置于武将牌上,称为“方”。",
|
|
|
|
|
old_fangtong:"方统",
|
|
|
|
|
old_fangtong_info:"锁定技。结束阶段,若你的“方”数目不小于36,则以你的阵营胜利结束本局游戏。",
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_zuilun:"罪论",
|
|
|
|
|
old_zuilun_info:"出牌阶段,你可以获得一名其他角色的一张牌(手牌、装备区各一次),然后该角色摸一张牌。",
|
|
|
|
|
old_fuyin:"父荫",
|
2023-03-31 11:34:38 +00:00
|
|
|
|
old_fuyin_info:"锁定技。若你的装备区里没有防具牌,你不能成为手牌数不小于你的其他角色使用【杀】、【决斗】或【火攻】的目标。",
|
2020-09-25 10:40:43 +00:00
|
|
|
|
oldanxu:'安恤',
|
2023-03-31 11:34:38 +00:00
|
|
|
|
oldanxu_info:'出牌阶段限一次。你可以选择手牌数不相等的两名其他角色,其中手牌少的角色获得手牌多的角色的一张手牌并展示之,然后若此牌不为黑桃,你摸一张牌。',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
oldfaen:'法恩',
|
|
|
|
|
oldfaen_info:'当一名角色翻面或横置后,你可以令其摸一张牌。',
|
|
|
|
|
oldxuanfeng:'旋风',
|
2023-03-31 11:34:38 +00:00
|
|
|
|
oldxuanfeng_info:'当你失去装备区里的牌后,你可以选择一项:1.视为对一名其他角色使用一张【杀】;2.对一名距离为1的角色造成1点伤害。',
|
2020-10-27 10:59:52 +00:00
|
|
|
|
ol_yuanshu:'旧袁术',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
ol_yuanshu_prefix:'旧',
|
2021-02-05 14:52:19 +00:00
|
|
|
|
fazheng:'旧法正',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
fazheng_prefix:'旧',
|
2021-12-09 13:57:51 +00:00
|
|
|
|
junk_simayi:'旧晋司马懿',
|
2023-10-02 16:32:08 +00:00
|
|
|
|
junk_simayi_prefix:'旧晋',
|
2022-04-30 12:32:57 +00:00
|
|
|
|
madai:'旧马岱',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
madai_prefix:'旧',
|
2022-07-25 14:24:03 +00:00
|
|
|
|
old_yangzhi:'旧杨芷',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_yangzhi_prefix:'旧',
|
2022-07-25 14:24:03 +00:00
|
|
|
|
old_yangyan:'旧杨艳',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_yangyan_prefix:'旧',
|
2023-03-31 11:34:38 +00:00
|
|
|
|
old_caorui:'旧曹叡',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_caorui_prefix:'旧',
|
2023-03-31 11:34:38 +00:00
|
|
|
|
oldmingjian:'明鉴',
|
|
|
|
|
oldmingjian_info:'出牌阶段开始前,你可以跳过此阶段并将所有手牌交给一名其他角色。若如此做,你结束当前回合,然后其获得一个额外的回合(仅包含出牌阶段)。',
|
|
|
|
|
old_handang:'旧韩当',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_handang_prefix:'旧',
|
2023-03-31 11:34:38 +00:00
|
|
|
|
oldgongji:'弓骑',
|
|
|
|
|
oldgongji_info:'你可以将一张装备牌当做无距离限制的【杀】使用或打出。',
|
|
|
|
|
oldjiefan:'解烦',
|
|
|
|
|
oldjiefan_info:'当一名角色A于你的回合外处于濒死状态时,你可以对当前回合角色使用一张【杀】。当此【杀】造成伤害时,你防止此伤害,视为对A使用一张【桃】。',
|
|
|
|
|
old_gaoshun:'旧高顺',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_gaoshun_prefix:'旧',
|
2023-03-31 11:34:38 +00:00
|
|
|
|
old_liubiao:'旧刘表',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_liubiao_prefix:'旧',
|
2023-03-31 11:34:38 +00:00
|
|
|
|
oldre_liubiao:'RE刘表',
|
2023-10-02 16:32:08 +00:00
|
|
|
|
oldre_liubiao_prefix:'RE',
|
2023-03-31 11:34:38 +00:00
|
|
|
|
oldzishou:'自守',
|
|
|
|
|
oldzishou_info:'摸牌阶段,若你已受伤,你可令额定摸牌数+X(X为你已损失的体力值),然后跳过下一个出牌阶段。',
|
|
|
|
|
old_huanghao:'旧黄皓',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_huanghao_prefix:'旧',
|
2023-03-31 11:34:38 +00:00
|
|
|
|
oldqinqing:'寝情',
|
|
|
|
|
oldqinqing_info:'结束阶段,你可以选择一名攻击范围内含有主公的其他角色,然后你弃置该角色的一张牌(无牌则不弃),并令其摸一张牌。若该角色的手牌数大于主公,你摸一张牌。',
|
|
|
|
|
oldhuisheng:'贿生',
|
2023-10-23 13:16:29 +00:00
|
|
|
|
oldhuisheng_info:'每名角色限一次。当你受到其他角色对你造成的伤害时,你可以令其观看你任意数量的牌并令其选择一项:1.获得这些牌中的一张并防止此伤害;2.弃置等量的牌。',
|
2023-03-31 11:34:38 +00:00
|
|
|
|
old_dingfeng:'旧丁奉',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_dingfeng_prefix:'旧',
|
|
|
|
|
junk_sunquan:'旧神孙权',
|
|
|
|
|
junk_sunquan_prefix:'旧神',
|
2023-05-02 11:26:19 +00:00
|
|
|
|
new_caoren:'旧曹仁',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
new_caoren_prefix:'旧',
|
2023-05-02 11:26:19 +00:00
|
|
|
|
old_re_lidian:'旧李典',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_re_lidian_prefix:'旧',
|
2023-05-02 11:26:19 +00:00
|
|
|
|
old_liyan:'旧李严',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_liyan_prefix:'旧',
|
2023-05-02 11:26:19 +00:00
|
|
|
|
old_chendao:'旧陈到',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_chendao_prefix:'旧',
|
|
|
|
|
old_caocao:'旧神曹操',
|
|
|
|
|
old_caocao_prefix:'旧神',
|
2023-09-08 13:22:05 +00:00
|
|
|
|
junkguixin:'归心',
|
|
|
|
|
junkguixin_info:'回合结束时,你可以选择一项:①获得剩余武将牌堆的所有主公技的其中一个技能;②更改一名其他角色的势力。',
|
2023-10-02 05:35:32 +00:00
|
|
|
|
old_caochun:'旧曹纯',
|
|
|
|
|
old_caochun_prefix:'旧',
|
2023-10-20 06:39:02 +00:00
|
|
|
|
old_guanyinping:'旧关银屏',
|
|
|
|
|
old_guanyinping_prefix:'旧',
|
2023-10-24 17:30:20 +00:00
|
|
|
|
old_shen_zhaoyun:'旧神赵云',
|
|
|
|
|
old_shen_zhaoyun_prefix:'旧神',
|
|
|
|
|
oldjuejing:'绝境',
|
|
|
|
|
oldjuejing_info:'锁定技。①摸牌阶段,你令额定摸牌数+X(X为你已损失的体力值)。②你的手牌上限+2。',
|
|
|
|
|
oldlonghun:'龙魂',
|
|
|
|
|
oldlonghun_info:'你可以将花色相同的Y张牌按下列规则使用或打出:♥当【桃】,♦当火【杀】,♣当【闪】,♠当普【无懈可击】(Y为你的体力值且至少为1)。',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
|
2020-10-27 10:59:52 +00:00
|
|
|
|
old_standard:'标准包',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_shenhua:'神话再临',
|
|
|
|
|
old_refresh:'界限突破',
|
|
|
|
|
old_yijiang1:'一将成名2011',
|
|
|
|
|
old_yijiang2:'一将成名2012',
|
|
|
|
|
old_yijiang3:'一将成名2013',
|
|
|
|
|
old_yijiang4:'一将成名2014',
|
|
|
|
|
old_yijiang5:'一将成名2015',
|
|
|
|
|
old_yijiang67:'原创设计',
|
|
|
|
|
old_sp:'SP',
|
2022-04-30 12:32:57 +00:00
|
|
|
|
old_yingbian:'文德武备',
|
2020-09-25 10:40:43 +00:00
|
|
|
|
old_mobile:'移动版',
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
});
|