noname/mode/guozhan.js

8763 lines
280 KiB
JavaScript
Raw Normal View History

2019-08-30 15:10:11 +00:00
'use strict';
game.import('mode',function(lib,game,ui,get,ai,_status){
return {
name:'guozhan',
startBefore:function(){
var playback=localStorage.getItem(lib.configprefix+'playback');
for(var i in lib.characterPack.mode_guozhan){
if(!get.config('onlyguozhan')&&!playback){
if(lib.character[i.slice(3)]) continue;
}
lib.character[i]=lib.characterPack.mode_guozhan[i];
if(!lib.character[i][4]){
lib.character[i][4]=[];
}
if(!lib.translate[i]){
lib.translate[i]=lib.translate[i.slice(3)];
}
}
for(var i in lib.character){
if(lib.character[i][1]=='shen'){
2020-03-19 13:24:54 +00:00
if(lib.character[i][4]&&(lib.group.contains(lib.character[i][4][0])||lib.character[i][4][0]=='key')){
2019-08-30 15:10:11 +00:00
lib.character[i][1]=lib.character[i][4][0];
}
else{
lib.character[i][1]='qun';
}
}
}
lib.card.sha.complexTarget=true;
},
onreinit:function(){
var pack=lib.characterPack.mode_guozhan;
for(var i in pack){
if(!lib.configOL.onlyguozhan){
if(lib.character[i.slice(3)]) continue;
}
lib.character[i]=pack[i];
if(!lib.character[i][4]){
lib.character[i][4]=[];
}
if(!lib.translate[i]){
lib.translate[i]=lib.translate[i.slice(3)];
}
}
},
start:function(){
"step 0"
var playback=localStorage.getItem(lib.configprefix+'playback');
if(playback){
ui.create.me();
ui.arena.style.display='none';
ui.system.style.display='none';
_status.playback=playback;
localStorage.removeItem(lib.configprefix+'playback');
var store=lib.db.transaction(['video'],'readwrite').objectStore('video');
store.get(parseInt(playback)).onsuccess=function(e){
if(e.target.result){
game.playVideoContent(e.target.result.video);
}
else{
alert('播放失败:找不到录像');
game.reload();
}
}
event.finish();
}
else if(_status.connectMode){
game.waitForPlayer();
}
else{
if(get.config('guozhanpile')){
lib.card.list=lib.guozhanPile.slice(0);
game.fixedPile=true;
}
game.prepareArena();
// game.delay();
game.showChangeLog();
}
if(!_status.connectMode){
_status.mode=get.config('guozhan_mode');
if(_status.brawl&&_status.brawl.submode){
_status.mode=_status.brawl.submode;
}
}
"step 1"
if(_status.connectMode){
if(lib.configOL.guozhanpile){
lib.card.list=lib.guozhanPile.slice(0);
game.fixedPile=true;
}
game.broadcastAll(function(pack){
for(var i=0;i<game.players.length;i++){
game.players[i].node.name.hide();
game.players[i].node.name2.hide();
}
lib.characterPack.mode_guozhan=pack;
for(var i in pack){
if(!lib.configOL.onlyguozhan){
if(lib.character[i.slice(3)]) continue;
}
lib.character[i]=pack[i];
if(!lib.character[i][4]){
lib.character[i][4]=[];
}
if(!lib.translate[i]){
lib.translate[i]=lib.translate[i.slice(3)];
}
}
},lib.characterPack.mode_guozhan);
game.randomMapOL();
}
else{
for(var i=0;i<game.players.length;i++){
game.players[i].node.name.hide();
game.players[i].node.name2.hide();
game.players[i].getId();
}
if(_status.brawl&&_status.brawl.chooseCharacterBefore){
_status.brawl.chooseCharacterBefore();
}
game.chooseCharacter();
}
"step 2"
//game.broadcast(function(cardtag){
// _status.cardtag=cardtag;
//},_status.cardtag);
2019-08-30 15:10:11 +00:00
if(ui.coin){
_status.coinCoeff=get.coinCoeff([game.me.name1,game.me.name2]);
}
var player;
if(_status.cheat_seat){
var seat=_status.cheat_seat.link;
if(seat==0){
player=game.me;
}
else{
player=game.players[game.players.length-seat];
}
if(!player) player=game.me;
delete _status.cheat_seat;
}
else{
player=game.players[Math.floor(Math.random()*game.players.length)];
}
2020-01-05 09:13:44 +00:00
event.playerx=player;
2019-08-30 15:10:11 +00:00
event.trigger('gameStart');
2020-01-05 09:13:44 +00:00
"step 3"
game.gameDraw(event.playerx);
2019-08-30 15:10:11 +00:00
game.broadcastAll(function(player){
for(var i=0;i<game.players.length;i++){
game.players[i].name='unknown'+get.distance(player,game.players[i],'absolute');
game.players[i].node.name_seat=ui.create.div('.name.name_seat',get.verticalStr(lib.translate[game.players[i].name]),game.players[i]);
// if(game.players[i]==game.me){
// lib.translate[game.players[i].name]+='(你)';
// }
}
2020-01-05 09:13:44 +00:00
},event.playerx);
2019-08-30 15:10:11 +00:00
var players=get.players(lib.sort.position);
var info=[];
for(var i=0;i<players.length;i++){
info.push({
name:game.players[i].name,
translate:lib.translate[game.players[i].name],
name1:players[i].name1,
name2:players[i].name2,
});
}
_status.videoInited=true,
game.addVideo('init',null,info);
if(_status.mode=='mingjiang'){
game.showIdentity(true);
}
else{
for(var i=0;i<game.players.length;i++){
game.players[i].ai.shown=0;
}
}
2020-02-23 05:45:11 +00:00
if(_status.connectMode&&lib.configOL.change_card) game.replaceHandcards(game.players.slice(0));
2020-01-05 09:13:44 +00:00
game.phaseLoop(event.playerx);
2019-08-30 15:10:11 +00:00
},
card:{
junling1:{
type:'junling',
vanish:true,
derivation:'guozhan',
},
junling2:{
type:'junling',
vanish:true,
derivation:'guozhan',
},
junling3:{
type:'junling',
vanish:true,
derivation:'guozhan',
},
junling4:{
type:'junling',
vanish:true,
derivation:'guozhan',
},
junling5:{
type:'junling',
vanish:true,
derivation:'guozhan',
},
junling6:{
type:'junling',
vanish:true,
derivation:'guozhan',
},
2020-10-09 03:37:02 +00:00
zhulian_card:{
cardimage:'wuzhong',
},
2019-08-30 15:10:11 +00:00
},
2019-10-31 04:43:12 +00:00
aozhanRank:{
'8':[],
'7':[],
'6':[],
'5':[
'gz_lukang','gz_caoren','gz_lvfan',
'gz_machao','gz_ganfuren','gz_madai',
'gz_jiling','gz_pangde',
],
'4':[
'gz_re_lidian','gz_yuejin','gz_huangzhong',
'gz_menghuo','gz_sunshangxiang','gz_lvmeng',
'gz_lvbu',
],
'3':[
'gz_simayi','gz_luxun','gz_wuguotai',
'gz_caiwenji',
],
'2':[
'gz_re_lusu','gz_zhangzhang',
],
'1':[
'gz_caocao','gz_guojia','gz_xiahoudun',
'gz_xunyu','gz_caopi','gz_liubei',
'gz_fazheng','gz_dongzhuo','gz_yuji',
'gz_liqueguosi','gz_huanggai',
],
},
guozhanRank:{
'8':[
'gz_xunyou','gz_re_lidian','gz_caopi',
'gz_shamoke','gz_lifeng','gz_wangping',
'gz_xiaoqiao','gz_zhoutai','gz_lvfan',
'gz_beimihu','gz_mateng','gz_jiaxu',
],
'7':[
'gz_zhanghe','gz_jianggan','gz_simayi',
'gz_weiyan','gz_huangyueying','gz_zhugeliang',
'gz_lingtong','gz_sunshangxiang','gz_sunce',
'gz_re_yuanshao','gz_yuanshu','gz_hetaihou',
],
'6':[
'gz_zhenji','gz_guojia','gz_yujin',
'gz_jiangwei','gz_zhangfei','gz_sp_zhugeliang',
'gz_zhouyu','gz_lingcao','gz_daqiao',
'gz_yuji','gz_caiwenji','gz_diaochan',
],
'5':[
'gz_zhangliao','gz_caocao','gz_xuhuang',
'gz_liushan','gz_pangtong','gz_zhaoyun',
'gz_re_lusu','gz_sunquan','gz_ganning',
'gz_zhangxiu','gz_liqueguosi','gz_huatuo',
],
'4':[
'gz_dianwei','gz_dengai','gz_xunyu',
'gz_madai','gz_liubei','gz_mifuren',
'gz_wuguotai','gz_luxun','gz_taishici',
'gz_zhangjiao','gz_zuoci','gz_pangde',
],
'3':[
'gz_xiahoudun','gz_yuejin','gz_caoren',
'gz_machao','gz_masu','gz_fazheng',
'gz_zhangzhang','gz_lvmeng','gz_huanggai',
'gz_jiling','gz_lvbu','gz_dongzhuo',
],
'2':[
'gz_cuimao','gz_xiahouyuan','gz_caohong',
'gz_zhurong','gz_zhurong','gz_jiangfei',
'gz_xusheng','gz_dingfeng','gz_sunjian',
'gz_zhangren','gz_kongrong','gz_yanwen',
],
'1':[
'gz_zangba','gz_bianfuren','gz_xuzhu',
'gz_menghuo','gz_ganfuren','gz_guanyu',
'gz_lukang','gz_jiangqing','gz_chendong',
'gz_zoushi','gz_panfeng','gz_tianfeng',
],
},
2019-08-30 15:10:11 +00:00
characterSort:{
mode_guozhan:{
guozhan_default:["gz_caocao","gz_simayi","gz_xiahoudun","gz_zhangliao","gz_xuzhu","gz_guojia","gz_zhenji","gz_xiahouyuan","gz_zhanghe","gz_xuhuang","gz_caoren","gz_dianwei","gz_xunyu","gz_caopi","gz_yuejin","gz_liubei","gz_guanyu","gz_zhangfei","gz_zhugeliang","gz_zhaoyun","gz_machao","gz_huangyueying","gz_huangzhong","gz_weiyan","gz_pangtong","gz_sp_zhugeliang","gz_liushan","gz_menghuo","gz_zhurong","gz_ganfuren","gz_sunquan","gz_ganning","gz_lvmeng","gz_huanggai","gz_zhouyu","gz_daqiao","gz_luxun","gz_sunshangxiang","gz_sunjian","gz_xiaoqiao","gz_taishici","gz_zhoutai","gz_re_lusu","gz_zhangzhang","gz_dingfeng","gz_huatuo","gz_lvbu","gz_diaochan","gz_re_yuanshao","gz_yanwen","gz_jiaxu","gz_pangde","gz_zhangjiao","gz_caiwenji","gz_mateng","gz_kongrong","gz_jiling","gz_tianfeng","gz_panfeng","gz_zoushi",],
guozhan_zhen:["gz_dengai","gz_caohong","gz_jiangfei","gz_jiangwei","gz_xusheng","gz_jiangqing","gz_hetaihou","gz_yuji"],
guozhan_shi:[,"gz_re_lidian","gz_zangba","gz_madai","gz_mifuren","gz_sunce","gz_chendong","gz_sp_dongzhuo","gz_zhangren"],
guozhan_bian:["gz_liqueguosi","gz_zuoci","gz_bianfuren","gz_xunyou","gz_lingtong","gz_lvfan","gz_masu","gz_shamoke",],
guozhan_quan:["gz_cuimao","gz_yujin","gz_wangping","gz_fazheng","gz_wuguotai","gz_lukang","gz_yuanshu","gz_zhangxiu"],
guozhan_jun:["gz_jun_caocao","gz_jun_sunquan","gz_jun_liubei","gz_jun_zhangjiao"],
2019-09-06 02:57:10 +00:00
guozhan_others:["gz_lingcao","gz_lifeng","gz_beimihu","gz_jianggan"],
2019-08-30 15:10:11 +00:00
}
},
characterPack:{
mode_guozhan:{
gz_shibing1wei:['male','wei',0,[],['unseen']],
gz_shibing2wei:['female','wei',0,[],['unseen']],
gz_shibing1shu:['male','shu',0,[],['unseen']],
gz_shibing2shu:['female','shu',0,[],['unseen']],
gz_shibing1wu:['male','wu',0,[],['unseen']],
gz_shibing2wu:['female','wu',0,[],['unseen']],
gz_shibing1qun:['male','qun',0,[],['unseen']],
gz_shibing2qun:['female','qun',0,[],['unseen']],
gz_caocao:['male','wei',4,['jianxiong']],
2020-03-09 13:12:08 +00:00
gz_simayi:['male','wei',3,['fankui','guicai']],
gz_xiahoudun:['male','wei',4,['reganglie']],
2019-10-24 14:52:07 +00:00
gz_zhangliao:['male','wei',4,['new_retuxi']],
2019-08-30 15:10:11 +00:00
gz_xuzhu:['male','wei',4,['luoyi']],
gz_guojia:['male','wei',3,['tiandu','new_yiji'],['gzskin']],
gz_zhenji:['female','wei',3,['luoshen','qingguo'],['gzskin']],
gz_xiahouyuan:['male','wei',4,['shensu']],
gz_zhanghe:['male','wei',4,['qiaobian']],
gz_xuhuang:['male','wei',4,['new_duanliang']],
gz_caoren:['male','wei',4,['new_jushou']],
gz_dianwei:['male','wei',4,['qiangxi']],
gz_xunyu:['male','wei',3,['quhu','new_jieming']],
gz_caopi:['male','wei',3,['xingshang','new_fangzhu'],['gzskin']],
gz_yuejin:['male','wei',4,['gzxiaoguo'],['gzskin']],
gz_liubei:['male','shu',4,['rerende']],
gz_guanyu:['male','shu',5,['wusheng']],
gz_zhangfei:['male','shu',4,['new_paoxiao']],
gz_zhugeliang:['male','shu',3,['guanxing','new_kongcheng'],['gzskin']],
gz_zhaoyun:['male','shu',4,['new_longdan']],
gz_machao:['male','shu',4,['mashu','new_tieji']],
gz_huangyueying:['female','shu',3,['jizhi','qicai'],['gzskin']],
gz_huangzhong:['male','shu',4,['liegong']],
gz_weiyan:['male','shu',4,['xinkuanggu']],
gz_pangtong:['male','shu',3,['lianhuan','oldniepan']],
gz_sp_zhugeliang:['male','shu',3,['huoji','bazhen','kanpo'],['gzskin']],
gz_liushan:['male','shu',3,['xiangle','fangquan']],
gz_menghuo:['male','shu',4,['huoshou','zaiqi']],
gz_zhurong:['female','shu',4,['juxiang','lieren']],
gz_ganfuren:['female','shu',3,['new_shushen','shenzhi'],['gzskin']],
gz_yuji:['male','qun',3,['qianhuan'],['gzskin']],
gz_sunquan:['male','wu',4,['gzzhiheng']],
gz_ganning:['male','wu',4,['qixi']],
gz_lvmeng:['male','wu',4,['new_keji','new_mouduan']],
gz_huanggai:['male','wu',4,['new_kurou']],
gz_zhouyu:['male','wu',3,['reyingzi','refanjian'],['gzskin']],
gz_daqiao:['female','wu',3,['guose','liuli']],
gz_luxun:['male','wu',3,['gzqianxun','duoshi'],['gzskin']],
gz_sunshangxiang:['female','wu',3,['jieyin','gzxiaoji']],
gz_sunjian:['male','wu',5,['gzyinghun']],
gz_xiaoqiao:['female','wu',3,['retianxiang','hongyan'],['gzskin']],
gz_taishici:['male','wu',4,['tianyi']],
2019-09-20 15:04:48 +00:00
gz_zhoutai:['male','wu',4,['buqu','new_fenji']],
2019-08-30 15:10:11 +00:00
gz_re_lusu:['male','wu',3,['haoshi','dimeng']],
gz_zhangzhang:['male','wu',3,['zhijian','guzheng']],
gz_dingfeng:['male','wu',4,['fenxun','duanbing'],['gzskin']],
gz_huatuo:['male','qun',3,['new_chuli','jijiu']],
gz_lvbu:['male','qun',5,['wushuang'],['gzskin']],
gz_diaochan:['female','qun',3,['lijian','biyue'],['gzskin']],
gz_re_yuanshao:['male','qun',4,['new_luanji'],['gzskin']],
gz_yanwen:['male','qun',4,['shuangxiong']],
gz_jiaxu:['male','qun',3,['wansha','luanwu','gzweimu'],['gzskin']],
gz_pangde:['male','qun',4,['mashu','jianchu']],
gz_zhangjiao:['male','qun',3,['leiji','guidao']],
gz_caiwenji:['female','qun',3,['beige','gzduanchang']],
2019-11-22 05:21:06 +00:00
gz_mateng:['male','qun',4,['mashu2','xiongyi']],
2019-08-30 15:10:11 +00:00
gz_kongrong:['male','qun',3,['gzmingshi','lirang']],
gz_jiling:['male','qun',4,['shuangren']],
gz_tianfeng:['male','qun',3,['sijian','gzsuishi']],
gz_panfeng:['male','qun',4,['kuangfu'],['gzskin']],
2019-12-09 15:03:35 +00:00
gz_zoushi:['female','qun',3,['huoshui','new_qingcheng']],
2019-08-30 15:10:11 +00:00
gz_dengai:['male','wei',4,['tuntian','ziliang','gzjixi'],['gzskin','die_audio']],
gz_caohong:['male','wei',4,['huyuan','heyi'],['gzskin']],
gz_jiangfei:['male','shu',3,['shengxi','gzshoucheng']],
gz_jiangwei:['male','shu',4,['tiaoxin','yizhi','tianfu'],['gzskin']],
gz_xusheng:['male','wu',4,['yicheng'],['gzskin']],
gz_jiangqing:['male','wu',4,['gzshangyi','niaoxiang']],
gz_hetaihou:['female','qun',3,['zhendu','qiluan'],['gzskin']],
gz_re_lidian:['male','wei',3,['xunxun','wangxi']],
gz_zangba:['male','wei',4,['hengjiang']],
2019-11-22 05:21:06 +00:00
gz_madai:['male','shu',4,['mashu2','qianxi'],['gzskin']],
2019-08-30 15:10:11 +00:00
gz_mifuren:['female','shu',3,['gzguixiu','gzcunsi']],
gz_sunce:['male','wu',4,['jiang','yingyang','baka_hunshang'],['gzskin']],
gz_chendong:['male','wu',4,['duanxie','fenming']],
gz_sp_dongzhuo:['male','qun',4,['hengzheng','baoling']],
gz_zhangren:['male','qun',4,['chuanxin','fengshi']],
gz_jun_liubei:['male','shu',4,['zhangwu','jizhao','shouyue','wuhujiangdaqi']],
gz_jun_zhangjiao:['male','qun',4,['wuxin','hongfa','wendao','huangjintianbingfu']],
gz_jun_sunquan:['male','wu',4,['jiahe','lianzi','jubao','yuanjiangfenghuotu']],
gz_liqueguosi:['male','qun',4,['gzxiongsuan']],
gz_zuoci:['male','qun',3,['yigui','jihun'],['gzskin']],
gz_bianfuren:['female','wei',3,['wanwei','gzyuejian']],
gz_xunyou:['male','wei',3,['gzqice','zhiyu'],['gzskin']],
gz_lingtong:['male','wu',4,['xuanlve','yongjin'],['gzskin']],
gz_lvfan:['male','wu',3,['xindiaodu','gzdiancai']],
gz_masu:['male','shu',3,['sanyao','gzzhiman'],['gzskin']],
gz_shamoke:['male','shu',4,['gzjili'],['gzskin']],
gz_lingcao:['male','wu',4,['dujin']],
gz_lifeng:['male','shu',3,['tunchu','shuliang']],
gz_beimihu:["female","qun",3,["hmkguishu","hmkyuanyu"]],
2019-09-06 02:57:10 +00:00
gz_jianggan:["male","wei",3,["weicheng","daoshu"]],
2019-08-30 15:10:11 +00:00
2020-02-04 05:31:47 +00:00
gz_cuimao:['male','wei',3,['gzzhengbi','gzfengying'],[]],
gz_yujin:['male','wei',4,['gzjieyue'],['gzskin']],
gz_wangping:['male','shu',4,['jianglue'],['gzskin']],
2019-08-30 15:10:11 +00:00
gz_fazheng:['male','shu',3,['gzxuanhuo','gzenyuan'],['gzskin']],
2020-02-04 05:31:47 +00:00
gz_wuguotai:['female','wu',3,['gzbuyi','ganlu'],['gzskin']],
gz_lukang:['male','wu',3,['keshou','zhuwei'],['gzskin']],
gz_yuanshu:['male','qun',4,['gzweidi','gzyongsi'],['gzskin']],
gz_zhangxiu:['male','qun',4,['gzfudi','congjian'],['gzskin']],
2019-08-30 15:10:11 +00:00
gz_jun_caocao:['male','wei',4,['jianan','huibian','gzzongyu','wuziliangjiangdao'],[]],
}
},
skill:{
yigui:{
2021-01-10 02:28:38 +00:00
hiddenCard:function(player,name){
var storage=player.storage.yigui;
if(!storage||!storage.character.length||storage.used.contains(name)||!lib.inpile.contains(name)) return false;
return true;
},
init:function(player,skill){
2019-08-30 15:10:11 +00:00
if(!player.storage.skill) player.storage[skill]={
character:[],
used:[],
}
},
enable:"chooseToUse",
2021-01-10 02:28:38 +00:00
filter:function(event,player){
2019-12-09 15:03:35 +00:00
if(event.type=='wuxie'||event.type=='respondShan') return false;
2019-08-30 15:10:11 +00:00
var storage=player.storage.yigui;
if(!storage||!storage.character.length) return false;
if(event.type=='dying'){
if((!event.filterCard({name:'tao'},player,event)||storage.used.contains('tao'))&&
(!event.filterCard({name:'jiu'},player,event)||storage.used.contains('jiu'))) return false;
var target=event.dying;
2020-04-25 05:40:05 +00:00
if(target.identity=='unknown'||target.identity=='ye') return true;
2019-08-30 15:10:11 +00:00
for(var i=0;i<storage.character.length;i++){
var group=lib.character[storage.character[i]][1];
2020-04-25 05:40:05 +00:00
if(target.identity==group) return true;
2019-08-30 15:10:11 +00:00
}
return false;
}
else return true;
},
chooseButton:{
select:2,
dialog:function (event,player){
var dialog=ui.create.dialog('役鬼','hidden');
dialog.add([player.storage.yigui.character,'character']);
2021-01-10 02:28:38 +00:00
var list=lib.inpile;
2019-08-30 15:10:11 +00:00
var list2=[];
for(var i=0;i<list.length;i++){
2021-01-10 02:28:38 +00:00
var name=list[i];
if(name=='shan'||name=='wuxie') continue;
var type=get.type(name);
if(name=='sha'){
2019-08-30 15:10:11 +00:00
list2.push(['基本','','sha']);
list2.push(['基本','','sha','fire']);
list2.push(['基本','','sha','thunder']);
}
2021-01-10 02:28:38 +00:00
else if(type=='basic'){
2019-08-30 15:10:11 +00:00
list2.push(['基本','',list[i]]);
}
2021-01-10 02:28:38 +00:00
else if(type=='trick'){
2019-08-30 15:10:11 +00:00
list2.push(['锦囊','',list[i]]);
}
}
dialog.add([list2,'vcard']);
return dialog;
},
check:function(button){
if(ui.selected.buttons.length){
var evt=_status.event.getParent('chooseToUse');
var name=button.link[2];
var group=lib.character[ui.selected.buttons[0].link][1];
var player=_status.event.player;
if(evt.type=='dying'){
if(evt.dying!=player&&get.effect(evt.dying,{name:name},player,player)<=0) return 0;
if(name=='jiu') return 2.1;
return 2;
}
if(!['tao','juedou','guohe','shunshou','wuzhong','xietianzi','yuanjiao','taoyuan','wugu','wanjian','nanman','huoshaolianying'].contains(name)) return 0;
if(['taoyuan','wugu','wanjian','nanman','huoshaolianying'].contains(name)){
var list=game.filterPlayer(function(current){
2020-04-25 05:40:05 +00:00
return (current.identity=='unknown'||current.identity=='ye'||current.identity==group)&&player.canUse({name:name},current);
2019-08-30 15:10:11 +00:00
});
var num=0;
for(var i=0;i<list.length;i++){
num+=get.effect(list[i],{name:name},player,player);
}
if(num<=0) return 0;
if(list.length>1) return (1.7+Math.random())*Math.max(num,1);
}
}
return 1+Math.random();
},
filter:function (button,player){
var evt=_status.event.getParent('chooseToUse');
if(!ui.selected.buttons.length){
if(typeof button.link!='string') return false;
if(evt.type=='dying'){
2020-04-25 05:40:05 +00:00
if(evt.dying.identity=='unknown'||evt.dying.identity=='ye') return true;
return evt.dying.identity==lib.character[button.link][1];
2019-08-30 15:10:11 +00:00
}
return true;
}
else{
if(typeof ui.selected.buttons[0].link!='string') return false;
if(typeof button.link!='object') return false;
var name=button.link[2];
if(player.storage.yigui.used.contains(name)) return false;
var card={name:name};
if(button.link[3]) card.nature=button.link[3];
var info=get.info(card);
var group=lib.character[ui.selected.buttons[0].link][1];
if(evt.type=='dying'){
return evt.filterCard(card,player,evt);
}
if(!lib.filter.filterCard(card,player,evt)) return false;
else if(evt.filterCard&&!evt.filterCard(card,player,evt)) return false;
if(info.changeTarget){
var list=game.filterPlayer(function(current){
return player.canUse(card,current);
});
for(var i=0;i<list.length;i++){
var giveup=false;
var targets=[list[i]];
info.changeTarget(player,targets);
for(var j=0;j<targets.length;j++){
2020-04-25 05:40:05 +00:00
if(targets[j].identity!='unknown'&&targets[j].identity!='ye'&&targets[j].identity!=group){
2019-08-30 15:10:11 +00:00
giveup=true;
break;
}
}
if(giveup) continue;
if(giveup==false) return true;
}
return false;
}
else return game.hasPlayer(function(current){
2020-04-25 05:40:05 +00:00
return evt.filterTarget(card,player,current)&&(current.identity=='unknown'||current.identity=='ye'||current.identity==group);
2019-08-30 15:10:11 +00:00
});
}
},
backup:function(links,player){
var name=links[1][2];
var nature=links[1][3]||null;
var character=links[0];
var group=lib.character[character][1];
var next={
character:character,
group:group,
filterCard:function(){
return false;
},
selectCard:-1,
complexCard:true,
check:function(){return 1},
popname:true,
2020-02-23 05:45:11 +00:00
audio:"huashen1",
2019-08-30 15:10:11 +00:00
viewAs:{
name:name,
nature:nature,
2020-04-03 12:09:26 +00:00
isCard:true,
2019-08-30 15:10:11 +00:00
},
filterTarget:function(card,player,target){
var xx=lib.skill.yigui_backup;
var evt=_status.event;
var group=xx.group;
var info=get.info(card);
2020-04-25 05:40:05 +00:00
if((!(info.singleCard&&ui.selected.targets.length))&&target.identity!='unknown'&&target.identity!='ye'&&target.identity!=group) return false;
2019-08-30 15:10:11 +00:00
if(info.changeTarget){
var targets=[target];
info.changeTarget(player,targets);
for(var i=0;i<targets.length;i++){
2020-04-25 05:40:05 +00:00
if(targets[i].identity!='unknown'&&targets[i].identity!='ye'&&targets[i].identity!=group) return false;
2019-08-30 15:10:11 +00:00
}
}
2019-12-09 15:03:35 +00:00
//if(evt.type=='dying') return target==evt.dying;
2020-04-03 12:09:26 +00:00
if(evt._backup&&evt._backup.filterTarget) return evt._backup.filterTarget(card,player,target);
2019-08-30 15:10:11 +00:00
return lib.filter.filterTarget(card,player,target);
},
onuse:function(result,player){
player.logSkill('yigui');
var character=lib.skill.yigui_backup.character;
player.flashAvatar('yigui',character);
player.storage.yigui.character.remove(character);
_status.characterlist.add(character);
game.log(player,'从「魂」中移除了','#g'+get.translation(character));
player.syncStorage('yigui');
player.updateMarks('yigui');
player.storage.yigui.used.add(result.card.name);
},
};
return next;
},
prompt:function(links,player){
var name=links[1][2];
var character=links[0];
var nature=links[1][3];
return '移除「'+get.translation(character)+'」并视为使用'+(get.translation(nature)||'')+get.translation(name);
},
},
2020-04-25 05:40:05 +00:00
group:["yigui_init","yigui_refrain","yigui_shan","yigui_wuxie"],
2019-08-30 15:10:11 +00:00
ai:{
order:function(){
return 1+10*Math.random();
},
result:{
player:1,
},
},
mark:true,
marktext:'魂',
intro:{
onunmark:function(storage,player){
_status.characterlist.addArray(storage.character);
storage.character=[];
},
mark:function(dialog,storage,player){
if(storage&&storage.character.length){
if(player.isUnderControl(true)){
dialog.addSmall([storage.character,'character']);
}
else{
return '共有'+get.cnNumber(storage.character.length)+'张“魂”'
}
}
else{
return '没有魂';
}
},
content:function(storage,player){
return '共有'+get.cnNumber(storage.character.length)+'张“魂”'
},
markcount:function(storage,player){
if(storage&&storage.character) return storage.character.length;
return 0;
},
},
},
"yigui_init":{
audio:"huashen",
trigger:{
player:'showCharacterAfter',
},
forced:true,
filter:function(event,player){
return event.toShow.contains('gz_zuoci')&&!player.storage.yigui_init;
},
content:function(){
player.storage.yigui_init=true;
var list=_status.characterlist.randomRemove(2);
if(list.length){
player.storage.yigui.character.addArray(list);
lib.skill.gzhuashen.drawCharacter(player,list);
player.syncStorage('yigui');
player.updateMarks('yigui');
game.log(player,'获得了'+get.cnNumber(list.length)+'张「魂」');
}
},
},
"yigui_refrain":{
trigger:{global:'phaseBefore'},
forced:true,
silent:true,
popup:false,
content:function(){
player.storage.yigui.used=[];
},
},
2020-04-25 05:40:05 +00:00
yigui_shan:{
enable:"chooseToUse",
filter:function (event,player){
if(event.type!='respondShan') return false;
var storage=player.storage.yigui;
if(!storage||!storage.character.length||storage.used.contains('shan')) return false;
return event.filterCard({name:'shan'},player,event);
},
chooseButton:{
dialog:function (event,player){
var dialog=ui.create.dialog('役鬼','hidden');
dialog.add([player.storage.yigui.character,'character']);
return dialog;
},
check:function(button){
return 1/(1+game.countPlayer(function(current){
return current.identity==button.link;
}));
},
backup:function(links,player){
var character=links[0];
var next={
character:character,
filterCard:function(){
return false;
},
selectCard:-1,
complexCard:true,
check:function(){return 1},
popname:true,
audio:"huashen1",
viewAs:{
name:'shan',
isCard:true,
},
onuse:function(result,player){
player.logSkill('yigui');
var character=lib.skill.yigui_shan_backup.character;
player.flashAvatar('yigui',character);
player.storage.yigui.character.remove(character);
_status.characterlist.add(character);
game.log(player,'从「魂」中移除了','#g'+get.translation(character));
player.syncStorage('yigui');
player.updateMarks('yigui');
player.storage.yigui.used.add(result.card.name);
},
};
return next;
},
},
ai:{
respondShan:true,
skillTagFilter:function(player){
var storage=player.storage.yigui;
if(!storage||!storage.character.length||storage.used.contains('shan')) return false;
},
order:0.1,
result:{
player:1,
},
},
},
yigui_wuxie:{
enable:"chooseToUse",
filter:function (event,player){
if(event.type!='wuxie') return false;
var storage=player.storage.yigui;
if(!storage||!storage.character.length||storage.used.contains('wuxie')) return false;
return event.filterCard({name:'wuxie'},player,event);
},
chooseButton:{
dialog:function (event,player){
var dialog=ui.create.dialog('役鬼','hidden');
dialog.add([player.storage.yigui.character,'character']);
return dialog;
},
check:function(button){
return 1/(1+game.countPlayer(function(current){
return current.identity==button.link;
}));
},
backup:function(links,player){
var character=links[0];
var next={
character:character,
filterCard:function(){
return false;
},
selectCard:-1,
complexCard:true,
check:function(){return 1},
popname:true,
audio:"huashen1",
viewAs:{
name:'wuxie',
isCard:true,
},
onuse:function(result,player){
player.logSkill('yigui');
var character=lib.skill.yigui_wuxie_backup.character;
player.flashAvatar('yigui',character);
player.storage.yigui.character.remove(character);
_status.characterlist.add(character);
game.log(player,'从「魂」中移除了','#g'+get.translation(character));
player.syncStorage('yigui');
player.updateMarks('yigui');
player.storage.yigui.used.add(result.card.name);
},
};
return next;
},
},
ai:{
order:0.1,
result:{
player:1,
},
},
},
2019-08-30 15:10:11 +00:00
jihun:{
trigger:{
player:'damageEnd',
global:'dyingAfter',
},
audio:"xinsheng",
frequent:true,
filter:function(event,player){
return event.name=='damage'||(event.player.isAlive()&&!event.player.isFriendOf(player))
},
content:function(){
2020-11-28 02:28:27 +00:00
var list=_status.characterlist.randomRemove(1);
2019-08-30 15:10:11 +00:00
if(list.length){
player.storage.yigui.character.addArray(list);
lib.skill.gzhuashen.drawCharacter(player,list);
player.syncStorage('yigui');
player.updateMarks('yigui');
game.log(player,'获得了'+get.cnNumber(list.length)+'张「魂」');
}
},
},
xindiaodu:{
audio:"diaodu",
2020-10-15 05:41:31 +00:00
group:'xindiaodu_use',
2020-11-28 02:28:27 +00:00
frequent:true,
2019-08-30 15:10:11 +00:00
subSkill:{
use:{
trigger:{
2020-10-20 13:54:19 +00:00
global:"useCard",
2019-08-30 15:10:11 +00:00
},
filter:function (event,player){
2020-10-15 05:41:31 +00:00
return get.type(event.card)=='equip'&&event.player.isAlive()&&
event.player.isFriendOf(player)&&(player==event.player||player.hasSkill('xindiaodu'));
2019-08-30 15:10:11 +00:00
},
2020-10-15 05:41:31 +00:00
direct:true,
content:function(){
'step 0'
var next=trigger.player.chooseBool('是否发动【调度】摸一张牌?');
if(player.hasSkill('xindiaodu')) next.set('frequentSkill','xindiaodu');
'step 1'
if(result.bool){
player.logSkill('xindiaodu',trigger.player);
trigger.player.draw('nodelay');
}
2019-08-30 15:10:11 +00:00
},
ai:{
reverseEquip:true,
skillTagFilter:function (player){
if(!game.hasPlayer(function(current){
return current.isFriendOf(player)&&current.hasSkill('xindiaodu');
})){
return false;
}
},
effect:{
target:function (card,player,target,current){
if(get.type(card)=='equip'&&game.hasPlayer(function(current){
return current.isFriendOf(player)&&current.hasSkill('xindiaodu');
})) return [1,3];
},
},
},
},
},
trigger:{
player:"phaseUseBegin",
},
filter:function (event,player){
return game.hasPlayer(function(current){
2019-12-20 06:56:40 +00:00
return current.isFriendOf(player)&&current.countGainableCards(player,'e')>0;
2019-08-30 15:10:11 +00:00
});
},
direct:true,
content:function (){
'step 0'
player.chooseTarget(get.prompt2('xindiaodu'),function(card,player,current){
2019-12-20 06:56:40 +00:00
return current.isFriendOf(player)&&current.countGainableCards(player,'e')>0;
2019-08-30 15:10:11 +00:00
}).ai=function(target){
var num=1;
if(target.hasSkill('gzxiaoji')) num+=2.5;
if(target.isDamaged()&&target.getEquip('baiyin')) num+=2.5;
if(target.hasSkill('xuanlve')) num+=2;
return num;
};
'step 1'
if(result.bool){
event.target1=result.targets[0];
player.logSkill('xindiaodu',event.target1);
player.line(event.target1,'xindiaodu');
player.gainPlayerCard(event.target1,'e',true);
}
else event.finish();
'step 2'
2020-10-15 05:41:31 +00:00
if(result.bool&&player.getCards('h').contains(result.cards[0])){
2019-08-30 15:10:11 +00:00
event.card=result.cards[0];
player.chooseTarget('是否将'+get.translation(event.card)+'交给一名其他角色?',function(card,player,current){
2019-12-20 06:56:40 +00:00
return current!=player&&current!=_status.event.target1&&current.isFriendOf(player);
}).set('target1',event.target1);
2019-08-30 15:10:11 +00:00
}
else event.finish();
'step 3'
if(result.bool){
var target=result.targets[0];
player.line(target,'green');
2020-02-04 05:31:47 +00:00
target.gain(card,player,'give');
}
},
},
gzbuyi:{
trigger:{global:'dyingAfter'},
usable:1,
filter:function(event,player){
if(!(event.player&&event.player.isAlive()&&event.source&&event.source.isAlive())) return false;
return event.player.isFriendOf(player)&&event.reason&&event.reason.name=='damage';
},
check:function(event,player){return get.attitude(player,event.player)>0},
logTarget:'source',
content:function(){
'step 0'
player.chooseJunlingFor(trigger.source);
'step 1'
event.junling=result.junling;
event.targets=result.targets;
var choiceList=[];
choiceList.push('执行该军令');
choiceList.push('令'+get.translation(trigger.player)+(trigger.player==trigger.source?'(你)':'')+'回复一点体力');
trigger.source.chooseJunlingControl(player,result.junling,result.targets).set('prompt','补益').set('choiceList',choiceList).set('ai',function(){
2020-06-20 04:53:15 +00:00
if(get.recoverEffect(trigger.player,player,_status.event.player)>0) return 1;
2020-02-04 05:31:47 +00:00
return (get.attitude(trigger.source,trigger.player)<0&&get.junlingEffect(player,result.junling,trigger.source,result.targets,trigger.source)>=-2)?1:0;
return 0;
});
'step 2'
if(result.index==0) trigger.source.carryOutJunling(player,event.junling,targets);
else trigger.player.recover(player);
},
audio:['buyi',2],
},
keshou:{
2020-11-28 02:28:27 +00:00
audio:2,
2020-02-04 05:31:47 +00:00
trigger:{player:'damageBegin3'},
2020-11-28 02:28:27 +00:00
//direct:true,
2020-02-04 05:31:47 +00:00
filter:function(event,player){
return event.num>0;
},
2020-11-28 02:28:27 +00:00
direct:true,
2020-02-04 05:31:47 +00:00
content:function(){
'step 0'
var check=(player.countCards('h',{color:'red'})>1||player.countCards('h',{color:'black'})>1);
2020-11-28 02:28:27 +00:00
player.chooseCard(get.prompt('keshou'),'弃置两张颜色相同的牌,令即将受到的伤害-1','he',2,function(card){
2020-02-04 05:31:47 +00:00
if(ui.selected.cards.length) return get.color(card)==get.color(ui.selected.cards[0]);
return true;
}).set('complexCard',true).set('ai',function(card){
if(!_status.event.check) return 0;
var player=_status.event.player;
if(player.hp==1){
if(!player.countCards('h',function(card){return get.tag(card,'save')})&&!player.hasSkillTag('save',true)) return 10-get.value(card);
return 7-get.value(card);
}
return 6-get.value(card);
}).set('check',check);
'step 1'
2020-11-28 02:28:27 +00:00
var logged=false;
2020-02-04 05:31:47 +00:00
if(result.cards){
2020-11-28 02:28:27 +00:00
logged=true;
2020-02-04 05:31:47 +00:00
player.logSkill('keshou');
player.discard(result.cards);
trigger.num--;
2020-11-28 02:28:27 +00:00
}
if(!player.isUnseen()&&!game.hasPlayer(function(current){
return current!=player&&current.isFriendOf(player);
})){
if(!logged) player.logSkill('keshou');
player.judge(function(card){
2020-02-04 05:31:47 +00:00
if(get.color(card)=='red') return 1;
return 0;
});
}
else event.finish();
'step 2'
if(result.judge>0) player.draw();
}
},
zhuwei:{
2020-11-28 02:28:27 +00:00
audio:2,
2020-02-04 05:31:47 +00:00
trigger:{player:'judgeEnd'},
filter:function(event){
if(get.owner(event.result.card)) return false;
if(event.nogain&&event.nogain(event.result.card)) return false;
2020-11-28 02:28:27 +00:00
return true;
//return event.result.card.name=='sha'||event.result.card.name=='juedou';
2020-02-04 05:31:47 +00:00
},
2020-11-28 02:28:27 +00:00
frequent:true,
2020-02-04 05:31:47 +00:00
content:function(){
2019-08-30 15:10:11 +00:00
'step 0'
2020-02-04 05:31:47 +00:00
player.gain(trigger.result.card,'gain2');
2020-11-28 02:28:27 +00:00
player.chooseBool('是否令'+get.translation(_status.currentPhase)+'本回合的手牌上限和使用【杀】的次数上限+1').ai=function(){
2019-08-30 15:10:11 +00:00
return get.attitude(player,_status.currentPhase)>0;
};
'step 1'
2020-02-04 05:31:47 +00:00
if(result.bool){
2019-08-30 15:10:11 +00:00
var target=_status.currentPhase;
2020-02-04 05:31:47 +00:00
if(!target.hasSkill('zhuwei_eff')){
target.addTempSkill('zhuwei_eff');
target.storage.zhuwei_eff=1;
}
else target.storage.zhuwei_eff++;
target.updateMarks();
}
},
subSkill:{
eff:{
sub:true,
mod:{
cardUsable:function(card,player,num){
if(card.name=='sha') return num+player.storage.zhuwei_eff;
},
maxHandcard:function(player,num){return num+player.storage.zhuwei_eff}
},
mark:true,
intro:{
content:function(storage){if(storage) return '使用【杀】的次数上限+'+storage+',手牌上限+'+storage}
}
}
}
},
gzweidi:{
init:function(player){player.storage.gzweidi=[]},
enable:'phaseUse',
usable:1,
2019-08-30 15:10:11 +00:00
filter:function(event,player){
return player.storage.gzweidi.length>0
},
2020-02-04 05:31:47 +00:00
filterTarget:function(card,player,target){return target!=player&&player.storage.gzweidi.contains(target)},
content:function(){
'step 0'
player.chooseJunlingFor(target);
'step 1'
event.junling=result.junling;
event.targets=result.targets;
var choiceList=['执行该军令'];
if(target!=player) choiceList.push('令'+get.translation(player)+'获得你所有手牌,然后交给你等量的牌');
else choiceList.push('不执行该军令');
target.chooseJunlingControl(player,result.junling,result.targets).set('prompt','伪帝').set('choiceList',choiceList).set('ai',function(){
if(get.attitude(target,player)>=0) return get.junlingEffect(player,result.junling,target,result.targets,target)>=0?0:1;
return get.junlingEffect(player,result.junling,target,result.targets,target)>=-1?0:1;
});
'step 2'
if(result.index==0) target.carryOutJunling(player,event.junling,targets);
else if(target!=player&&target.countCards('h')) {
event.num=target.countCards('h');
player.gain(target.getCards('h'),target,'giveAuto');
player.chooseCard('交给'+get.translation(target)+get.cnNumber(event.num)+'张牌','he',event.num,true).set('ai',function(card){
return -get.value(card);
});
}
else event.finish();
'step 3'
if(result.cards){
target.gain(result.cards,player,'giveAuto');
}
},
group:['gzweidi_ft','gzweidi_ftc'],
ai:{
order:3,
result:{
player:1,
}
},
subSkill:{
ft:{
sub:true,
trigger:{global:'gainBefore'},
silent:true,
filter:function(event,player){
if(player==event.player||player.storage.gzweidi.contains(event.player)||_status.currentPhase!=player) return false;
if(event.cards.length){
if(event.getParent().name=='draw') return true;
for(var i=0;i<event.cards.length;i++) if(get.position(event.cards[i])=='c'||(!get.position(event.cards[i])&&event.cards[i].original=='c')) return true;
}
return false;
},
content:function(){player.storage.gzweidi.push(trigger.player)}
},
ftc:{
sub:true,
trigger:{global:'phaseAfter'},
silent:true,
filter:function(event,player){return event.player==player},
content:function(){player.storage.gzweidi=[]},
}
},
audio:['weidi',2]
},
gzyongsi:{
group:['gzyongsi_eff1','gzyongsi_eff2','gzyongsi_eff3'],
ai:{
threaten:function(player,target){
if(game.hasPlayer(function(current){
return current!=target&&current.getEquip('yuxi');
})) return 0.5;
return 2;
}
},
subSkill:{
eff1:{
sub:true,
2019-11-26 05:18:38 +00:00
equipSkill:true,
2019-12-13 14:33:56 +00:00
noHidden:true,
2020-06-20 04:53:15 +00:00
trigger:{player:'phaseDrawBegin2'},
2020-02-04 05:31:47 +00:00
//priority:8,
forced:true,
filter:function(event,player){
2020-06-20 04:53:15 +00:00
if(event.numFixed||player.isDisabled(5)) return false;
2020-02-04 05:31:47 +00:00
return !game.hasPlayer(function(current){
return current.getEquip('yuxi');
})
},
content:function(){trigger.num++},
audio:['yongsi',2]
},
eff2:{
sub:true,
2020-06-20 04:53:15 +00:00
trigger:{player:'phaseUseBegin'},
2020-02-04 05:31:47 +00:00
//priority:8,
forced:true,
2019-12-13 14:33:56 +00:00
noHidden:true,
2019-11-26 05:18:38 +00:00
equipSkill:true,
2020-02-04 05:31:47 +00:00
filter:function(event,player){
2020-06-20 04:53:15 +00:00
if(player.isDisabled(5)) return false;
2020-02-04 05:31:47 +00:00
return game.hasPlayer(function(current){
return player.canUse('zhibi',current);
})&&!game.hasPlayer(function(current){
return current.getEquip('yuxi');
});
},
content:function(){
2019-09-22 15:06:38 +00:00
player.chooseUseTarget('玉玺(庸肆):选择知己知彼的目标',{name:'zhibi'});
2020-02-04 05:31:47 +00:00
},
audio:['yongsi',2]
},
eff3:{
sub:true,
trigger:{global:'useCardToTargeted'},
//priority:16,
forced:true,
filter:function(event,player){
return event.target&&event.target==player&&event.card&&event.card.name=='zhibi'
},
2019-08-30 15:10:11 +00:00
check:function(){return false},
2020-02-04 05:31:47 +00:00
content:function(){
player.showHandcards();
}
}
}
},
gzfudi:{
trigger:{global:'damageEnd'},
direct:true,
2020-09-30 07:46:55 +00:00
audio:2,
2020-02-04 05:31:47 +00:00
filter:function(event,player){return event.source&&event.source.isAlive()&&event.source!=player&&event.player==player&&player.countCards('h')&&event.num>0},
content:function(){
'step 0'
2020-10-05 05:33:08 +00:00
var players=game.filterPlayer(function(current){
2020-02-04 05:31:47 +00:00
return current.isFriendOf(trigger.source)&&current.hp>=player.hp&&!game.hasPlayer(function(current2){
2020-10-05 05:33:08 +00:00
return current2.hp>current.hp&&current2.isFriendOf(trigger.source);
2020-02-04 05:31:47 +00:00
})
});
var check=true;
2020-10-05 05:33:08 +00:00
if(!players.length) check=false;
2020-02-04 05:31:47 +00:00
else{
if(get.attitude(player,trigger.source)>=0) check=false;
}
2020-10-09 03:37:02 +00:00
player.chooseCard(get.prompt('gzfudi',trigger.source),'交给其一张手牌然后对其势力中体力值最大且不小于你的一名角色造成1点伤害').set('aicheck',check).set('ai',function(card){
2020-02-04 05:31:47 +00:00
if(!_status.event.aicheck) return 0;
return 9-get.value(card);
});
'step 1'
2020-10-05 05:33:08 +00:00
if(result.bool){
2020-02-04 05:31:47 +00:00
player.logSkill('gzfudi',trigger.source);
trigger.source.gain(result.cards,player,'giveAuto');
}
else event.finish();
'step 2'
2020-10-05 05:33:08 +00:00
var list=game.filterPlayer(function(current){
return current.hp>=player.hp&&current.isFriendOf(trigger.source)&&!game.hasPlayer(function(current2){
return current2.hp>current.hp&&current2.isFriendOf(trigger.source);
});
});
if(list.length){
if(list.length==1) event._result={bool:true,targets:list};
else player.chooseTarget(true,'对'+get.translation(trigger.source)+'势力中体力值最大的一名角色造成1点伤害',function(card,player,target){
return _status.event.list.contains(target);
}).set('list',list).set('ai',function(target){return get.damageEffect(target,player,player)});
}
else event.finish();
'step 3'
if(result.bool&&result.targets.length){
player.line(result.targets[0]);
result.targets[0].damage();
2020-02-04 05:31:47 +00:00
}
},
ai:{
maixie:true,
maixie_defend:true,
effect:{
target:function(card,player,target){
2020-11-17 08:21:06 +00:00
if(get.tag(card,'damage')&&target.hp>1){
2020-02-04 05:31:47 +00:00
if(player.hasSkillTag('jueqing',false,target)) return [1,-2];
if(!target.countCards('h')) return [1,-1];
if(game.countPlayer(function(current){return current.isFriendOf(player)&&current.hp>=target.hp-1})) return [1,0,0,-2];
}
}
}
}
},
congjian:{
2019-11-14 05:47:38 +00:00
trigger:{
player:'damageBegin3',
source:'damageBegin1',
2020-02-04 05:31:47 +00:00
},
forced:true,
2020-09-30 07:46:55 +00:00
audio:'drlt_congjian',
2020-02-04 05:31:47 +00:00
filter:function(event,player,name){
if(event.num<=0) return false;
2020-10-05 05:33:08 +00:00
if(name=='damageBegin1'&&_status.currentPhase!=player) return true;
2019-11-14 05:47:38 +00:00
if(name=='damageBegin3'&&_status.currentPhase==player) return true;
return false;
2020-02-04 05:31:47 +00:00
},
2019-08-30 15:10:11 +00:00
check:function(event,player){
return _status.currentPhase!=player;
},
2020-02-04 05:31:47 +00:00
content:function(){trigger.num++},
},
jianan:{
audio:2,
unique:true,
forceunique:true,
group:'wuziliangjiangdao',
derivation:'wuziliangjiangdao',
2019-08-30 15:10:11 +00:00
global:'g_jianan',
2020-02-04 05:31:47 +00:00
},
g_jianan:{
trigger:{
player:['phaseZhunbeiBegin','phaseBefore','dieBegin'],
},
audio:'jianan',
forceaudio:true,
2019-10-31 04:43:12 +00:00
filter:function(event,player,name){
2019-11-22 05:21:06 +00:00
if(name!='phaseZhunbeiBegin') return get.is.jun(player)&&player.identity=='wei';
2019-10-31 04:43:12 +00:00
return this.filter2.apply(this,arguments);
},
filter2:function(event,player){
2019-08-30 15:10:11 +00:00
if(!get.zhu(player,'jianan')) return false;
if(!player.countCards('he')) return false;
return !player.isUnseen();
2020-02-04 05:31:47 +00:00
},
direct:true,
content:function(){
2019-08-30 15:10:11 +00:00
'step 0'
2019-11-22 05:21:06 +00:00
if(event.triggername!='phaseZhunbeiBegin'){
2019-10-31 04:43:12 +00:00
event.trigger('jiananUpdate');
event.finish();
return;
}
2019-10-26 12:25:56 +00:00
var skills=['new_retuxi','qiaobian','gzxiaoguo','gzjieyue','new_duanliang'];
2019-08-30 15:10:11 +00:00
game.countPlayer(function(current){
if(current==player) return;
2020-02-04 05:31:47 +00:00
if(current.hasSkill('new_retuxi')) skills.remove('new_retuxi');
if(current.hasSkill('qiaobian')) skills.remove('qiaobian');
if(current.hasSkill('gzxiaoguo')) skills.remove('gzxiaoguo');
if(current.hasSkill('gzjieyue')) skills.remove('gzjieyue');
if(current.hasSkill('new_duanliang')) skills.remove('new_duanliang');
2019-08-30 15:10:11 +00:00
});
if(!skills.length) event.finish();
else{
event.skills=skills;
2020-03-05 13:10:37 +00:00
var next=player.chooseToDiscard('he');
2019-10-31 04:43:12 +00:00
var str='';
for(var i=0;i<skills.length;i++){
str+='、【';
str+=get.translation(skills[i]);
str+='】';
}
2020-03-05 13:10:37 +00:00
next.set('prompt','是否发动【五子良将纛】?')
next.set('prompt2',get.translation('弃置一张牌并暗置一张武将牌,获得以下技能中的一个直到下回合开始:'+str.slice(1)));
2019-08-30 15:10:11 +00:00
next.logSkill='g_jianan';
next.skills=skills;
next.ai=function(card){
2019-10-31 04:43:12 +00:00
var skills=_status.event.skills;
var player=_status.event.player;
var rank=0;
if(skills.contains('new_retuxi')&&game.countPlayer(function(current){
return get.attitude(player,current)<0&&current.countGainableCards(player,'h')
})>1) rank=4;
if(skills.contains('gzjieyue')&&player.countCards('h',function(card){
return get.value(card)<7;
})>1) rank=5;
if(skills.contains('qiaobian')&&player.countCards('h')>4) rank=6;
Our Song. 马上就要高考了,这次的版本更新应该是考前的最后一次更新了。 真的很感谢这段时间以来身边的大家。身边的老师和同学也好,Key圈的各位键子们也好,无名杀玩家们也好,正是有了你们的陪伴和支持,我才能够坚持下来,走到今天的这一步。 祝愿包括我自己在内的所有考生高考顺利,金榜题名吧! 最后,在这里复制粘贴一下《Angel Beats!》TV版的ED,某种意义上也是仲村ゆり的角色歌的《Brave Song》的歌词: ``` いつもひとりで歩いてた 振り返るとみんなは遠く 一路走来形单影只 转身回首望去 大家已经远去 それでもあたしは歩いた それが強さだった 即使如此我依然前行 这正是我的坚强 もう何も恐くない そう呟いてみせる 经历 使我无所畏惧 再多冷漠也是一句叹息 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 孤独さえ愛し笑ってられるように あたしは戦うんだ 为了那笑容下与孤独作伴的勇气 我决定战斗到底 涙なんて見せないんだ 我已不再哭泣 いつもひとりで歩いてた 行く先には崖が待ってた 一路走来形单影只 而前方等着的却是山崖 それでもあたしは歩いた 強さの証明のため 即使如此我依然前行 为了证明这份坚强 吹き付ける強い風 汗でシャツが張りつく 强风吹过 汗水将衣服粘湿 いつか忘れてしまえるなら 生きることそれはたやすいもの 若有一天将一切尽数忘掉的话 生存其实并不困难 忘却の彼方へと落ちていくなら それは逃げることだろう 而若坠落在那忘却的彼端的话 那便成了逃避吧 生きた意味すら消えるだろう 就连生存的意义也会消失殆尽吧 風はやがて凪いでた 汗も乾いて 风终于停息 汗也干了 お腹が空いてきたな 何かあったっけ 肚子也饿了啊 有什么可吃的吗 賑やかな声と共にいい匂いがやってきた 同熙攘的声音一道 喷香的味道也传了过来 いつもひとりで歩いてた みんなが待っていた 一路走来形单影只 大家在前方等着我 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 それでもいい 安らかなこの気持ちは それを仲間と呼ぶんだ 这倒也没什么 这种安宁的感情 称之为伙伴 いつかみんなと過ごした日々も忘れてどこかで生きてるよ 有一天我会忘掉和大家在一起度过的日子而生活在他乡 その時はもう強くなんかないよ 到了那时 我不会再坚强了 普通の女の子の弱さで涙を零すよ 像普通的女孩一样流下柔弱的泪水 ```
2020-07-03 05:22:31 +00:00
if((get.guozhanRank(player.name1,player)<rank&&!player.isUnseen(0))||(get.guozhanRank(player.name2,player)<rank&&!player.isUnseen(1))) return rank+1-get.value(card);
2019-08-30 15:10:11 +00:00
return -1;
};
}
'step 1'
if(!result.bool) event.finish();
else{
var list=["主将","副将"];
if(player.isUnseen(0)||get.is.jun(player)) list.remove("主将");
if(player.isUnseen(1)) list.remove("副将");
2020-03-05 13:10:37 +00:00
if(!list.length) event.goto(3);
2019-08-30 15:10:11 +00:00
else if(list.length<2) event._result={control:list[0]};
else{
2019-10-31 04:43:12 +00:00
player.chooseControl(list).set('ai',function(){
Our Song. 马上就要高考了,这次的版本更新应该是考前的最后一次更新了。 真的很感谢这段时间以来身边的大家。身边的老师和同学也好,Key圈的各位键子们也好,无名杀玩家们也好,正是有了你们的陪伴和支持,我才能够坚持下来,走到今天的这一步。 祝愿包括我自己在内的所有考生高考顺利,金榜题名吧! 最后,在这里复制粘贴一下《Angel Beats!》TV版的ED,某种意义上也是仲村ゆり的角色歌的《Brave Song》的歌词: ``` いつもひとりで歩いてた 振り返るとみんなは遠く 一路走来形单影只 转身回首望去 大家已经远去 それでもあたしは歩いた それが強さだった 即使如此我依然前行 这正是我的坚强 もう何も恐くない そう呟いてみせる 经历 使我无所畏惧 再多冷漠也是一句叹息 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 孤独さえ愛し笑ってられるように あたしは戦うんだ 为了那笑容下与孤独作伴的勇气 我决定战斗到底 涙なんて見せないんだ 我已不再哭泣 いつもひとりで歩いてた 行く先には崖が待ってた 一路走来形单影只 而前方等着的却是山崖 それでもあたしは歩いた 強さの証明のため 即使如此我依然前行 为了证明这份坚强 吹き付ける強い風 汗でシャツが張りつく 强风吹过 汗水将衣服粘湿 いつか忘れてしまえるなら 生きることそれはたやすいもの 若有一天将一切尽数忘掉的话 生存其实并不困难 忘却の彼方へと落ちていくなら それは逃げることだろう 而若坠落在那忘却的彼端的话 那便成了逃避吧 生きた意味すら消えるだろう 就连生存的意义也会消失殆尽吧 風はやがて凪いでた 汗も乾いて 风终于停息 汗也干了 お腹が空いてきたな 何かあったっけ 肚子也饿了啊 有什么可吃的吗 賑やかな声と共にいい匂いがやってきた 同熙攘的声音一道 喷香的味道也传了过来 いつもひとりで歩いてた みんなが待っていた 一路走来形单影只 大家在前方等着我 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 それでもいい 安らかなこの気持ちは それを仲間と呼ぶんだ 这倒也没什么 这种安宁的感情 称之为伙伴 いつかみんなと過ごした日々も忘れてどこかで生きてるよ 有一天我会忘掉和大家在一起度过的日子而生活在他乡 その時はもう強くなんかないよ 到了那时 我不会再坚强了 普通の女の子の弱さで涙を零すよ 像普通的女孩一样流下柔弱的泪水 ```
2020-07-03 05:22:31 +00:00
return get.guozhanRank(player.name1,player)<get.guozhanRank(player.name2,player)?'主将':'副将';
2019-10-31 04:43:12 +00:00
}).prompt="请选择暗置一张武将牌";
2019-08-30 15:10:11 +00:00
}
}
'step 2'
if(!result.control) event.finish();
else{
var num=result.control=='主将'?0:1;
player.hideCharacter(num);
}
'step 3'
2020-03-05 13:10:37 +00:00
player.chooseControl(event.skills).set('ai',function(){
var skills=event.skills;
if(skills.contains('qiaobian')&&player.countCards('h')>3) return 'qiaobian';
if(skills.contains('gzjieyue')&&player.countCards('h',function(card){
return get.value(card)<7;
})) return 'gzjieyue';
if(skills.contains('new_retuxi')) return 'new_retuxi';
return skills.randomGet();
}).set("prompt","选择获得其中的一个技能直到君主的回合开始");
'step 4'
2019-08-30 15:10:11 +00:00
var link=result.control;
2019-10-31 04:43:12 +00:00
player.addTempSkill(link,"jiananUpdate");
player.addTempSkill("jianan_eff","jiananUpdate");
2019-08-30 15:10:11 +00:00
game.log(player,"获得了技能","#g【"+get.translation(result.control)+"】");
},
2020-02-04 05:31:47 +00:00
},
jianan_eff:{
ai:{nomingzhi:true}
},
huibian:{
enable:'phaseUse',
audio:2,
usable:1,
filter:function(event,player){
return game.countPlayer(function(current){
return current.identity=='wei';
})>1&&game.hasPlayer(function(current){
return current.isDamaged()&&current.identity=='wei';
});
},
filterTarget:function(card,player,target){
if(ui.selected.targets.length) return target.isDamaged()&&target.identity=='wei';
return target.identity=='wei';
},
selectTarget:2,
multitarget:true,
targetprompt:['受到伤害</br>然后摸牌','回复体力'],
content:function(){
'step 0'
targets[0].damage(player);
'step 1'
if(targets[0].isAlive()) targets[0].draw(2);
targets[1].recover();
},
ai:{
threaten:1.2,
order:9,
result:{
target:function(player,target){
if(ui.selected.targets.length) return 1;
if(get.damageEffect(target,player,player)>0) return 2;
if(target.hp>2) return 1;
if(target.hp==1) return -1;
return 0.1;
}
},
}
},
gzzongyu:{
audio:2,
unique:true,
forceunique:true,
group:['gzzongyu_others','gzzongyu_player'],
ai:{
threaten:1.2,
},
subSkill:{
others:{
trigger:{global:'equipAfter'},
direct:true,
filter:function(event,player){
if(event.player==player||!player.countCards('e',{subtype:['equip3','equip4']})) return false;
return event.card.name=='liulongcanjia';
},
check:function(event,player){
if(get.attitude(player,target)<=0) return player.countCards('e',{subtype:['equip4','equip4']})<2;
return true;
},
content:function(){
'step 0'
player.chooseBool('是否发动【总御】,与'+get.translation(trigger.player)+'交换装备区内坐骑牌?');
'step 1'
if(result.bool){
player.logSkill('gzzongyu',trigger.player);
event.cards=[player.getCards('e',{subtype:['equip3','equip4']}),trigger.player.getCards('e',{name:'liulongcanjia'})];
player.lose(event.cards[0],ui.special);
trigger.player.lose(event.cards[1],ui.special);
if(event.cards[0].length) player.$give(event.cards[0],trigger.player);
if(event.cards[1].length) trigger.player.$give(event.cards[1],player);
}
else event.finish();
'step 2'
for(var i=0;i<event.cards[1].length;i++) player.equip(event.cards[1][i]);
for(var i=0;i<event.cards[0].length;i++) trigger.player.equip(event.cards[0][i]);
},
},
player:{
audio:'gzzongyu',
trigger:{player:'equipAfter'},
forced:true,
filter:function(event,player){
if(!['equip3','equip4'].contains(get.subtype(event.card))) return false;
for(var i=0;i<ui.discardPile.childElementCount;i++){
if(ui.discardPile.childNodes[i].name=='liulongcanjia') return true;
}
return game.hasPlayer(function(current){
return current!=player&&current.countCards('ej','liulongcanjia');
});
},
content:function(){
var list=[];
for(var i=0;i<ui.discardPile.childElementCount;i++){
if(ui.discardPile.childNodes[i].name=='liulongcanjia'){
list.add(ui.discardPile.childNodes[i]);
}
}
game.countPlayer(function(current){
if(current!=player){
var ej=current.getCards('ej','liulongcanjia');
if(ej.length){
list.addArray(ej);
}
}
});
if(list.length){
var card=list.randomGet();
var owner=get.owner(card);
if(owner){
player.line(owner,'green');
owner.lose(card,ui.special);
owner.$give(card,player);
}
else player.$gain(card,'log');
player.equip(card);
}
}
},
}
},
wuziliangjiangdao:{
nopop:true,
unique:true,
forceunique:true,
mark:true,
intro:{content:function(){return get.translation('wuziliangjiangdao_info')}},
},
2019-08-30 15:10:11 +00:00
2020-02-04 05:31:47 +00:00
gzzhengbi:{
trigger:{player:'phaseUseBegin'},
filter:function(event,player){
//if(event.player!=player) return false;
return game.hasPlayer(function(current){return current!=player&&current.identity=='unknown'})||player.countCards('h',{type:'basic'});
},
2019-08-30 15:10:11 +00:00
check:function(event,player){
2020-02-04 05:31:47 +00:00
if(player.countCards('h',function(card){return get.value(card)<7})){
if(player.isUnseen()) return Math.random()>0.7;
return true;
}
},
content:function(){
'step 0'
var choices=[];
if(game.hasPlayer(function(current){return current.isUnseen()})) choices.push('选择一名未确定势力的角色');
if(game.hasPlayer(function(current){return current!=player&&!current.isUnseen()})&&player.countCards('h',{type:'basic'})) choices.push('交给一名已确定势力角色一张基本牌');
player.chooseControl(choices).set('ai',function(){
if(choices.length>1){
var player=_status.event.player;
if(!game.hasPlayer(function(current){
return !current.isUnseen()&&current.getEquip('yuxi')||current.hasSkill('gzyongsi')&&!game.hasPlayer(function(current){
return current.getEquip('yuxi');
});
})&&game.hasPlayer(function(current){return current!=player&&current.isUnseen()})){
var identity;
for(var i=0;i<game.players;i++){
if(game.players[i].isMajor()){identity=game.players[i].identity;break;}
}
}
if(!player.isUnseen()&&player.identity!=identity&&get.population(player.identity)+1>=get.population(identity)) return 0;
return 1;
}
return 0;
}).set('prompt','征辟</br></br><div class="center text">选择一项</div>');
'step 1'
if(result.control=='选择一名未确定势力的角色') player.chooseTarget('征辟</br></br><div class="center text">选择一名未确定势力角色,你对其使用牌没有次数和距离限制直到回合结束</div>',function(card,player,target){
return target!=player&&target.identity=='unknown'
},true);
else player.chooseCardTarget({
prompt:'征辟</br></br><div class="center text">交给一名已确定势力角色一张基本牌,然后该角色交给你一张非基本牌或两张基本牌</div>',
position:'h',
filterCard:function(card){return get.type(card)=='basic'},
filterTarget:function(card,player,target){
return target!=player&&target.identity!='unknown';
},
2020-03-13 10:02:18 +00:00
ai1:function(card){return 5-get.value(card)},
ai2:function(target){
var player=_status.event.player;
var att=get.attitude(player,target);
if(att>0) return 0;
return -(att-1)/target.countCards('h');
}
2020-02-04 05:31:47 +00:00
}).set('forced',true);
'step 2'
event.target=result.targets[0];
player.line(result.targets,'green');
if(result.cards.length){
event.cards=result.cards;
result.targets[0].gain(result.cards,player,'give');
}
else{
player.storage.gzzhengbi_eff1=result.targets[0];
player.addTempSkill('gzzhengbi_eff1');
event.finish();
}
'step 3'
var choices=[];
if(target.countCards('he',{type:['trick','delay','equip']})) choices.push('一张非基本牌');
if(target.countCards('h',{type:'basic'})>1) choices.push('两张基本牌');
if(choices.length) target.chooseControl(choices).set('ai',function(event,player){
if(choices.length>1){
if(player.countCards('he',{type:['trick','delay','equip']},function(card){return get.value(card)<7})) return 0;
return 1;
}
return 0;
}).set('prompt','征辟</br></br><div class="center text">交给'+get.translation(player)+'</div>');
else{
if(target.countCards('h')){
var cards=target.getCards('h');
player.gain(cards,target,'giveAuto');
event.finish();
}
else event.finish();
}
'step 4'
var check=(result.control=='一张非基本牌');
target.chooseCard('he',(check?1:2),{type:(check?['trick','delay','equip']:'basic')},true);
'step 5'
if(result.cards){
player.gain(result.cards,target,'giveAuto');
}
},
subSkill:{
eff1:{
sub:true,
mod:{
targetInRange:function (card,player,target){
if(target==player.storage.gzzhengbi_eff1) return true;
},
2020-10-30 04:51:00 +00:00
cardUsableTarget:function (card,player,target){
if(target==player.storage.gzzhengbi_eff1&&target.isUnseen()){
return true;
2020-02-04 05:31:47 +00:00
}
},
},
onremove:true,
},
eff2:{sub:true},
}
},
gzfengying:{
limited:true,
enable:'phaseUse',
position:'h',
filterCard:true,
selectCard:-1,
2019-08-30 15:10:11 +00:00
filter:function(event,player){
return !player.storage.gzfengying&&player.countCards('h')>0;
},
2020-02-04 05:31:47 +00:00
filterTarget:function(card,player,target){
return target==player;
},
selectTarget:-1,
discard:false,
lose:false,
content:function(){
'step 0'
2019-08-30 15:10:11 +00:00
player.awakenSkill('gzfengying');
player.storage.gzfengying=true;
2020-02-04 05:31:47 +00:00
player.useCard({name:'xietianzi'},cards,target);
'step 1'
var list=game.filterPlayer(function(current){
return current.isFriendOf(player)&&current.countCards('h')<current.maxHp;
});
list.sort(lib.sort.seat);
player.line(list,'thunder');
game.asyncDraw(list,function(current){
return current.maxHp-current.countCards('h');
});
},
skillAnimation:'epic',
animationColor:'gray',
ai:{
order:0.1,
result:{
player:function(player){
var value=0;
var cards=player.getCards('h');
if(cards.length>=4) return 0;
for(var i=0;i<cards.length;i++){
value+=Math.max(0,get.value(cards[i],player,'raw'));
}
var targets=game.filterPlayer(function(current){return current.isFriendOf(player)&&current!=player});
var eff=0;
for(var i=0;i<targets.length;i++){
var num=targets[i].countCards('h')<targets[i].maxHp;
if(num<=0) continue;
eff+=num;
}
return 5*eff-value
}
}
},
2019-08-30 15:10:11 +00:00
},
junling4_eff:{
mod:{
2020-03-13 10:02:18 +00:00
cardEnabled2:function(card){
if(get.position(card)=='h') return false
},
2019-08-30 15:10:11 +00:00
},
mark:true,
marktext:'令',
intro:{
content:'不能使用或打出手牌'
}
},
junling5_eff:{
trigger:{player:"recoverBefore"},
priority:44,
forced:true,
silent:true,
popup:false,
content:function(){trigger.cancel()},
mark:true,
marktext:'令',
intro:{
content:'不能回复体力'
},
ai:{
effect:{
target:function (card,player,target){
if(get.tag(card,'recover')) return 'zeroplayertarget';
},
},
}
},
2020-02-04 05:31:47 +00:00
gzjieyue:{
trigger:{player:'phaseZhunbeiBegin'},
filter:function(event,player){
return player.countCards('h')&&game.hasPlayer(function(current){
return current!=player&&current.identity!='wei';
});
},
direct:true,
content:function(){
'step 0'
player.chooseCardTarget({
prompt:get.prompt2('gzjieyue'),
position:'h',
filterCard:true,
filterTarget:function(card,player,target){
2019-08-30 15:10:11 +00:00
return target.identity!='wei'&&target!=player;
2020-02-04 05:31:47 +00:00
},
ai1:function(card,player,target){
if(get.attitude(player,target)>0) return 11-get.value(card);
return 7-get.value(card);
},
ai2:function(card,player,target){
var att=get.attitude(player,target);
if(att<0) return -att;
return 1;
}
});
'step 1'
if(result.bool){
event.target=result.targets[0];
player.logSkill('gzjieyue',result.targets);
result.targets[0].gain(result.cards[0],player,'giveAuto');
player.chooseJunlingFor(result.targets[0]);
}
else event.finish();
'step 2'
event.junling=result.junling;
event.targets=result.targets;
var choiceList=[];
choiceList.push('执行该军令,然后'+get.translation(player)+'摸一张牌');
choiceList.push('令'+get.translation(player)+'摸牌阶段额外摸三张牌');
target.chooseJunlingControl(player,result.junling,result.targets).set('prompt','节钺').set('choiceList',choiceList).set('ai',function(){
if(get.attitude(target,player)>0) return get.junlingEffect(player,result.junling,target,result.targets,target)>1?0:1;
return get.junlingEffect(player,result.junling,target,result.targets,target)>=-1?0:1;
});
'step 3'
if(result.index==0){
target.carryOutJunling(player,event.junling,targets);
player.draw();
}
else player.addTempSkill('gzjieyue_eff');
},
ai:{threaten:2},
subSkill:{
eff:{
sub:true,
2020-06-20 04:53:15 +00:00
trigger:{player:'phaseDrawBegin2'},
2020-02-04 05:31:47 +00:00
filter:function(event,player){
2020-06-20 04:53:15 +00:00
return !event.numFixed;
2020-02-04 05:31:47 +00:00
},
forced:true,
popup:false,
2020-02-04 05:31:47 +00:00
content:function(){
trigger.num+=3;
}
}
},
audio:['jieyue',2],
2019-08-30 15:10:11 +00:00
},
2020-02-04 05:31:47 +00:00
jianglue:{
limited:true,
enable:'phaseUse',
prepare:function(cards,player){
var targets=game.filterPlayer(function(current){
return current.isFriendOf(player)||current.isUnseen();
});
player.line(targets,'fire');
},
content:function(){
'step 0'
player.awakenSkill('jianglue');
player.addTempSkill('jianglue_count');
player.chooseJunlingFor(player).set('prompt','选择一张军令牌,令与你势力相同的其他角色选择是否执行');
'step 1'
event.junling=result.junling;
event.targets=result.targets;
event.players=game.filterPlayer(function(current){
if(current==player) return false;
return current.isFriendOf(player)||current.isUnseen();
}).sort(lib.sort.seat);
event.num=0;
'step 2'
if(num<event.players.length) event.current=event.players[num];
if(event.current&&event.current.isAlive()){
event.showCharacter=false;
var choiceList=['执行该军令,增加一点体力上限,然后回复一点体力','不执行该军令'];
if(event.current.isFriendOf(player)) event.current.chooseJunlingControl(player,event.junling,targets).set('prompt','将略').set('choiceList',choiceList).set('ai',function(){return 0});
else if(event.current._group==player.identity&&event.current.wontYe()){
event.showCharacter=true;
choiceList[0]='明置一张武将牌以'+choiceList[0];
choiceList[1]='不明置武将牌且'+choiceList[1];
event.current.chooseJunlingControl(player,event.junling,targets).set('prompt','将略').set('choiceList',choiceList).set('ai',function(){return 0});
}
else event.current.chooseJunlingControl(player,event.junling,targets).set('prompt','将略').set('controls',['ok']);
}
else event.goto(4);
'step 3'
event.carry=false;
if(result.index==0&&result.control!='ok'){
event.carry=true;
if(event.showCharacter) event.current.chooseControl(['主将','副将']).set('ai',function(){return Math.round()>0.5?0:1;}).prompt='选择并展示一张武将牌,然后执行军令';
}
'step 4'
if(!event.list) event.list=[player];
if(event.carry){
if(event.showCharacter) event.current.showCharacter(result.index);
event.current.carryOutJunling(player,event.junling,targets);
event.list.push(event.current);
}
event.num++;
if(event.num<event.players.length) event.goto(2);
'step 5'
event.num=0;
player.storage.jianglue_count=0;
'step 6'
if(event.list[num].isAlive()){
event.list[num].gainMaxHp(true);
event.list[num].recover();
}
event.num++;
'step 7'
if(event.num<event.list.length) event.goto(6);
else if(player.storage.jianglue_count>0) player.draw(player.storage.jianglue_count);
},
marktext:'略',
skillAnimation:'epic',
animationColor:'soil',
ai:{
order:4,
result:{
player:function(player){
if(player.isUnseen()&&player.wontYe()){
if(get.population(player._group)>=game.players.length/4) return 1;
return Math.random()>0.7?1:0;
}
else return 1;
}
}
},
subSkill:{
count:{
sub:true,
trigger:{global:'recoverAfter'},
silent:true,
filter:function(event){return event.getParent('jianglue')},
content:function(){player.storage.jianglue_count++}
}
}
},
gzxuanhuo:{
global:'gzxuanhuo_others',
Our Song. 马上就要高考了,这次的版本更新应该是考前的最后一次更新了。 真的很感谢这段时间以来身边的大家。身边的老师和同学也好,Key圈的各位键子们也好,无名杀玩家们也好,正是有了你们的陪伴和支持,我才能够坚持下来,走到今天的这一步。 祝愿包括我自己在内的所有考生高考顺利,金榜题名吧! 最后,在这里复制粘贴一下《Angel Beats!》TV版的ED,某种意义上也是仲村ゆり的角色歌的《Brave Song》的歌词: ``` いつもひとりで歩いてた 振り返るとみんなは遠く 一路走来形单影只 转身回首望去 大家已经远去 それでもあたしは歩いた それが強さだった 即使如此我依然前行 这正是我的坚强 もう何も恐くない そう呟いてみせる 经历 使我无所畏惧 再多冷漠也是一句叹息 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 孤独さえ愛し笑ってられるように あたしは戦うんだ 为了那笑容下与孤独作伴的勇气 我决定战斗到底 涙なんて見せないんだ 我已不再哭泣 いつもひとりで歩いてた 行く先には崖が待ってた 一路走来形单影只 而前方等着的却是山崖 それでもあたしは歩いた 強さの証明のため 即使如此我依然前行 为了证明这份坚强 吹き付ける強い風 汗でシャツが張りつく 强风吹过 汗水将衣服粘湿 いつか忘れてしまえるなら 生きることそれはたやすいもの 若有一天将一切尽数忘掉的话 生存其实并不困难 忘却の彼方へと落ちていくなら それは逃げることだろう 而若坠落在那忘却的彼端的话 那便成了逃避吧 生きた意味すら消えるだろう 就连生存的意义也会消失殆尽吧 風はやがて凪いでた 汗も乾いて 风终于停息 汗也干了 お腹が空いてきたな 何かあったっけ 肚子也饿了啊 有什么可吃的吗 賑やかな声と共にいい匂いがやってきた 同熙攘的声音一道 喷香的味道也传了过来 いつもひとりで歩いてた みんなが待っていた 一路走来形单影只 大家在前方等着我 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 それでもいい 安らかなこの気持ちは それを仲間と呼ぶんだ 这倒也没什么 这种安宁的感情 称之为伙伴 いつかみんなと過ごした日々も忘れてどこかで生きてるよ 有一天我会忘掉和大家在一起度过的日子而生活在他乡 その時はもう強くなんかないよ 到了那时 我不会再坚强了 普通の女の子の弱さで涙を零すよ 像普通的女孩一样流下柔弱的泪水 ```
2020-07-03 05:22:31 +00:00
derivation:['fz_wusheng','fz_new_paoxiao','fz_new_longdan','fz_new_tieji','fz_liegong','fz_xinkuanggu'],
2020-02-04 05:31:47 +00:00
ai:{
threaten:function(player,target){
if(game.hasPlayer(function(current){
return current!=target&&current.isFriendOf(target);
})) return 1.5;
return 0.5;
},
},
subSkill:{
others:{
enable:'phaseUse',
usable:1,
filter:function(event,player){
return (!player.isUnseen())&&player.countCards('he')>2&&game.hasPlayer(function(current){
return current!=player&&current.hasSkill('gzxuanhuo')&&player.isFriendOf(current);
2019-08-30 15:10:11 +00:00
});
2020-02-04 05:31:47 +00:00
},
2019-08-30 15:10:11 +00:00
prompt:function(){
var player=_status.event.player;
var list=game.filterPlayer(function(current){
return current!=player&&current.hasSkill('gzxuanhuo')&&player.isFriendOf(current);
});
var str='选择两张牌。将第一张牌交给'+get.translation(list);
if(list.length>1) str+='中的一人';
str+=',并弃置第二张牌';
return str;
},
2020-02-04 05:31:47 +00:00
position:'he',
filterCard:true,
selectCard:2,
2020-06-20 04:53:15 +00:00
check:function(card){
var player=_status.event.player;
if(player.hasSkill('new_paoxiao',true)||player.getEquip('zhuge')||game.hasPlayer(function(current){
return current.hasSkill('new_paoxiao');
})) return 0;
if(player.countCards('h',function(cardx){
return !ui.selected.cards.contains(cardx)&&cardx!=card&&cardx.name=='sha'&&player.hasUseTarget(cardx);
})<2) return 0;
if(get.position(card)=='h') return 6-get.value(card);
return 5-get.value(card);
2020-02-04 05:31:47 +00:00
},
filterTarget:function(card,player,target){return target!=player&&target.hasSkill('gzxuanhuo')&&target.isFriendOf(player)},
discard:false,
2019-08-30 15:10:11 +00:00
lose:false,
2020-06-20 04:53:15 +00:00
delay:false,
2020-02-04 05:31:47 +00:00
content:function(){
'step 0'
2020-06-20 04:53:15 +00:00
if(player!=game.me&&!player.isOnline()) cards.reverse();
2019-08-30 15:10:11 +00:00
target.gain(cards[0],player);
player.$giveAuto(cards[0],target);
player.discard(cards[1]);
2020-02-04 05:31:47 +00:00
'step 1'
var list=['wusheng','new_paoxiao','new_longdan','new_tieji','liegong','xinkuanggu'];
for(var i=0;i<list.length;i++){
2019-08-30 15:10:11 +00:00
if(game.hasPlayer(function(current){
Our Song. 马上就要高考了,这次的版本更新应该是考前的最后一次更新了。 真的很感谢这段时间以来身边的大家。身边的老师和同学也好,Key圈的各位键子们也好,无名杀玩家们也好,正是有了你们的陪伴和支持,我才能够坚持下来,走到今天的这一步。 祝愿包括我自己在内的所有考生高考顺利,金榜题名吧! 最后,在这里复制粘贴一下《Angel Beats!》TV版的ED,某种意义上也是仲村ゆり的角色歌的《Brave Song》的歌词: ``` いつもひとりで歩いてた 振り返るとみんなは遠く 一路走来形单影只 转身回首望去 大家已经远去 それでもあたしは歩いた それが強さだった 即使如此我依然前行 这正是我的坚强 もう何も恐くない そう呟いてみせる 经历 使我无所畏惧 再多冷漠也是一句叹息 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 孤独さえ愛し笑ってられるように あたしは戦うんだ 为了那笑容下与孤独作伴的勇气 我决定战斗到底 涙なんて見せないんだ 我已不再哭泣 いつもひとりで歩いてた 行く先には崖が待ってた 一路走来形单影只 而前方等着的却是山崖 それでもあたしは歩いた 強さの証明のため 即使如此我依然前行 为了证明这份坚强 吹き付ける強い風 汗でシャツが張りつく 强风吹过 汗水将衣服粘湿 いつか忘れてしまえるなら 生きることそれはたやすいもの 若有一天将一切尽数忘掉的话 生存其实并不困难 忘却の彼方へと落ちていくなら それは逃げることだろう 而若坠落在那忘却的彼端的话 那便成了逃避吧 生きた意味すら消えるだろう 就连生存的意义也会消失殆尽吧 風はやがて凪いでた 汗も乾いて 风终于停息 汗也干了 お腹が空いてきたな 何かあったっけ 肚子也饿了啊 有什么可吃的吗 賑やかな声と共にいい匂いがやってきた 同熙攘的声音一道 喷香的味道也传了过来 いつもひとりで歩いてた みんなが待っていた 一路走来形单影只 大家在前方等着我 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 それでもいい 安らかなこの気持ちは それを仲間と呼ぶんだ 这倒也没什么 这种安宁的感情 称之为伙伴 いつかみんなと過ごした日々も忘れてどこかで生きてるよ 有一天我会忘掉和大家在一起度过的日子而生活在他乡 その時はもう強くなんかないよ 到了那时 我不会再坚强了 普通の女の子の弱さで涙を零すよ 像普通的女孩一样流下柔弱的泪水 ```
2020-07-03 05:22:31 +00:00
return current.hasSkill(list[i])||current.hasSkill('fz_'+list[i]);
2020-02-04 05:31:47 +00:00
})) list.remove(list[i--]);
}
if(!list.length) event.finish();
2019-08-30 15:10:11 +00:00
else player.chooseControl(list).set('ai',function(){
2020-06-20 04:53:15 +00:00
if(list.contains('new_paoxiao')) return 'new_paoxiao';
2019-08-30 15:10:11 +00:00
return list.randomGet();
}).set('prompt','选择并获得一项技能直到回合结束');
'step 2'
player.popup(result.control);
Our Song. 马上就要高考了,这次的版本更新应该是考前的最后一次更新了。 真的很感谢这段时间以来身边的大家。身边的老师和同学也好,Key圈的各位键子们也好,无名杀玩家们也好,正是有了你们的陪伴和支持,我才能够坚持下来,走到今天的这一步。 祝愿包括我自己在内的所有考生高考顺利,金榜题名吧! 最后,在这里复制粘贴一下《Angel Beats!》TV版的ED,某种意义上也是仲村ゆり的角色歌的《Brave Song》的歌词: ``` いつもひとりで歩いてた 振り返るとみんなは遠く 一路走来形单影只 转身回首望去 大家已经远去 それでもあたしは歩いた それが強さだった 即使如此我依然前行 这正是我的坚强 もう何も恐くない そう呟いてみせる 经历 使我无所畏惧 再多冷漠也是一句叹息 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 孤独さえ愛し笑ってられるように あたしは戦うんだ 为了那笑容下与孤独作伴的勇气 我决定战斗到底 涙なんて見せないんだ 我已不再哭泣 いつもひとりで歩いてた 行く先には崖が待ってた 一路走来形单影只 而前方等着的却是山崖 それでもあたしは歩いた 強さの証明のため 即使如此我依然前行 为了证明这份坚强 吹き付ける強い風 汗でシャツが張りつく 强风吹过 汗水将衣服粘湿 いつか忘れてしまえるなら 生きることそれはたやすいもの 若有一天将一切尽数忘掉的话 生存其实并不困难 忘却の彼方へと落ちていくなら それは逃げることだろう 而若坠落在那忘却的彼端的话 那便成了逃避吧 生きた意味すら消えるだろう 就连生存的意义也会消失殆尽吧 風はやがて凪いでた 汗も乾いて 风终于停息 汗也干了 お腹が空いてきたな 何かあったっけ 肚子也饿了啊 有什么可吃的吗 賑やかな声と共にいい匂いがやってきた 同熙攘的声音一道 喷香的味道也传了过来 いつもひとりで歩いてた みんなが待っていた 一路走来形单影只 大家在前方等着我 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 それでもいい 安らかなこの気持ちは それを仲間と呼ぶんだ 这倒也没什么 这种安宁的感情 称之为伙伴 いつかみんなと過ごした日々も忘れてどこかで生きてるよ 有一天我会忘掉和大家在一起度过的日子而生活在他乡 その時はもう強くなんかないよ 到了那时 我不会再坚强了 普通の女の子の弱さで涙を零すよ 像普通的女孩一样流下柔弱的泪水 ```
2020-07-03 05:22:31 +00:00
player.addTempSkill('fz_'+result.control);
2020-02-04 05:31:47 +00:00
game.log(player,'获得了技能','#g【'+get.translation(result.control)+'】');
game.delay();
2019-08-30 15:10:11 +00:00
},
2020-02-04 05:31:47 +00:00
forceaudio:true,
audio:['xuanhuo',2],
2020-06-20 04:53:15 +00:00
ai:{
order:8,
result:{target:1},
},
2020-02-04 05:31:47 +00:00
},
//used:{},
},
audio:['xuanhuo',2],
2019-08-30 15:10:11 +00:00
},
Our Song. 马上就要高考了,这次的版本更新应该是考前的最后一次更新了。 真的很感谢这段时间以来身边的大家。身边的老师和同学也好,Key圈的各位键子们也好,无名杀玩家们也好,正是有了你们的陪伴和支持,我才能够坚持下来,走到今天的这一步。 祝愿包括我自己在内的所有考生高考顺利,金榜题名吧! 最后,在这里复制粘贴一下《Angel Beats!》TV版的ED,某种意义上也是仲村ゆり的角色歌的《Brave Song》的歌词: ``` いつもひとりで歩いてた 振り返るとみんなは遠く 一路走来形单影只 转身回首望去 大家已经远去 それでもあたしは歩いた それが強さだった 即使如此我依然前行 这正是我的坚强 もう何も恐くない そう呟いてみせる 经历 使我无所畏惧 再多冷漠也是一句叹息 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 孤独さえ愛し笑ってられるように あたしは戦うんだ 为了那笑容下与孤独作伴的勇气 我决定战斗到底 涙なんて見せないんだ 我已不再哭泣 いつもひとりで歩いてた 行く先には崖が待ってた 一路走来形单影只 而前方等着的却是山崖 それでもあたしは歩いた 強さの証明のため 即使如此我依然前行 为了证明这份坚强 吹き付ける強い風 汗でシャツが張りつく 强风吹过 汗水将衣服粘湿 いつか忘れてしまえるなら 生きることそれはたやすいもの 若有一天将一切尽数忘掉的话 生存其实并不困难 忘却の彼方へと落ちていくなら それは逃げることだろう 而若坠落在那忘却的彼端的话 那便成了逃避吧 生きた意味すら消えるだろう 就连生存的意义也会消失殆尽吧 風はやがて凪いでた 汗も乾いて 风终于停息 汗也干了 お腹が空いてきたな 何かあったっけ 肚子也饿了啊 有什么可吃的吗 賑やかな声と共にいい匂いがやってきた 同熙攘的声音一道 喷香的味道也传了过来 いつもひとりで歩いてた みんなが待っていた 一路走来形单影只 大家在前方等着我 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 それでもいい 安らかなこの気持ちは それを仲間と呼ぶんだ 这倒也没什么 这种安宁的感情 称之为伙伴 いつかみんなと過ごした日々も忘れてどこかで生きてるよ 有一天我会忘掉和大家在一起度过的日子而生活在他乡 その時はもう強くなんかないよ 到了那时 我不会再坚强了 普通の女の子の弱さで涙を零すよ 像普通的女孩一样流下柔弱的泪水 ```
2020-07-03 05:22:31 +00:00
fz_new_paoxiao:{
audio:true,
inherit:'new_paoxiao',
},
fz_new_tieji:{
audio:true,
inherit:'new_tieji',
},
fz_wusheng:{
audio:true,
inherit:'wusheng',
},
fz_liegong:{
audio:true,
inherit:'liegong',
},
fz_xinkuanggu:{
audio:true,
inherit:'xinkuanggu',
},
fz_new_longdan:{
audio:true,
group:["fz_new_longdan_sha","fz_new_longdan_shan","fz_new_longdan_draw","fz_new_longdan_shamiss","fz_new_longdan_shanafter"],
subSkill:{
shanafter:{
sub:true,
audio:"fz_new_longdan",
trigger:{
player:"useCard",
},
//priority:1,
filter:function (event,player){
return event.skill=='fz_new_longdan_shan'&&event.getParent(2).name=='sha';
},
direct:true,
content:function (){
"step 0"
player.chooseTarget("是否发动【龙胆】令一名其他角色回复1点体力",function(card,player,target){
return target!=_status.event.source&&target!=player&&target.isDamaged();
}).set('ai',function(target){
return get.attitude(_status.event.player,target);
}).set('source',trigger.getParent(2).player);
"step 1"
if(result.bool&&result.targets&&result.targets.length){
player.line(result.targets[0],'green');
result.targets[0].recover();
}
},
},
shamiss:{
sub:true,
audio:"fz_new_longdan",
trigger:{
player:"shaMiss",
},
direct:true,
filter:function (event,player){
return event.skill=='fz_new_longdan_sha';
},
content:function (){
"step 0"
player.chooseTarget("是否发动【龙胆】对一名其他角色造成1点伤害",function(card,player,target){
return target!=_status.event.target&&target!=player;
}).set('ai',function(target){
return -get.attitude(_status.event.player,target);
}).set('target',trigger.target);
"step 1"
if(result.bool&&result.targets&&result.targets.length){
player.line(result.targets[0],'green');
result.targets[0].damage();
}
},
},
draw:{
trigger:{
player:["useCard","respond"],
},
audio:"fz_new_longdan",
forced:true,
filter:function(event,player){
if(!get.zhu(player,'shouyue')) return false;
return event.skill=='fz_new_longdan_sha'||event.skill=='fz_new_longdan_shan';
},
content:function (){
player.draw();
//player.storage.fanghun2++;
},
sub:true,
},
sha:{
audio:"fz_new_longdan",
enable:["chooseToUse","chooseToRespond"],
filterCard:{
name:"shan",
},
viewAs:{
name:"sha",
},
viewAsFilter:function (player){
if(!player.countCards('h','shan')) return false;
},
prompt:"将一张闪当杀使用或打出",
check:function (){return 1},
ai:{
effect:{
target:function (card,player,target,current){
if(get.tag(card,'respondSha')&&current<0) return 0.6
},
},
respondSha:true,
skillTagFilter:function (player){
if(!player.countCards('h','shan')) return false;
},
order:function (){
return get.order({name:'sha'})+0.1;
},
},
sub:true,
},
shan:{
audio:"fz_new_longdan",
enable:['chooseToRespond','chooseToUse'],
filterCard:{
name:"sha",
},
viewAs:{
name:"shan",
},
prompt:"将一张杀当闪使用或打出",
check:function (){return 1},
viewAsFilter:function (player){
if(!player.countCards('h','sha')) return false;
},
ai:{
respondShan:true,
skillTagFilter:function (player){
if(!player.countCards('h','sha')) return false;
},
effect:{
target:function (card,player,target,current){
if(get.tag(card,'respondShan')&&current<0) return 0.6
},
},
},
sub:true,
},
},
},
2019-08-30 15:10:11 +00:00
gzenyuan:{
locked:true,
audio:['enyuan',2],
group:['gzenyuan_gain','gzenyuan_damage'],
ai:{
maixie_defend:true,
effect:{
target:function(card,player,target){
if(player.hasSkillTag('jueqing',false,target)) return [1,-1.5];
if(!target.hasFriend()) return;
if(get.tag(card,'damage')) return [1,0,0,-0.7];
}
}
},
subSkill:{
gain:{
2020-02-04 05:31:47 +00:00
trigger:{target:'useCardToTargeted'},
2019-08-30 15:10:11 +00:00
forced:true,
filter:function(event,player){
2020-02-04 05:31:47 +00:00
return event.card.name=='tao'&&event.player!=player;
2019-08-30 15:10:11 +00:00
},
logTarget:'player',
content:function(){trigger.player.draw()},
audio:'enyuan1',
},
damage:{
trigger:{player:'damageEnd'},
forced:true,
filter:function(event,player){
return event.source&&event.source!=player&&event.num>0;
},
content:function(){
'step 0'
event.num=trigger.num;
'step 1'
event.num--;
player.logSkill('enyuan_damage',trigger.source);
trigger.source.chooseCard('交给'+get.translation(player)+'一张手牌,或失去一点体力','h').set('ai',function(card){
if(get.attitude(_status.event.player,_status.event.getParent().player)>0) return 11-get.value(card);
return 7-get.value(card);
});
'step 2'
if(result.bool){
2020-02-04 05:31:47 +00:00
player.gain(result.cards[0],trigger.source,'giveAuto');
2019-08-30 15:10:11 +00:00
}
else trigger.source.loseHp();
if(event.num>0) event.goto(1);
},
audio:'enyuan2',
},
}
},
"new_jushou":{
2020-02-23 05:45:11 +00:00
audio:"xinjushou",
2019-08-30 15:10:11 +00:00
trigger:{
2019-11-22 05:21:06 +00:00
player:"phaseJieshuBegin",
2019-08-30 15:10:11 +00:00
},
content:function (){
'step 0'
event.num=game.countGroup();
player.draw(event.num);
if(event.num>2) player.turnOver();
'step 1'
player.chooseCard('h',true,'弃置一张手牌,若以此法弃置的是装备牌,则你改为使用之').set('ai',function(card){
if(get.type(card)=='equip'){
return 5-get.value(card);
}
return -get.value(card);
}).set('filterCard',lib.filter.cardDiscardable);
'step 2'
if(result.bool&&result.cards.length){
2020-02-04 05:31:47 +00:00
if(get.type(result.cards[0])=='equip'&&player.hasUseTarget(result.cards[0])){
player.chooseUseTarget(result.cards[0],true,'nopopup');
2019-08-30 15:10:11 +00:00
}
else{
player.discard(result.cards[0]);
}
}
},
ai:{
effect:{
target:function (card,player,target){
if(card.name=='guiyoujie') return [0,1];
},
},
},
},
"new_duanliang":{
subSkill:{
off:{
sub:true,
},
},
mod:{
targetInRange:function (card,player,target){
if(card.name=='bingliang'){
return true;
}
},
},
audio:"duanliang1",
enable:"chooseToUse",
filterCard:function (card){
if(get.type(card)!='basic'&&get.type(card)!='equip') return false;
return get.color(card)=='black';
},
filter:function (event,player){
if(player.hasSkill('new_duanliang_off')) return false;
return player.countCards('he',{type:['basic','equip'],color:'black'})
},
position:"he",
viewAs:{
name:"bingliang",
},
onuse:function (result,player){
if(get.distance(player,result.targets[0])>2) player.addTempSkill('new_duanliang_off');
},
prompt:"将一黑色的基本牌或装备牌当兵粮寸断使用",
check:function (card){return 6-get.value(card)},
ai:{
order:9,
basic:{
order:1,
useful:1,
value:4,
},
result:{
target:function (player,target){
if(target.hasJudge('caomu')) return 0;
return -1.5/Math.sqrt(target.countCards('h')+1);
},
},
tag:{
skip:"phaseDraw",
},
},
},
"new_shushen":{
audio:"shushen",
trigger:{
player:"recoverAfter",
},
direct:true,
content:function (){
'step 0'
event.num=trigger.num||1;
"step 1"
player.chooseTarget(get.prompt2('new_shushen'),function(card,player,target){
return target!=player;
}).set('ai',function(target){
return get.attitude(_status.event.player,target);
});
"step 2"
if(result.bool){
player.logSkill('new_shushen',result.targets);
result.targets[0].draw();
if(event.num>1){
event.num--;
event.goto(1);
}
}
},
ai:{
threaten:0.8,
expose:0.1,
},
},
"new_luanji":{
audio:"luanji",
enable:"phaseUse",
viewAs:{
name:"wanjian",
},
filterCard:function (card,player){
if(!player.storage.new_luanji) return true;
return !player.storage.new_luanji.contains(get.suit(card));
},
selectCard:2,
check:function (card){
var player=_status.event.player;
var targets=game.filterPlayer(function(current){
return player.canUse('wanjian',current);
});
var num=0;
for(var i=0;i<targets.length;i++){
var eff=get.sgn(get.effect(targets[i],{name:'wanjian'},player,player));
if(targets[i].hp==1){
eff*=1.5;
}
num+=eff;
}
if(!player.needsToDiscard(-1)){
if(targets.length>=7){
if(num<2) return 0;
}
else if(targets.length>=5){
if(num<1.5) return 0;
}
}
return 6-get.value(card);
},
group:["new_luanji_count","new_luanji_reset","new_luanji_respond"],
subSkill:{
reset:{
trigger:{
player:"phaseAfter",
},
silent:true,
filter:function (event,player){
return player.storage.new_luanji?true:false;
},
content:function (){
delete player.storage.new_luanji;
},
sub:true,
forced:true,
popup:false,
},
count:{
trigger:{
player:"useCard",
},
silent:true,
filter:function (event){
return event.skill=='new_luanji';
},
content:function (){
if(!player.storage.new_luanji){
player.storage.new_luanji=[];
}
for(var i=0;i<trigger.cards.length;i++){
player.storage.new_luanji.add(get.suit(trigger.cards[i]));
}
},
sub:true,
forced:true,
popup:false,
},
respond:{
trigger:{
global:"respond",
},
silent:true,
filter:function (event){
if(event.player.isUnseen()) return false;
return event.getParent(2).skill=='new_luanji'&&event.player.sameIdentityAs(_status.currentPhase);
},
content:function (){
trigger.player.draw();
},
sub:true,
forced:true,
popup:false,
},
},
},
"new_qingcheng":{
2019-12-09 15:03:35 +00:00
audio:'qingcheng',
2019-08-30 15:10:11 +00:00
enable:"phaseUse",
filter:function (event,player){
return player.countCards('he',{color:'black'})&&game.hasPlayer(function(current){
return current!=player&&!current.isUnseen(2);
});
},
filterCard:{
color:"black",
},
position:"he",
filterTarget:function (card,player,target){
return !target.isUnseen(2);
},
check:function (card){
return 6-get.value(card,_status.event.player);
},
content:function (){
'step 0'
event.target=target;
event.done=false;
'step 1'
if(get.is.jun(event.target)){
event._result={control:'副将'};
}
else{
var choice='主将';
var skills=lib.character[event.target.name2][3];
for(var i=0;i<skills.length;i++){
var info=get.info(skills[i]);
if(info&&info.ai&&info.ai.maixie){
choice='副将';break;
}
}
if(event.target.name=='gz_zhoutai'){
choice='主将';
}
else if(event.target.name2=='gz_zhoutai'){
choice='副将';
}
player.chooseControl('主将','副将',function(){
return _status.event.choice;
}).set('prompt','暗置'+get.translation(event.target)+'的一张武将牌').set('choice',choice);
}
'step 2'
if(result.control=='主将'){
event.target.hideCharacter(0);
}
else{
event.target.hideCharacter(1);
}
event.target.addTempSkill('qingcheng_ai');
if(get.type(cards[0])=='equip'&&!event.done){
2019-12-09 15:03:35 +00:00
player.chooseTarget('是否暗置一名武将牌均为暗置的角色的一张武将牌?',function(card,player,target){
2019-08-30 15:10:11 +00:00
return target!=player&&!target.isUnseen(2);
}).set('ai',function(target){
return -get.attitude(_status.event.player,target);
});
}
else event.finish();
'step 3'
if(result.bool&&result.targets&&result.targets.length){
player.line(result.targets[0],'green');
event.done=true;
event.target=result.targets[0];
event.goto(1);
}
},
ai:{
order:8,
result:{
target:function (player,target){
if(target.hp<=0) return -5;
if(player.getStat().skill.qingcheng) return 0;
if(!target.hasSkillTag('maixie')) return 0;
if(get.attitude(player,target)>=0) return 0;
if(player.hasCard(function(card){
return get.tag(card,'damage')&&player.canUse(card,target,true,true);
})){
if(target.maxHp>3) return -0.5;
return -1;
}
return 0;
},
},
},
},
"new_kongcheng":{
init:function (player){
if(player.storage.new_kongcheng==undefined) player.storage.new_kongcheng=[];
},
2020-03-09 13:12:08 +00:00
fixedGain:function(){
'step 0'
if(cards){
var owner=event.source||get.owner(cards[0]);
if(owner){
var next=owner.lose(cards,ui.special,'toStorage').set('type','gain').set('forceDie',true);
if(event.animate=='give'||event.visible==true) next.visible=true;
event.relatedLose=next;
}
player.storage.new_kongcheng.addArray(cards);
player.markSkill('new_kongcheng');
}
else{
event.finish();
}
'step 1'
if(event.animate=='draw'){
player.$draw(cards.length);
game.pause();
setTimeout(function(){
game.resume();
},get.delayx(500,500));
}
else if(event.animate=='gain'){
player.$gain(cards);
game.pause();
setTimeout(function(){
game.resume();
},get.delayx(700,700));
}
else if(event.animate=='gain2'||event.animate=='draw2'){
var gain2t=300;
if(player.$gain2(cards)&&player==game.me){
gain2t=500;
}
game.pause();
setTimeout(function(){
game.resume();
},get.delayx(gain2t,gain2t));
}
else if(event.source&&(event.animate=='give'||event.animate=='giveAuto')){
if(event.animate=='give') event.source['$'+event.animate](cards,player);
else{
var givemap={hs:[],ots:[]};
for(var i=0;i<cards.length;i++){
givemap[cards[i].original=='h'?'hs':'ots'].push(cards[i]);
}
if(givemap.hs.length) event.source.$giveAuto(givemap.hs,player);
if(givemap.ots.length) event.source.$give(givemap.ots,player);
}
game.pause();
setTimeout(function(){
game.resume();
},get.delayx(500,500));
}
},
2019-08-30 15:10:11 +00:00
group:["new_kongcheng_gain","new_kongcheng_got"],
subSkill:{
gain:{
audio:"kongcheng",
trigger:{
2020-03-09 13:12:08 +00:00
player:"gainBegin",
2019-08-30 15:10:11 +00:00
},
filter:function (event,player){
2020-03-09 13:12:08 +00:00
return event.source&&event.source!=player&&player!=_status.currentPhase&&!event.bySelf&&player.countCards('h')==0;
2019-08-30 15:10:11 +00:00
},
content:function (){
2020-03-09 13:12:08 +00:00
trigger.setContent(lib.skill.new_kongcheng.fixedGain);
2019-08-30 15:10:11 +00:00
},
sub:true,
forced:true,
},
got:{
trigger:{
2020-01-01 14:33:19 +00:00
player:"phaseDrawBegin1",
2019-08-30 15:10:11 +00:00
},
filter:function (event,player){
return player.storage.new_kongcheng.length>0;
},
content:function (){
player.gain(player.storage.new_kongcheng,'draw','fromStorage');
player.storage.new_kongcheng=[];
game.addVideo('storage',player,['new_kongcheng',get.cardsInfo(player.storage.new_kongcheng),'cards']);
player.unmarkSkill('new_kongcheng');
},
sub:true,
forced:true,
},
},
audio:"kongcheng",
trigger:{
2019-10-24 04:55:01 +00:00
target:"useCardToTarget",
2019-08-30 15:10:11 +00:00
},
forced:true,
check:function (event,player){
return get.effect(event.target,event.card,event.player,player)<0;
},
filter:function (event,player){
return player.countCards('h')==0&&(event.card.name=='sha'||event.card.name=='juedou');
},
content:function (){
2019-10-24 04:55:01 +00:00
trigger.getParent().targets.remove(player);
2019-08-30 15:10:11 +00:00
},
ai:{
effect:{
target:function (card,player,target,current){
if(target.countCards('h')==0&&(card.name=='sha'||card.name=='juedou')) return 'zeroplayertarget';
},
},
},
intro:{
2020-02-08 03:39:33 +00:00
onunmark:function(storage,player){
if(storage&&storage.length){
player.$throw(storage,1000);
game.cardsDiscard(storage);
game.log(storage,'被置入了弃牌堆');
storage.length=0;
}
},
2019-08-30 15:10:11 +00:00
mark:function (dialog,content,player){
if(content&&content.length){
if(player==game.me||player.isUnderControl()){
dialog.addAuto(content);
}
else{
return '共有'+get.cnNumber(content.length)+'张牌';
}
}
},
content:function (content,player){
if(content&&content.length){
if(player==game.me||player.isUnderControl()){
return get.translation(content);
}
return '共有'+get.cnNumber(content.length)+'张牌';
}
},
},
},
"new_keji":{
audio:"keji",
2020-04-18 05:32:41 +00:00
forced:true,
trigger:{
player:"phaseDiscardBegin",
},
filter:function (event,player){
var list=[];
player.getHistory('useCard',function(evt){
if(evt.isPhaseUsing(player)){
var color=get.color(evt.card);
if(color!='nocolor') list.add(color);
}
});
return list.length<=1;
},
content:function (){
player.addTempSkill('keji_add','phaseAfter');
2019-08-30 15:10:11 +00:00
},
},
"keji_add":{
mod:{
maxHandcard:function (player,num){
return num+4;
},
},
},
"new_mouduan":{
trigger:{
2019-11-22 05:21:06 +00:00
player:"phaseJieshuBegin",
2019-08-30 15:10:11 +00:00
},
2019-11-22 05:21:06 +00:00
//priority:2,
2019-12-09 15:03:35 +00:00
audio:"botu",
2019-08-30 15:10:11 +00:00
filter:function (event,player){
2020-01-01 14:33:19 +00:00
var history=player.getHistory('useCard');
var suits=[];
var types=[];
for(var i=0;i<history.length;i++){
var suit=get.suit(history[i].card);
if(suit) suits.add(suit);
types.add(get.type(history[i].card))
}
return suits.length>=4||types.length>=3;
2019-08-30 15:10:11 +00:00
},
check:function(event,player){
return player.canMoveCard(true);
},
content:function (){
player.moveCard();
},
},
"new_longdan":{
group:["new_longdan_sha","new_longdan_shan","new_longdan_draw","new_longdan_shamiss","new_longdan_shanafter"],
subSkill:{
shanafter:{
sub:true,
2020-02-23 05:45:11 +00:00
audio:"longdan_sha",
2019-08-30 15:10:11 +00:00
trigger:{
2019-12-16 04:55:19 +00:00
player:"useCard",
2019-08-30 15:10:11 +00:00
},
2019-11-22 05:21:06 +00:00
//priority:1,
2019-08-30 15:10:11 +00:00
filter:function (event,player){
return event.skill=='new_longdan_shan'&&event.getParent(2).name=='sha';
},
direct:true,
content:function (){
"step 0"
player.chooseTarget("是否发动【龙胆】令一名其他角色回复1点体力",function(card,player,target){
2019-12-16 04:55:19 +00:00
return target!=_status.event.source&&target!=player&&target.isDamaged();
2019-08-30 15:10:11 +00:00
}).set('ai',function(target){
return get.attitude(_status.event.player,target);
2019-12-16 04:55:19 +00:00
}).set('source',trigger.getParent(2).player);
2019-08-30 15:10:11 +00:00
"step 1"
if(result.bool&&result.targets&&result.targets.length){
player.line(result.targets[0],'green');
result.targets[0].recover();
}
},
},
shamiss:{
sub:true,
2020-02-23 05:45:11 +00:00
audio:"longdan_sha",
2019-08-30 15:10:11 +00:00
trigger:{
player:"shaMiss",
},
direct:true,
filter:function (event,player){
return event.skill=='new_longdan_sha';
},
content:function (){
"step 0"
player.chooseTarget("是否发动【龙胆】对一名其他角色造成1点伤害",function(card,player,target){
2019-12-16 04:55:19 +00:00
return target!=_status.event.target&&target!=player;
2019-08-30 15:10:11 +00:00
}).set('ai',function(target){
return -get.attitude(_status.event.player,target);
2019-12-16 04:55:19 +00:00
}).set('target',trigger.target);
2019-08-30 15:10:11 +00:00
"step 1"
if(result.bool&&result.targets&&result.targets.length){
player.line(result.targets[0],'green');
result.targets[0].damage();
}
},
},
draw:{
trigger:{
player:["useCard","respond"],
},
2020-02-23 05:45:11 +00:00
audio:"longdan_sha",
2019-08-30 15:10:11 +00:00
forced:true,
filter:function (event,player){
if(!get.zhu(player,'shouyue')) return false;
return event.skill=='new_longdan_sha'||event.skill=='new_longdan_shan';
},
content:function (){
player.draw();
//player.storage.fanghun2++;
},
sub:true,
},
sha:{
audio:"longdan_sha",
enable:["chooseToUse","chooseToRespond"],
filterCard:{
name:"shan",
},
viewAs:{
name:"sha",
},
viewAsFilter:function (player){
if(!player.countCards('h','shan')) return false;
},
prompt:"将一张闪当杀使用或打出",
check:function (){return 1},
ai:{
effect:{
target:function (card,player,target,current){
if(get.tag(card,'respondSha')&&current<0) return 0.6
},
},
respondSha:true,
skillTagFilter:function (player){
if(!player.countCards('h','shan')) return false;
},
order:function (){
return get.order({name:'sha'})+0.1;
},
},
sub:true,
},
shan:{
2020-02-23 05:45:11 +00:00
audio:"longdan_sha",
2019-12-05 15:18:46 +00:00
enable:['chooseToRespond','chooseToUse'],
2019-08-30 15:10:11 +00:00
filterCard:{
name:"sha",
},
viewAs:{
name:"shan",
},
2019-12-05 15:18:46 +00:00
prompt:"将一张杀当闪使用或打出",
2019-08-30 15:10:11 +00:00
check:function (){return 1},
viewAsFilter:function (player){
if(!player.countCards('h','sha')) return false;
},
ai:{
respondShan:true,
skillTagFilter:function (player){
if(!player.countCards('h','sha')) return false;
},
effect:{
target:function (card,player,target,current){
if(get.tag(card,'respondShan')&&current<0) return 0.6
},
},
},
sub:true,
},
},
},
"new_paoxiao":{
audio:"paoxiao",
trigger:{
player:"useCard",
},
filter:function (event,player){
if(_status.currentPhase!=player) return false;
2020-01-11 12:17:57 +00:00
if(event.card.name!='sha') return false;
var history=player.getHistory('useCard',function(evt){
return evt.card.name=='sha';
});
return history&&history.indexOf(event)==1;
2019-08-30 15:10:11 +00:00
},
forced:true,
content:function (){
player.draw();
},
mod:{
cardUsable:function (card,player,num){
if(card.name=='sha') return Infinity;
},
},
ai:{
unequip:true,
skillTagFilter:function (player,tag,arg){
if(!get.zhu(player,'shouyue')) return false;
if(arg&&arg.name=='sha') return true;
return false;
},
},
},
"new_kurou":{
audio:"rekurou",
enable:"phaseUse",
usable:1,
filterCard:true,
check:function (card){
return 8-get.value(card);
},
position:"he",
content:function (){
player.loseHp();
player.draw(3);
player.addTempSkill('kurou_effect','phaseAfter');
},
ai:{
order:8,
result:{
player:function (player){
if(player.hp<=2) return player.countCards('h')==0?1:0;
if(player.countCards('h',{name:'sha',color:'red'})) return 1;
return player.countCards('h')<=player.hp?1:0;
},
},
},
},
"kurou_effect":{
mod:{
cardUsable:function (card,player,num){
if(card.name=='sha') return num+1;
},
},
},
"new_chuli":{
audio:"chulao",
enable:"phaseUse",
usable:1,
filterTarget:function (card,player,target){
if(player==target) return false;
for(var i=0;i<ui.selected.targets.length;i++){
if(ui.selected.targets[i].isFriendOf(target)) return false;
}
return target.countCards('he')>0;
},
filter:function (event,player){
return player.countCards('he')>0;
},
filterCard:true,
position:"he",
selectTarget:[1,3],
check:function (card){
if(get.suit(card)=='spade') return 8-get.value(card);
return 5-get.value(card);
},
2020-01-26 11:35:17 +00:00
contentBefore:function(){
var evt=event.getParent();
evt.draw=[];
if(get.suit(cards[0])=='spade') evt.draw.push(player);
},
2019-08-30 15:10:11 +00:00
content:function (){
"step 0"
2020-01-26 11:35:17 +00:00
player.discardPlayerCard(target,'he',true);
2019-08-30 15:10:11 +00:00
"step 1"
if(result.bool){
2020-01-26 11:35:17 +00:00
if(get.suit(result.cards[0])=='spade') event.getParent().draw.push(target);
2019-08-30 15:10:11 +00:00
}
},
2020-01-26 11:35:17 +00:00
contentAfter:function(){
'step 0'
var list=event.getParent().draw;
if(!list.length) event.finish();
else game.asyncDraw(list);
'step 1'
game.delay();
},
2019-08-30 15:10:11 +00:00
ai:{
result:{
target:-1,
},
threaten:1.2,
order:3,
},
},
"baka_hunshang":{
skillAnimation:true,
2019-09-15 14:41:28 +00:00
animationColor:'wood',
2019-08-30 15:10:11 +00:00
audio:"hunshang",
derivation:["baka_yingzi","baka_yinghun"],
2019-08-30 15:10:11 +00:00
viceSkill:true,
init:function (player){
if(player.checkViceSkill('baka_hunshang')&&!player.viceChanged){
player.removeMaxHp();
}
},
trigger:{
2019-11-22 05:21:06 +00:00
player:"phaseZhunbeiBegin",
2019-08-30 15:10:11 +00:00
},
filter:function (event,player){
return player.hp<=1;
},
forced:true,
//priority:3,
content:function (){
player.addTempSkill('baka_yingzi','phaseAfter');
player.addTempSkill('baka_yinghun','phaseAfter');
},
ai:{
threaten:function (player,target){
if(target.hp==1) return 2;
return 0.5;
},
maixie:true,
effect:{
target:function (card,player,target){
if(!target.hasFriend()) return;
if(get.tag(card,'damage')==1&&target.hp==2&&!target.isTurnedOver()&&
_status.currentPhase!=target&&get.distance(_status.currentPhase,target,'absolute')<=3) return [0.5,1];
},
},
},
},
"baka_yinghun":{
inherit:"gzyinghun",
filter:function (event,player){
return player.isDamaged();
},
//priority:2,
audio:"yinghun",
audioname:["sunce"],
trigger:{
2019-11-22 05:21:06 +00:00
player:"phaseZhunbeiBegin",
2019-08-30 15:10:11 +00:00
},
direct:true,
content:function (){
"step 0"
player.chooseTarget(get.prompt2('gzyinghun'),function(card,player,target){
return player!=target;
}).set('ai',function(target){
var player=_status.event.player;
if(player.maxHp-player.hp==1&&target.countCards('he')==0){
return 0;
}
if(get.attitude(_status.event.player,target)>0){
return 10+get.attitude(_status.event.player,target);
}
if(player.maxHp-player.hp==1){
return -1;
}
return 1;
});
"step 1"
if(result.bool){
event.num=player.maxHp-player.hp;
player.logSkill(event.name,result.targets);
event.target=result.targets[0];
if(event.num==1){
event.directcontrol=true;
}
else{
var str1='摸'+get.cnNumber(event.num,true)+'弃一';
var str2='摸一弃'+get.cnNumber(event.num,true);
player.chooseControl(str1,str2,function(event,player){
return _status.event.choice;
}).set('choice',get.attitude(player,event.target)>0?str1:str2);
event.str=str1;
}
}
else{
event.finish();
}
"step 2"
if(event.directcontrol||result.control==event.str){
event.target.draw(event.num);
event.target.chooseToDiscard(true,'he');
}
else{
event.target.draw();
event.target.chooseToDiscard(event.num,true,'he');
}
},
ai:{
threaten:function (player,target){
if(target.hp==target.maxHp) return 0.5;
if(target.hp==1) return 2;
if(target.hp==2) return 1.5;
return 0.5;
},
maixie:true,
effect:{
target:function (card,player,target){
if(target.maxHp<=3) return;
if(get.tag(card,'damage')){
if(target.hp==target.maxHp) return [0,1];
}
if(get.tag(card,'recover')&&player.hp>=player.maxHp-1) return [0,0];
},
},
},
},
"baka_yingzi":{
mod:{
2020-05-23 04:37:37 +00:00
maxHandcardBase:function (player,num){
return player.maxHp;
2019-08-30 15:10:11 +00:00
},
},
audio:"reyingzi",
audioname:["sunce"],
trigger:{
2020-01-01 14:33:19 +00:00
player:"phaseDrawBegin2",
2019-08-30 15:10:11 +00:00
},
frequent:true,
2020-06-20 04:53:15 +00:00
filter:function(event){return !event.numFixed},
2019-08-30 15:10:11 +00:00
content:function (){
trigger.num++;
},
ai:{
threaten:1.3,
},
},
"new_yiji":{
audio:"yiji",
trigger:{
player:"damageEnd",
},
frequent:true,
filter:function (event){
return (event.num>0)
},
content:function (){
"step 0"
2019-12-16 04:55:19 +00:00
event.cards=game.cardsGotoOrdering(get.cards(2)).cards;
2019-08-30 15:10:11 +00:00
"step 1"
if(event.cards.length>1){
player.chooseCardButton('将“遗计”牌分配给任意角色',true,event.cards,[1,event.cards.length]).set('ai',function(button){
if(ui.selected.buttons.length==0) return 1;
return 0;
});
}
else if(event.cards.length==1){
event._result={links:event.cards.slice(0),bool:true};
}
else{
event.finish();
}
"step 2"
if(result.bool){
for(var i=0;i<result.links.length;i++){
event.cards.remove(result.links[i]);
}
event.togive=result.links.slice(0);
player.chooseTarget('将'+get.translation(result.links)+'交给一名角色',true).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(_status.event.enemy){
return -att;
}
else if(att>0){
return att/(1+target.countCards('h'));
}
else{
return att/100;
}
}).set('enemy',get.value(event.togive[0])<0);
}
"step 3"
if(result.targets.length){
result.targets[0].gain(event.togive,'draw');
player.line(result.targets[0],'green');
game.log(result.targets[0],'获得了'+get.cnNumber(event.togive.length)+'张牌');
event.goto(1);
}
},
ai:{
maixie:true,
"maixie_hp":true,
effect:{
target:function (card,player,target){
if(get.tag(card,'damage')){
if(player.hasSkillTag('jueqing',false,target)) return [1,-2];
if(!target.hasFriend()) return;
var num=1;
if(get.attitude(player,target)>0){
if(player.needsToDiscard()){
num=0.7;
}
else{
num=0.5;
}
}
if(target.hp>=4) return [1,num*2];
if(target.hp==3) return [1,num*1.5];
if(target.hp==2) return [1,num*0.5];
}
},
},
},
},
"new_jieming":{
audio:"jieming",
trigger:{
player:"damageEnd",
},
direct:true,
content:function (){
"step 0"
player.chooseTarget(get.prompt('new_jieming'),'令一名角色将手牌补至X张X为其体力上限且至多为5',function(card,player,target){
return target.countCards('h')<Math.min(target.maxHp,5);
}).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(att>2){
return Math.min(5,target.maxHp)-target.countCards('h');
}
return att/3;
});
"step 1"
if(result.bool){
player.logSkill('new_jieming',result.targets);
for(var i=0;i<result.targets.length;i++){
result.targets[i].draw(Math.min(5,result.targets[i].maxHp)-result.targets[i].countCards('h'));
}
}
},
ai:{
maixie:true,
"maixie_hp":true,
effect:{
target:function (card,player,target,current){
if(get.tag(card,'damage')&&target.hp>1){
if(player.hasSkillTag('jueqing',false,target)) return [1,-2];
var max=0;
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(get.attitude(target,players[i])>0){
max=Math.max(Math.min(5,players[i].hp)-players[i].countCards('h'),max);
}
}
switch(max){
case 0:return 2;
case 1:return 1.5;
case 2:return [1,2];
default:return [0,max];
}
}
if((card.name=='tao'||card.name=='caoyao')&&
target.hp>1&&target.countCards('h')<=target.hp) return [0,0];
},
},
},
},
"new_fangzhu":{
audio:"fangzhu",
trigger:{
player:"damageEnd",
},
direct:true,
content:function (){
"step 0"
player.chooseTarget(get.prompt2('new_fangzhu'),function(card,player,target){
return player!=target
}).ai=function(target){
if(target.hasSkillTag('noturn')) return 0;
var player=_status.event.player;
if(get.attitude(_status.event.player,target)==0) return 0;
if(get.attitude(_status.event.player,target)>0){
if(target.classList.contains('turnedover')) return 1000-target.countCards('h');
2019-10-19 11:18:56 +00:00
if(player.getDamagedHp()<3) return -1;
2019-08-30 15:10:11 +00:00
return 100-target.countCards('h');
}
else{
if(target.classList.contains('turnedover')) return -1;
2019-10-19 11:18:56 +00:00
if(player.getDamagedHp()>=3) return -1;
2019-08-30 15:10:11 +00:00
return 1+target.countCards('h');
}
}
"step 1"
if(result.bool){
player.logSkill('new_fangzhu',result.targets);
event.target=result.targets[0]
event.target.chooseToDiscard('he').set('ai',function(card){
var player=_status.event.player;
if(player.isTurnedOver()) return -1;
2019-12-16 04:55:19 +00:00
return (player.hp*player.hp)-Math.max(1,get.value(card));
2020-04-25 05:40:05 +00:00
}).set('prompt','弃置一张牌并失去一点体力;或选择不弃置,将武将牌翻面并摸'+(player.getDamagedHp())+'张牌。');
2019-08-30 15:10:11 +00:00
}
else event.finish();
"step 2"
if(result.bool){
event.target.loseHp();
}
else{
2019-10-19 11:18:56 +00:00
event.target.draw(player.getDamagedHp());
2019-08-30 15:10:11 +00:00
event.target.turnOver();
}
},
ai:{
maixie:true,
"maixie_hp":true,
effect:{
target:function (card,player,target){
if(get.tag(card,'damage')){
if(player.hasSkillTag('jueqing',false,target)) return [1,-2];
if(target.hp<=1) return;
if(!target.hasFriend()) return;
var hastarget=false;
var turnfriend=false;
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(get.attitude(target,players[i])<0&&!players[i].isTurnedOver()){
hastarget=true;
}
if(get.attitude(target,players[i])>0&&players[i].isTurnedOver()){
hastarget=true;
turnfriend=true;
}
}
if(get.attitude(player,target)>0&&!hastarget) return;
if(turnfriend||target.hp==target.maxHp) return [0.5,1];
if(target.hp>1) return [1,0.5];
}
},
},
},
},
"fengyin_main":{
init:function (player,skill){
var skills=lib.character[player.name1][3];
for(var i=0;i<skills.length;i++){
if(get.is.locked(skills[i])){
skills.splice(i--,1);
}
}
player.disableSkill(skill,skills);
},
onremove:function (player,skill){
player.enableSkill(skill);
},
marktext:"主",
locked:true,
mark:true,
intro:{
content:"主武将牌上的全部非锁定技失效",
},
},
"fengyin_vice":{
init:function (player,skill){
var skills=lib.character[player.name2][3];
for(var i=0;i<skills.length;i++){
if(get.is.locked(skills[i])){
skills.splice(i--,1);
}
}
player.disableSkill(skill,skills);
},
onremove:function (player,skill){
player.enableSkill(skill);
},
locked:true,
mark:true,
marktext:"副",
intro:{
content:"副武将牌上的全部非锁定技失效",
},
},
"new_tieji":{
audio:"retieji",
trigger:{
2019-10-24 04:55:01 +00:00
player:"useCardToPlayered",
2019-08-30 15:10:11 +00:00
},
check:function (event,player){
return get.attitude(player,event.target)<0;
},
2019-10-24 04:55:01 +00:00
filter:function(event){
return event.card.name=='sha';
},
2019-08-30 15:10:11 +00:00
logTarget:"target",
content:function (){
"step 0"
var target=trigger.target;
var controls=[];
if(get.zhu(player,'shouyue')){
if(!target.isUnseen(0)) target.addTempSkill('fengyin_main');
if(!target.isUnseen(1)) target.addTempSkill('fengyin_vice');
event.goto(2);
}
if(!target.isUnseen(0)&&!target.hasSkill('fengyin_main')) controls.push("主将");
if(!target.isUnseen(1)&&!target.hasSkill('fengyin_vice')) controls.push("副将");
if(controls.length>0){
if(controls.length==1) event._result={control:controls[0]};
else{
player.chooseControl(controls).set('ai',function(){
var choice='主将';
var skills=lib.character[target.name2][3];
for(var i=0;i<skills.length;i++){
var info=get.info(skills[i]);
if(info&&info.ai&&info.ai.maixie){
choice='副将';break;
}
}
return choice;
}).set('prompt','请选择一个武将牌,令'+get.translation(target)+'该武将牌上的非锁定技全部失效。');
}
}
else event.goto(2);
"step 1"
if(result.control){
player.popup(result.control,'fire');
var target=trigger.target;
if(result.control=="主将") target.addTempSkill("fengyin_main");
else target.addTempSkill("fengyin_vice");
}
"step 2"
player.judge(function(){return 0});
"step 3"
var suit=get.suit(result.card);
var target=trigger.target;
var num=target.countCards('h','shan');
target.chooseToDiscard('请弃置一张'+get.translation(suit)+'牌,否则不能使用闪抵消此杀','he',function(card){
return get.suit(card)==_status.event.suit;
}).set('ai',function(card){
var num=_status.event.num;
if(num==0) return 0;
if(card.name=='shan') return num>1?2:0;
return 8-get.value(card);
}).set('num',num).set('suit',suit);
"step 4"
if(!result.bool){
2019-10-24 04:55:01 +00:00
trigger.getParent().directHit.add(trigger.target);
2019-08-30 15:10:11 +00:00
}
},
},
hmkyuanyu:{
2019-10-19 11:18:56 +00:00
audio:'zongkui',
2019-08-30 15:10:11 +00:00
trigger:{
2019-11-14 05:47:38 +00:00
player:"damageBegin4",
2019-08-30 15:10:11 +00:00
},
forced:true,
filter:function (event,player){
if(event.num<=0||!event.source) return false;
var n1=player.getNext();
var p1=player.getPrevious();
if(event.source!=n1&&event.source!=p1) return true;
},
content:function (){
trigger.cancel();
},
ai:{
effect:{
target:function (card,player,target){
if(player.hasSkillTag('jueqing',false,target)) return;
if(player==target.getNext()||player==target.getPrevious()) return;
var num=get.tag(card,'damage');
if(num){
return 0;
}
},
},
},
},
hmkguishu:{
2019-10-19 11:18:56 +00:00
audio:'bmcanshi',
2019-08-30 15:10:11 +00:00
enable:"phaseUse",
filter:function (event,player){
return player.countCards('h',{suit:'spade'})>0;
},
init:function (player){
2020-02-04 05:31:47 +00:00
if(!player.storage.hmkguishu) player.storage.hmkguishu=0;
2019-08-30 15:10:11 +00:00
},
chooseButton:{
dialog:function (event,player){
var list=['yuanjiao','zhibi'];
for(var i=0;i<list.length;i++){
list[i]=['锦囊','',list[i]];
}
return ui.create.dialog('鬼术',[list,'vcard']);
},
filter:function (button,player){
var name=button.link[2];
if(player.storage.hmkguishu==1&&name=='yuanjiao') return false;
if(player.storage.hmkguishu==2&&name=='zhibi') return false;
return lib.filter.filterCard({name:name},player,_status.event.getParent());
},
check:function (button){
var player=_status.event.player;
if(button.link=='yuanjiao'){
return 3;
}
if(button.link=='zhibi'){
if(player.countCards('h',{suit:'spade'})>2) return 1;
return 0;
}
},
backup:function (links,player){
return {
2019-10-19 11:18:56 +00:00
audio:'bmcanshi',
2019-08-30 15:10:11 +00:00
filterCard:function (card,player){
return get.suit(card)=='spade';
},
position:"h",
selectCard:1,
popname:true,
ai:function(card){
return 6-ai.get.value(card);
},
viewAs:{name:links[0][2]},
onuse:function(result,player){
player.logSkill('hmkguishu');
if(result.card.name=='yuanjiao') player.storage.hmkguishu=1;
else player.storage.hmkguishu=2;
},
}
},
prompt:function (links,player){
return '将一张手牌当作'+get.translation(links[0][2])+'使用';
},
},
ai:{
order:4,
result:{
player:function (player){
return 2;
},
},
threaten:1.6,
},
},
"_mingzhisuodingji":{
mode:["guozhan"],
enable:"phaseUse",
filter:function (event,player){
var bool=false;
var skillm=lib.character[player.name1][3];
var skillv=lib.character[player.name2][3];
if(player.isUnseen(0)){
for(var i=0;i<skillm.length;i++){
if(get.is.locked(skillm[i])){
bool=true;
}
}
}
if(player.isUnseen(1)){
for(var i=0;i<skillv.length;i++){
if(get.is.locked(skillv[i])){
bool=true;
}
}
}
return bool;
},
popup:false,
content:function (){
"step 0"
var choice=[];
var skillm=lib.character[player.name1][3];
var skillv=lib.character[player.name2][3];
if(player.isUnseen(0)){
for(var i=0;i<skillm.length;i++){
if(get.is.locked(skillm[i])&&!choice.contains('明置主将')){
choice.push("明置主将");
}
}
}
if(player.isUnseen(1)){
for(var i=0;i<skillv.length;i++){
if(get.is.locked(skillv[i])&&!choice.contains('明置副将')){
choice.push("明置副将");
}
}
}
if(choice.length==2) choice.push('全部明置')
player.chooseControl(choice);
"step 1"
if(result.control){
switch(result.control){
case "取消":break;
case "明置主将":player.showCharacter(0);break;
case "明置副将":player.showCharacter(1);break;
case "全部明置":player.showCharacter(2);break;
}
}
},
ai:{
order:11,
result:{
player:-99,
},
},
},
/*----分界线----*/
_viewnext:{
trigger:{
global:"gameDrawBefore",
},
silent:true,
popup:false,
forced:true,
filter:function (){
if(_status.connectMode&&!lib.configOL.viewnext) return false;
else if(!_status.connectMode&&!get.config('viewnext')) return false;
return game.players.length>1;
},
content:function (){
var target=player.getNext();
player.viewCharacter(target,1);
},
},
_aozhan_judge:{
trigger:{
player:"phaseBefore",
},
forced:true,
priority:22,
filter:function (event,player){
if(get.mode()!='guozhan') return false;
if(_status.connectMode&&!lib.configOL.aozhan) return false;
else if(!_status.connectMode&&!get.config('aozhan')) return false;
if(_status._aozhan) return false;
if(game.players.length>4) return false;
if(game.players.length>3&&game.players.length+game.dead.length<=7) return false;
for(var i=0;i<lib.group.length;i++){
var num=get.population(lib.group[i]);
if(num>1) return false;
}
return true;
},
content:function (){
var color=get.groupnature(player.group,"raw");
if(player.isUnseen()) color='fire';
player.$fullscreenpop('鏖战模式',color);
game.broadcastAll(function(){
_status._aozhan=true;
ui.aozhan=ui.create.div('.touchinfo.left',ui.window);
ui.aozhan.innerHTML='鏖战模式';
if(ui.time3) ui.time3.style.display='none';
2020-01-05 09:13:44 +00:00
ui.aozhanInfo=ui.create.system('鏖战模式',null,true);
lib.setPopped(ui.aozhanInfo,function(){
var uiintro=ui.create.dialog('hidden');
uiintro.add('鏖战模式');
var list=[
'当游戏中仅剩四名或更少角色时(七人以下游戏时改为三名或更少),若此时全场没有超过一名势力相同的角色,则从一个新的回合开始,游戏进入鏖战模式直至游戏结束。',
'在鏖战模式下,任何角色均不是非转化的【桃】的合法目标。【桃】可以被当做【杀】或【闪】使用或打出。',
'进入鏖战模式后,即使之后有两名或者更多势力相同的角色出现,仍然不会取消鏖战模式。'
];
var intro='<ul style="text-align:left;margin-top:0;width:450px">';
for(var i=0;i<list.length;i++){
intro+='<li>'+list[i];
}
intro+='</ul>'
uiintro.add('<div class="text center">'+intro+'</div>');
var ul=uiintro.querySelector('ul');
if(ul){
ul.style.width='180px';
}
uiintro.add(ui.create.div('.placeholder'));
return uiintro;
},250);
2019-08-30 15:10:11 +00:00
game.playBackgroundMusic();
});
game.countPlayer(function(current){current.addSkill('aozhan')});
},
},
2020-10-09 03:37:02 +00:00
"_xianqu_skill":{
2019-11-14 05:47:38 +00:00
ruleSkill:true,
2019-08-30 15:10:11 +00:00
enable:"phaseUse",
2020-10-09 03:37:02 +00:00
filter:function (event,player){
return player.hasMark('_xianqu_skill');
},
2019-08-30 15:10:11 +00:00
usable:1,
mark:true,
intro:{
content:"◇出牌阶段,你可以弃置此标记,然后将手牌摸至四张并观看一名其他角色的一张武将牌。",
},
content:function (){
"step 0"
2020-10-09 03:37:02 +00:00
player.removeMark('_xianqu_skill',1);
game.log(player,'移去了','#g先驱','标记');
2019-11-14 05:47:38 +00:00
var num=4-player.countCards('h');
if(num) player.draw(num);
2020-10-09 03:37:02 +00:00
"step 1"
if(game.hasPlayer(function(current){
return current!=player&&current.isUnseen(2);
})) player.chooseTarget('是否观看一名其他角色的一张暗置武将牌?',function(card,player,target){
2019-08-30 15:10:11 +00:00
return target!=player&&target.isUnseen(2);
}).set('ai',function(target){
if(target.isUnseen()){
var next=_status.event.player.getNext();
if (target!=next) return 10;
return 9;
}
return -get.attitude(_status.event.player,target);
});
2020-10-09 03:37:02 +00:00
else event.finish();
"step 2"
2019-08-30 15:10:11 +00:00
if(result.bool){
event.target=result.targets[0];
player.line(event.target,'green');
var controls=[];
if(event.target.isUnseen(0)) controls.push('主将');
if(event.target.isUnseen(1)) controls.push('副将');
if(controls.length>1){
player.chooseControl(controls);
}
if(controls.length==0) event.finish();
}
else{
2020-10-09 03:37:02 +00:00
player.removeSkill('_xianqu_skill');
2019-08-30 15:10:11 +00:00
event.finish();
}
2020-10-09 03:37:02 +00:00
"step 3"
2019-08-30 15:10:11 +00:00
if(result.control){
if(result.control=='主将'){
player.viewCharacter(event.target,0);
}
else{
player.viewCharacter(event.target,1);
}
}
else if(target.isUnseen(0)){
player.viewCharacter(event.target,0);
}
else{
player.viewCharacter(event.target,1);
}
},
ai:{
order:1,
result:{
2019-11-14 05:47:38 +00:00
player:function(player){
if(4-player.countCards('h')<2) return 0;
return 1;
},
2019-08-30 15:10:11 +00:00
},
},
},
"zhulianbihe_skill":{
2019-11-14 05:47:38 +00:00
ruleSkill:true,
2019-08-30 15:10:11 +00:00
mark:true,
intro:{
content:"◇出牌阶段,你可以弃置此标记 然后摸两张牌。<br>◇你可以将此标记当做【桃】使用。",
},
},
"yinyang_skill":{
mark:true,
intro:{
content:"◇出牌阶段,你可以弃置此标记,然后摸一张牌。<br>◇弃牌阶段,你可以弃置此标记,然后本回合手牌上限+2。",
},
},
2020-10-09 03:37:02 +00:00
"_zhulianbihe_skill_draw":{
2019-11-14 05:47:38 +00:00
ruleSkill:true,
2019-08-30 15:10:11 +00:00
enable:"phaseUse",
2020-10-09 03:37:02 +00:00
filter:function(event,player){
return player.hasMark('zhulianbihe_skill');
},
chooseButton:{
dialog:function(event,player){
return ui.create.dialog('珠联璧合',[[
['摸牌','','zhulian_card'],
['基本','','tao']
],'vcard'],'hidden');
},
filter:function(button,player){
if(button.link[2]!='tao') return true;
return lib.filter.filterCard({name:'tao',isCard:true},player,_status.event.getParent());
},
check:function(button){
var player=_status.event.player;
if(button.link[2]=='tao') return get.effect_use(player,{name:'tao'},player)>0?2:0;
if(player.getHandcardLimit()-player.countCards('h')>1&&!game.hasPlayer(function(current){
return current!=player&&current.isFriendOf(player)&&current.hp+current.countCards('h','shan')<=2;
})) return 1;
return 0;
},
backup:function(links,player){
if(links[0][2]=='tao') return get.copy(lib.skill._zhulianbihe_skill_tao);
return {
content:function(){
player.draw(2);
player.removeMark('zhulianbihe_skill',1);
},
};
},
2019-08-30 15:10:11 +00:00
},
ai:{
2020-10-09 03:37:02 +00:00
order:function(item,player){
if(get.effect_use(player,{name:'tao'},player)>0) return get.order({name:'tao'},player)-0.1;
return 7.2;
2019-08-30 15:10:11 +00:00
},
result:{
2020-10-09 03:37:02 +00:00
player:1,
2019-08-30 15:10:11 +00:00
},
},
},
2020-10-09 03:37:02 +00:00
"_zhulianbihe_skill_tao":{
2019-11-14 05:47:38 +00:00
ruleSkill:true,
2019-08-30 15:10:11 +00:00
enable:"chooseToUse",
2020-10-09 03:37:02 +00:00
filter:function(event,player){
return event.type!='phase'&&player.hasMark('zhulianbihe_skill');
},
2021-01-10 02:28:38 +00:00
viewAsFilter:function(player){
return player.hasMark('zhulianbihe_skill');
},
2019-08-30 15:10:11 +00:00
viewAs:{
name:"tao",
2020-10-09 03:37:02 +00:00
isCard:true,
2019-08-30 15:10:11 +00:00
},
2020-10-09 03:37:02 +00:00
filterCard:function(){return false},
2019-08-30 15:10:11 +00:00
selectCard:-1,
2020-10-09 03:37:02 +00:00
precontent:function(){
player.removeMark('zhulianbihe_skill',1);
2019-08-30 15:10:11 +00:00
},
},
2020-10-09 03:37:02 +00:00
"_yinyang_skill_draw":{
2019-11-14 05:47:38 +00:00
ruleSkill:true,
2019-08-30 15:10:11 +00:00
enable:"phaseUse",
2020-10-09 03:37:02 +00:00
filter:function(event,player){
return player.hasMark('yinyang_skill');
},
content:function(){
2019-08-30 15:10:11 +00:00
player.draw();
2020-10-09 03:37:02 +00:00
player.removeMark('yinyang_skill',1);
2019-08-30 15:10:11 +00:00
},
ai:{
order:function (item,player){
if(player.countCards('h')<player.getHandcardLimit()){
return 7.2;
}
else return 1;
},
result:{
player:function (player){
if(player.countCards('h')>player.getHandcardLimit()) return 0;
return 1;
},
},
},
},
2020-10-09 03:37:02 +00:00
"_yinyang_skill_add":{
2019-11-14 05:47:38 +00:00
ruleSkill:true,
2019-08-30 15:10:11 +00:00
trigger:{
2020-10-09 03:37:02 +00:00
player:"phaseDiscardBegin",
2019-08-30 15:10:11 +00:00
},
filter:function (event,player){
2020-10-09 03:37:02 +00:00
return player.hasMark('yinyang_skill')&&player.needsToDiscard();
2019-08-30 15:10:11 +00:00
},
2020-10-09 03:37:02 +00:00
prompt:"是否弃置一枚【阴阳鱼】标记,使本回合的手牌上限+2",
2019-08-30 15:10:11 +00:00
content:function (){
player.addTempSkill('yinyang_add','phaseAfter');
2020-10-09 03:37:02 +00:00
player.removeMark('yinyang_skill',1);
2019-08-30 15:10:11 +00:00
},
},
"yinyang_add":{
mod:{
maxHandcard:function (player,num){
return num+2;
},
},
},
/*----分界线----*/
_lianheng:{
mode:['guozhan'],
enable:'phaseUse',
usable:1,
prompt:'将至多三张可合纵的牌交给一名与你势力不同的角色,或未确定势力的角色,若你交给与你势力不同的角色,则你摸等量的牌',
filter:function(event,player){
return (player.getCards('h',function(card){
return card.hasTag('lianheng');
}).length);
},
filterCard:function(card){
return card.hasTag('lianheng');
},
filterTarget:function(card,player,target){
if(target==player) return false;
if(player.isUnseen()) return target.isUnseen();
if(player.identity=='ye') return true;
return target.identity!=player.identity;
},
2020-03-13 10:02:18 +00:00
check:function(card){
if(card.name=='tao') return 0;
return 5-get.value(card);
},
2019-08-30 15:10:11 +00:00
selectCard:[1,3],
prepare:'give',
discard:false,
// delay:0.5,
content:function(){
"step 0"
target.gain(cards,player);
"step 1"
if(!target.isUnseen()){
player.draw(cards.length);
}
},
ai:{
basic:{
order:2
},
result:{
player:function(player,target){
2020-03-13 10:02:18 +00:00
var huoshao=false;
for(var i=0;i<ui.selected.cards.length;i++){
if(ui.selected.cards[i].name=='huoshaolianying'){huoshao=true;break}
}
if(huoshao&&player.inline(target.getNext())) return -3;
2019-08-30 15:10:11 +00:00
if(target.isUnseen()) return 0;
if(player.isMajor()) return 0;
return 0.5;
},
target:function(player,target){
if(target.isUnseen()) return 0;
return 1;
}
},
}
},
qianhuan:{
group:['qianhuan_add','qianhuan_use'],
init:function(player){
2020-02-08 03:39:33 +00:00
if(!player.storage.qianhuan) player.storage.qianhuan=[];
2019-08-30 15:10:11 +00:00
},
intro:{
2020-02-08 03:39:33 +00:00
content:'cards',
onunmark:function(storage,player){
if(storage&&storage.length){
player.$throw(storage,1000);
game.cardsDiscard(storage);
game.log(storage,'被置入了弃牌堆');
storage.length=0;
}
},
2019-08-30 15:10:11 +00:00
},
ai:{
threaten:1.8
},
audio:2,
subSkill:{
add:{
trigger:{global:'damageEnd'},
filter:function(event,player){
var suits=[];
for(var i=0;i<player.storage.qianhuan.length;i++){
suits.add(get.suit(player.storage.qianhuan[i]));
}
return player.sameIdentityAs(event.player)&&player.countCards('he',function(card){
return !suits.contains(get.suit(card));
});
},
direct:true,
content:function(){
'step 0'
var suits=[];
for(var i=0;i<player.storage.qianhuan.length;i++){
suits.add(get.suit(player.storage.qianhuan[i]));
}
player.chooseCard('he',get.prompt2('qianhuan'),function(card){
return !_status.event.suits.contains(get.suit(card));
}).set('ai',function(card){
if(!_status.event.temp){
return 9-get.value(card);
}
return 0;
}).set('temp',!player.hasStockSkill('qianhuan')).set('suits',suits);
'step 1'
if(result.bool){
var card=result.cards[0]
player.storage.qianhuan.add(card);
player.lose(card,ui.special);
2020-02-04 05:31:47 +00:00
player.$give(card,player,false);
2019-08-30 15:10:11 +00:00
player.markSkill('qianhuan',true);
player.logSkill('qianhuan');
}
}
},
use:{
2019-10-24 04:55:01 +00:00
trigger:{global:'useCardToTarget'},
2019-08-30 15:10:11 +00:00
filter:function(event,player){
if(!['basic','trick'].contains(get.type(event.card,'trick'))) return false;
return event.target&&player.sameIdentityAs(event.target)&&event.targets.length==1&&player.storage.qianhuan.length;
},
direct:true,
content:function(){
'step 0'
var goon=get.effect(trigger.target,trigger.card,trigger.player,player)<0;
if(goon){
if(['tiesuo','diaohulishan','lianjunshengyan','zhibi','chiling','lulitongxin'].contains(trigger.card.name)){
goon=false;
}
else if(trigger.card.name=='sha'){
if(trigger.target.mayHaveShan()||trigger.target.hp>=3){
goon=false;
}
}
else if(trigger.card.name=='guohe'){
if(trigger.target.countCards('he')>=3||!trigger.target.countCards('h')){
goon=false;
}
}
else if(trigger.card.name=='shuiyanqijunx'){
if(trigger.target.countCards('e')<=1||trigger.target.hp>=3){
goon=false;
}
}
else if(get.tag(trigger.card,'damage')&&trigger.target.hp>=3){
goon=false;
}
}
player.chooseButton().set('goon',goon).set('ai',function(button){
if(_status.event.goon) return 1;
return 0;
}).set('createDialog',[get.prompt('qianhuan'),'<div class="text center">移去一张“千幻”牌令'+
get.translation(trigger.player)+'对'+get.translation(trigger.target)+'的'+get.translation(trigger.card)+'失效</div>',player.storage.qianhuan]);
'step 1'
if(result.bool){
var card=result.links[0];
player.storage.qianhuan.remove(card);
if(player.storage.qianhuan.length){
player.updateMarks('qianhuan');
}
else{
player.unmarkSkill('qianhuan');
}
game.cardsDiscard(card);
player.$throw(card);
player.logSkill('qianhuan',trigger.player);
2019-10-24 04:55:01 +00:00
trigger.getParent().targets.remove(trigger.target);
2019-08-30 15:10:11 +00:00
}
}
}
}
},
gzzhiman:{
audio:'zhiman',
inherit:'zhiman',
content:function(){
'step 0'
if(trigger.player.countGainableCards(player,'ej')){
player.gainPlayerCard(trigger.player,'ej',true);
}
trigger.cancel();
'step 1'
if(player.sameIdentityAs(trigger.player)){
trigger.player.mayChangeVice();
}
}
},
gzdiancai:{
2020-01-03 15:25:01 +00:00
audio:'diancai',
2019-08-30 15:10:11 +00:00
trigger:{global:'phaseUseEnd'},
filter:function(event,player){
2020-01-03 15:25:01 +00:00
if(_status.currentPhase==player) return false;
var num=0;
player.getHistory('lose',function(evt){
if(evt.cards2&&evt.getParent('phaseUse')==event) num+=evt.cards2.length;
});
return num>=player.hp;
2019-08-30 15:10:11 +00:00
},
content:function(){
'step 0'
var num=player.maxHp-player.countCards('h');
if(num>0){
player.draw(num);
}
'step 1'
player.mayChangeVice();
},
},
/*diaodu:{
enable:'phaseUse',
audio:2,
usable:1,
filterTarget:function(card,player,target){
return player.sameIdentityAs(target);
},
selectTarget:-1,
content:function(){
'step 0'
var use=target.countCards('h',{type:'equip'})>0;
var move=false;
var es=target.getCards('e');
if(es.length&&target.identity!='ye'){
move=game.hasPlayer(function(current){
if(current!=target&&target.identity!=current.identity){
for(var i=0;i<es.length;i++){
if(current.canEquip(es[i])){
return true;
}
}
}
return false;
});
}
if(move&&use){
target.chooseControlList(['使用一张装备牌','将装备区里的一张牌移动至另一名与你势力相同的角色的装备区里']);
}
else if(move){
event.goto(3);
}
else if(use){
event.goto(2);
}
else{
event.finish();
}
'step 1'
if(result.index==0){
event.goto(2);
}
else if(result.index==1){
event.goto(3);
}
'step 2'
target.chooseToUse('使用一张装备牌',function(card,player){
return get.type(card)=='equip'&&lib.filter.filterCard(card,player);
});
event.finish();
'step 3'
target.chooseCardButton(target.getCards('e'),'移动一件装备').set('filterButton',function(button){
var player=_status.event.player;
return game.hasPlayer(function(current){
return current!=player&&current.canEquip(button.link);
});
}).set('ai',function(button){
return Math.random();
});
'step 4'
if(result.bool){
var card=result.links[0];
target.chooseTarget(function(card,player,target){
var player=_status.event.player;
var card=_status.event.card;
return player!=target&&player.identity==target.identity&&target.canEquip(card);
}).set('card',card).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(target.hasSkillTag('noe')) att+=2;
return att;
});
event.card=card;
}
else{
event.finish();
}
'step 5'
if(result.bool){
event.toequip=result.targets[0];
target.line(event.toequip,'green');
target.$give(event.card,event.toequip);
game.delayx();
}
else{
event.finish();
}
'step 6'
event.toequip.equip(event.card);
},
ai:{
order:7,
result:{
player:function(player){
if(game.hasPlayer(function(current){
return current!=player&&current.sameIdentityAs(player);
})){
return 1;
}
return 0;
}
}
}
},*/
xuanlve:{
2020-10-15 05:41:31 +00:00
trigger:{
player:'loseAfter',
source:'gainAfter',
global:['equipAfter','addJudgeAfter'],
},
2019-08-30 15:10:11 +00:00
direct:true,
filter:function(event,player){
2020-10-15 05:41:31 +00:00
var evt=event.getl(player);
return evt&&evt.es&&evt.es.length>0;
2019-08-30 15:10:11 +00:00
},
content:function(){
'step 0'
player.chooseTarget(get.prompt('xuanlve'),'弃置一名其他角色的一张牌',function(card,player,target){
return target!=player&&target.countDiscardableCards(player,'he');
}).set('ai',function(target){
return -get.attitude(_status.event.player,target);
});
'step 1'
if(result.bool){
player.logSkill('xuanlve',result.targets);
player.discardPlayerCard(result.targets[0],'he',true);
}
},
ai:{
noe:true,
reverseEquip:true,
effect:{
target:function(card,player,target,current){
if(get.type(card)=='equip') return [1,1];
}
}
}
},
lianzi:{
enable:'phaseUse',
usable:1,
audio:2,
filterCard:true,
check:function(card){
if(get.type(card)=='equip') return 0;
var player=_status.event.player;
var num=game.countPlayer(function(current){
if(current.identity=='wu'){
return current.countCards('e');
}
})+player.storage.yuanjiangfenghuotu.length;
if(num>=5){
return 8-get.value(card);
}
if(num>=3){
return 7-get.value(card);
}
if(num>=2){
return 3-get.value(card);
}
return 0;
},
content:function(){
'step 0'
var num=game.countPlayer(function(current){
if(current.identity=='wu'){
return current.countCards('e');
}
})+player.storage.yuanjiangfenghuotu.length;
if(num){
event.shown=get.cards(num);
player.showCards(event.shown,get.translation('lianzi'));
}
else{
event.finish();
return;
}
'step 1'
var list=[];
var discards=[];
var type=get.type(cards[0],'trick');
for(var i=0;i<event.shown.length;i++){
if(get.type(event.shown[i],'trick')==type){
list.push(event.shown[i]);
}
else{
discards.push(event.shown[i]);
}
}
game.cardsDiscard(discards);
if(list.length){
player.gain(list,'gain2');
if(list.length>=3&&player.hasStockSkill('lianzi')){
player.removeSkill('lianzi');
player.addSkill('gzzhiheng');
}
}
},
ai:{
order:7,
result:{
player:1
}
}
},
jubao:{
mod:{
2020-03-14 11:25:06 +00:00
canBeGained:function(card,source,player){
if(source!=player&&get.position(card)=='e'&&get.subtype(card)=='equip5') return false;
2019-08-30 15:10:11 +00:00
}
},
2019-11-22 05:21:06 +00:00
trigger:{player:'phaseJieshuBegin'},
2019-08-30 15:10:11 +00:00
audio:2,
forced:true,
unique:true,
filter:function(event,player){
if(game.hasPlayer(function(current){
return current.countCards('ej',function(card){
return card.name=='dinglanyemingzhu';
});
})){
return true;
}
for(var i=0;i<ui.discardPile.childElementCount;i++){
if(ui.discardPile.childNodes[i].name=='dinglanyemingzhu'){
return true;
}
}
return false;
},
content:function(){
'step 0'
player.draw();
'step 1'
var target=game.findPlayer(function(current){
return current!=player&&current.countCards('e','dinglanyemingzhu');
});
if(target&&target.countGainableCards(player,'he')){
player.line(target,'green');
player.gainPlayerCard(target,true);
}
},
ai:{
threaten:1.5
}
},
jiahe:{
unique:true,
forceunique:true,
audio:2,
derivation:'yuanjiangfenghuotu',
mark:true,
global:['jiahe_put','jiahe_skill'],
init:function(player){
2020-02-08 03:39:33 +00:00
if(!player.storage.yuanjiangfenghuotu) player.storage.yuanjiangfenghuotu=[];
2019-08-30 15:10:11 +00:00
},
ai:{
threaten:2
},
trigger:{player:'damageEnd'},
forced:true,
filter:function(event,player){
return event.card&&(event.card.name=='sha'||get.type(event.card,'trick'))&&player.storage.yuanjiangfenghuotu.length>0;
},
content:function(){
'step 0'
player.chooseCardButton('将一张“烽火”置入弃牌堆',player.storage.yuanjiangfenghuotu,true);
'step 1'
if(result.bool){
player.$throw(result.links);
var card=result.links[0];
game.cardsDiscard(card);
player.storage.yuanjiangfenghuotu.remove(card);
player.syncStorage('yuanjiangfenghuotu');
player.updateMarks('yuanjiangfenghuotu');
}
}
},
jiahe_put:{
enable:'phaseUse',
2020-02-04 05:31:47 +00:00
audio:2,
forceaudio:true,
2019-08-30 15:10:11 +00:00
filter:function(event,player){
var zhu=get.zhu(player,'jiahe');
if(zhu&&zhu.storage.yuanjiangfenghuotu){
return player.countCards('he',{type:'equip'})>0;
}
return false;
},
filterCard:{type:'equip'},
position:'he',
usable:1,
check:function(card){
var zhu=get.zhu(_status.event.player,'jiahe');
if(!zhu) return 0;
var num=7-get.value(card);
if(get.position(card)=='h'){
if(zhu.storage.yuanjiangfenghuotu>=5){
return num-3;
}
return num+3;
}
else{
var player=_status.event.player;
var zhu=get.zhu(player,'jiahe');
if(zhu.storage.yuanjiangfenghuotu>=5&&!player.hasSkillTag('noe')){
return num-5;
}
}
return num;
},
discard:false,
lose:true,
2019-11-22 05:21:06 +00:00
toStorage:true,
2019-08-30 15:10:11 +00:00
prepare:function(cards,player){
var zhu=get.zhu(player,'jiahe');
2020-02-04 05:31:47 +00:00
player.$give(cards,zhu,false);
2019-08-30 15:10:11 +00:00
player.line(zhu);
},
content:function(){
var zhu=get.zhu(player,'jiahe');
zhu.storage.yuanjiangfenghuotu.add(cards[0]);
zhu.syncStorage('yuanjiangfenghuotu');
zhu.updateMarks('yuanjiangfenghuotu');
2019-11-22 05:21:06 +00:00
//event.trigger('addCardToStorage');
2019-08-30 15:10:11 +00:00
},
ai:{
2020-03-09 13:12:08 +00:00
order:10,
2019-08-30 15:10:11 +00:00
result:{
player:1
}
}
},
jiahe_skill:{
2019-11-22 05:21:06 +00:00
trigger:{player:'phaseZhunbeiBegin'},
2019-08-30 15:10:11 +00:00
direct:true,
2020-02-04 05:31:47 +00:00
audio:"jiahe_put",
forceaudio:true,
2019-08-30 15:10:11 +00:00
filter:function(event,player){
var zhu=get.zhu(player,'jiahe');
if(zhu&&zhu.storage.yuanjiangfenghuotu&&zhu.storage.yuanjiangfenghuotu.length){
return true;
}
return false;
},
content:function(){
'step 0'
var zhu=get.zhu(player,'jiahe');
event.num=zhu.storage.yuanjiangfenghuotu.length;
'step 1'
var list=[];
if(event.num>=1&&!player.hasSkill('reyingzi')) list.push('reyingzi');
if(event.num>=2&&!player.hasSkill('haoshi')) list.push('haoshi');
if(event.num>=3&&!player.hasSkill('shelie')) list.push('shelie');
if(event.num>=4&&!player.hasSkill('duoshi')) list.push('duoshi');
if(!list.length){
event.finish();
return;
}
var prompt2='你可以获得下列一项技能直到回合结束';
if(list.length>=5){
if(event.done){
prompt2+=' (2/2)';
}
else{
prompt2+=' (1/2)';
}
}
list.push('cancel2');
player.chooseControl(list).set('prompt',get.translation('yuanjiangfenghuotu')).
set('prompt2',prompt2).set('centerprompt2',true).set('ai',function(evt,player){
var controls=_status.event.controls;
if(controls.contains('haoshi')){
var nh=player.countCards('h');
if(player.hasSkill('reyingzi')){
if(nh==0) return 'haoshi';
}
else{
if(nh<=1) return 'haoshi';
}
}
if(controls.contains('shelie')){
return 'shelie';
}
if(controls.contains('reyingzi')){
return 'reyingzi';
}
if(controls.contains('duoshi')){
return 'duoshi';
}
return controls.randomGet();
});
'step 2'
if(result.control!='cancel2'){
player.addTempSkill(result.control);
2020-02-04 05:31:47 +00:00
if(!event.done) player.logSkill('jiahe_put');
2019-08-30 15:10:11 +00:00
game.log(player,'获得了技能','【'+get.translation(result.control)+'】');
if(event.num>=5&&!event.done){
event.done=true;
event.goto(1);
}
}
}
},
yuanjiangfenghuotu:{
unique:true,
forceunique:true,
nopop:true,
mark:true,
intro:{
content:'cards',
2020-02-08 03:39:33 +00:00
onunmark:function(storage,player){
if(storage&&storage.length){
player.$throw(storage,1000);
game.cardsDiscard(storage);
game.log(storage,'被置入了弃牌堆');
storage.length=0;
}
},
2019-08-30 15:10:11 +00:00
mark:function(dialog,content,player){
if(content&&content.length){
dialog.addSmall(content);
}
dialog.addText('<ul style="margin-top:5px;padding-left:22px;"><li>每名吴势力角色的出牌阶段限一次,该角色可以将一张装备牌置于“缘江烽火图”上,称之为“烽火”。<li>根据“烽火”的数量,所有吴势力角色可于其准备阶段开始时选择并获得其中一个技能直到回合结束:一张以上~英姿;两张以上~好施;三张以上~涉猎;四张以上~度势;五张以上~可额外选择一项。<li>锁定技,当你受到【杀】或锦囊牌造成的伤害后,你将一张“烽火”置入弃牌堆。',false)
}
}
},
gzqice:{
enable:'phaseUse',
usable:1,
2019-10-19 11:18:56 +00:00
audio:"qice_backup",
2019-08-30 15:10:11 +00:00
filter:function(event,player){
return player.countCards('h')>0
},
group:'gzqice_change',
subSkill:{
change:{
trigger:{player:'useCardAfter'},
filter:function(event,player){
return event.skill=='gzqice_backup';
},
silent:true,
content:function(){
player.mayChangeVice();
event.skill='gzqice';
event.trigger('skillAfter');
}
}
},
chooseButton:{
dialog:function(){
2021-01-10 02:28:38 +00:00
var list=lib.inpile;
var list2=[];
2019-08-30 15:10:11 +00:00
for(var i=0;i<list.length;i++){
2021-01-10 02:28:38 +00:00
if(list[i]!='wuxie'&&get.type(list[i])=='trick') list2.push(['锦囊','',list[i]]);
2019-08-30 15:10:11 +00:00
}
2021-01-10 02:28:38 +00:00
return ui.create.dialog(get.translation('gzqice'),[list2,'vcard']);
2019-08-30 15:10:11 +00:00
},
filter:function(button,player){
var card={name:button.link[2]};
var info=get.info(card);
var num=player.countCards('h');
2020-12-19 01:36:50 +00:00
//if(get.tag(card,'multitarget')&&get.select(info.selectTarget)[1]==-1){
if(get.select(info.selectTarget)[1]==-1){
2019-08-30 15:10:11 +00:00
if(game.countPlayer(function(current){
return player.canUse(card,current)
})>num){
return false;
}
}
else if(info.changeTarget){
var giveup=true;
var list=game.filterPlayer(function(current){
return player.canUse(card,current);
});
for(var i=0;i<list.length;i++){
var targets=[list[i]];
info.changeTarget(player,targets);
if(targets.length<=num){
giveup=false;break;
}
}
if(giveup){
return false;
}
}
return lib.filter.filterCard(card,player,_status.event.getParent());
},
check:function(button){
2020-02-14 05:33:43 +00:00
if(['chiling','xietianzi','tiesuo','lulitongxin','diaohulishan','jiedao'].contains(button.link[2])) return 0;
return _status.event.player.getUseValue(button.link[2]);
2019-08-30 15:10:11 +00:00
},
backup:function(links,player){
return {
filterCard:true,
audio:"qice",
selectCard:-1,
selectTarget:function(){
var select=get.select(get.info(get.card()).selectTarget);
var nh=_status.event.player.countCards('h');
if(select[1]>nh){
select[1]=nh;
}
return select;
},
filterTarget:function(card,player,target){
var info=get.info(card);
if(info.changeTarget){
var targets=[target];
info.changeTarget(player,targets);
if(targets.length>player.countCards('h')){
return false;
}
}
return lib.filter.filterTarget(card,player,target);
},
2019-10-19 11:18:56 +00:00
audio:'qice_backup',
2019-08-30 15:10:11 +00:00
popname:true,
viewAs:{name:links[0][2]},
ai1:function(){
return 1;
}
}
},
prompt:function(links,player){
return '将全部手牌当作'+get.translation(links[0][2])+'使用';
}
},
ai:{
order:1,
result:{
player:function(player){
var num=0;
var cards=player.getCards('h');
if(cards.length>=3&&player.hp>=3) return 0;
for(var i=0;i<cards.length;i++){
num+=Math.max(0,get.value(cards[i],player,'raw'));
}
2019-10-31 04:43:12 +00:00
return 16-num;
2019-08-30 15:10:11 +00:00
}
},
threaten:1.6,
}
},
gzyuejian:{
trigger:{global:'phaseDiscardBegin'},
audio:'yuejian',
filter:function(event,player){
if(player.sameIdentityAs(event.player)){
2020-01-01 14:33:19 +00:00
return event.player.getHistory('useCard',function(evt){
if(evt.targets){
var targets=evt.targets.slice(0);
while(targets.contains(event.player)) targets.remove(event.player);
return targets.length!=0;
2019-08-30 15:10:11 +00:00
}
2020-01-01 14:33:19 +00:00
return false;
})==0;
2019-08-30 15:10:11 +00:00
}
return false;
},
content:function(){
trigger.player.addTempSkill('gzyuejian_num');
},
logTarget:'player',
2019-12-20 06:56:40 +00:00
forced:true,
2019-08-30 15:10:11 +00:00
subSkill:{
num:{
mod:{
2020-05-23 04:37:37 +00:00
maxHandcardBase:function(player,num){
return player.maxHp;
2019-08-30 15:10:11 +00:00
}
}
},
}
},
gzxinsheng:{
trigger:{player:'damageEnd'},
// frequent:true,
content:function(){
game.log(player,'获得了一张','#g化身');
lib.skill.gzhuashen.addCharacter(player,_status.characterlist.randomGet(),true);
game.delayx();
}
},
gzhuashen:{
unique:true,
group:['gzhuashen_add','gzhuashen_swap','gzhuashen_remove','gzhuashen_disallow','gzhuashen_flash'],
init:function(player){
player.storage.gzhuashen=[];
player.storage.gzhuashen_removing=[];
player.storage.gzhuashen_trigger=[];
player.storage.gzhuashen_map={};
},
onremove:function(player){
delete player.storage.gzhuashen;
delete player.storage.gzhuashen_removing;
delete player.storage.gzhuashen_trigger;
delete player.storage.gzhuashen_map;
},
ondisable:true,
mark:true,
intro:{
mark:function(dialog,storage,player){
if(storage&&storage.length){
if(player.isUnderControl(true)){
dialog.addSmall([storage,'character']);
var skills=[];
for(var i in player.storage.gzhuashen_map){
skills.addArray(player.storage.gzhuashen_map[i]);
}
dialog.addText('可用技能:'+(skills.length?get.translation(skills):'无'));
}
else{
return '共有'+get.cnNumber(storage.length)+'张“化身”'
}
}
else{
return '没有化身';
}
},
content:function(storage,player){
if(player.isUnderControl(true)){
var skills=[];
for(var i in player.storage.gzhuashen_map){
skills.addArray(player.storage.gzhuashen_map[i]);
}
return get.translation(storage)+';可用技能:'+(skills.length?get.translation(skills):'无');
}
else{
return '共有'+get.cnNumber(storage.length)+'张“化身”'
}
}
},
filterSkill:function(name){
var skills=lib.character[name][3].slice(0);
for(var i=0;i<skills.length;i++){
var info=lib.skill[skills[i]];
if(info.unique||info.limited||info.mainSkill||info.viceSkill||get.is.locked(skills[i])){
skills.splice(i--,1);
}
}
return skills;
},
addCharacter:function(player,name,show){
var skills=lib.skill.gzhuashen.filterSkill(name);
if(skills.length){
player.storage.gzhuashen_map[name]=skills;
for(var i=0;i<skills.length;i++){
player.addAdditionalSkill('hidden:gzhuashen',skills[i],true);
}
}
player.storage.gzhuashen.add(name);
player.updateMarks('gzhuashen');
_status.characterlist.remove(name);
if(show){
lib.skill.gzhuashen.drawCharacter(player,[name]);
}
},
drawCharacter:function(player,list){
game.broadcastAll(function(player,list){
if(player.isUnderControl(true)){
var cards=[];
for(var i=0;i<list.length;i++){
var cardname='huashen_card_'+list[i];
lib.card[cardname]={
fullimage:true,
image:'character:'+list[i]
}
2020-10-23 14:35:26 +00:00
lib.translate[cardname]=get.rawName2(list[i]);
2019-08-30 15:10:11 +00:00
cards.push(game.createCard(cardname,'',''));
}
2019-12-12 15:10:39 +00:00
player.$draw(cards,'nobroadcast');
2019-08-30 15:10:11 +00:00
}
},player,list);
},
removeCharacter:function(player,name){
var skills=lib.skill.gzhuashen.filterSkill(name);
if(skills.length){
delete player.storage.gzhuashen_map[name];
for(var i=0;i<skills.length;i++){
var remove=true;
for(var j in player.storage.gzhuashen_map){
if(j!=name&&game.expandSkills(player.storage.gzhuashen_map[j].slice(0)).contains(skills[i])){
remove=false;break;
}
}
if(remove){
player.removeAdditionalSkill('hidden:gzhuashen',skills[i]);
player.storage.gzhuashen_removing.remove(skills[i]);
}
}
}
player.storage.gzhuashen.remove(name);
player.updateMarks('gzhuashen');
_status.characterlist.add(name);
},
getSkillSources:function(player,skill){
if(player.getStockSkills().contains(skill)) return [];
var sources=[];
for(var i in player.storage.gzhuashen_map){
if(game.expandSkills(player.storage.gzhuashen_map[i].slice(0)).contains(skill)) sources.push(i);
}
return sources;
},
subfrequent:['add'],
subSkill:{
add:{
trigger:{player:'phaseBeginStart'},
frequent:true,
filter:function(event,player){
return player.storage.gzhuashen.length<2;
},
content:function(){
'step 0'
var list=_status.characterlist.randomGets(5);
if(!list.length){
event.finish();
return;
}
player.chooseButton([1,2]).set('ai',function(button){
return get.rank(button.link,true);
}).set('createDialog',['选择至多两张武将牌作为“化身”',[list,'character']]);
'step 1'
if(result.bool){
for(var i=0;i<result.links.length;i++){
lib.skill.gzhuashen.addCharacter(player,result.links[i]);
}
lib.skill.gzhuashen.drawCharacter(player,result.links.slice(0));
game.delayx();
player.addTempSkill('gzhuashen_triggered');
game.log(player,'获得了'+get.cnNumber(result.links.length)+'张','#g化身');
}
}
},
swap:{
trigger:{player:'phaseBeginStart'},
direct:true,
filter:function(event,player){
if(player.hasSkill('gzhuashen_triggered')) return false;
return player.storage.gzhuashen.length>=2;
},
content:function(){
'step 0'
var list=player.storage.gzhuashen.slice(0);
if(!list.length){
event.finish();
return;
}
player.chooseButton().set('ai',function(){
return Math.random()-0.3;
}).set('createDialog',['是否替换一张“化身”?',[list,'character']]);
'step 1'
if(result.bool){
player.logSkill('gzhuashen');
game.log(player,'替换了一张','#g化身');
lib.skill.gzhuashen.addCharacter(player,_status.characterlist.randomGet(),true);
lib.skill.gzhuashen.removeCharacter(player,result.links[0]);
game.delayx();
}
}
},
triggered:{},
flash:{
hookTrigger:{
log:function(player,skill){
var sources=lib.skill.gzhuashen.getSkillSources(player,skill);
if(sources.length){
player.flashAvatar('gzhuashen',sources.randomGet());
player.storage.gzhuashen_removing.add(skill);
}
}
},
trigger:{player:['useSkillBegin','useCard','respond']},
silent:true,
filter:function(event,player){
return event.skill&&lib.skill.gzhuashen.getSkillSources(player,event.skill).length>0;
},
content:function(){
lib.skill.gzhuashen_flash.hookTrigger.log(player,trigger.skill);
}
},
clear:{
trigger:{player:'phaseAfter'},
silent:true,
content:function(){
player.storage.gzhuashen_trigger.length=0;
}
},
disallow:{
hookTrigger:{
block:function(event,player,name,skill){
for(var i=0;i<player.storage.gzhuashen_trigger.length;i++){
var info=player.storage.gzhuashen_trigger[i];
if(info[0]==event&&info[1]==name&&
lib.skill.gzhuashen.getSkillSources(player,skill).length>0){
return true;
}
}
return false;
}
}
},
remove:{
trigger:{player:['useSkillAfter','useCardAfter','respondAfter','triggerAfter','skillAfter']},
hookTrigger:{
after:function(event,player){
if(event._direct&&!player.storage.gzhuashen_removing.contains(event.skill)) return false;
if(lib.skill[event.skill].silent) return false;
return lib.skill.gzhuashen.getSkillSources(player,event.skill).length>0;
}
},
silent:true,
filter:function(event,player){
return event.skill&&lib.skill.gzhuashen.getSkillSources(player,event.skill).length>0;
},
content:function(){
'step 0'
if(trigger.name=='trigger'){
player.storage.gzhuashen_trigger.push([trigger._trigger,trigger.triggername]);
}
var sources=lib.skill.gzhuashen.getSkillSources(player,trigger.skill);
if(sources.length==1){
event.directresult=sources[0];
}
else{
player.chooseButton(true).set('createDialog',['移除一张“化身”牌',[sources,'character']]);
}
'step 1'
if(!event.directresult&&result&&result.links[0]){
event.directresult=result.links[0];
}
var name=event.directresult;
lib.skill.gzhuashen.removeCharacter(player,name);
game.log(player,'移除了化身牌','#g'+get.translation(name));
}
}
},
ai:{
nofrequent:true,
skillTagFilter:function(player,tag,arg){
if(arg&&player.storage.gzhuashen){
if(lib.skill.gzhuashen.getSkillSources(player,arg).length>0){
return true;
}
}
return false;
}
}
},
gzxiongsuan:{
limited:true,
audio:'xiongsuan',
enable:'phaseUse',
filterCard:true,
filter:function(event,player){
return player.countCards('h');
},
filterTarget:function(card,player,target){
return target.sameIdentityAs(player);
},
check:function(card){
return 7-get.value(card);
},
content:function(){
'step 0'
player.awakenSkill('gzxiongsuan');
target.damage('nocard');
'step 1'
player.draw(3);
var list=[];
var skills=target.getOriginalSkills();
for(var i=0;i<skills.length;i++){
if(lib.skill[skills[i]].limited&&target.awakenedSkills.contains(skills[i])){
list.push(skills[i]);
}
}
if(list.length==1){
target.storage.gzxiongsuan_restore=list[0];
2019-11-22 05:21:06 +00:00
target.addTempSkill('gzxiongsuan_restore','phaseZhunbeiBegin');
2019-08-30 15:10:11 +00:00
event.finish();
}
else if(list.length>1){
player.chooseControl(list).set('prompt','选择一个限定技在回合结束后重置之');
}
else{
event.finish();
}
'step 2'
target.storage.gzxiongsuan_restore=result.control;
2019-11-22 05:21:06 +00:00
target.addTempSkill('gzxiongsuan_restore','phaseZhunbeiBegin');
2019-08-30 15:10:11 +00:00
},
subSkill:{
restore:{
trigger:{global:'phaseAfter'},
silent:true,
content:function(){
player.restoreSkill(player.storage.gzxiongsuan_restore);
}
}
},
ai:{
order:4,
damage:true,
result:{
target:function(player,target){
if(target.hp>1){
var skills=target.getOriginalSkills();
for(var i=0;i<skills.length;i++){
if(lib.skill[skills[i]].limited&&target.awakenedSkills.contains(skills[i])){
return 8;
}
}
}
if(target!=player) return 0;
2019-12-09 15:03:35 +00:00
if(get.damageEffect(target,player,player)>=0) return 10;
2019-08-30 15:10:11 +00:00
if(target.hp>=4) return 5;
if(target.hp==3){
if(player.countCards('h')<=2&&game.hasPlayer(function(current){
return current.hp<=1&&get.attitude(player,current)<0;
})){
return 3;
}
}
return 0;
}
}
}
},
gzsuishi:{
audio:'suishi',
trigger:{global:'dying'},
forced:true,
2019-11-22 05:21:06 +00:00
//priority:6.5,
2019-08-30 15:10:11 +00:00
check:function(){
return false;
},
filter:function(event,player){
return event.player!=player&&event.parent.name=='damage'&&event.parent.source&&event.parent.source.isFriendOf(player);
},
content:function(){
player.draw();
},
group:'gzsuishi2'
},
gzsuishi2:{
audio:'suishi',
trigger:{global:'dieAfter'},
forced:true,
2020-02-04 05:31:47 +00:00
check:function(){return false},
2019-08-30 15:10:11 +00:00
filter:function(event,player){
return event.player.isFriendOf(player);
},
content:function(){
player.loseHp();
}
},
hongfa_respond:{
2020-02-04 05:31:47 +00:00
audio:'huangjintianbingfu',
forceaudio:true,
2019-08-30 15:10:11 +00:00
trigger:{player:'chooseToRespondBegin'},
direct:true,
filter:function(event,player){
if(event.responded) return false;
if(!event.filterCard({name:'sha'})) return false;
var zhu=get.zhu(player,'hongfa');
if(zhu&&zhu.storage.huangjintianbingfu&&zhu.storage.huangjintianbingfu.length>0){
return true;
}
return false;
},
content:function(){
"step 0"
var zhu=get.zhu(player,'hongfa');
player.chooseCardButton(get.prompt('huangjintianbingfu'),zhu.storage.huangjintianbingfu).set('ai',function(){
if(_status.event.goon) return 1;
return 0;
}).set('goon',player.countCards('h','sha')==0);
"step 1"
if(result.bool){
var card=result.links[0];
trigger.untrigger();
trigger.responded=true;
trigger.result={bool:true,card:{name:'sha'},cards:[card]};
var zhu=get.zhu(player,'hongfa');
zhu.storage.huangjintianbingfu.remove(card);
zhu.syncStorage('huangjintianbingfu');
zhu.updateMarks('huangjintianbingfu');
player.logSkill('hongfa_respond');
}
}
},
hongfa_use:{
2020-02-04 05:31:47 +00:00
audio:'huangjintianbingfu',
forceaudio:true,
2019-08-30 15:10:11 +00:00
enable:'chooseToUse',
filter:function(event,player){
if(!event.filterCard({name:'sha'},player)) return false;
var zhu=get.zhu(player,'hongfa');
if(zhu&&zhu.storage.huangjintianbingfu&&zhu.storage.huangjintianbingfu.length>0){
return true;
}
return false;
},
chooseButton:{
dialog:function(event,player){
var zhu=get.zhu(player,'hongfa');
return ui.create.dialog('黄巾天兵符',zhu.storage.huangjintianbingfu,'hidden');
},
backup:function(links,player){
return {
filterCard:function(){return false},
selectCard:-1,
viewAs:{name:'sha',cards:links},
2019-08-30 15:10:11 +00:00
cards:links,
onuse:function(result,player){
result.cards=lib.skill[result.skill].cards;
var card=result.cards[0];
var zhu=get.zhu(player,'hongfa');
zhu.storage.huangjintianbingfu.remove(card);
zhu.syncStorage('huangjintianbingfu');
zhu.updateMarks('huangjintianbingfu');
player.logSkill('hongfa_use',result.targets);
}
}
},
prompt:function(links,player){
return '选择杀的目标';
}
},
ai:{
respondSha:true,
skillTagFilter:function(player){
var zhu=get.zhu(player,'hongfa');
if(zhu&&zhu.storage.huangjintianbingfu&&zhu.storage.huangjintianbingfu.length>0){
return true;
}
return false;
},
order:function(){
return get.order({name:'sha'})-0.1;
},
result:{
player:function(player){
if(player.countCards('h','sha')) return 0;
return 1;
}
}
}
},
hongfa:{
audio:2,
init:function(player){
player.storage.huangjintianbingfu=[];
},
derivation:'huangjintianbingfu',
unique:true,
forceunique:true,
2019-11-22 05:21:06 +00:00
trigger:{player:'phaseZhunbeiBegin'},
2019-08-30 15:10:11 +00:00
forced:true,
filter:function(event,player){
return player.storage.huangjintianbingfu.length==0;
},
content:function(){
2019-11-22 05:21:06 +00:00
var cards=get.cards(get.population('qun'));
player.storage.huangjintianbingfu.addArray(cards);
game.cardsGotoSpecial(cards);
2019-08-30 15:10:11 +00:00
player.syncStorage('huangjintianbingfu');
player.updateMarks('huangjintianbingfu');
2019-11-22 05:21:06 +00:00
//event.trigger('addCardToStorage');
2019-08-30 15:10:11 +00:00
},
ai:{
threaten:2,
},
group:'hongfa_hp',
global:['hongfa_use','hongfa_respond'],
subSkill:{
hp:{
2020-02-04 05:31:47 +00:00
audio:true,
2019-08-30 15:10:11 +00:00
trigger:{player:'loseHpBefore'},
filter:function(event,player){
return player.storage.huangjintianbingfu.length>0;
},
direct:true,
content:function(){
'step 0'
player.chooseCardButton(get.prompt('hongfa'),player.storage.huangjintianbingfu).set('ai',function(){
return 1;
});
'step 1'
if(result.bool){
var card=result.links[0];
game.cardsDiscard(card);
player.storage.huangjintianbingfu.remove(card);
player.$throw(card,1000);
player.updateMarks('huangjintianbingfu');
player.syncStorage('huangjintianbingfu');
trigger.cancel();
2020-02-04 05:31:47 +00:00
player.logSkill('hongfa_hp');
2019-08-30 15:10:11 +00:00
game.delay();
}
}
}
}
},
wendao:{
audio:2,
unique:true,
forceunique:true,
enable:'phaseUse',
2020-03-13 13:15:17 +00:00
usable:1,
2019-12-20 06:56:40 +00:00
filterCard:function(card){
return get.name(card)!='taipingyaoshu'&&get.color(card)=='red';
},
2019-08-30 15:10:11 +00:00
position:'he',
check:function(card){
return 6-get.value(card);
},
2020-02-04 05:31:47 +00:00
onChooseToUse:function(event){
if(game.online) return;
event.set('wendao',function(){
for(var i=0;i<ui.discardPile.childElementCount;i++){
if(ui.discardPile.childNodes[i].name=='taipingyaoshu') return true;
}
return game.hasPlayer(function(current){
2020-03-13 10:02:18 +00:00
return current.countCards('ej','taipingyaoshu');
2020-02-04 05:31:47 +00:00
});
}());
},
2019-08-30 15:10:11 +00:00
filter:function(event,player){
2020-02-04 05:31:47 +00:00
return event.wendao==true;
2019-08-30 15:10:11 +00:00
},
content:function(){
var list=[];
for(var i=0;i<ui.discardPile.childElementCount;i++){
if(ui.discardPile.childNodes[i].name=='taipingyaoshu'){
list.add(ui.discardPile.childNodes[i]);
}
}
game.countPlayer(function(current){
2020-03-13 10:02:18 +00:00
var ej=current.getCards('ej','taipingyaoshu');
if(ej.length){
list.addArray(ej);
2019-08-30 15:10:11 +00:00
}
});
if(list.length){
var card=list.randomGet();
var owner=get.owner(card);
if(owner){
2020-02-04 05:31:47 +00:00
player.gain(card,owner,'give');
2019-08-30 15:10:11 +00:00
player.line(owner,'green');
}
else{
player.gain(card,'log');
player.$draw(card);
}
}
},
ai:{
order:8.5,
result:{
player:1
}
}
},
huangjintianbingfu:{
2020-02-04 05:31:47 +00:00
audio:2,
2019-08-30 15:10:11 +00:00
unique:true,
forceunique:true,
nopop:true,
mark:true,
intro:{
content:'cards',
2020-02-08 03:39:33 +00:00
onunmark:function(storage,player){
if(storage&&storage.length){
player.$throw(storage,1000);
game.cardsDiscard(storage);
game.log(storage,'被置入了弃牌堆');
storage.length=0;
}
},
2019-08-30 15:10:11 +00:00
mark:function(dialog,content,player){
if(content&&content.length){
dialog.addSmall(content);
}
dialog.addText('<ul style="margin-top:5px;padding-left:22px;"><li>当你计算群势力角色数时,每一张“天兵”均可视为一名群势力角色。<li>每当你失去体力时,你可改为将一张“天兵”置入弃牌堆。<li>与你势力相同的角色可将一张“天兵”当【杀】使用或打出。',false)
}
}
},
wuxin:{
// unique:true,
2020-01-01 14:33:19 +00:00
trigger:{player:'phaseDrawBegin1'},
2019-08-30 15:10:11 +00:00
// frequent:'check',
// check:function(event,player){
// var num=get.population('qun');
// if(player.hasSkill('huangjintianbingfu')){
// num+=player.storage.huangjintianbingfu.length;
// }
// return num>event.num;
// },
audio:2,
content:function(){
'step 0'
var num=get.population('qun');
if(player.hasSkill('huangjintianbingfu')){
num+=player.storage.huangjintianbingfu.length;
}
2020-11-28 02:28:27 +00:00
player.chooseCardButton(num,true,get.cards(num),'按顺序将卡牌置于牌堆顶(先选择的在上)').set('ai',function(button){
2019-08-30 15:10:11 +00:00
return get.value(button.link);
});
'step 1'
if(result.bool){
var list=result.links.slice(0);
while(list.length){
ui.cardPile.insertBefore(list.pop(),ui.cardPile.firstChild);
}
}
}
},
zhangwu:{
audio:2,
unique:true,
forceunique:true,
ai:{
threaten:2,
},
group:['zhangwu_gain','zhangwu_clear','zhangwu_count1','zhangwu_count2','zhangwu_count3'],
subSkill:{
gain:{
audio:'zhangwu',
trigger:{global:['discardAfter','respondAfter','useCardAfter','equipAfter',
'judgeAfter','useSkillAfter','phaseDrawBegin','phaseAfter']},
forced:true,
filter:function(event,player){
if(player.storage.zhangwu){
for(var i=0;i<player.storage.zhangwu.length;i++){
if(get.owner(player.storage.zhangwu[i])==player) continue;
var position=get.position(player.storage.zhangwu[i]);
if(position&&position!='s'&&position!='c'){
return true;
}
}
}
if(event.name=='equip'&&player!=event.player&&event.card.name=='feilongduofeng') return true;
//if(game.hasPlayer(function(current){
// return current!=player&&current.getEquip('feilongduofeng');
//})){
// return true;
//}
if(['discard','respond','useCard'].contains(event.name)&&event.cards){
for(var i=0;i<event.cards.length;i++){
if(event.cards[i].name=='feilongduofeng'&&get.position(event.cards[i])=='d'){
return true;
}
}
}
for(var i=0;i<ui.discardPile.childElementCount;i++){
if(ui.discardPile.childNodes[i].name=='feilongduofeng') return true;
}
return false;
},
content:function(){
'step 0'
if(trigger.name=='equip'||trigger.name=='respond'||trigger.delay==false) game.delay();
'step 1'
var list=[];
/*game.countPlayer(function(current){
if(current!=player){
var es=current.getEquip('feilongduofeng');
if(es){
list.add(es);
}
}
});*/
if(trigger.name=='equip'&&player!=trigger.player) list.add(trigger.card);
if(['discard','respond','useCard'].contains(trigger.name)&&trigger.cards){
for(var i=0;i<trigger.cards.length;i++){
if(trigger.cards[i].name=='feilongduofeng'&&get.position(trigger.cards[i])=='d'){
trigger.cards[i].fix();
list.add(trigger.cards[i]);
ui.special.appendChild(trigger.cards[i]);
}
}
}
for(var i=0;i<ui.discardPile.childElementCount;i++){
if(ui.discardPile.childNodes[i].name=='feilongduofeng'){
list.add(ui.discardPile.childNodes[i]);
ui.special.appendChild(ui.discardPile.childNodes[i]);
}
}
var list2=[];
if(player.storage.zhangwu){
for(var i=0;i<list.length;i++){
if(player.storage.zhangwu.contains(list[i])){
player.storage.zhangwu.remove(list[i]);
list2.add(list[i]);
list.splice(i--,1);
}
}
for(var i=0;i<player.storage.zhangwu.length;i++){
if(get.owner(player.storage.zhangwu[i])==player) continue;
var position=get.position(player.storage.zhangwu[i]);
if(position&&position!='s'&&position!='c'){
list2.add(player.storage.zhangwu[i]);
}
}
}
if(list.length){
player.gain(list);
var owner=get.owner(list[0]);
if(trigger.name!='respond'&&owner){
player.line(owner,'green');
owner.$give(list,player);
}
else{
player.$gain2(list,true);
}
event.delay=true;
}
if(list2.length){
player.showCards(get.translation(player)+'发动了【章武】',list2);
for(var i=0;i<list2.length;i++){
var owner=get.owner(list2[i]);
if(owner){
owner.lose(list2[i],ui.special);
event.delay=true;
}
}
event.list2=list2;
}
'step 2'
if(event.delay){
game.delay();
}
'step 3'
if(event.list2&&event.list2.length){
for(var i=0;i<event.list2.length;i++){
event.list2[i].fix();
ui.cardPile.appendChild(event.list2[i]);
}
game.log(player,'将',event.list2,'置于牌堆底');
player.draw(2);
}
}
},
count1:{
trigger:{player:'loseAfter'},
silent:true,
filter:function(event,player){
if(event.type!='gain'&&event.type!='equip') return true;
if(event.parent.player==player) return true;
return false;
},
content:function(){
if(!player.storage.zhangwu){
player.storage.zhangwu=[];
}
for(var i=0;i<trigger.stockcards.length;i++){
if(trigger.stockcards[i].name=='feilongduofeng'){
player.storage.zhangwu.add(trigger.stockcards[i]);
}
}
}
},
count2:{
audio:'zhangwu',
trigger:{player:'loseAfter'},
forced:true,
filter:function(event,player){
if(lib.skill.zhangwu_count1.filter(event,player)){
return false;
}
for(var i=0;i<event.stockcards.length;i++){
if(event.stockcards[i].name=='feilongduofeng'){
return true;
}
}
},
content:function(){
'step 0'
var list=[];
for(var i=0;i<trigger.stockcards.length;i++){
if(trigger.stockcards[i].name=='feilongduofeng'){
list.add(trigger.stockcards[i]);
}
}
if(list.length){
if(trigger.type=='gain'){
for(var i=0;i<list.length;i++){
trigger.parent.cards.remove(list[i]);
}
}
else if(trigger.type=='equip'){
trigger.parent.cancelled=true;
}
player.showCards(get.translation(player)+'发动了【章武】',list);
event.list=list;
}
else{
event.finish();
}
'step 1'
for(var i=0;i<event.list.length;i++){
event.list[i].fix();
ui.cardPile.appendChild(event.list[i]);
}
game.log(player,'将',event.list,'置于牌堆底');
player.draw(2);
}
},
count3:{
audio:'zhangwu',
trigger:{global:'equipBefore'},
forced:true,
filter:function(event,player){
return event.card&&event.card.name=='feilongduofeng'&&event.player!=player&&
player.storage.zhangwu&&player.storage.zhangwu.contains(event.card);
},
content:function(){
'step 0'
trigger.cancel();
trigger.card.fix();
player.showCards(get.translation(player)+'发动了【章武】',[trigger.card]);
var owner=get.owner(trigger.card);
if(owner){
owner.lose(trigger.card,ui.special);
}
player.storage.zhangwu.remove(trigger.card);
'step 1'
trigger.card.fix();
ui.cardPile.appendChild(trigger.card);
game.log(player,'将',trigger.card,'置于牌堆底');
player.draw(2);
}
},
clear:{
trigger:{global:'phaseAfter'},
silent:true,
content:function(){
delete player.storage.zhangwu;
}
}
}
},
shouyue:{
unique:true,
forceunique:true,
group:'wuhujiangdaqi',
derivation:'wuhujiangdaqi',
mark:true,
},
wuhujiangdaqi:{
unique:true,
forceunique:true,
nopop:true,
mark:true,
intro:{
content:"@<div style=\"margin-top:-5px\"><div class=\"skill\">【武圣】</div><div class=\"skillinfo\">将“红色牌”改为“任意牌”</div><div class=\"skill\">【咆哮】</div><div class=\"skillinfo\">增加描述“你使用的【杀】无视其他角色的防具”</div><div class=\"skill\">【龙胆】</div><div class=\"skillinfo\">增加描述“你每发动一次‘龙胆’便摸一张牌”</div><div class=\"skill\">【烈弓】</div><div class=\"skillinfo\">增加描述“你的攻击范围+1”</div><div class=\"skill\">【铁骑】</div><div class=\"skillinfo\">将“一张明置的武将牌”改为“所有明置的武将牌”</div></div>",
}
},
jizhao:{
derivation:'rerende',
unique:true,
2020-02-04 05:31:47 +00:00
audio:2,
2019-08-30 15:10:11 +00:00
enable:'chooseToUse',
mark:true,
skillAnimation:true,
animationColor:'fire',
init:function(player){
player.storage.jizhao=false;
},
filter:function(event,player){
if(player.storage.jizhao) return false;
if(event.type=='dying'){
if(player!=event.dying) return false;
return true;
}
return false;
},
content:function(){
'step 0'
player.awakenSkill('jizhao');
player.storage.jizhao=true;
var num=player.maxHp-player.countCards('h');
if(num>0){
player.draw(num);
}
'step 1'
if(player.hp<2){
player.recover(2-player.hp);
}
'step 2'
player.removeSkill('shouyue');
player.removeSkill('wuhujiangdaqi');
player.addSkill('rerende');
},
ai:{
order:1,
2021-01-10 02:28:38 +00:00
skillTagFilter:function(player,arg,target){
if(player!=target||player.storage.jizhao) return false;
2019-08-30 15:10:11 +00:00
},
save:true,
result:{
player:10
},
},
intro:{
content:'limited'
}
},
gzshoucheng:{
inherit:'shoucheng',
audio:'shoucheng',
filter:function(event,player){
2020-10-15 05:41:31 +00:00
return game.hasPlayer(function(current){
if(current==_status.currentPhase||!current.isFriendOf(player)) return false;
var evt=event.getl(current);
return evt&&evt.hs&&evt.hs.length&&current.countCards('h')==0;
});
},
content:function(){
"step 0"
event.list=game.filterPlayer(function(current){
if(current==_status.currentPhase||!current.isFriendOf(player)) return false;
var evt=trigger.getl(current);
return evt&&evt.hs&&evt.hs.length;
}).sortBySeat(_status.currentPhase);
"step 1"
var target=event.list.shift();
event.target=target;
if(target.isAlive()&&target.countCards('h')==0){
player.chooseBool(get.prompt2('gzshoucheng',target)).set('ai',function(){
return get.attitude(_status.event.player,_status.event.getParent().target)>0;
});
2019-08-30 15:10:11 +00:00
}
2020-10-15 05:41:31 +00:00
else event.goto(3);
"step 2"
if(result.bool){
player.logSkill(event.name,target);
target.draw();
}
"step 3"
if(event.list.length) event.goto(1);
2019-08-30 15:10:11 +00:00
},
},
yicheng:{
2019-12-20 06:56:40 +00:00
audio:2,
2019-10-24 04:55:01 +00:00
trigger:{global:'useCardToTargeted'},
2019-08-30 15:10:11 +00:00
filter:function(event,player){
2019-10-24 04:55:01 +00:00
return event.card.name=='sha'&&event.target.isFriendOf(player);
2019-08-30 15:10:11 +00:00
},
logTarget:'target',
content:function(){
'step 0'
trigger.target.draw();
'step 1'
trigger.target.chooseToDiscard('he',true);
}
},
gzjixi:{
inherit:'jixi',
2020-02-23 05:45:11 +00:00
audio:'jixi',
2019-08-30 15:10:11 +00:00
mainSkill:true,
init:function(player){
if(player.checkMainSkill('gzjixi')){
player.removeMaxHp();
}
}
},
ziliang:{
audio:2,
trigger:{global:'damageEnd'},
filter:function(event,player){
return event.player.isIn()&&event.player.isFriendOf(player)&&player.storage.tuntian&&player.storage.tuntian.length;
},
init:function(player){
player.checkViceSkill('ziliang');
},
viceSkill:true,
direct:true,
content:function(){
'step 0'
player.chooseCardButton(get.prompt('ziliang',trigger.player),player.storage.tuntian).set('ai',function(button){
return get.value(button.link);
});
'step 1'
if(result.bool){
var card=result.links[0];
player.logSkill('ziliang',trigger.player);
player.storage.tuntian.remove(card);
player.syncStorage('tuntian');
if(!player.storage.tuntian.length){
player.unmarkSkill('tuntian');
}
else{
player.updateMarks('tuntian');
}
trigger.player.gain(card);
if(trigger.player==player){
player.$draw(card,true);
}
else{
player.$give(card,trigger.player);
}
}
}
},
huyuan:{
2020-02-23 05:45:11 +00:00
audio:2,
2019-11-22 05:21:06 +00:00
trigger:{player:'phaseJieshuBegin'},
2019-08-30 15:10:11 +00:00
direct:true,
filter:function(event,player){
return player.countCards('he',{type:'equip'})>0;
},
content:function(){
"step 0"
player.chooseCardTarget({
filterCard:function(card){
return get.type(card)=='equip';
},
position:'he',
filterTarget:function(card,player,target){
return target.isEmpty(get.subtype(card));
},
ai1:function(card){
return 6-get.value(card);
},
ai2:function(target){
return get.attitude(_status.event.player,target)-3;
},
prompt:get.prompt2('huyuan')
});
"step 1"
if(result.bool){
var target=result.targets[0];
player.logSkill('huyuan',target);
event.current=target;
target.equip(result.cards[0]);
if(target!=player){
2020-02-04 05:31:47 +00:00
player.$give(result.cards,target,false);
2020-02-23 05:45:11 +00:00
game.delay(2);
2019-08-30 15:10:11 +00:00
}
player.chooseTarget('弃置一名角色的一张牌',function(card,player,target){
var source=_status.event.source;
return get.distance(source,target)<=1&&source!=target&&target.countCards('he');
}).set('ai',function(target){
return -get.attitude(_status.event.player,target);
}).set('source',target);
}
else{
event.finish();
}
"step 2"
if(result.bool&&result.targets.length){
event.current.line(result.targets,'green');
player.discardPlayerCard(true,result.targets[0],'he');
}
},
},
heyi:{
zhenfa:'inline',
global:'heyi_distance'
},
heyi_distance:{
mod:{
globalTo:function(from,to,distance){
if(game.hasPlayer(function(current){
return current.hasSkill('heyi')&&current.inline(to)&&current!=to;
})){
return distance+1;
}
}
}
},
tianfu:{
init:function(player){
player.checkMainSkill('tianfu');
},
mainSkill:true,
inherit:'kanpo',
zhenfa:'inline',
viewAsFilter:function(player){
2020-02-23 05:45:11 +00:00
return _status.currentPhase&&_status.currentPhase.inline(player)&&!player.hasSkill('kanpo')&&player.countCards('h',{color:'black'})>0;
2019-08-30 15:10:11 +00:00
},
},
yizhi:{
init:function(player){
if(player.checkViceSkill('yizhi')&&!player.viceChanged){
player.removeMaxHp();
}
},
viceSkill:true,
inherit:'guanxing',
filter:function(event,player){
return !player.hasSkill('guanxing');
}
},
gzshangyi:{
audio:'shangyi',
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countCards('h')>0;
},
filterTarget:function(card,player,target){
return player!=target&&(target.countCards('h')||target.isUnseen(2));
},
content:function(){
"step 0"
target.viewHandcards(player);
"step 1"
if(!target.countCards('h')){
event._result={index:1};
}
else if(!target.isUnseen(2)){
event._result={index:0};
}
else{
player.chooseControl().set('choiceList',[
'观看'+get.translation(target)+'的手牌并可以弃置其中的一张黑色牌',
'观看'+get.translation(target)+'的所有暗置的武将牌',
]);
}
"step 2"
if(result.index==0){
player.discardPlayerCard(target,'h').set('filterButton',function(button){
return get.color(button.link)=='black';
}).set('visible',true);
}
else{
player.viewCharacter(target,2);
}
},
ai:{
order:11,
result:{
target:function(player,target){
return -target.countCards('h');
}
},
threaten:1.1
},
},
niaoxiang:{
zhenfa:'siege',
2020-02-23 05:45:11 +00:00
audio:'zniaoxiang',
2019-08-30 15:10:11 +00:00
global:'niaoxiang_sha'
},
niaoxiang_sha:{
2019-11-23 12:41:07 +00:00
trigger:{player:'useCardToPlayered'},
2019-08-30 15:10:11 +00:00
filter:function(event,player){
2019-11-22 05:21:06 +00:00
if(event.card.name!='sha') return false;
2019-08-30 15:10:11 +00:00
if(game.countPlayer()<4) return false;
return player.siege(event.target)&&game.hasPlayer(function(current){
return current.hasSkill('niaoxiang')&&current.siege(event.target);
});
},
forced:true,
2020-02-23 05:45:11 +00:00
audio:'zniaoxiang',
forceaudio:true,
2019-08-30 15:10:11 +00:00
logTarget:'target',
content:function(){
2019-11-22 05:21:06 +00:00
var id=trigger.target.playerid;
var map=trigger.getParent().customArgs;
if(!map[id]) map[id]={};
if(typeof map[id].shanRequired=='number'){
map[id].shanRequired++;
2019-08-30 15:10:11 +00:00
}
else{
2019-11-22 05:21:06 +00:00
map[id].shanRequired=2;
2019-08-30 15:10:11 +00:00
}
}
},
fengshi:{
2019-11-14 05:47:38 +00:00
audio:'zfengshi',
2019-08-30 15:10:11 +00:00
zhenfa:'siege',
global:'fengshi_sha'
},
fengshi_sha:{
2019-11-14 05:47:38 +00:00
audio:'zfengshi',
2020-02-23 05:45:11 +00:00
forceaudio:true,
2019-10-24 04:55:01 +00:00
trigger:{player:'useCardToPlayered'},
2019-08-30 15:10:11 +00:00
filter:function(event,player){
2019-12-22 07:59:53 +00:00
if(event.card.name!='sha'||game.countPlayer()<4) return false;
2019-08-30 15:10:11 +00:00
return player.siege(event.target)&&game.hasPlayer(function(current){
return current.hasSkill('fengshi')&&current.siege(event.target);
})&&event.target.countCards('e');
},
logTarget:'target',
content:function(){
trigger.target.chooseToDiscard('e',true);
}
},
gzguixiu:{
audio:'guixiu',
trigger:{player:['showCharacterAfter','removeCharacterBefore']},
filter:function(event,player){
2020-01-18 05:35:52 +00:00
if(event.name=='removeCharacter'||event.name=='changeVice') return event.toRemove=='gz_mifuren'&&player.isDamaged();
2019-08-30 15:10:11 +00:00
return event.toShow.contains('gz_mifuren');
},
content:function(){
if(trigger.name=='showCharacter'){
player.draw(2);
}
else{
player.recover();
}
},
},
gzcunsi:{
derivation:'gzyongjue',
enable:'phaseUse',
audio:'cunsi',
filter:function(event,player){
return player.checkMainSkill('gzcunsi',false)||player.checkViceSkill('gzcunsi',false);
},
unique:true,
forceunique:true,
filterTarget:true,
skillAnimation:true,
2019-09-15 14:41:28 +00:00
animationColor:'orange',
2019-08-30 15:10:11 +00:00
content:function(){
'step 0'
if(player.checkMainSkill('gzcunsi',false)){
player.removeCharacter(0);
}
else{
player.removeCharacter(1);
}
'step 1'
target.addSkill('gzyongjue');
if(target!=player){
target.draw(2);
}
},
ai:{
order:9,
result:{
player:function(player,target){
var num=0;
if(player.isDamaged()&&target.isFriendOf(player)){
num++;
if(target.hasSkill('kanpo')) num+=0.5;
if(target.hasSkill('liegong')) num+=0.5;
if(target.hasSkill('tieji')) num+=0.5;
if(target.hasSkill('gzrende')) num+=1.2;
if(target.hasSkill('longdan')) num+=1.2;
if(target.hasSkill('paoxiao')) num+=1.2;
if(target.hasSkill('zhangwu')) num+=1.5;
if(target!=player) num+=0.5;
}
return num;
}
}
}
},
gzyongjue:{
audio:'yongjue',
trigger:{global:'useCardAfter'},
filter:function(event,player){
2020-01-01 14:33:19 +00:00
if(event==event.player.getHistory('useCard')[0]&&event.card.name=='sha'&&_status.currentPhase==event.player&&event.player.isFriendOf(player)){
2019-08-30 15:10:11 +00:00
for(var i=0;i<event.cards.length;i++){
2019-12-16 04:55:19 +00:00
if(get.position(event.cards[i],true)=='o'){
2019-08-30 15:10:11 +00:00
return true;
}
}
}
return false;
},
mark:true,
intro:{
content:'若与你势力相同的一名角色于其回合内使用的第一张牌为【杀】,则该角色可以在此【杀】结算完成后获得之'
},
content:function(){
var cards=[];
for(var i=0;i<trigger.cards.length;i++){
2019-12-16 04:55:19 +00:00
if(get.position(trigger.cards[i],true)=='o'){
2019-08-30 15:10:11 +00:00
cards.push(trigger.cards[i]);
}
}
trigger.player.gain(cards,'gain2');
},
global:'gzyongjue_ai'
},
gzyongjue_ai:{
ai:{
presha:true,
skillTagFilter:function(player){
if(!game.hasPlayer(function(current){
return current.isFriendOf(player)&&current.hasSkill('gzyongjue');
})){
return false;
}
}
}
},
baoling:{
trigger:{player:'phaseUseEnd'},
init:function(player){
player.checkMainSkill('baoling');
},
mainSkill:true,
forced:true,
filter:function(event,player){
return player.hasViceCharacter();
},
2020-06-20 04:53:15 +00:00
check:function(event,player){
Our Song. 马上就要高考了,这次的版本更新应该是考前的最后一次更新了。 真的很感谢这段时间以来身边的大家。身边的老师和同学也好,Key圈的各位键子们也好,无名杀玩家们也好,正是有了你们的陪伴和支持,我才能够坚持下来,走到今天的这一步。 祝愿包括我自己在内的所有考生高考顺利,金榜题名吧! 最后,在这里复制粘贴一下《Angel Beats!》TV版的ED,某种意义上也是仲村ゆり的角色歌的《Brave Song》的歌词: ``` いつもひとりで歩いてた 振り返るとみんなは遠く 一路走来形单影只 转身回首望去 大家已经远去 それでもあたしは歩いた それが強さだった 即使如此我依然前行 这正是我的坚强 もう何も恐くない そう呟いてみせる 经历 使我无所畏惧 再多冷漠也是一句叹息 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 孤独さえ愛し笑ってられるように あたしは戦うんだ 为了那笑容下与孤独作伴的勇气 我决定战斗到底 涙なんて見せないんだ 我已不再哭泣 いつもひとりで歩いてた 行く先には崖が待ってた 一路走来形单影只 而前方等着的却是山崖 それでもあたしは歩いた 強さの証明のため 即使如此我依然前行 为了证明这份坚强 吹き付ける強い風 汗でシャツが張りつく 强风吹过 汗水将衣服粘湿 いつか忘れてしまえるなら 生きることそれはたやすいもの 若有一天将一切尽数忘掉的话 生存其实并不困难 忘却の彼方へと落ちていくなら それは逃げることだろう 而若坠落在那忘却的彼端的话 那便成了逃避吧 生きた意味すら消えるだろう 就连生存的意义也会消失殆尽吧 風はやがて凪いでた 汗も乾いて 风终于停息 汗也干了 お腹が空いてきたな 何かあったっけ 肚子也饿了啊 有什么可吃的吗 賑やかな声と共にいい匂いがやってきた 同熙攘的声音一道 喷香的味道也传了过来 いつもひとりで歩いてた みんなが待っていた 一路走来形单影只 大家在前方等着我 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 それでもいい 安らかなこの気持ちは それを仲間と呼ぶんだ 这倒也没什么 这种安宁的感情 称之为伙伴 いつかみんなと過ごした日々も忘れてどこかで生きてるよ 有一天我会忘掉和大家在一起度过的日子而生活在他乡 その時はもう強くなんかないよ 到了那时 我不会再坚强了 普通の女の子の弱さで涙を零すよ 像普通的女孩一样流下柔弱的泪水 ```
2020-07-03 05:22:31 +00:00
return player.hp<=1||get.guozhanRank(player.name2,player)<=3;
2020-06-20 04:53:15 +00:00
},
2019-08-30 15:10:11 +00:00
content:function(){
'step 0'
player.removeCharacter(1);
'step 1'
2019-12-20 06:56:40 +00:00
player.removeSkill('baoling');
2019-08-30 15:10:11 +00:00
player.gainMaxHp(3,true);
'step 2'
player.recover(3);
player.addSkill('benghuai');
},
derivation:'benghuai'
},
gzmingshi:{
audio:'mingshi',
2019-11-14 05:47:38 +00:00
trigger:{player:'damageBegin3'},
2019-08-30 15:10:11 +00:00
forced:true,
filter:function(event,player){
return event.num>0&&event.source&&event.source.isUnseen(2);
},
content:function(){
trigger.num--;
},
ai:{
effect:{
target:function(card,player,target){
if(player.hasSkillTag('jueqing',false,target)) return;
if(!player.isUnseen(2)) return;
var num=get.tag(card,'damage');
if(num){
if(num>1) return 0.5;
return 0;
}
}
}
},
},
hunshang:{
init:function(player){
if(player.checkViceSkill('hunshang')&&!player.viceChanged){
player.removeMaxHp();
}
},
group:['hunshang_yingzi','hunshang_yinghun'],
},
hunshang_yingzi:{
inherit:'yingzi',
filter:function(event,player){
return player.hp<=1&&!player.hasSkill('yingzi');
}
},
hunshang_yinghun:{
inherit:'gzyinghun',
filter:function(event,player){
return player.hp<=1&&player.isDamaged()&&!player.hasSkill('gzyinghun');
}
},
yingyang:{
trigger:{player:'compare',target:'compare'},
filter:function(event){
return !event.iwhile;
},
direct:true,
content:function(){
'step 0'
2019-09-13 13:35:44 +00:00
player.chooseControl('点数+3','点数-3','cancel2').set('prompt',get.prompt2('yingyang')).set('ai',function(){
2019-08-30 15:10:11 +00:00
if(_status.event.small) return 1;
else return 0;
}).set('small',trigger.small);
'step 1'
if(result.index!=2){
player.logSkill('yingyang');
if(result.index==0){
game.log(player,'拼点牌点数+3');
if(player==trigger.player){
trigger.num1+=3;
2019-09-06 02:57:10 +00:00
if(trigger.num1>13) trigger.num1=13;
2019-08-30 15:10:11 +00:00
}
else{
trigger.num2+=3;
2019-09-06 02:57:10 +00:00
if(trigger.num2>13) trigger.num2=13;
2019-08-30 15:10:11 +00:00
}
}
else{
game.log(player,'拼点牌点数-3');
if(player==trigger.player){
trigger.num1-=3;
2019-09-06 02:57:10 +00:00
if(trigger.num1<1) trigger.num1=1;
2019-08-30 15:10:11 +00:00
}
else{
trigger.num2-=3;
2019-09-06 02:57:10 +00:00
if(trigger.num2<1) trigger.num2=1;
2019-08-30 15:10:11 +00:00
}
}
}
}
},
gzqianxi:{
audio:'qianxi',
2019-11-22 05:21:06 +00:00
trigger:{player:'phaseZhunbeiBegin'},
2019-08-30 15:10:11 +00:00
content:function(){
"step 0"
player.judge();
"step 1"
event.color=result.color;
player.chooseTarget(function(card,player,target){
return player!=target&&get.distance(player,target)<=1;
},true).set('ai',function(target){
return -get.attitude(_status.event.player,target);
});
"step 2"
if(result.bool&&result.targets.length){
result.targets[0].storage.qianxi2=event.color;
result.targets[0].addSkill('qianxi2');
player.line(result.targets,'green');
game.addVideo('storage',result.targets[0],['qianxi2',event.color]);
}
},
},
gzduanchang:{
audio:'duanchang',
2019-09-15 14:41:28 +00:00
trigger:{player:'die'},
2019-08-30 15:10:11 +00:00
forced:true,
2019-09-15 14:41:28 +00:00
forceDie:true,
2019-08-30 15:10:11 +00:00
filter:function(event,player){
return event.source&&event.source.isIn()&&event.source!=player&&
(event.source.hasMainCharacter()||event.source.hasViceCharacter());
},
content:function(){
'step 0'
if(!trigger.source.hasViceCharacter()){
event._result={control:'主将'}
}
else if(!trigger.source.hasMainCharacter()){
event._result={control:'副将'}
}
else{
player.chooseControl('主将','副将',function(){
2020-02-04 05:31:47 +00:00
return _status.event.choice;
}).set('prompt','令'+get.translation(trigger.source)+'失去一张武将牌的所有技能').set('forceDie',true).set('choice',function(){
Our Song. 马上就要高考了,这次的版本更新应该是考前的最后一次更新了。 真的很感谢这段时间以来身边的大家。身边的老师和同学也好,Key圈的各位键子们也好,无名杀玩家们也好,正是有了你们的陪伴和支持,我才能够坚持下来,走到今天的这一步。 祝愿包括我自己在内的所有考生高考顺利,金榜题名吧! 最后,在这里复制粘贴一下《Angel Beats!》TV版的ED,某种意义上也是仲村ゆり的角色歌的《Brave Song》的歌词: ``` いつもひとりで歩いてた 振り返るとみんなは遠く 一路走来形单影只 转身回首望去 大家已经远去 それでもあたしは歩いた それが強さだった 即使如此我依然前行 这正是我的坚强 もう何も恐くない そう呟いてみせる 经历 使我无所畏惧 再多冷漠也是一句叹息 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 孤独さえ愛し笑ってられるように あたしは戦うんだ 为了那笑容下与孤独作伴的勇气 我决定战斗到底 涙なんて見せないんだ 我已不再哭泣 いつもひとりで歩いてた 行く先には崖が待ってた 一路走来形单影只 而前方等着的却是山崖 それでもあたしは歩いた 強さの証明のため 即使如此我依然前行 为了证明这份坚强 吹き付ける強い風 汗でシャツが張りつく 强风吹过 汗水将衣服粘湿 いつか忘れてしまえるなら 生きることそれはたやすいもの 若有一天将一切尽数忘掉的话 生存其实并不困难 忘却の彼方へと落ちていくなら それは逃げることだろう 而若坠落在那忘却的彼端的话 那便成了逃避吧 生きた意味すら消えるだろう 就连生存的意义也会消失殆尽吧 風はやがて凪いでた 汗も乾いて 风终于停息 汗也干了 お腹が空いてきたな 何かあったっけ 肚子也饿了啊 有什么可吃的吗 賑やかな声と共にいい匂いがやってきた 同熙攘的声音一道 喷香的味道也传了过来 いつもひとりで歩いてた みんなが待っていた 一路走来形单影只 大家在前方等着我 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 それでもいい 安らかなこの気持ちは それを仲間と呼ぶんだ 这倒也没什么 这种安宁的感情 称之为伙伴 いつかみんなと過ごした日々も忘れてどこかで生きてるよ 有一天我会忘掉和大家在一起度过的日子而生活在他乡 その時はもう強くなんかないよ 到了那时 我不会再坚强了 普通の女の子の弱さで涙を零すよ 像普通的女孩一样流下柔弱的泪水 ```
2020-07-03 05:22:31 +00:00
var rank=get.guozhanRank(trigger.source.name1,trigger.source)-get.guozhanRank(trigger.source.name2,trigger.source);
2020-02-04 05:31:47 +00:00
if(rank==0) rank=Math.random()>0.5?1:-1;
return (rank*get.attitude(player,trigger.source))>0?'副将':'主将';
}());
2019-08-30 15:10:11 +00:00
}
'step 1'
var skills;
if(result.control=='主将'){
trigger.source.showCharacter(0);
game.broadcastAll(function(player){
player.node.avatar.classList.add('disabled');
},trigger.source);
skills=lib.character[trigger.source.name][3];
game.log(trigger.source,'失去了主将技能');
}
else{
trigger.source.showCharacter(1);
game.broadcastAll(function(player){
player.node.avatar2.classList.add('disabled');
},trigger.source);
skills=lib.character[trigger.source.name2][3];
game.log(trigger.source,'失去了副将技能');
}
var list=[];
for(var i=0;i<skills.length;i++){
list.add(skills[i]);
var info=lib.skill[skills[i]];
2019-12-16 04:55:19 +00:00
if(info.charlotte){list.splice(i--);continue};
2019-08-30 15:10:11 +00:00
if(typeof info.derivation=='string'){
list.add(info.derivation);
}
else if(Array.isArray(info.derivation)){
list.addArray(info.derivation);
}
}
2019-12-16 04:55:19 +00:00
trigger.source.removeSkill(list);
2019-08-30 15:10:11 +00:00
trigger.source.syncSkills();
player.line(trigger.source,'green');
},
logTarget:'source',
ai:{
threaten:function(player,target){
if(target.hp==1) return 0.2;
return 1.5;
},
effect:{
target:function(card,player,target,current){
if(!target.hasFriend()) return;
if(target.hp<=1&&get.tag(card,'damage')) return [1,0,0,-2];
}
}
}
},
gzweimu:{
audio:'weimu',
2019-10-24 04:55:01 +00:00
trigger:{target:'useCardToTarget',player:'addJudgeBefore'},
2019-08-30 15:10:11 +00:00
forced:true,
priority:15,
check:function(event,player){
return event.name=='addJudge'||(event.card.name!='chiling'&&get.effect(event.target,event.card,event.player,player)<0);
},
filter:function(event,player){
return get.type(event.card,'trick')=='trick'&&get.color(event.card)=='black';
},
content:function(){
if(trigger.name=='addJudge'){
2019-10-24 04:55:01 +00:00
trigger.cancel();
2019-08-30 15:10:11 +00:00
}
2019-10-24 04:55:01 +00:00
else trigger.getParent().targets.remove(player);
2019-08-30 15:10:11 +00:00
},
ai:{
effect:{
target:function(card,player,target,current){
if(get.type(card,'trick')=='trick'&&get.color(card)=='black') return 'zeroplayertarget';
},
}
}
},
gzqianxun:{
2020-02-23 05:45:11 +00:00
audio:'qianxun',
2019-10-24 04:55:01 +00:00
trigger:{target:'useCardToTarget',player:'addJudgeBefore'},
2019-08-30 15:10:11 +00:00
forced:true,
priority:15,
check:function(event,player){
return event.name=='addJudge'||get.effect(event.target,event.card,event.player,player)<0;
},
filter:function(event,player){
return event.card.name=='shunshou'||event.card.name=='lebu';
},
content:function(){
if(trigger.name=='addJudge'){
2019-10-24 04:55:01 +00:00
trigger.cancel();
2019-08-30 15:10:11 +00:00
}
2019-10-24 04:55:01 +00:00
else trigger.getParent().targets.remove(player);
2019-08-30 15:10:11 +00:00
},
ai:{
effect:{
target:function(card,player,target,current){
if(card.name=='shunshou'||card.name=='lebu') return 'zeroplayertarget';
},
}
}
},
gzkongcheng:{
audio:'kongcheng',
2019-10-24 04:55:01 +00:00
trigger:{target:'useCardToTarget'},
2019-08-30 15:10:11 +00:00
forced:true,
priority:15,
check:function(event,player){
return get.effect(event.target,event.card,event.player,player)<0;
},
filter:function(event,player){
return player.countCards('h')==0&&(event.card.name=='sha'||event.card.name=='juedou');
},
content:function(){
2019-10-24 04:55:01 +00:00
trigger.getParent().targets.remove(player);
2019-08-30 15:10:11 +00:00
},
ai:{
effect:{
target:function(card,player,target,current){
if(target.countCards('h')==0&&(card.name=='sha'||card.name=='juedou')) return 'zeroplayertarget';
},
}
}
},
gzxiaoji:{
inherit:'xiaoji',
audio:'xiaoji',
content:function(){
player.draw(2);
}
},
gzrende:{
audio:'rende',
group:['gzrende1'],
enable:'phaseUse',
filterCard:true,
selectCard:[1,Infinity],
discard:false,
prepare:'give',
filterTarget:function(card,player,target){
return player!=target;
},
check:function(card){
if(ui.selected.cards.length>2) return 0;
if(ui.selected.cards.length&&ui.selected.cards[0].name=='du') return 0;
if(!ui.selected.cards.length&&card.name=='du') return 20;
var player=get.owner(card);
if(player.hp==player.maxHp||player.storage.gzrende<0||player.countCards('h')+player.storage.gzrende<=2){
if(ui.selected.cards.length){
return -1;
}
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i].hasSkill('haoshi')&&
!players[i].isTurnedOver()&&
!players[i].hasJudge('lebu')&&
get.attitude(player,players[i])>=3&&
get.attitude(players[i],player)>=3){
return 11-get.value(card);
}
}
if(player.countCards('h')>player.hp) return 10-get.value(card);
if(player.countCards('h')>2) return 6-get.value(card);
return -1;
}
return 10-get.value(card);
},
content:function(){
target.gain(cards,player);
if(typeof player.storage.gzrende!='number'){
player.storage.gzrende=0;
}
if(player.storage.gzrende>=0){
player.storage.gzrende+=cards.length;
if(player.storage.gzrende>=3){
player.recover();
player.storage.gzrende=-1;
}
}
},
ai:{
order:function(skill,player){
if(player.hp==player.maxHp||player.storage.gzrende<0||player.countCards('h')+player.storage.gzrende<=2){
return 1;
}
return 10;
},
result:{
target:function(player,target){
if(ui.selected.cards.length&&ui.selected.cards[0].name=='du'){
return -10;
}
if(target.hasJudge('lebu')) return 0;
var nh=target.countCards('h');
var np=player.countCards('h');
if(player.hp==player.maxHp||player.storage.gzrende<0||player.countCards('h')+player.storage.gzrende<=2){
if(nh>=np-1&&np<=player.hp&&!target.hasSkill('haoshi')) return 0;
}
return Math.max(1,5-nh);
}
},
effect:{
target:function(card,player,target){
if(player==target&&get.type(card)=='equip'){
if(player.countCards('e',{subtype:get.subtype(card)})){
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i]!=player&&get.attitude(player,players[i])>0){
return 0;
}
}
}
}
}
},
threaten:0.8
}
},
gzrende1:{
trigger:{player:'phaseUseBegin'},
silent:true,
content:function(){
player.storage.gzrende=0;
}
},
gzzhiheng:{
inherit:'zhiheng',
audio:'zhiheng',
selectCard:function(){
var player=_status.event.player;
var range1=[1,player.maxHp];
if(player.hasSkill('dinglanyemingzhu_skill')){
for(var i=0;i<ui.selected.cards.length;i++){
if(ui.selected.cards[i]==player.getEquip(5)) return range1;
}
return [1,Infinity]
}
return range1;
},
filterCard:function(card,player){
if(ui.selected.cards.length<player.maxHp||!player.hasSkill('dinglanyemingzhu_skill')) return true;
return card!=player.getEquip(5);
},
complexCard:true,
complexSelect:true,
prompt:function(){
var player=_status.event.player;
if(player.hasSkill('dinglanyemingzhu_skill')) return '出牌阶段限一次,你可以弃置任意张牌,然后摸等量的牌';
return '出牌阶段限一次你可以弃置至多X张牌X为你的体力上限然后摸等量的牌';
}
},
duoshi:{
enable:'chooseToUse',
viewAs:{name:'yiyi'},
usable:4,
filterCard:{color:'red'},
viewAsFilter:function(player){
return player.countCards('h',{color:'red'})>0;
},
check:function(card){
return 5-get.value(card);
}
},
gzxiaoguo:{
inherit:'xiaoguo',
audio:'xiaoguo',
content:function(){
"step 0"
var nono=(Math.abs(get.attitude(player,trigger.player))<3);
if(get.damageEffect(trigger.player,player,player)<=0){
nono=true;
}
var next=player.chooseToDiscard(get.prompt2('gzxiaoguo',trigger.player),{type:'basic'});
next.set('ai',function(card){
if(_status.event.nono) return 0;
return 8-get.useful(card);
});
next.set('logSkill',['gzxiaoguo',trigger.player]);
next.set('nono',nono);
"step 1"
if(result.bool){
var nono=(get.damageEffect(trigger.player,player,trigger.player)>=0);
trigger.player.chooseToDiscard('弃置一张装备牌,或受到一点伤害','he',{type:'equip'}).set('ai',function(card){
if(_status.event.nono){
return 0;
}
if(_status.event.player.hp==1) return 10-get.value(card);
return 9-get.value(card);
}).set('nono',nono);
}
else{
event.finish();
}
"step 2"
if(!result.bool){
trigger.player.damage();
}
},
},
_mingzhi1:{
trigger:{player:'phaseBeginStart'},
priority:19,
forced:true,
popup:false,
content:function(){
"step 0"
var choice=1;
for(var i=0;i<player.hiddenSkills.length;i++){
if(lib.skill[player.hiddenSkills[i]].ai){
var mingzhi=lib.skill[player.hiddenSkills[i]].ai.mingzhi;
if(mingzhi==false){
choice=0;break;
}
if(typeof mingzhi=='function'&&mingzhi(trigger,player)==false){
choice=0;break;
}
}
}
if(player.isUnseen()){
var group=lib.character[player.name1][1];
player.chooseControl('bumingzhi','明置'+get.translation(player.name1),
'明置'+get.translation(player.name2),'tongshimingzhi',true).ai=function(event,player){
var popu=get.population(lib.character[player.name1][1])
if(popu>=2||(popu==1&&game.players.length<=4)){
return Math.random()<0.5?3:(Math.random()<0.5?2:1);
}
if(choice==0) return 0;
if(get.population(group)>0&&player.wontYe()){
return Math.random()<0.2?(Math.random()<0.5?3:(Math.random()<0.5?2:1)):0;
}
var nming=0;
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=player&&game.players[i].identity!='unknown'){
nming++;
}
}
if(nming==game.players.length-1) return Math.random()<0.5?(Math.random()<0.5?3:(Math.random()<0.5?2:1)):0;
return (Math.random()<0.1*nming/game.players.length)?(Math.random()<0.5?3:(Math.random()<0.5?2:1)):0;
};
}
else{
if(Math.random()<0.5) choice=0;
if(player.isUnseen(0)){
player.chooseControl('bumingzhi','明置'+get.translation(player.name1),true).choice=choice;
}
else if(player.isUnseen(1)){
player.chooseControl('bumingzhi','明置'+get.translation(player.name2),true).choice=choice;
}
else{
event.finish();
}
}
"step 1"
switch(result.control){
case '明置'+get.translation(player.name1):player.showCharacter(0);break;
case '明置'+get.translation(player.name2):player.showCharacter(1);break;
case 'tongshimingzhi':player.showCharacter(2);break;
}
}
},
_mingzhi2:{
trigger:{player:'triggerHidden'},
forced:true,
2019-09-15 14:41:28 +00:00
forceDie:true,
2019-08-30 15:10:11 +00:00
popup:false,
priority:10,
content:function(){
"step 0"
if(get.info(trigger.skill).silent){
event.finish();
}
else{
event.skillHidden=true;
var bool1=(game.expandSkills(lib.character[player.name1][3]).contains(trigger.skill));
var bool2=(game.expandSkills(lib.character[player.name2][3]).contains(trigger.skill));
var nai=function(){
var player=_status.event.player;
if(!_status.event.yes) return false;
if(player.identity!='unknown') return true;
if(Math.random()<0.5) return true;
var info=get.info(_status.event.hsskill);
if(info&&info.ai&&info.ai.mingzhi==true) return true;
if(info&&info.ai&&info.ai.maixie) return true;
var group=lib.character[player.name1][1];
var popu=get.population(lib.character[player.name1][1])
if(popu>=2||(popu==1&&game.players.length<=4)){
return true;
}
if(get.population(group)>0&&player.wontYe()){
return Math.random()<0.2?true:false;
}
var nming=0;
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=player&&game.players[i].identity!='unknown'){
nming++;
}
}
if(nming==game.players.length-1) return Math.random()<0.5?true:false;
return (Math.random()<0.1*nming/game.players.length)?true:false;
}
if(bool1&&bool2){
event.name=player.name1;
event.name2=player.name2;
}
else{
event.name=bool1?player.name1:player.name2;
}
var info=get.info(trigger.skill);
var next=player.chooseBool('是否明置'+get.translation(event.name)+'以发动【'+get.translation(trigger.skill)+'】?');
next.set('yes',!info.check||info.check(trigger._trigger,player));
next.set('hsskill',trigger.skill);
next.set('ai',nai);
}
"step 1"
if(result.bool){
if(event.name==player.name1) player.showCharacter(0);
else player.showCharacter(1);
trigger.revealed=true;
event.finish();
}
else if(event.name2){
var info=get.info(trigger.skill);
var next=player.chooseBool('是否明置'+get.translation(event.name2)+'以发动【'+get.translation(trigger.skill)+'】?');
next.set('yes',!info.check||info.check(trigger._trigger,player));
next.set('ai',function(){
return _status.event.yes;
});
}
else{
event.finish();
trigger.untrigger();
trigger.cancelled=true;
}
"step 2"
if(event.name2){
if(result.bool){
player.showCharacter(1);
trigger.revealed=true;
}
else{
trigger.untrigger();
trigger.cancelled=true;
}
}
}
},
_mingzhi3:{
trigger:{player:'phaseBefore'},
priority:19.1,
forced:true,
popup:false,
filter:function(event,player){
if(player.storage._mingzhi3) return false
if(_status.connectMode){
if(!lib.configOL.junzhu) return false;
}
2020-02-04 05:31:47 +00:00
else if(!get.config('junzhu')) return false;
2019-08-30 15:10:11 +00:00
return true;
},
content:function(){
'step 0'
player.storage._mingzhi3=true;
var name=player.name1;
if(!player.isUnseen(0)||name.indexOf('gz_')!=0||!lib.junList.contains(name.slice(3))||!lib.character['gz_jun_'+name.slice(3)]) event.finish();
else{
player.chooseBool("是否将主武将牌替换为君主武将?").ai=function(){return true};
}
'step 1'
if(result.bool){
var from=player.name1;
var to='gz_jun_'+player.name1.slice(3);
event.maxHp=player.maxHp;
player.reinit(from,to,4);
2020-02-04 05:31:47 +00:00
if(lib.skill[to]) game.trySkillAudio(to,player);
2019-08-30 15:10:11 +00:00
player.showCharacter(0);
2020-04-18 05:32:41 +00:00
var yelist=[];
for(var i=0;i<game.players.length;i++){
if(game.players[i].identity=='ye'&&game.players[i]._group==player.group){
yelist.push(game.players[i]);
}
}
game.broadcastAll(function(list,group){
for(var i=0;i<list.length;i++){
list[i].identity=group;
list[i].setIdentity();
}
},yelist,player.group);
2019-08-30 15:10:11 +00:00
}
else event.finish();
'step 2'
if(player.maxHp>event.maxHp) player.recover(player.maxHp-event.maxHp);
}
},
2020-02-04 05:31:47 +00:00
gz_jun_liubei:{audio:true},
gz_jun_caocao:{audio:true},
gz_jun_sunquan:{audio:true},
gz_jun_zhangjiao:{audio:true},
2019-08-30 15:10:11 +00:00
_zhenfazhaohuan:{
enable:'phaseUse',
usable:1,
getConfig:function(player,target){
var config={};
var skills=player.getSkills();
for(var i=0;i<skills.length;i++){
var info=get.info(skills[i]).zhenfa;
if(info){
config[info]=true;
}
}
if(config.inline){
var next=target.getNext();
var previous=target.getPrevious();
2019-11-07 14:45:50 +00:00
return (next==player||previous==player||next&&next.inline(player)||previous&&previous.inline(player))
2019-08-30 15:10:11 +00:00
}
else if(config.siege){
return (target==player.getNext().getNext()||target==player.getPrevious().getPrevious());
}
return false;
},
filter:function(event,player){
if(player.identity=='ye') return false;
if(player.hasSkill('undist')) return false;
if(game.countPlayer(function(current){
return !current.hasSkill('undist');
})<4) return false;
return game.hasPlayer(function(current){
return current!=player&&current.isUnseen()&&lib.skill._zhenfazhaohuan.getConfig(player,current);
});
},
content:function(){
'step 0'
event.list=game.filterPlayer(function(current){
return current!=player&&current.isUnseen();
});
'step 1'
event.current=event.list.shift();
if(lib.skill._zhenfazhaohuan.getConfig(player,event.current)){
player.line(event.current,'green');
if(event.current._group==player.group&&event.current.wontYe()){
event.current.chooseControl('明置主将','明置副将','取消').set('prompt','是否响应'+get.translation(player)+'的阵法召唤?').ai=function(){return Math.floor(Math.random()*3)};
}
else event.goto(3);
2019-08-30 15:10:11 +00:00
}
else event.goto(3);
'step 2'
if(result.control=='明置主将'){
event.current.showCharacter(0);
}
else if(result.control=='明置副将'){
event.current.showCharacter(1);
}
'step 3'
if(event.list.length) event.goto(1);
'step 4'
game.delay();
},
ai:{
order:5,
result:{
player:1
}
}
},
},
game:{
getCharacterChoice:function(list,num){
var choice=list.splice(0,num);
2020-11-05 08:26:02 +00:00
var map={wei:[],shu:[],wu:[],qun:[],key:[]};
2019-08-30 15:10:11 +00:00
for(var i=0;i<choice.length;i++){
var group=lib.character[choice[i]][1];
if(map[group]){
map[group].push(choice[i]);
}
}
for(var i in map){
if(map[i].length<2){
if(map[i].length==1){
choice.remove(map[i][0]);
list.push(map[i][0]);
}
delete map[i];
}
}
if(choice.length==num-1){
for(var i=0;i<list.length;i++){
if(map[lib.character[list[i]][1]]){
choice.push(list[i]);
list.splice(i--,1);
break;
}
}
}
else if(choice.length<num-1){
var group=null
for(var i=0;i<list.length;i++){
if(group){
if(lib.character[list[i]][1]==group){
choice.push(list[i]);
list.splice(i--,1);
if(choice.length>=num){
break;
}
}
}
else{
if(!map[lib.character[list[i]][1]]){
group=lib.character[list[i]][1];
choice.push(list[i]);
list.splice(i--,1);
}
}
}
}
return choice;
},
getState:function(){
var state={};
for(var i in lib.playerOL){
var player=lib.playerOL[i];
state[i]={
identity:player.identity,
//group:player.group,
2019-08-30 15:10:11 +00:00
shown:player.ai.shown,
};
}
return state;
},
updateState:function(state){
for(var i in state){
var player=lib.playerOL[i];
if(player){
player.identity=state[i].identity;
//player.group=state[i].group;
2019-08-30 15:10:11 +00:00
player.ai.shown=state[i].shown;
}
}
},
getRoomInfo:function(uiintro){
var num,last;
if(lib.configOL.initshow_draw=='off'){
num='关闭'
}
else{
num={mark:'标记',draw:'摸牌'}[lib.configOL.initshow_draw];
}
uiintro.add('<div class="text chat">首亮奖励:'+num);
uiintro.add('<div class="text chat">珠联璧合:'+(lib.configOL.zhulian?'开启':'关闭'));
uiintro.add('<div class="text chat">出牌时限:'+lib.configOL.choose_timeout+'秒');
uiintro.add('<div class="text chat">国战牌堆:'+(lib.configOL.guozhanpile?'开启':'关闭'));
uiintro.add('<div class="text chat">鏖战模式:'+(lib.configOL.aozhan?'开启':'关闭'));
uiintro.add('<div class="text chat">观看下家副将:'+(lib.configOL.viewnext?'开启':'关闭'));
last=uiintro.add('<div class="text chat">国战武将:'+(lib.configOL.onlyguozhan?'开启':'关闭'));
if(!lib.configOL.onlyguozhan){
// uiintro.add('<div class="text chat">屏蔽弱将:'+(lib.configOL.ban_weak?'开启':'关闭'));
// last=uiintro.add('<div class="text chat">屏蔽强将:'+(lib.configOL.ban_strong?'开启':'关闭'));
if(lib.configOL.banned.length){
last=uiintro.add('<div class="text chat">禁用武将:'+get.translation(lib.configOL.banned));
}
if(lib.configOL.bannedcards.length){
last=uiintro.add('<div class="text chat">禁用卡牌:'+get.translation(lib.configOL.bannedcards));
}
}
last.style.paddingBottom='8px';
},
addRecord:function(bool){
if(typeof bool=='boolean'){
var data=lib.config.gameRecord.guozhan.data;
var identity=game.me.identity;
if(!data[identity]){
data[identity]=[0,0];
}
if(bool){
data[identity][0]++;
}
else{
data[identity][1]++;
}
var list=lib.group.slice(0);
list.add('ye');
var str='';
for(var i=0;i<list.length;i++){
if(list[i]!='shen'&&data[list[i]]){
str+=lib.translate[list[i]+'2']+''+data[list[i]][0]+'胜'+' '+data[list[i]][1]+'负<br>';
}
}
lib.config.gameRecord.guozhan.str=str;
game.saveConfig('gameRecord',lib.config.gameRecord);
}
},
getIdentityList:function(player){
if(!player.isUnseen()) return;
if(player==game.me) return;
var list={
wei:'魏',
shu:'蜀',
wu:'吴',
qun:'群',
ye:'野',
unknown:'猜'
}
var num=Math.floor((game.players.length+game.dead.length)/2);
var noye=true;
if(get.population('wei')>=num){
delete list.wei;
noye=false;
}
if(get.population('shu')>=num){
delete list.shu;
noye=false;
}
if(get.population('wu')>=num){
delete list.wu;
noye=false;
}
if(get.population('qun')>=num){
delete list.qun;
noye=false;
}
if(noye){
delete list.ye;
}
return list;
},
getIdentityList2:function(list){
for(var i in list){
switch(i){
case 'unknown':list[i]='未知';break;
case 'ye':list[i]='野心家';break;
case 'qun':list[i]+='雄';break;
default:list[i]+='国';
}
}
},
getVideoName:function(){
var str=get.translation(game.me.name1)+'/'+get.translation(game.me.name2);
var str2=get.cnNumber(parseInt(get.config('player_number')))+'人'+
get.translation(lib.config.mode);
if(game.me.identity=='ye'){
str2+=' - 野心家';
}
var name=[str,str2];
return name;
},
showIdentity:function(started){
if(game.phaseNumber==0&&!started) return;
for(var i=0;i<game.players.length;i++){
game.players[i].showCharacter(2,false);
}
},
tryResult:function(){
var hasunknown=false,check=true,unknown,giveup;
var group=game.players[0]._group;
for(var i=0;i<game.players.length;i++){
if(game.players[i].identity=='unknown'){
hasunknown=true;
if(unknown){
unknown='no';
}
else{
unknown=game.players[i];
}
}
if(game.players[i]._group!=group){
check=false;break;
}
}
if(check){
if(get.population('ye')){
if(game.players.length>1){
check=false;
}
}
else{
if(hasunknown&&!game.hasPlayer(function(current){
return get.is.jun(current);
})){
var players=game.players.concat(game.dead);
var num=0;
for(var i=0;i<players.length;i++){
if(players[i]._group==group){
num++;
}
}
if(num>players.length/2){
check=false;
}
}
}
}
if(check){
game.checkResult();
}
else if(!hasunknown){
var ids=[];
var idmap={};
var idp={};
for(var i=0;i<game.players.length;i++){
var id=game.players[i].identity;
ids.add(id);
if(!idmap[id]){
idmap[id]=1;
}
else{
idmap[id]++;
}
idp[id]=game.players[i];
}
if(ids.length!=2) return;
var id1=ids[0],id2=ids[1];
if(idmap[id1]>1&&idmap[id2]>1) return;
if(idmap[id1]>1&&id1=='ye') return;
if(idmap[id2]>1&&id2=='ye') return;
if(idmap[id1]==1){
idp[id1].showGiveup();
}
if(idmap[id2]==1){
idp[id2].showGiveup();
}
}
},
checkResult:function(){
_status.overing=true;
2020-10-20 13:54:19 +00:00
var me=game.me._trueMe||game.me;
2019-08-30 15:10:11 +00:00
for(var i=0;i<game.players.length;i++){
game.players[i].showCharacter(2);
}
2020-10-20 13:54:19 +00:00
if(me.identity=='ye'){
if(me.classList.contains('dead')){
2019-08-30 15:10:11 +00:00
game.over(false);
}
else{
game.over(true);
}
}
else{
2020-10-20 13:54:19 +00:00
if(get.population(me.identity)==0){
2019-08-30 15:10:11 +00:00
game.over(false);
}
else{
game.over(true);
}
}
game.showIdentity();
},
checkOnlineResult:function(player){
if(player.identity=='ye'){
return player.isAlive();
}
return get.population(player.identity)>0;
},
chooseCharacter:function(){
var next=game.createEvent('chooseCharacter',false);
next.showConfig=true;
next.addPlayer=true;
next.ai=function(player,list,back){
if(_status.brawl&&_status.brawl.chooseCharacterAi){
if(_status.brawl.chooseCharacterAi(player,list,back)!==false){
return;
}
}
for(var i=0;i<list.length-1;i++){
for(var j=i+1;j<list.length;j++){
if(lib.character[list[i]][1]==lib.character[list[j]][1]){
2019-10-31 04:43:12 +00:00
var mainx=list[i];
var vicex=list[j];
if(get.guozhanReverse(mainx,vicex)){
mainx=list[j];
vicex=list[i];
}
player.init(mainx,vicex,false);
2019-08-30 15:10:11 +00:00
if(back){
list.remove(player.name);
list.remove(player.name2);
for(var i=0;i<list.length;i++){
back.push(list[i]);
}
}
return;
}
}
}
}
next.setContent(function(){
"step 0"
ui.arena.classList.add('choose-character');
var addSetting=function(dialog){
dialog.add('选择座位').classList.add('add-setting');
var seats=document.createElement('table');
seats.classList.add('add-setting');
seats.style.margin='0';
seats.style.width='100%';
seats.style.position='relative';
for(var i=1;i<=game.players.length;i++){
var td=ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode');
td.innerHTML='<span>'+get.cnNumber(i,true)+'</span>';
td.link=i-1;
seats.appendChild(td);
td.addEventListener(lib.config.touchscreen?'touchend':'click',function(){
if(_status.dragged) return;
if(_status.justdragged) return;
if(_status.cheat_seat){
_status.cheat_seat.classList.remove('bluebg');
if(_status.cheat_seat==this){
delete _status.cheat_seat;
return;
}
}
this.classList.add('bluebg');
_status.cheat_seat=this;
});
}
dialog.content.appendChild(seats);
if(game.me==game.zhu){
seats.previousSibling.style.display='none';
seats.style.display='none';
}
dialog.add(ui.create.div('.placeholder.add-setting'));
dialog.add(ui.create.div('.placeholder.add-setting'));
if(get.is.phoneLayout()) dialog.add(ui.create.div('.placeholder.add-setting'));
};
var removeSetting=function(){
var dialog=_status.event.dialog;
if(dialog){
dialog.style.height='';
delete dialog._scrollset;
var list=Array.from(dialog.querySelectorAll('.add-setting'));
while(list.length){
list.shift().remove();
}
ui.update();
}
};
event.addSetting=addSetting;
event.removeSetting=removeSetting;
var chosen=lib.config.continue_name||[];
game.saveConfig('continue_name');
event.chosen=chosen;
var i;
event.list=[];
for(i in lib.character){
if(i.indexOf('gz_shibing')==0) continue;
if(chosen.contains(i)) continue;
if(lib.filter.characterDisabled(i)) continue;
if(get.config('onlyguozhan')){
if(!lib.characterPack.mode_guozhan[i]) continue;
if(get.is.jun(i)) continue;
}
if(lib.character[i][4].contains('hiddenSkill')) continue;
2019-08-30 15:10:11 +00:00
if(lib.character[i][2]==3||lib.character[i][2]==4||lib.character[i][2]==5)
event.list.push(i);
}
_status.characterlist=event.list.slice(0);
_status.yeidentity=[];
if(_status.brawl&&_status.brawl.chooseCharacterFilter){
event.list=_status.brawl.chooseCharacterFilter(event.list);
}
event.list.randomSort();
// var list=event.list.splice(0,parseInt(get.config('choice_num')));
var list;
if(_status.brawl&&_status.brawl.chooseCharacter){
list=_status.brawl.chooseCharacter(event.list,game.me);
}
else{
list=game.getCharacterChoice(event.list,parseInt(get.config('choice_num')));
}
if(_status.auto){
event.ai(game.me,list);
lib.init.onfree();
}
else if(chosen.length){
game.me.init(chosen[0],chosen[1],false);
lib.init.onfree();
}
else{
var dialog=ui.create.dialog('选择角色','hidden',[list,'character']);
if(!_status.brawl||!_status.brawl.noAddSetting){
if(get.config('change_identity')){
addSetting(dialog);
}
}
var next=game.me.chooseButton(dialog,true,2).set('onfree',true);
next.filterButton=function(button){
if(ui.dialog.buttons.length<=10){
for(var i=0;i<ui.dialog.buttons.length;i++){
if(ui.dialog.buttons[i]!=button){
if(lib.element.player.perfectPair.call({
name1:button.link,name2:ui.dialog.buttons[i].link
})){
button.classList.add('glow2');
}
}
}
}
if(lib.character[button.link][4].contains('hiddenSkill')) return false;
2020-04-03 12:09:26 +00:00
if(ui.selected.buttons.length==0){
for(var i=0;i<ui.dialog.buttons.length;i++){
if(ui.dialog.buttons[i]!=button&&lib.character[button.link][1]==lib.character[ui.dialog.buttons[i].link][1]){
return true;
}
}
return false;
};
2019-08-30 15:10:11 +00:00
return (lib.character[button.link][1]==lib.character[ui.selected.buttons[0].link][1]);
};
next.switchToAuto=function(){
event.ai(game.me,list);
ui.arena.classList.remove('selecting');
};
var createCharacterDialog=function(){
event.dialogxx=ui.create.characterDialog('heightset',function(i){
if(i.indexOf('gz_shibing')==0) return true;
if(get.config('onlyguozhan')){
if(!lib.characterPack.mode_guozhan[i]) return true;
if(get.is.jun(i)) return true;
}
},get.config('onlyguozhanexpand')?'expandall':undefined,get.config('onlyguozhan')?'onlypack:mode_guozhan':undefined);
if(ui.cheat2){
ui.cheat2.animate('controlpressdownx',500);
ui.cheat2.classList.remove('disabled');
}
};
if(lib.onfree){
lib.onfree.push(createCharacterDialog);
}
else{
createCharacterDialog();
}
ui.create.cheat2=function(){
ui.cheat2=ui.create.control('自由选将',function(){
if(this.dialog==_status.event.dialog){
if(game.changeCoin){
game.changeCoin(50);
}
this.dialog.close();
_status.event.dialog=this.backup;
this.backup.open();
delete this.backup;
game.uncheck();
game.check();
if(ui.cheat){
ui.cheat.animate('controlpressdownx',500);
ui.cheat.classList.remove('disabled');
}
}
else{
if(game.changeCoin){
game.changeCoin(-10);
}
this.backup=_status.event.dialog;
_status.event.dialog.close();
_status.event.dialog=_status.event.parent.dialogxx;
this.dialog=_status.event.dialog;
this.dialog.open();
game.uncheck();
game.check();
if(ui.cheat){
ui.cheat.classList.add('disabled');
}
}
});
if(lib.onfree){
ui.cheat2.classList.add('disabled');
}
}
ui.create.cheat=function(){
_status.createControl=ui.cheat2;
ui.cheat=ui.create.control('更换',function(){
if(ui.cheat2&&ui.cheat2.dialog==_status.event.dialog){
return;
}
if(game.changeCoin){
game.changeCoin(-3);
}
event.list=event.list.concat(list);
event.list.randomSort();
// list=event.list.splice(0,parseInt(get.config('choice_num')));
list=game.getCharacterChoice(event.list,parseInt(get.config('choice_num')));
var buttons=ui.create.div('.buttons');
var node=_status.event.dialog.buttons[0].parentNode;
_status.event.dialog.buttons=ui.create.buttons(list,'character',buttons);
_status.event.dialog.content.insertBefore(buttons,node);
buttons.animate('start');
node.remove();
game.uncheck();
game.check();
});
delete _status.createControl;
}
if(!_status.brawl||!_status.brawl.chooseCharacterFixed){
if(!ui.cheat&&get.config('change_choice'))
ui.create.cheat();
if(!ui.cheat2&&get.config('free_choose'))
ui.create.cheat2();
}
}
"step 1"
if(ui.cheat){
ui.cheat.close();
delete ui.cheat;
}
if(ui.cheat2){
ui.cheat2.close();
delete ui.cheat2;
}
if(result.buttons){
game.me.init(result.buttons[0].link,result.buttons[1].link,false);
game.addRecentCharacter(result.buttons[0].link,result.buttons[1].link);
}
// game.me.setIdentity(game.me.group);
event.list.remove(game.me.name);
event.list.remove(game.me.name2);
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=game.me){
event.ai(game.players[i],event.list.splice(0,parseInt(get.config('choice_num'))),event.list);
}
}
for(var i=0;i<game.players.length;i++){
game.players[i].classList.add('unseen');
game.players[i].classList.add('unseen2');
_status.characterlist.remove(game.players[i].name);
_status.characterlist.remove(game.players[i].name2);
if(game.players[i]!=game.me){
game.players[i].node.identity.firstChild.innerHTML='猜';
game.players[i].node.identity.dataset.color='unknown';
game.players[i].node.identity.classList.add('guessing');
}
game.players[i].hiddenSkills=lib.character[game.players[i].name][3].slice(0);
var hiddenSkills2=lib.character[game.players[i].name2][3];
for(var j=0;j<hiddenSkills2.length;j++){
game.players[i].hiddenSkills.add(hiddenSkills2[j]);
}
for(var j=0;j<game.players[i].hiddenSkills.length;j++){
if(!lib.skill[game.players[i].hiddenSkills[j]]){
game.players[i].hiddenSkills.splice(j--,1);
}
}
game.players[i].group='unknown';
game.players[i].sex='unknown';
game.players[i].name1=game.players[i].name;
game.players[i].name='unknown';
game.players[i].identity='unknown';
game.players[i].node.name.show();
game.players[i].node.name2.show();
2020-07-17 22:44:32 +00:00
game.players[i]._group=lib.character[game.players[i].name2][1];
2019-08-30 15:10:11 +00:00
for(var j=0;j<game.players[i].hiddenSkills.length;j++){
game.players[i].addSkillTrigger(game.players[i].hiddenSkills[j],true);
}
}
setTimeout(function(){
ui.arena.classList.remove('choose-character');
},500);
});
},
chooseCharacterOL:function(){
var next=game.createEvent('chooseCharacter',false);
next.setContent(function(){
'step 0'
game.broadcastAll(function(){
ui.arena.classList.add('choose-character');
});
var list;
if(lib.configOL.onlyguozhan){
list=[];
for(var i in lib.characterPack.mode_guozhan){
if(i.indexOf('gz_shibing')==0) continue;
if(get.is.jun(i)) continue;
if(lib.character[i][4].contains('hiddenSkill')) continue;
2019-08-30 15:10:11 +00:00
list.push(i);
}
}
else{
list=get.charactersOL(function(i){
return lib.character[i][4].contains('hiddenSkill');
});
2019-08-30 15:10:11 +00:00
}
_status.characterlist=list.slice(0);
_status.yeidentity=[];
event.list=list.slice(0);
var list2=[];
var num;
if(lib.configOL.number*6>list.length){
num=5;
}
else if(lib.configOL.number*7>list.length){
num=6;
}
else{
num=7;
}
var filterButton=function(button){
if(ui.dialog){
if(ui.dialog.buttons.length<=10){
for(var i=0;i<ui.dialog.buttons.length;i++){
if(ui.dialog.buttons[i]!=button){
if(lib.element.player.perfectPair.call({
name1:button.link,name2:ui.dialog.buttons[i].link
})){
button.classList.add('glow2');
}
}
}
}
}
2020-04-03 12:09:26 +00:00
if(ui.selected.buttons.length==0){
for(var i=0;i<ui.dialog.buttons.length;i++){
if(ui.dialog.buttons[i]!=button&&lib.character[button.link][1]==lib.character[ui.dialog.buttons[i].link][1]){
return true;
}
}
return false;
};
2019-08-30 15:10:11 +00:00
if(!lib.character[button.link]) return false;
return (lib.character[button.link][1]==lib.character[ui.selected.buttons[0].link][1]);
};
list.randomSort();
for(var i=0;i<game.players.length;i++){
list2.push([game.players[i],['选择角色',[game.getCharacterChoice(list,num),'character']],2,
true,function(){return Math.random()},filterButton]);
}
game.me.chooseButtonOL(list2,function(player,result){
if(game.online||player==game.me) player.init(result.links[0],result.links[1],false);
}).set('switchToAuto',function(){
_status.event.result='ai';
}).set('processAI',function(){
var buttons=_status.event.dialog.buttons;
for(var i=0;i<buttons.length-1;i++){
for(var j=i+1;j<buttons.length;j++){
if(lib.character[buttons[i].link][1]==lib.character[buttons[j].link][1]){
2019-10-31 04:43:12 +00:00
var list=[buttons[i].link,buttons[j].link];
if(get.guozhanReverse(list[0],list[1])) list.reverse();
2019-08-30 15:10:11 +00:00
return {
bool:true,
2019-10-31 04:43:12 +00:00
links:list,
2019-08-30 15:10:11 +00:00
}
}
}
}
});
'step 1'
var sort=true;
for(var i in result){
if(result[i]&&result[i].links){
for(var j=0;j<result[i].links.length;j++){
event.list.remove(result[i].links[j]);
}
}
}
for(var i in result){
if(result[i]=='ai'||!result[i].links||result[i].links.length<1){
if(sort){
sort=false;
event.list.randomSort();
}
result[i]=[event.list.shift()];
var group=lib.character[result[i][0]][1];
for(var j=0;j<event.list.length;j++){
if(lib.character[event.list[j]][1]==group){
result[i].push(event.list[j]);
event.list.splice(j--,1);
break;
}
}
}
else{
result[i]=result[i].links
}
if(!lib.playerOL[i].name){
lib.playerOL[i].init(result[i][0],result[i][1],false);
}
}
for(var i=0;i<game.players.length;i++){
_status.characterlist.remove(game.players[i].name);
_status.characterlist.remove(game.players[i].name2);
game.players[i].hiddenSkills=lib.character[game.players[i].name][3].slice(0);
var hiddenSkills2=lib.character[game.players[i].name2][3];
for(var j=0;j<hiddenSkills2.length;j++){
game.players[i].hiddenSkills.add(hiddenSkills2[j]);
}
for(var j=0;j<game.players[i].hiddenSkills.length;j++){
if(!lib.skill[game.players[i].hiddenSkills[j]]){
game.players[i].hiddenSkills.splice(j--,1);
}
}
for(var j=0;j<game.players[i].hiddenSkills.length;j++){
game.players[i].name1=game.players[i].name;
game.players[i].addSkillTrigger(game.players[i].hiddenSkills[j],true);
}
}
game.broadcastAll(function(result){
for(var i in result){
if(!lib.playerOL[i].name){
lib.playerOL[i].init(result[i][0],result[i][1],false);
}
}
for(var i=0;i<game.players.length;i++){
game.players[i].classList.add('unseen');
game.players[i].classList.add('unseen2');
if(game.players[i]!=game.me){
game.players[i].node.identity.firstChild.innerHTML='猜';
game.players[i].node.identity.dataset.color='unknown';
game.players[i].node.identity.classList.add('guessing');
}
game.players[i].group='unknown';
game.players[i].sex='unknown';
game.players[i].name1=game.players[i].name;
game.players[i].name='unknown';
game.players[i].identity='unknown';
game.players[i].node.name.show();
game.players[i].node.name2.show();
2020-07-17 22:44:32 +00:00
game.players[i]._group=lib.character[game.players[i].name2][1];
2019-08-30 15:10:11 +00:00
}
setTimeout(function(){
ui.arena.classList.remove('choose-character');
},500);
},result);
});
}
},
ui:{
click:{
// identity:function(){
// if(this.touched) {this.touched=false;return;}
// _status.clicked=true;
// if(this.parentNode.isUnseen()&&this.parentNode!=game.me){
// switch(this.firstChild.innerHTML){
// case '魏':this.firstChild.innerHTML='蜀';this.dataset.color='shu';break;
// case '蜀':this.firstChild.innerHTML='吴';this.dataset.color='wu';break;
// case '吴':this.firstChild.innerHTML='群';this.dataset.color='qun';break;
// case '群':this.firstChild.innerHTML='野';this.dataset.color='ye';break;
// case '野':this.firstChild.innerHTML='猜';this.dataset.color='unknown';break;
// default:this.firstChild.innerHTML='魏';this.dataset.color='wei';break;
// }
// }
// }
}
},
translate:{
ye:'野',
ye2:'野心家',
2019-09-06 02:57:10 +00:00
2019-08-30 15:10:11 +00:00
bumingzhi:'不明置',
mingzhizhujiang:'明置主将',
mingzhifujiang:'明置副将',
tongshimingzhi:'同时明置',
mode_guozhan_character_config:'国战武将',
_zhenfazhaohuan:'阵法召唤',
2020-03-05 13:10:37 +00:00
_zhenfazhaohuan_info:'由拥有阵法技的角色发起,满足此阵法技条件的未确定势力角色均可按逆时针顺序依次明置其一张武将牌(响应阵法召唤),以发挥阵法技的效果。',
2019-08-30 15:10:11 +00:00
2020-02-04 05:31:47 +00:00
junling:'军令',
junling1:'军令一',
junling1_bg:'令',
junling1_info:'若被执行,执行者对发起者指定的一名角色造成一点伤害。',
junling2:'军令二',
junling2_bg:'令',
junling2_info:'若被执行,执行者摸一张牌,然后依次交给发起者两张牌。',
2019-10-31 04:43:12 +00:00
junling3:'军令三',
2020-02-04 05:31:47 +00:00
junling3_bg:'令',
junling3_info:'若被执行,执行者失去一点体力。',
junling4:'军令四',
junling4_bg:'令',
junling4_info:'若被执行,直到回合结束,执行者不能使用或打出手牌且非锁定技全部失效。',
junling4_eff:'军令四',
junling5:'军令五',
junling5_bg:'令',
junling5_info:'若被执行,执行者将武将牌叠置,且不能回复体力直到回合结束。',
2019-10-31 04:43:12 +00:00
junling5_eff:'军令五',
2020-02-04 05:31:47 +00:00
junling6:'军令六',
junling6_bg:'令',
2019-10-31 04:43:12 +00:00
junling6_info:'若被执行,执行者选择一张手牌和一张装备区内牌(若有),然后弃置其余的牌。',
2019-08-30 15:10:11 +00:00
2020-02-04 05:31:47 +00:00
gz_cuimao:'崔琰毛玠',
gzzhengbi:'征辟',
gzzhengbi_info:'出牌阶段开始时,你可以选择一项:选择一名未确定势力的角色,你对其使用的牌无距离限制且不计入使用次数,直到其明置武将牌或回合结束;或将一张基本牌交给一名有明置武将牌的角色,然后其交给你一张非基本牌或两张基本牌。',
gzfengying:'奉迎',
gzfengying_info:'限定技,你可以将所有手牌当【挟天子以令诸侯】使用(无视大势力限制),然后所有与你势力相同的角色将手牌补至体力上限。',
gz_yujin:'于禁',
gzjieyue:'节钺',
2020-03-05 13:10:37 +00:00
gzjieyue_info:'准备阶段开始时,你可以将一张手牌交给一名非魏势力角色,然后选择一个“军令”并令其选择一项:执行该军令,然后你摸一张牌;或令你于此回合摸牌阶段额外摸三张牌。',
2019-10-31 04:43:12 +00:00
gz_wangping:'王平',
2020-02-04 05:31:47 +00:00
jianglue:'将略',
2020-03-05 13:10:37 +00:00
jianglue_info:'限定技出牌阶段你可以选择一个“军令”然后与你势力相同的其他角色可以执行该军令未确定势力角色可以在此时明置一张武将牌。你与所有执行该军令的角色增加一点体力上限然后回复一点体力然后你摸X张牌X为以此法回复了体力的角色数。',
2020-02-04 05:31:47 +00:00
gz_fazheng:'法正',
gzxuanhuo:'眩惑',
2020-03-05 13:10:37 +00:00
gzxuanhuo_info:'与你势力相同的其他角色的出牌阶段限一次,该角色可以交给你一张牌并弃置一张牌,然后获得以下一项场上没有的技能直到回合结束:〖武圣〗、〖咆哮〗、〖龙胆〗、〖铁骑〗、〖烈弓〗、〖狂骨〗。',
2019-10-31 04:43:12 +00:00
gzenyuan:'恩怨',
gzenyuan_info:'锁定技当其他角色对你使用【桃】时该角色摸一张牌当你受到伤害后伤害来源须交给你一张手牌或失去1点体力。',
2020-02-04 05:31:47 +00:00
gzbuyi:'补益',
2020-03-05 13:10:37 +00:00
gzbuyi_info:'每回合限一次,当一名与你势力相同的角色脱离濒死状态后,你可以选择一个“军令”,令伤害来源选择一项:执行该军令,或令该脱离濒死状态的角色回复一点体力。',
2020-02-04 05:31:47 +00:00
gz_lukang:'陆抗',
keshou:'恪守',
2020-11-28 02:28:27 +00:00
keshou_info:'当你受到伤害时,你发动此技能。你可弃置两张颜色相同的牌,若如此做,此伤害-1。你的势力已确定且场上没有与你势力相同的其他角色则你进行判定若结果为红色你摸一张牌。',
2020-02-04 05:31:47 +00:00
zhuwei:'筑围',
2020-11-28 02:28:27 +00:00
zhuwei_info:'当你的判定牌生效后,你可以获得之。然后,你可令当前回合角色本回合内使用【杀】的次数上限和手牌上限+1。',
2020-02-04 05:31:47 +00:00
gz_yuanshu:'袁术',
gzweidi:'伪帝',
2020-03-05 13:10:37 +00:00
gzweidi_info:'出牌阶段限一次,你可以指定一名本回合从牌堆获得过牌的其他角色并选择一个“军令”,令其选择一项:执行该军令;或令你获得其所有手牌,然后交给其等量的牌。',
2020-02-04 05:31:47 +00:00
gzyongsi:'庸肆',
2020-03-05 13:10:37 +00:00
gzyongsi_info:'锁定技,若场上没有【玉玺】,则视为你装备了【玉玺】;当你成为【知己知彼】的目标时,你展示你的所有手牌。',
2020-02-04 05:31:47 +00:00
//gzyongsi_eff1:'玉玺',
//gzyongsi_eff2:'玉玺',
gz_zhangxiu:'张绣',
gzfudi:'附敌',
2020-03-05 13:10:37 +00:00
gzfudi_info:'当你受到伤害后,你可以交给伤害来源一张手牌。若如此做,你对其势力中体力值最大且不小于你的一名角色造成一点伤害。',
2020-02-04 05:31:47 +00:00
congjian:'从谏',
2020-03-05 13:10:37 +00:00
congjian_info:'锁定技,当你于回合外造成伤害,或于回合内受到伤害时,此伤害+1。',
2020-02-04 05:31:47 +00:00
gz_jun_caocao:'君曹操',
jianan:'建安',
jianan_info:'君主技,只要此武将处于明置状态,你便拥有“五子良将纛”。',
g_jianan:'五子良将纛',
wuziliangjiangdao:'五子良将纛',
wuziliangjiangdao_ab:'将纛',
wuziliangjiangdao_bg:'纛',
2020-03-05 13:10:37 +00:00
wuziliangjiangdao_info:'魏势力角色的准备阶段开始时,其可以弃置一张牌。若如此做,其选择一张暗置的武将牌(若没有,则选择一张暗置),然后获得下列技能中的一项(其他角色已有的技能无法选择)且不能明置选择的武将牌直到你的下个回合开始:〖突袭〗,〖巧变〗,〖骁果〗,〖节钺〗,〖断粮〗。',
2020-02-04 05:31:47 +00:00
huibian:'挥鞭',
huibian_info:'出牌阶段限一次,你可以选择一名魏势力角色和另一名已受伤的魏势力角色。若如此做,你对前者造成一点伤害,然后其摸两张牌,然后后者回复一点体力。',
gzzongyu:'总御',
2020-03-05 13:10:37 +00:00
gzzongyu_info:'当【六龙骖驾】进入其他角色的装备区后,你可以将你装备区内所有坐骑牌(至少一张)与【六龙骖驾】交换位置。锁定技,当你使用坐骑牌后,若场上或弃牌堆中有【六龙骖驾】,则将【六龙骖驾】置入你的装备区。',
2019-08-30 15:10:11 +00:00
xindiaodu:"调度",
2020-03-05 13:10:37 +00:00
"xindiaodu_info":"当与你势力相同的角色使用装备牌时,其可以摸一张牌;出牌阶段开始时,你可以获得与你势力相同的一名角色装备区内的一张牌,然后你可以将此牌交给另一名与你势力相同的其他角色。",
2019-08-30 15:10:11 +00:00
yigui:"役鬼",
2020-04-25 05:40:05 +00:00
"yigui_info":"当你首次明置此武将牌时,你将剩余武将牌堆的两张牌扣置于游戏外,称为“魂”;你可以展示一张“魂”并将其置入剩余武将牌堆,视为使用了一张本回合内未以此法使用过的基本牌或普通锦囊牌。(若此牌需指定目标,则目标须为未确定势力的角色或野心家或与此“魂”势力相同的角色)",
2019-08-30 15:10:11 +00:00
"yigui_init":"役鬼",
"yigui_init_info":"",
"yigui_refrain":"役鬼",
"yigui_refrain_info":"",
2020-04-25 05:40:05 +00:00
yigui_shan:'役鬼',
yigui_wuxie:'役鬼',
2019-08-30 15:10:11 +00:00
jihun:"汲魂",
2020-03-05 13:10:37 +00:00
jihun_info:"当你受到伤害后,或与你势力不同的角色脱离濒死状态后,你可以将剩余武将牌堆的一张牌当做“魂”扣置于游戏外。",
2019-08-30 15:10:11 +00:00
2020-10-09 03:37:02 +00:00
"_xianqu_skill":"先驱",
"_xianqu_skill_info":"",
2019-08-30 15:10:11 +00:00
"zhulianbihe_skill":"珠联璧合",
"zhulianbihe_skill_info":"",
2020-10-09 03:37:02 +00:00
_zhulianbihe_skill_draw_backup:'珠联',
zhulian_card:'摸两张牌',
zhulian_card_info:'弃置【珠联璧合】标记并摸两张牌',
zhulian_card_bg:'摸',
2019-08-30 15:10:11 +00:00
"yinyang_skill":"阴阳鱼",
"yinyang_skill_info":"",
2020-10-09 03:37:02 +00:00
"_zhulianbihe_skill_draw":"珠联",
"_zhulianbihe_skill_draw_info":"",
"_zhulianbihe_skill_tao":"珠联",
"_zhulianbihe_skill_tao_info":"",
"_yinyang_skill_draw":"阴阳鱼",
"_yinyang_skill_draw_info":"",
"_yinyang_skill_add":"阴阳鱼",
"_yinyang_skill_add_info":"",
2019-08-30 15:10:11 +00:00
"yinyang_add":"阴阳鱼",
"yinyang_add_info":"",
"new_jushou":"据守",
2020-03-05 13:10:37 +00:00
"new_jushou_info":"结束阶段你可以摸X张牌X为亮明势力数然后弃置一张手牌。若以此法弃置的牌为装备牌则改为使用此牌。若X大于2则你将武将牌叠置。",
2019-08-30 15:10:11 +00:00
"new_duanliang":"断粮",
2020-03-05 13:10:37 +00:00
"new_duanliang_info":"出牌阶段你可以将一张黑色基本牌或黑色装备牌当做【兵粮寸断】使用。你使用【兵粮寸断】没有距离限制。若你对距离超过2的角色发动了〖断粮〗则本回合不能再发动〖断粮〗。",
2019-08-30 15:10:11 +00:00
"new_shushen":"淑慎",
2019-12-20 06:56:40 +00:00
"new_shushen_info":"当你回复1点体力后你可令一名其他角色摸一张牌。",
2019-08-30 15:10:11 +00:00
"new_luanji":"乱击",
2020-03-05 13:10:37 +00:00
"new_luanji_info":"你可以将两张与你本回合以此法转化的花色均不相同的手牌当【万箭齐发】使用。当一名与你势力相同的角色因响应此牌而打出【闪】时,该角色摸一张牌。",
2019-08-30 15:10:11 +00:00
"new_qingcheng":"倾城",
2020-03-05 13:10:37 +00:00
"new_qingcheng_info":"出牌阶段,你可以弃置一张黑色牌并选择一名武将牌均明置的其他角色,然后你暗置其一张武将牌。若你以此法弃置的牌为装备牌,则你可以暗置另一名武将牌均明置的角色的一张武将牌。",
2019-08-30 15:10:11 +00:00
"new_kongcheng":"空城",
2020-03-05 13:10:37 +00:00
"new_kongcheng_info":"锁定技若你没有手牌1.当你成为【杀】或【决斗】的目标时取消之2.你的回合外,其他角色交给你牌后,你将这些牌置于你的武将牌上。摸牌阶段开始时,你获得武将牌上的这些牌。",
2019-08-30 15:10:11 +00:00
"new_keji":"克己",
2020-03-05 13:10:37 +00:00
"new_keji_info":"锁定技,若你没有在出牌阶段内使用过颜色不同的牌,则你本回合的手牌上限+4。",
2019-08-30 15:10:11 +00:00
"keji_add":"克己",
"keji_add_info":"",
"new_mouduan":"谋断",
"new_mouduan_info":"结束阶段,若你于本回合内使用过四种花色或三种类别的牌,则你可以移动场上的一张牌。",
"new_longdan":"龙胆",
2020-03-05 13:10:37 +00:00
"new_longdan_info":"你可以将【杀】当【闪】【闪】当【杀】使用或打出。当你发动〖龙胆〗使用的【杀】被【闪】抵消时你可以对另一名角色造成1点伤害当你发动〖龙胆〗使用的【闪】抵消了【杀】时你可以令一名其他角色回复1点体力不能是【杀】的使用者。",
Our Song. 马上就要高考了,这次的版本更新应该是考前的最后一次更新了。 真的很感谢这段时间以来身边的大家。身边的老师和同学也好,Key圈的各位键子们也好,无名杀玩家们也好,正是有了你们的陪伴和支持,我才能够坚持下来,走到今天的这一步。 祝愿包括我自己在内的所有考生高考顺利,金榜题名吧! 最后,在这里复制粘贴一下《Angel Beats!》TV版的ED,某种意义上也是仲村ゆり的角色歌的《Brave Song》的歌词: ``` いつもひとりで歩いてた 振り返るとみんなは遠く 一路走来形单影只 转身回首望去 大家已经远去 それでもあたしは歩いた それが強さだった 即使如此我依然前行 这正是我的坚强 もう何も恐くない そう呟いてみせる 经历 使我无所畏惧 再多冷漠也是一句叹息 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 孤独さえ愛し笑ってられるように あたしは戦うんだ 为了那笑容下与孤独作伴的勇气 我决定战斗到底 涙なんて見せないんだ 我已不再哭泣 いつもひとりで歩いてた 行く先には崖が待ってた 一路走来形单影只 而前方等着的却是山崖 それでもあたしは歩いた 強さの証明のため 即使如此我依然前行 为了证明这份坚强 吹き付ける強い風 汗でシャツが張りつく 强风吹过 汗水将衣服粘湿 いつか忘れてしまえるなら 生きることそれはたやすいもの 若有一天将一切尽数忘掉的话 生存其实并不困难 忘却の彼方へと落ちていくなら それは逃げることだろう 而若坠落在那忘却的彼端的话 那便成了逃避吧 生きた意味すら消えるだろう 就连生存的意义也会消失殆尽吧 風はやがて凪いでた 汗も乾いて 风终于停息 汗也干了 お腹が空いてきたな 何かあったっけ 肚子也饿了啊 有什么可吃的吗 賑やかな声と共にいい匂いがやってきた 同熙攘的声音一道 喷香的味道也传了过来 いつもひとりで歩いてた みんなが待っていた 一路走来形单影只 大家在前方等着我 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 それでもいい 安らかなこの気持ちは それを仲間と呼ぶんだ 这倒也没什么 这种安宁的感情 称之为伙伴 いつかみんなと過ごした日々も忘れてどこかで生きてるよ 有一天我会忘掉和大家在一起度过的日子而生活在他乡 その時はもう強くなんかないよ 到了那时 我不会再坚强了 普通の女の子の弱さで涙を零すよ 像普通的女孩一样流下柔弱的泪水 ```
2020-07-03 05:22:31 +00:00
"fz_new_longdan":"龙胆",
"fz_new_longdan_info":"你可以将【杀】当【闪】【闪】当【杀】使用或打出。当你发动〖龙胆〗使用的【杀】被【闪】抵消时你可以对另一名角色造成1点伤害当你发动〖龙胆〗使用的【闪】抵消了【杀】时你可以令一名其他角色回复1点体力不能是【杀】的使用者。",
2019-08-30 15:10:11 +00:00
"new_paoxiao":"咆哮",
2020-03-05 13:10:37 +00:00
"new_paoxiao_info":"锁定技,你使用【杀】无数量限制;当你于一回合内使用第二张【杀】时,摸一张牌。",
2019-08-30 15:10:11 +00:00
"new_kurou":"苦肉",
2020-03-05 13:10:37 +00:00
"new_kurou_info":"出牌阶段限一次你可以弃置一张牌然后失去1点体力并摸三张牌本回合使用【杀】的次数上限+1。",
2019-08-30 15:10:11 +00:00
"kurou_effect":"苦肉",
"kurou_effect_info":"",
"new_chuli":"除疠",
2020-03-05 13:10:37 +00:00
"new_chuli_info":"出牌阶段限一次,若你有牌,你可以选择至多三名势力各不相同或未确定势力的其他角色,你弃置你和这些角色的各一张牌。然后所有以此法弃置过黑桃牌的角色各摸一张牌。",
2019-08-30 15:10:11 +00:00
"baka_hunshang":"魂殇",
2020-03-05 13:10:37 +00:00
"baka_hunshang_info":"副将技此武将牌减少半个阴阳鱼准备阶段若你的体力值不大于1则你获得〖英姿〗和〖英魂〗直到回合结束。",
2019-08-30 15:10:11 +00:00
"baka_yinghun":"英魂",
"baka_yinghun_info":"准备阶段开始时若你已受伤你可令一名其他角色执行一项摸X张牌然后弃置一张牌或摸一张牌然后弃置X张牌X为你已损失的体力值",
"baka_yingzi":"英姿",
2020-03-05 13:10:37 +00:00
"baka_yingzi_info":"锁定技,摸牌阶段摸,你多摸一张牌;你的手牌上限+XX为你已损失的体力值。",
2019-08-30 15:10:11 +00:00
"new_yiji":"遗计",
2020-03-05 13:10:37 +00:00
"new_yiji_info":"当你受到伤害后,你可以观看牌堆顶的两张牌,并将其交给任意角色。",
2019-08-30 15:10:11 +00:00
"new_jieming":"节命",
"new_jieming_info":"当你受到伤害后你可以令一名角色将手牌摸至X张X为其体力上限且最多为5。",
"new_fangzhu":"放逐",
"new_fangzhu_info":"当你受到伤害后你可以令一名其他角色选择一项摸X张牌并将武将牌叠置X为你已损失的体力值弃置一张牌并失去1点体力。",
2019-10-31 04:43:12 +00:00
"fengyin_main":"封印[主将]",
2019-08-30 15:10:11 +00:00
"fengyin_main_info":"",
2019-10-31 04:43:12 +00:00
"fengyin_vice":"封印[副将]",
2019-08-30 15:10:11 +00:00
"fengyin_vice_info":"",
"new_tieji":"铁骑",
2020-03-05 13:10:37 +00:00
"new_tieji_info":"当你使用【杀】指定目标后,你可以令其一张明置的武将牌上的非锁定技于本回合内失效,然后你进行判定,除非该角色弃置与结果花色相同的一张牌,否则其不能使用【闪】响应此【杀】。",
2019-08-30 15:10:11 +00:00
hmkyuanyu:"远域",
"hmkyuanyu_info":"锁定技,当你受到伤害时,若伤害来源与你的座次不相邻,防止此伤害。",
hmkguishu:"鬼术",
2020-02-23 05:45:11 +00:00
"hmkguishu_info":"出牌阶段,你可以将一张黑桃手牌当作【知己知彼】或【远交近攻】使用。若你本局游戏内已经发动过了〖鬼术〗,则你必须选择与上次不同的选项。",
2019-08-30 15:10:11 +00:00
"_mingzhisuodingji":"亮将",
"_mingzhisuodingji_info":"出牌阶段,你可以明置拥有“锁定技”的武将牌。",
gz_jun_liubei:'君刘备',
gz_jun_zhangjiao:'君张角',
gz_jun_sunquan:'君孙权',
gz_liqueguosi:'李傕郭汜',
gz_bianfuren:'卞夫人',
gz_lvfan:'吕范',
gz_shamoke:'沙摩柯',
gz_masu:'马谡',
gz_yuji:'于吉',
gzshushen:'淑慎',
gzshushen_info:'当你回复1点体力时你可令与你势力相同的一名其他角色摸一张牌。',
_lianheng:'合纵',
lianheng_tag:'合',
guo_tag:'国',
qianhuan:'千幻',
qianhuan_bg:'幻',
qianhuan_info:'当与你势力相同的一名角色受到伤害后,你可以将一张与你武将牌上花色均不同的牌置于你的武将牌上。当一名与你势力相同的角色成为基本牌或锦囊牌的唯一目标时,你可以移去一张“千幻”牌,取消之。',
gzzhiman:'制蛮',
2020-03-05 13:10:37 +00:00
gzzhiman_info:'当你对其他角色造成伤害时,你可以防止此伤害。若如此做,你获得其装备区或判定区里的一张牌。然后若该角色与你势力相同,该角色可以变更副将。',
2019-08-30 15:10:11 +00:00
gzdiancai:'典财',
gzdiancai_info:'其他角色的出牌阶段结束时若你于此阶段失去了x张或更多的牌则你可以将手牌摸至体力上限。若如此做你可以变更副将x为你的体力值。',
xuanlve:'旋略',
xuanlve_info:'当你失去装备区里的牌后,你可以弃置一名其他角色的一张牌。',
lianzi:'敛资',
2020-03-05 13:10:37 +00:00
lianzi_info:'出牌阶段限一次你可以弃置一张手牌然后亮出牌堆顶X张牌X为吴势力角色装备区里的牌和“烽火”的总和获得其中所有与你弃置牌类别相同的牌将其余的牌置入弃牌堆若你以此法一次获得了三张或更多的牌则你失去技能〖敛资〗并获得技能〖制衡〗。',
2019-08-30 15:10:11 +00:00
gzqice:'奇策',
gzqice_backup:'奇策',
2020-03-05 13:10:37 +00:00
gzqice_info:'出牌阶段限一次,你可以将所有手牌当做任意一张普通锦囊牌使用(此牌的目标数不能超过你的手牌数)。然后,你可以变更副将。',
2019-08-30 15:10:11 +00:00
gzyuejian:'约俭',
2020-03-05 13:10:37 +00:00
gzyuejian_info:'锁定技,与你势力相同角色的弃牌阶段开始时,若其本回合未使用牌指定过其他势力的角色为目标,则该角色本回合手牌上限+XX为其已损失的体力值。',
2019-08-30 15:10:11 +00:00
gzxiongsuan:'凶算',
gzxiongsuan_info:'限定技出牌阶段你可以弃置一张手牌并选择与你势力相同的一名角色对其造成1点伤害然后你摸三张牌。若该角色有已发动的限定技则你选择其中一个限定技此回合结束后视为该限定技未发动过。',
gzhuashen:'化身',
gzhuashen_info:'准备阶段开始时,若你的“化身”不足两张,则你可以观看剩余武将牌堆中的五张牌,然后扣置其中至多两张武将牌在你的武将旁,称为“化身”;若“化身”有两张以上,则你可以用剩余武将牌堆顶的一张牌替换一张“化身”。你可以于相应的时机明置并发动“化身”的一个技能,技能结算完成后将该“化身”放回剩余武将牌堆。你每个时机只能发动一张“化身”的技能,且不能发动带有技能类型的技能(锁定技、限定技等)。',
gzxinsheng:'新生',
gzxinsheng_info:'当你受到伤害后,你可以从剩余武将牌堆中扣置一张牌加入到“化身”牌中。',
jubao:'聚宝',
2020-03-05 13:10:37 +00:00
jubao_info:'锁定技,你装备区里的宝物牌不能被其他角色获得。结束阶段开始时,若场上或弃牌堆有【定澜夜明珠】,则你摸一张牌,然后获得装备区里有【定澜夜明珠】角色的一张牌。',
2019-08-30 15:10:11 +00:00
jiahe:'嘉禾',
jiahe_info:'君主技,只要此武将牌处于明置状态,你便拥有“缘江烽火图”。',
jiahe_put:'烽火',
jiahe_put_info:'出牌阶段限一次,你可以将一张装备牌置于“缘江烽火图”上,称之为“烽火”。',
jiahe_skill:'缘江烽火图',
yuanjiangfenghuotu:'缘江烽火图',
2020-03-05 13:10:37 +00:00
yuanjiangfenghuotu_info:'每名吴势力角色的出牌阶段限一次,该角色可以将一张装备牌置于“缘江烽火图”上,称之为“烽火”。<br>根据“烽火”的数量,所有吴势力角色可于其准备阶段开始时选择并获得其中一个技能直到回合结束:一张以上:〖英姿〗;两张以上:〖好施〗;三张以上:〖涉猎〗;四张以上:〖度势〗;五张以上:可额外选择一项。<br>锁定技,当你受到【杀】或锦囊牌造成的伤害后,你将一张“烽火”置入弃牌堆。',
2019-08-30 15:10:11 +00:00
yuanjiangfenghuotu_ab:'江图',
yuanjiangfenghuotu_bg:'图',
wuxin:'悟心',
wuxin_info:'摸牌阶段开始时你可以观看牌堆顶的X张牌X为群势力角色的数量然后将这些牌以任意顺序置于牌堆顶',
hongfa:'弘法',
hongfa_use:'天兵',
hongfa_respond:'天兵',
2020-03-05 13:10:37 +00:00
hongfa_info:'君主技锁定技此武将牌明置时你获得“黄巾天兵符”准备阶段开始时若没有“天兵”你将牌堆顶的X张牌置于“黄巾天兵符”上称为“天兵”X为群势力角色的数量',
2019-08-30 15:10:11 +00:00
wendao:'问道',
2020-03-05 13:10:37 +00:00
wendao_info:'出牌阶段限一次,你可以弃置一张不为【太平要术】的红色牌,然后获得弃牌堆或场上的一张【太平要术】。',
2019-08-30 15:10:11 +00:00
huangjintianbingfu:'黄巾天兵符',
huangjintianbingfu_ab:'兵符',
huangjintianbingfu_bg:'符',
2020-03-05 13:10:37 +00:00
huangjintianbingfu_info:'锁定技 :当你计算群势力角色数时,每一张“天兵”均可视为一名群势力角色。<br>当你失去体力时,你可改为将一张“天兵”置入弃牌堆。<br>与你势力相同的角色可将一张“天兵”当作【杀】使用或打出。',
2019-08-30 15:10:11 +00:00
wuhujiangdaqi:'五虎将大旗',
wuhujiangdaqi_ab:'将旗',
wuhujiangdaqi_bg:'旗',
2020-03-05 13:10:37 +00:00
wuhujiangdaqi_info:'存活的蜀势力角色的技能按以下规则改动:<br><strong>武圣</strong>:将“红色牌”改为“任意牌”<br><strong>咆哮</strong>:增加描述“你使用的【杀】无视其他角色的防具”<br><strong>龙胆</strong>:增加描述“你发动〖龙胆〗使用或打出牌时摸一张牌”<br><strong>烈弓</strong>:增加描述“你的攻击范围+1”<br><strong>铁骑</strong>:将“一张明置的武将牌”改为“所有明置的武将牌”',
2019-08-30 15:10:11 +00:00
zhangwu:'章武',
zhangwu_info:'锁定技。当【飞龙夺凤】进入弃牌堆或其他角色的装备区时,你获得之。当你失去【飞龙夺风】时,展示之,然后将此牌置于牌堆底并摸两张牌',
shouyue:'授钺',
2020-03-05 13:10:37 +00:00
shouyue_info:'君主技。只要此武将牌处于明置状态,你便拥有“五虎将大旗”。',
2019-08-30 15:10:11 +00:00
jizhao:'激诏',
jizhao_bg:'诏',
2020-03-05 13:10:37 +00:00
jizhao_info:'限定技。当你处于濒死状态时你可以将手牌补至体力上限体力回复至2点失去技能〖授钺〗并获得技能〖仁德〗。',
2019-08-30 15:10:11 +00:00
gzshoucheng:'守成',
2020-03-05 13:10:37 +00:00
gzshoucheng_info:'当与你势力相同的一名角色于其回合外失去手牌时,若其没有手牌,则你可以令其摸一张牌。',
2019-08-30 15:10:11 +00:00
gzmingshi:'名士',
2020-03-05 13:10:37 +00:00
gzmingshi_info:'锁定技,当你受到伤害时,若伤害来源有暗置的武将牌,此伤害-1。',
2019-08-30 15:10:11 +00:00
fengshi:'锋矢',
fengshi_sha:'锋矢',
2020-03-05 13:10:37 +00:00
fengshi_info:'阵法技,在一个围攻关系中,若你是围攻角色,则你或另一名围攻角色使用【杀】指定被围攻角色为目标后,可令该角色弃置装备区内的一张牌。',
2019-08-30 15:10:11 +00:00
gzsuishi:'随势',
2020-03-13 10:02:18 +00:00
gzsuishi2:'随势',
2020-03-05 13:10:37 +00:00
gzsuishi_info:'锁定技其他角色进入濒死状态时若伤害来源与你势力相同你摸一张牌其他角色死亡时若其与你势力相同你失去1点体力。',
2019-08-30 15:10:11 +00:00
baoling:'暴凌',
2019-12-20 06:56:40 +00:00
baoling_info:'主将技锁定技出牌阶段结束时若你有副将则你移除副将然后加3点体力上限回复3点体力失去技能〖暴凌〗并获得〖崩坏〗',
2019-08-30 15:10:11 +00:00
yingyang:'鹰扬',
2020-03-05 13:10:37 +00:00
yingyang_info:'当你的拼点牌亮出后,你可以令此牌的点数+3或-3至多为K至少为1。',
2019-08-30 15:10:11 +00:00
hunshang:'魂殇',
hunshang_info:'副将技此武将牌减少半个阴阳鱼准备阶段若你的体力值不大于1则你本回合获得“英姿”和“英魂”',
gzguixiu:'闺秀',
2020-03-05 13:10:37 +00:00
gzguixiu_info:'当你明置此武将牌时你可以摸两张牌当你移除此武将牌时你可以回复1点体力。',
2019-08-30 15:10:11 +00:00
gzcunsi:'存嗣',
2020-03-05 13:10:37 +00:00
gzcunsi_info:'出牌阶段,你可以移除此武将牌并选择一名角色,然后其获得技能〖勇决〗,若你选择的目标角色不是自己,则其摸两张牌。',
2019-08-30 15:10:11 +00:00
gzyongjue:'勇决',
2020-03-05 13:10:37 +00:00
gzyongjue_info:'与你势力相同的一名角色于其回合内使用【杀】结算完成后,若此牌是其本回合内使用的第一张牌,则其可以获得此牌对应的所有实体牌。',
2019-08-30 15:10:11 +00:00
gzqianxi:'潜袭',
gzqianxi_info:'准备阶段开始时你可以进行判定然后你选择距离为1的一名角色直到回合结束该角色不能使用或打出与结果颜色相同的手牌',
gzshangyi:'尚义',
2020-03-05 13:10:37 +00:00
gzshangyi_info:'出牌阶段限一次你可以令一名其他角色观看你的手牌。若如此做你选择一项1.观看其手牌并可以弃置其中的一张黑色牌2.观看其所有暗置的武将牌。',
2019-08-30 15:10:11 +00:00
niaoxiang:'鸟翔',
niaoxiang_sha:'鸟翔',
2020-03-05 13:10:37 +00:00
niaoxiang_info:'阵法技,在同一个围攻关系中,若你是围攻角色,则你或另一名围攻角色使用【杀】指定被围攻角色为目标后,该角色需依次使用两张【闪】才能抵消。',
2019-08-30 15:10:11 +00:00
yicheng:'疑城',
2020-03-05 13:10:37 +00:00
yicheng_info:'当与你势力相同的一名角色成为【杀】的目标后,你可以令该角色摸一张牌,然后弃置一张牌。',
2019-08-30 15:10:11 +00:00
yizhi:'遗志',
2020-03-05 13:10:37 +00:00
yizhi_info:'副将技此武将牌减少半个阴阳鱼。若你的主将拥有技能〖观星〗则将其描述中的X改为5若你的主将没有技能〖观星〗则你视为拥有技能〖观星〗。',
2019-08-30 15:10:11 +00:00
tianfu:'天覆',
2020-03-05 13:10:37 +00:00
tianfu_info:'主将技,阵法技,若当前回合角色与你处于同一队列,则你视为拥有技能〖看破〗。',
2019-08-30 15:10:11 +00:00
ziliang:'资粮',
2020-03-05 13:10:37 +00:00
ziliang_info:'副将技,当与你势力相同的一名角色受到伤害后,你可以将一张“田”交给该角色 ',
2019-08-30 15:10:11 +00:00
gzjixi:'急袭',
2020-03-05 13:10:37 +00:00
gzjixi_info:'主将技,此武将牌减少半个阴阳鱼。你可以将一张“田”当作【顺手牵羊】使用。',
2019-08-30 15:10:11 +00:00
huyuan:'护援',
2020-03-05 13:10:37 +00:00
huyuan_info:'结束阶段开始时你可以将一张装备牌置入一名角色的装备区然后你可以弃置该角色距离为1的一名角色的一张牌。',
2019-08-30 15:10:11 +00:00
heyi:'鹤翼',
2020-03-05 13:10:37 +00:00
heyi_info:'阵法技,与你处于同一队列的其他角色视为拥有技能【飞影】。',
2019-08-30 15:10:11 +00:00
gz_shibing1wei:'魏兵',
gz_shibing2wei:'魏兵',
gz_shibing1shu:'蜀兵',
gz_shibing2shu:'蜀兵',
gz_shibing1wu:'吴兵',
gz_shibing2wu:'吴兵',
gz_shibing1qun:'群兵',
gz_shibing2qun:'群兵',
gzduanchang:'断肠',
2020-03-05 13:10:37 +00:00
gzduanchang_info:'锁定技,当你死亡时,你令杀死你的角色失去一张武将牌上的所有技能。',
2019-08-30 15:10:11 +00:00
gzweimu:'帷幕',
2020-03-05 13:10:37 +00:00
gzweimu_info:'锁定技,当你成为黑色锦囊牌的目标时,取消之。',
2019-08-30 15:10:11 +00:00
gzqianxun:'谦逊',
2020-03-05 13:10:37 +00:00
gzqianxun_info:'锁定技,当你成为【顺手牵羊】或【乐不思蜀】的目标时,取消之。',
2019-08-30 15:10:11 +00:00
gzkongcheng:'空城',
gzkongcheng_info:'锁定技,当你成为【杀】或【决斗】的目标时,若你没有手牌,则取消之',
gzxiaoji:'枭姬',
2020-03-05 13:10:37 +00:00
gzxiaoji_info:'当你失去装备区里的牌后,你可以摸两张牌。',
2019-08-30 15:10:11 +00:00
gzrende:'仁德',
gzrende_info:'出牌阶段你可以将任意张手牌交给其他角色然后若你于此阶段内给出第三张“仁德”牌时你回复1点体力',
gzzhiheng:'制衡',
2020-03-05 13:10:37 +00:00
gzzhiheng_info:'出牌阶段限一次你可以弃置至多X张牌X为你的体力上限然后摸等量的牌。',
2019-08-30 15:10:11 +00:00
duoshi:'度势',
2020-03-05 13:10:37 +00:00
duoshi_info:'出牌阶段限四次,你可以将一张红色手牌当做【以逸待劳】使用。',
2019-08-30 15:10:11 +00:00
gzxiaoguo:'骁果',
gzxiaoguo_info:'其他角色的结束阶段开始时你可以弃置一张基本牌令该角色选择一项1.弃置一张装备牌2.受到你对其造成的1点伤害。',
guozhan_default:"国战标准",
2020-03-05 13:10:37 +00:00
guozhan_zhen:"君临天下·阵",
guozhan_shi:"君临天下·势",
guozhan_bian:"君临天下·变",
guozhan_quan:"君临天下·权",
2019-08-30 15:10:11 +00:00
guozhan_jun:"君主武将",
guozhan_others:"其他",
},
junList:['liubei','zhangjiao','sunquan','caocao'],
guozhanPile:[
['spade',1,'juedou'],
2019-11-03 01:18:01 +00:00
['spade',1,'shandian'],
2019-08-30 15:10:11 +00:00
['spade',2,'feilongduofeng'],
['spade',2,'bagua'],
['spade',2,'hanbing'],
['spade',3,'guohe'],
['spade',3,'shunshou'],
['spade',4,'guohe'],
['spade',4,'shunshou'],
['spade',5,'sha'],
['spade',5,'jueying'],
['spade',6,'qinggang'],
['spade',6,'sha','thunder'],
['spade',7,'sha'],
['spade',7,'sha','thunder'],
['spade',8,'sha'],
['spade',8,'sha'],
['spade',9,'sha'],
['spade',9,'jiu'],
['spade',10,'sha'],
['spade',10,'bingliang'],
['spade',11,'sha'],
['spade',11,'wuxie'],
['spade',12,'zhangba'],
['spade',12,'tiesuo'],
['spade',13,'nanman'],
['spade',13,'dawan'],
['club',1,'juedou'],
['club',1,'baiyin'],
['club',2,'sha'],
2019-11-03 01:18:01 +00:00
['club',2,'tengjia'],
2019-08-30 15:10:11 +00:00
['club',2,'renwang'],
['club',3,'sha'],
['club',3,'zhibi'],
['club',4,'sha'],
['club',4,'zhibi'],
['club',5,'sha'],
['club',5,'dilu'],
['club',6,'lebu'],
['club',6,'sha','thunder'],
['club',7,'nanman'],
['club',7,'sha','thunder'],
['club',8,'sha'],
['club',8,'sha','thunder'],
['club',9,'sha'],
['club',9,'jiu'],
['club',10,'sha'],
['club',10,'bingliang'],
['club',11,'sha'],
['club',11,'sha'],
['club',12,'jiedao'],
['club',12,'tiesuo'],
['club',13,'wuxie',null,['guo']],
['club',13,'tiesuo'],
['diamond',1,'zhuge'],
['diamond',1,'zhuque'],
['diamond',2,'shan'],
['diamond',2,'tao'],
['diamond',3,'shan'],
['diamond',3,'shunshou'],
['diamond',4,'yiyi'],
['diamond',4,'sha','fire'],
['diamond',5,'guanshi'],
['diamond',5,'sha','fire'],
['diamond',6,'shan'],
['diamond',6,'wuliu'],
['diamond',7,'shan'],
['diamond',7,'shan'],
['diamond',8,'shan'],
['diamond',8,'shan'],
['diamond',9,'shan'],
['diamond',9,'jiu'],
['diamond',10,'shan'],
['diamond',10,'sha'],
['diamond',11,'shan'],
['diamond',11,'sha'],
['diamond',12,'sha'],
['diamond',12,'sanjian'],
['diamond',12,'wuxie',null,['guo']],
['diamond',13,'shan'],
['diamond',13,'zixin'],
['heart',1,'taoyuan'],
['heart',1,'wanjian'],
['heart',2,'shan'],
2019-11-03 01:18:01 +00:00
['heart',2,'huogong'],
2019-10-24 04:55:01 +00:00
['heart',3,'wugu'],
2019-08-30 15:10:11 +00:00
['heart',3,'taipingyaoshu'],
2019-11-03 01:18:01 +00:00
['heart',3,'huogong'],
2019-08-30 15:10:11 +00:00
['heart',4,'tao'],
['heart',4,'sha','fire'],
['heart',5,'qilin'],
['heart',5,'chitu'],
['heart',6,'tao'],
['heart',6,'lebu'],
['heart',7,'tao'],
['heart',7,'wuzhong'],
['heart',8,'tao'],
['heart',8,'wuzhong'],
['heart',9,'tao'],
['heart',9,'yuanjiao'],
['heart',10,'tao'],
['heart',10,'sha'],
['heart',11,'shan'],
['heart',11,'yiyi'],
['heart',12,'tao'],
['heart',12,'sha'],
['heart',12,'guohe'],
['heart',13,'shan'],
['heart',13,'zhuahuang'],
['spade',1,'xietianzi',null,['lianheng']],
['spade',2,'minguangkai'],
2019-11-03 01:18:01 +00:00
['spade',3,'huoshaolianying',null,['lianheng']],
2019-08-30 15:10:11 +00:00
['spade',4,'sha'],
['spade',5,'qinglong'],
['spade',6,'jiu',null,['lianheng']],
['spade',7,'sha'],
['spade',8,'sha'],
['spade',9,'sha','thunder'],
['spade',10,'sha','thunder'],
['spade',11,'sha','thunder',['lianheng']],
['spade',12,'lulitongxin'],
['spade',13,'wuxie'],
['heart',1,'lianjunshengyan'],
['heart',2,'diaohulishan'],
['heart',3,'jingfanma',null,['lianheng']],
['heart',4,'shan'],
['heart',5,'shan'],
['heart',6,'shan'],
['heart',7,'shan'],
['heart',8,'tao'],
['heart',9,'tao'],
['heart',10,'sha'],
['heart',11,'sha'],
2019-11-03 01:18:01 +00:00
['heart',12,'huoshaolianying',null,['lianheng']],
2019-08-30 15:10:11 +00:00
['heart',13,'shuiyanqijunx'],
['club',1,'yuxi'],
['club',2,'huxinjing',null,['lianheng']],
['club',3,'chiling'],
['club',4,'sha'],
['club',5,'sha','thunder',['lianheng']],
['club',6,'sha'],
['club',7,'sha'],
['club',8,'sha'],
['club',9,'jiu'],
['club',10,'lulitongxin'],
2019-11-03 01:18:01 +00:00
['club',11,'huoshaolianying',null,['lianheng']],
2019-08-30 15:10:11 +00:00
['club',12,'shuiyanqijunx'],
['club',13,'wuxie',null,['guo']],
['diamond',1,'xietianzi',null,['lianheng']],
['diamond',2,'tao'],
['diamond',3,'tao',null,['lianheng']],
['diamond',4,'xietianzi',null,['lianheng']],
['diamond',5,'muniu'],
['diamond',6,'shan'],
['diamond',7,'shan'],
['diamond',8,'sha','fire'],
['diamond',9,'sha','fire'],
['diamond',10,'diaohulishan',null,['lianheng']],
['diamond',11,'wuxie',null,['guo']],
['diamond',12,'fangtian'],
['diamond',13,'shan'],
['diamond',6,'dinglanyemingzhu'],
['heart',13,'liulongcanjia'],
],
element:{
content:{
2020-02-04 05:31:47 +00:00
chooseJunlingFor:function(){
2020-12-16 11:55:55 +00:00
'step 0'
var list=['junling1','junling2','junling3','junling4','junling5','junling6'];
list=list.randomGets(2).sort();
for(var i=0;i<list.length;i++) list[i]=['军令','',list[i]];
var prompt=event.prompt||'选择一张军令牌';
if(target!=undefined&&!event.prompt){
var str=target==player?'(你)':'';
prompt+=',令'+get.translation(target)+str+'选择是否执行';
}
player.chooseButton([prompt,[list,'vcard']],true).set('ai',function(button){
return get.junlingEffect(_status.event.player,button.link[2],_status.event.getParent().target,[],_status.event.player);
});
'step 1'
event.result={
junling:result.links[0][2],
targets:[],
};
if(result.links[0][2]=='junling1') player.chooseTarget('选择一名角色,做为若该军令被执行,受到伤害的角色',true).set('ai',function(_target){
return get.damageEffect(_target,target,player);
});
'step 2'
if(result.targets.length){
player.line(result.targets,'green');
event.result.targets=result.targets;
}
},
chooseJunlingControl:function(){
'step 0'
var dialog=[];
var str1=source==player?'(你)':'';
var str2=event.targets?'(被指定的角色为'+get.translation(event.targets)+'':'';
if(!event.prompt) dialog.add(get.translation(event.source)+str1+'选择的军令'+str2+'为');
else{
dialog.add(event.prompt);
dialog.add(get.translation(event.source)+str1+'选择的军令'+str2+'为');
}
dialog.add([[event.junling],'vcard']);
var controls=[];
if(event.choiceList){
for(var i=0;i<event.choiceList.length;i++){
dialog.add('<div class="popup text" style="width:calc(100% - 10px);display:inline-block">选项'+get.cnNumber(i+1,true)+''+event.choiceList[i]+'</div>');
controls.push('选项'+get.cnNumber(i+1,true));
2020-02-04 05:31:47 +00:00
}
2020-12-16 11:55:55 +00:00
}
else if(event.controls) controls=event.controls;
else controls=['执行该军令','不执行该军令'];
if(!event.ai) event.ai=function(){return Math.floor(controls.length*Math.random())};
player.chooseControl(controls).set('dialog',dialog).set('ai',event.ai);
'step 1'
event.result={
index:result.index,
control:result.control,
};
},
carryOutJunling:function(){
'step 0'
switch(event.junling){
case 'junling1':{
if(targets[0].isAlive()){
player.line(targets,'green');
targets[0].damage(player);
2020-02-04 05:31:47 +00:00
}
2020-12-16 11:55:55 +00:00
break;
2020-02-04 05:31:47 +00:00
}
2020-12-16 11:55:55 +00:00
case 'junling2':player.draw();event.num=1;break;
case 'junling3':player.loseHp();break;
case 'junling4':player.addTempSkill('junling4_eff');player.addTempSkill('fengyin_vice');player.addTempSkill('fengyin_main');break;
case 'junling5':player.turnOver();player.addTempSkill('junling5_eff');break;
}
2019-12-09 15:03:35 +00:00
'step 1'
2020-12-16 11:55:55 +00:00
if(event.junling=='junling2'&&source!=player&&player.countCards('he')>0){
player.chooseCard('交给'+get.translation(source)+'第'+get.cnNumber(event.num)+'张牌(共两张)','he',true);
event.ing=true;
}
if(event.junling=='junling6'){
var position='',num0=0;
if(player.countCards('h')){position+='h';num0++;}
if(player.countCards('e')){position+='e';num0++;}
player.chooseCard('选择一张手牌和一张装备区内牌(若有),然后弃置其余的牌',position,num0,function(card){
if(ui.selected.cards.length) return get.position(card)!=get.position(ui.selected.cards[0]);
return true;
},true).set('complexCard',true).set('ai',function(card){return get.value(card)});
}
'step 2'
if(event.junling=='junling2'&&source!=player){
if(result.cards.length&&event.ing){
source.gain(result.cards,player,'giveAuto');
}
event.num++;
if(event.num<3){
event.ing=false;
event.goto(1);
}
}
if(event.junling=='junling6'){
var cards=player.getCards('he');
for(var i=0;i<result.cards.length;i++) cards.remove(result.cards[i]);
player.discard(cards);
}
2019-08-30 15:10:11 +00:00
},
doubleDraw:function(){
2020-10-09 03:37:02 +00:00
if(!player.hasMark('yinyang_skill')) player.addMark('yinyang_skill',1);
2019-08-30 15:10:11 +00:00
},
2020-01-18 05:35:52 +00:00
changeViceOnline:function(){
'step 0'
var group=lib.character[player.name1][1];
_status.characterlist.randomSort();
var name=false;
for(var i=0;i<_status.characterlist.length;i++){
if(lib.character[_status.characterlist[i]][1]==group){name=_status.characterlist[i];break;}
}
if(!name){event.finish();return;}
_status.characterlist.remove(name);
if(player.hasViceCharacter()){
event.change=true;
_status.characterlist.add(player.name2);
}
event.toRemove=player.name2;
event.toChange=name;
if(event.change) event.trigger('removeCharacterBefore');
'step 1'
var name=event.toChange;
game.log(player,'将副将变更为','#g'+get.translation(name));
player.viceChanged=true;
if(player.isUnseen(1)){
player.showCharacter(1,false);
}
player.reinit(player.name2,name,false);
},
2019-08-30 15:10:11 +00:00
changeVice:function(){
'step 0'
2020-01-18 05:35:52 +00:00
var group=lib.character[player.name1][1];
_status.characterlist.randomSort();
event.tochange=[]
for(var i=0;i<_status.characterlist.length;i++){
if(lib.character[_status.characterlist[i]][1]==group) event.tochange.push(_status.characterlist[i]);
if(event.tochange.length==3) break;
}
if(!event.tochange.length) event.finish();
else{
player.chooseButton(true,['选择要变更的武将牌',[event.tochange,'character']]).ai=function(button){
return get.guozhanRank(button.link);
};
}
2019-08-30 15:10:11 +00:00
'step 1'
var name=result.links[0];
_status.characterlist.remove(name);
2020-01-18 05:35:52 +00:00
if(player.hasViceCharacter()){
event.change=true;
_status.characterlist.add(player.name2);
}
event.toRemove=player.name2;
event.toChange=name;
if(event.change) event.trigger('removeCharacterBefore');
'step 2'
var name=event.toChange;
2019-08-30 15:10:11 +00:00
game.log(player,'将副将变更为','#g'+get.translation(name));
player.viceChanged=true;
if(player.isUnseen(1)){
player.showCharacter(1,false);
}
player.reinit(player.name2,name,false);
},
/*----分界线----*/
mayChangeVice:function(){
'step 0'
player.chooseBool('是否变更副将?').set('ai',function(){
Our Song. 马上就要高考了,这次的版本更新应该是考前的最后一次更新了。 真的很感谢这段时间以来身边的大家。身边的老师和同学也好,Key圈的各位键子们也好,无名杀玩家们也好,正是有了你们的陪伴和支持,我才能够坚持下来,走到今天的这一步。 祝愿包括我自己在内的所有考生高考顺利,金榜题名吧! 最后,在这里复制粘贴一下《Angel Beats!》TV版的ED,某种意义上也是仲村ゆり的角色歌的《Brave Song》的歌词: ``` いつもひとりで歩いてた 振り返るとみんなは遠く 一路走来形单影只 转身回首望去 大家已经远去 それでもあたしは歩いた それが強さだった 即使如此我依然前行 这正是我的坚强 もう何も恐くない そう呟いてみせる 经历 使我无所畏惧 再多冷漠也是一句叹息 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 孤独さえ愛し笑ってられるように あたしは戦うんだ 为了那笑容下与孤独作伴的勇气 我决定战斗到底 涙なんて見せないんだ 我已不再哭泣 いつもひとりで歩いてた 行く先には崖が待ってた 一路走来形单影只 而前方等着的却是山崖 それでもあたしは歩いた 強さの証明のため 即使如此我依然前行 为了证明这份坚强 吹き付ける強い風 汗でシャツが張りつく 强风吹过 汗水将衣服粘湿 いつか忘れてしまえるなら 生きることそれはたやすいもの 若有一天将一切尽数忘掉的话 生存其实并不困难 忘却の彼方へと落ちていくなら それは逃げることだろう 而若坠落在那忘却的彼端的话 那便成了逃避吧 生きた意味すら消えるだろう 就连生存的意义也会消失殆尽吧 風はやがて凪いでた 汗も乾いて 风终于停息 汗也干了 お腹が空いてきたな 何かあったっけ 肚子也饿了啊 有什么可吃的吗 賑やかな声と共にいい匂いがやってきた 同熙攘的声音一道 喷香的味道也传了过来 いつもひとりで歩いてた みんなが待っていた 一路走来形单影只 大家在前方等着我 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 それでもいい 安らかなこの気持ちは それを仲間と呼ぶんだ 这倒也没什么 这种安宁的感情 称之为伙伴 いつかみんなと過ごした日々も忘れてどこかで生きてるよ 有一天我会忘掉和大家在一起度过的日子而生活在他乡 その時はもう強くなんかないよ 到了那时 我不会再坚强了 普通の女の子の弱さで涙を零すよ 像普通的女孩一样流下柔弱的泪水 ```
2020-07-03 05:22:31 +00:00
var player=_status.event.player;
return get.guozhanRank(player.name2,player)<=3;
2019-08-30 15:10:11 +00:00
});
'step 1'
if(result.bool){
if(!event.repeat) _status.changedSkills.add(event.skill)
player.changeVice();
}
},
zhulian:function(){
player.popup('珠联璧合');
2020-10-09 03:37:02 +00:00
if(!player.hasMark('zhulianbihe_skill')) player.addMark('zhulianbihe_skill',1);
2019-08-30 15:10:11 +00:00
},
},
player:{
2020-02-04 05:31:47 +00:00
chooseJunlingFor:function(target){
var next=game.createEvent('chooseJunlingFor');
next.player=this;
next.target=target;
next.setContent('chooseJunlingFor');
return next;
},
chooseJunlingControl:function(source,junling,targets){
var next=game.createEvent('chooseJunlingControl');
next.player=this;
next.source=source;
next.junling=junling;
if(targets.length) next.targets=targets;
next.setContent('chooseJunlingControl');
return next;
},
carryOutJunling:function(source,junling,targets){
var next=game.createEvent('carryOutJunling');
next.source=source;
next.player=this;
if(targets.length) next.targets=targets;
next.junling=junling;
next.setContent('carryOutJunling');
return next;
2019-08-30 15:10:11 +00:00
},
/**/
mayChangeVice:function(repeat){
if(!_status.changedSkills) _status.changedSkills=[];
var skill=_status.event.name;
if(repeat||!_status.changedSkills.contains(skill)){
var next=game.createEvent('mayChangeVice');
next.setContent('mayChangeVice');
next.player=this;
next.skill=skill;
2020-01-18 05:35:52 +00:00
if(repeat||(!_status.connectMode&&get.config('changeViceType')=='online')) next.repeat=true;
2019-08-30 15:10:11 +00:00
return next;
}
},
differentIdentityFrom:function(target,self){
if(this==target) return false;
if(self){
if(target.identity=='unknown') return false;
if(target.identity=='ye'||this.identity=='ye') return true;
if(this.identity=='unknown'){
var identity=lib.character[this.name1][1];
if(this.wontYe()) return identity!=target.identity;
return true;
}
}
else{
if(this.identity=='unknown'||target.identity=='unknown') return false;
if(this.identity=='ye'||target.identity=='ye') return true;
}
return this.identity!=target.identity;
},
sameIdentityAs:function(target,shown){
if(shown){
if(this.identity=='ye'||this.identity=='unknown') return false;
}
else{
if(this==target) return true;
if(target.identity=='unknown'||target.identity=='ye'||this.identity=='ye') return false;
if(this.identity=='unknown'){
var identity=lib.character[this.name1][1];
if(this.wontYe()) return identity==target.identity;
return false;
}
}
return this.identity==target.identity;
},
getModeState:function(){
return {
unseen:this.isUnseen(0),
unseen2:this.isUnseen(1),
}
},
setModeState:function(info){
if(info.mode.unseen) this.classList.add('unseen');
if(info.mode.unseen2) this.classList.add('unseen2');
if(!info.name) return;
// if(info.name.indexOf('unknown')==0){
// if(this==game.me){
// lib.translate[info.name]+='(你)';
// }
// }
this.init(info.name1,info.name2,false);
this.name1=info.name1;
this.name=info.name;
this.node.name_seat=ui.create.div('.name.name_seat',get.verticalStr(lib.translate[this.name].slice(0,3)),this);
if(info.identityShown){
this.setIdentity(info.identity);
this.node.identity.classList.remove('guessing');
}
else if(this!=game.me){
this.node.identity.firstChild.innerHTML='猜';
this.node.identity.dataset.color='unknown';
this.node.identity.classList.add('guessing');
}
},
2019-09-13 13:35:44 +00:00
dieAfter2:function(source){
Our Song. 马上就要高考了,这次的版本更新应该是考前的最后一次更新了。 真的很感谢这段时间以来身边的大家。身边的老师和同学也好,Key圈的各位键子们也好,无名杀玩家们也好,正是有了你们的陪伴和支持,我才能够坚持下来,走到今天的这一步。 祝愿包括我自己在内的所有考生高考顺利,金榜题名吧! 最后,在这里复制粘贴一下《Angel Beats!》TV版的ED,某种意义上也是仲村ゆり的角色歌的《Brave Song》的歌词: ``` いつもひとりで歩いてた 振り返るとみんなは遠く 一路走来形单影只 转身回首望去 大家已经远去 それでもあたしは歩いた それが強さだった 即使如此我依然前行 这正是我的坚强 もう何も恐くない そう呟いてみせる 经历 使我无所畏惧 再多冷漠也是一句叹息 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 孤独さえ愛し笑ってられるように あたしは戦うんだ 为了那笑容下与孤独作伴的勇气 我决定战斗到底 涙なんて見せないんだ 我已不再哭泣 いつもひとりで歩いてた 行く先には崖が待ってた 一路走来形单影只 而前方等着的却是山崖 それでもあたしは歩いた 強さの証明のため 即使如此我依然前行 为了证明这份坚强 吹き付ける強い風 汗でシャツが張りつく 强风吹过 汗水将衣服粘湿 いつか忘れてしまえるなら 生きることそれはたやすいもの 若有一天将一切尽数忘掉的话 生存其实并不困难 忘却の彼方へと落ちていくなら それは逃げることだろう 而若坠落在那忘却的彼端的话 那便成了逃避吧 生きた意味すら消えるだろう 就连生存的意义也会消失殆尽吧 風はやがて凪いでた 汗も乾いて 风终于停息 汗也干了 お腹が空いてきたな 何かあったっけ 肚子也饿了啊 有什么可吃的吗 賑やかな声と共にいい匂いがやってきた 同熙攘的声音一道 喷香的味道也传了过来 いつもひとりで歩いてた みんなが待っていた 一路走来形单影只 大家在前方等着我 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 それでもいい 安らかなこの気持ちは それを仲間と呼ぶんだ 这倒也没什么 这种安宁的感情 称之为伙伴 いつかみんなと過ごした日々も忘れてどこかで生きてるよ 有一天我会忘掉和大家在一起度过的日子而生活在他乡 その時はもう強くなんかないよ 到了那时 我不会再坚强了 普通の女の子の弱さで涙を零すよ 像普通的女孩一样流下柔弱的泪水 ```
2020-07-03 05:22:31 +00:00
var that=this;
2019-09-15 14:41:28 +00:00
if(source&&source.shijun){
source.discard(source.getCards('he'));
delete source.shijun;
2019-09-13 13:35:44 +00:00
}
else if(source&&source.identity!='unknown'){
2019-08-30 15:10:11 +00:00
if(source.identity=='ye') source.draw(3);
else if(source.shijun2){
2020-08-24 00:06:23 +00:00
delete source.shijun2;
source.draw(1+game.countPlayer(function(current){
Our Song. 马上就要高考了,这次的版本更新应该是考前的最后一次更新了。 真的很感谢这段时间以来身边的大家。身边的老师和同学也好,Key圈的各位键子们也好,无名杀玩家们也好,正是有了你们的陪伴和支持,我才能够坚持下来,走到今天的这一步。 祝愿包括我自己在内的所有考生高考顺利,金榜题名吧! 最后,在这里复制粘贴一下《Angel Beats!》TV版的ED,某种意义上也是仲村ゆり的角色歌的《Brave Song》的歌词: ``` いつもひとりで歩いてた 振り返るとみんなは遠く 一路走来形单影只 转身回首望去 大家已经远去 それでもあたしは歩いた それが強さだった 即使如此我依然前行 这正是我的坚强 もう何も恐くない そう呟いてみせる 经历 使我无所畏惧 再多冷漠也是一句叹息 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 孤独さえ愛し笑ってられるように あたしは戦うんだ 为了那笑容下与孤独作伴的勇气 我决定战斗到底 涙なんて見せないんだ 我已不再哭泣 いつもひとりで歩いてた 行く先には崖が待ってた 一路走来形单影只 而前方等着的却是山崖 それでもあたしは歩いた 強さの証明のため 即使如此我依然前行 为了证明这份坚强 吹き付ける強い風 汗でシャツが張りつく 强风吹过 汗水将衣服粘湿 いつか忘れてしまえるなら 生きることそれはたやすいもの 若有一天将一切尽数忘掉的话 生存其实并不困难 忘却の彼方へと落ちていくなら それは逃げることだろう 而若坠落在那忘却的彼端的话 那便成了逃避吧 生きた意味すら消えるだろう 就连生存的意义也会消失殆尽吧 風はやがて凪いでた 汗も乾いて 风终于停息 汗也干了 お腹が空いてきたな 何かあったっけ 肚子也饿了啊 有什么可吃的吗 賑やかな声と共にいい匂いがやってきた 同熙攘的声音一道 喷香的味道也传了过来 いつもひとりで歩いてた みんなが待っていた 一路走来形单影只 大家在前方等着我 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 それでもいい 安らかなこの気持ちは それを仲間と呼ぶんだ 这倒也没什么 这种安宁的感情 称之为伙伴 いつかみんなと過ごした日々も忘れてどこかで生きてるよ 有一天我会忘掉和大家在一起度过的日子而生活在他乡 その時はもう強くなんかないよ 到了那时 我不会再坚强了 普通の女の子の弱さで涙を零すよ 像普通的女孩一样流下柔弱的泪水 ```
2020-07-03 05:22:31 +00:00
return current.group==that.group
}));
}
2019-08-30 15:10:11 +00:00
else if(this.identity=='ye') source.draw(1);
else if(this.identity!=source.identity) source.draw(get.population(this.identity)+1);
else source.discard(source.getCards('he'));
}
2019-09-13 13:35:44 +00:00
},
dieAfter:function(source){
this.showCharacter(2);
2019-08-30 15:10:11 +00:00
if(get.is.jun(this.name1)){
2019-09-13 13:35:44 +00:00
if(source&&source.identity==this.identity) source.shijun=true;
else if(source&&source.identity!='ye') source.shijun2=true;
2019-08-30 15:10:11 +00:00
var yelist=[];
for(var i=0;i<game.players.length;i++){
if(game.players[i].identity==this.identity){
yelist.push(game.players[i]);
}
}
game.broadcastAll(function(list){
for(var i=0;i<list.length;i++){
list[i].identity='ye';
list[i].setIdentity();
}
},yelist);
_status.yeidentity.add(this.identity);
}
game.tryResult();
},
viewCharacter:function(target,num){
if(num!=0&&num!=1){
num=2;
}
if(!target.isUnseen(num)){
return;
}
var next=game.createEvent('viewCharacter');
next.player=this;
next.target=target;
next.num=num;
next.setContent(function(){
2020-03-05 13:10:37 +00:00
if(!player.storage.zhibi){
player.storage.zhibi=[];
}
player.storage.zhibi.add(target);
2019-08-30 15:10:11 +00:00
var content,str=get.translation(target)+'的';
if(event.num==0||!target.isUnseen(1)){
content=[str+'主将',[[target.name1],'character']];
game.log(player,'观看了',target,'的主将');
}
else if(event.num==1||!target.isUnseen(0)){
content=[str+'副将',[[target.name2],'character']];
game.log(player,'观看了',target,'的副将');
}
else{
content=[str+'主将和副将',[[target.name1,target.name2],'character']];
game.log(player,'观看了',target,'的主将和副将');
}
player.chooseControl('ok').set('dialog',content);
})
},
checkViceSkill:function(skill,disable){
if(game.expandSkills(lib.character[this.name2][3].slice(0)).contains(skill)){
return true;
}
else{
if(disable!==false){
this.awakenSkill(skill);
}
return false;
}
},
checkMainSkill:function(skill,disable){
if(game.expandSkills(lib.character[this.name1][3].slice(0)).contains(skill)){
return true;
}
else{
if(disable!==false){
this.awakenSkill(skill);
}
return false;
}
},
removeMaxHp:function(){
if(game.online) return;
if(typeof this.singleHp=='boolean'){
if(this.singleHp){
this.singleHp=false;
}
else{
this.singleHp=true;
this.maxHp--;
}
}
else{
this.maxHp--;
}
2020-01-05 09:13:44 +00:00
this.update();
2019-08-30 15:10:11 +00:00
},
hideCharacter:function(num,log){
if(this.isUnseen(2)){
return;
}
game.addVideo('hideCharacter',this,num);
var skills;
switch(num){
case 0:
if(log!==false) game.log(this,'暗置了主将'+get.translation(this.name1));
skills=lib.character[this.name][3];
this.name=this.name2;
this.sex=lib.character[this.name2][0];
this.classList.add('unseen');
break;
case 1:
if(log!==false) game.log(this,'暗置了副将'+get.translation(this.name2));
skills=lib.character[this.name2][3];
this.classList.add('unseen2');
break;
}
game.broadcast(function(player,name,sex,num,skills){
player.name=name;
player.sex=sex;
switch(num){
case 0:player.classList.add('unseen');break;
case 1:player.classList.add('unseen2');break;
}
for(var i=0;i<skills.length;i++){
if(!player.skills.contains(skills[i])) continue;
player.hiddenSkills.add(skills[i]);
player.skills.remove(skills[i]);
}
},this,this.name,this.sex,num,skills);
for(var i=0;i<skills.length;i++){
if(!this.skills.contains(skills[i])) continue;
this.hiddenSkills.add(skills[i]);
var info=get.info(skills[i]);
if(info.ondisable&&info.onremove){
info.onremove(this);
}
this.skills.remove(skills[i]);
}
this.checkConflict();
},
removeCharacter:function(num){
var name=this['name'+(num+1)];
var next=game.createEvent('removeCharacter');
next.player=this;
next.toRemove=name;
next.num=num;
next.setContent('removeCharacter');
return next;
},
$removeCharacter:function(num){
var name=this['name'+(num+1)];
var info=lib.character[name];
if(!info) return;
var to='gz_shibing'+(info[0]=='male'?1:2)+info[1];
game.log(this,'移除了'+(num?'副将':'主将'),'#b'+name);
this.reinit(name,to,false);
this.showCharacter(num,false);
_status.characterlist.add(name);
},
changeVice:function(){
var next=game.createEvent('changeVice');
next.player=this;
2020-01-18 05:35:52 +00:00
next.setContent((!_status.connectMode&&get.config('changeViceType')=='online')?'changeViceOnline':'changeVice');
2019-08-30 15:10:11 +00:00
return next;
},
hasMainCharacter:function(){
return this.name1.indexOf('gz_shibing')!=0;
},
hasViceCharacter:function(){
return this.name2.indexOf('gz_shibing')!=0;
},
$showCharacter:function(num,log){
if(num==0&&!this.isUnseen(0)){
return;
}
if(num==1&&!this.isUnseen(1)){
return;
}
if(!this.isUnseen(2)){
return;
}
game.addVideo('showCharacter',this,num);
if(this.identity=='unknown'){
this.group=lib.character[this.name1][1];
if(get.is.jun(this.name1)&&this.isAlive()){
this.identity=this.group;
}
else if(this.wontYe()){
this.identity=this.group;
}
else{
this.identity='ye';
}
this.setIdentity(this.identity);
this.ai.shown=1;
this.node.identity.classList.remove('guessing');
if(_status.clickingidentity&&_status.clickingidentity[0]==this){
for(var i=0;i<_status.clickingidentity[1].length;i++){
_status.clickingidentity[1][i].delete();
_status.clickingidentity[1][i].style.transform='';
}
delete _status.clickingidentity;
}
game.addVideo('setIdentity',this,this.identity);
}
var skills;
switch(num){
case 0:
if(log!==false) game.log(this,'展示了主将','#b'+this.name1);
this.name=this.name1;
skills=lib.character[this.name][3];
this.sex=lib.character[this.name][0];
this.classList.remove('unseen');
break;
case 1:
if(log!==false) game.log(this,'展示了副将','#b'+this.name2);
skills=lib.character[this.name2][3];
if(this.sex=='unknown') this.sex=lib.character[this.name2][0];
if(this.name.indexOf('unknown')==0) this.name=this.name2;
this.classList.remove('unseen2');
break;
case 2:
if(log!==false) game.log(this,'展示了主将','#b'+this.name1,'、副将','#b'+this.name2);
this.name=this.name1;
skills=lib.character[this.name][3].concat(lib.character[this.name2][3]);
this.sex=lib.character[this.name][0];
this.classList.remove('unseen');
this.classList.remove('unseen2');
break;
}
2020-04-03 12:09:26 +00:00
game.broadcast(function(player,name,sex,num,identity,group){
2019-08-30 15:10:11 +00:00
player.identityShown=true;
2020-04-03 12:09:26 +00:00
player.group=group;
2019-08-30 15:10:11 +00:00
player.name=name;
player.sex=sex;
player.node.identity.classList.remove('guessing');
switch(num){
case 0:player.classList.remove('unseen');break;
case 1:player.classList.remove('unseen2');break;
case 2:player.classList.remove('unseen');player.classList.remove('unseen2');break;
}
player.ai.shown=1;
player.identity=identity;
player.setIdentity(identity);
if(_status.clickingidentity&&_status.clickingidentity[0]==player){
for(var i=0;i<_status.clickingidentity[1].length;i++){
_status.clickingidentity[1][i].delete();
_status.clickingidentity[1][i].style.transform='';
}
delete _status.clickingidentity;
}
2020-04-03 12:09:26 +00:00
},this,this.name,this.sex,num,this.identity,this.group);
2019-08-30 15:10:11 +00:00
this.identityShown=true;
for(var i=0;i<skills.length;i++){
this.hiddenSkills.remove(skills[i]);
this.addSkill(skills[i]);
}
this.checkConflict();
if(!this.viceChanged){
var initdraw=get.config('initshow_draw');
if(_status.connectMode) initdraw=lib.configOL.initshow_draw;
if(!_status.initshown&&!_status.overing&&initdraw!='off'&&this.isAlive()&&_status.mode!='mingjiang'){
this.popup('首亮');
if(initdraw=='draw'){
game.log(this,'首先明置武将,得到奖励');
game.log(this,'摸了两张牌');
this.draw(2).log=false;
}
else{
2020-10-09 03:37:02 +00:00
this.addMark('_xianqu_skill',1);
2019-08-30 15:10:11 +00:00
}
_status.initshown=true;
}
if(!this.isUnseen(2)&&!this._mingzhied){
this._mingzhied=true;
if(this.singleHp){
this.doubleDraw();
}
if(this.perfectPair()){
var next=game.createEvent('guozhanDraw');
next.player=this;
next.setContent('zhulian');
}
}
}
2020-03-13 10:02:18 +00:00
game.tryResult();
2019-08-30 15:10:11 +00:00
},
wontYe:function(){
var group=lib.character[this.name1][1];
if(_status.yeidentity&&_status.yeidentity.contains(group)) return false;
if(get.zhu(this,null,true)) return true;
return get.totalPopulation(group)+1<=get.population()/2;
},
perfectPair:function(){
if(_status.connectMode){
if(!lib.configOL.zhulian) return false;
}
else{
if(!get.config('zhulian')) return false;
}
var name1=this.name1;
var name2=this.name2;
if(name1.indexOf('gz_shibing')==0) return false;
if(name2.indexOf('gz_shibing')==0) return false;
if(lib.character[name1][1]!=lib.character[name2][1]) return false;
if(get.is.jun(this.name1)) return true;
2019-10-19 11:18:56 +00:00
var list=['re','diy','sp','jsp','shen','jg','xin','old','gz','ol'];
2019-08-30 15:10:11 +00:00
for(var i=0;i<list.length;i++){
if(name1.indexOf(list[i]+'_')==0){
name1=name1.slice(list[i].length+1);
}
if(name2.indexOf(list[i]+'_')==0){
name2=name2.slice(list[i].length+1);
}
}
if(lib.perfectPair[name1]&&lib.perfectPair[name1].contains(name2)){
return true;
}
if(lib.perfectPair[name2]&&lib.perfectPair[name2].contains(name1)){
return true;
}
return false;
},
siege:function(player){
if(this.identity=='unknown'||this.identity=='ye'||this.hasSkill('undist')) return false;
if(!player){
var next=this.getNext();
if(next&&next.sieged()) return true;
var previous=this.getPrevious();
if(previous&&previous.sieged()) return true;
return false;
}
else{
return player.sieged()&&(player.getNext()==this||player.getPrevious()==this);
}
},
sieged:function(player){
if(this.identity=='unknown') return false;
if(player){
return player.siege(this);
}
else{
var next=this.getNext();
var previous=this.getPrevious();
if(next&&previous&&next!=previous){
if(next.identity=='unknown'||next.identity=='ye'||next.identity==this.identity) return false;
return next.identity==previous.identity;
}
return false;
}
},
inline:function(){
if(this.identity=='unknown'||this.identity=='ye'||this.hasSkill('undist')) return false;
var next=this,previous=this;
var list=[];
for(var i=0;next||previous;i++){
if(next){
next=next.getNext();
if(next.identity!=this.identity||next==this){
next=null;
}
else{
list.add(next);
}
}
if(previous){
previous=previous.getPrevious();
if(previous.identity!=this.identity||previous==this){
previous=null;
}
else{
list.add(previous);
}
}
}
if(!list.length) return false;
for(var i=0;i<arguments.length;i++){
if(!list.contains(arguments[i])&&arguments[i]!=this) return false;
}
return true;
},
isMajor:function(){
2019-09-06 02:57:10 +00:00
if(this.identity=='ye'){
return this.getEquip('yuxi')!=undefined||this.hasSkill('gzyongsi')&&!game.hasPlayer(function(current){
return current.getEquip('yuxi');
});
}
2019-08-30 15:10:11 +00:00
if(!lib.group.contains(this.identity)) return false;
var list=[];
for(var i=0;i<game.players.length;i++){
if(game.players[i].getEquip('yuxi')||game.players[i].hasSkill('gzyongsi')&&!game.hasPlayer(function(current){
return current.getEquip('yuxi');
})){
2019-09-06 02:57:10 +00:00
if(game.players[i].identity!='unknown'){
2019-08-30 15:10:11 +00:00
list.add(game.players[i].identity);
}
}
}
if(list.length){
2019-09-06 02:57:10 +00:00
if(list.contains('ye')) return false;
2019-08-30 15:10:11 +00:00
return list.contains(this.identity);
}
var max=0;
for(var i=0;i<lib.group.length;i++){
max=Math.max(max,get.population(lib.group[i]));
}
if(max<=1) return false;
return get.population(this.identity)==max;
},
isNotMajor:function(){
for(var i=0;i<game.players.length;i++){
if(game.players[i].isMajor()){
return !this.isMajor();
}
}
return false;
},
isMinor:function(nomajor){
2020-03-13 10:02:18 +00:00
if(this.identity=='unknown'||(!nomajor&&this.isMajor())) return false;
2019-08-30 15:10:11 +00:00
if(!nomajor&&!game.hasPlayer(function(current){
return current.isMajor();
})){
return false;
}
if(!lib.group.contains(this.identity)) return true;
var min=game.players.length;
if(game.hasPlayer(function(current){
return current.identity=='ye';
})){
min=1;
}
else{
for(var i=0;i<lib.group.length;i++){
var num=get.population(lib.group[i]);
if(num>0){
min=Math.min(min,num);
}
}
}
return get.population(this.identity)==min;
},
logAi:function(targets,card){
if(this.ai.shown==1||this.isMad()) return;
if(typeof targets=='number'){
this.ai.shown+=targets;
}
else{
var effect=0,c,shown;
var info=get.info(card);
if(info.ai&&info.ai.expose){
if(_status.event.name=='_wuxie'){
if(_status.event.source&&_status.event.source.ai.shown){
this.ai.shown+=0.2;
}
}
else{
this.ai.shown+=info.ai.expose;
}
}
if(targets.length>0){
for(var i=0;i<targets.length;i++){
shown=Math.abs(targets[i].ai.shown);
if(shown<0.2||targets[i].identity=='nei') c=0;
else if(shown<0.4) c=0.5;
else if(shown<0.6) c=0.8;
else c=1;
effect+=get.effect(targets[i],card,this)*c;
}
}
if(effect>0){
if(effect<1) c=0.5;
else c=1;
if(targets.length==1&&targets[0]==this);
else if(targets.length==1) this.ai.shown+=0.2*c;
else this.ai.shown+=0.1*c;
}
}
if(this.ai.shown>0.95) this.ai.shown=0.95;
if(this.ai.shown<-0.5) this.ai.shown=-0.5;
},
}
},
get:{
2019-10-31 04:43:12 +00:00
guozhanReverse:function(name1,name2){
if(['gz_xunyou','gz_lvfan'].contains(name2)) return true;
if(name2=='gz_dengai') return lib.character[name1][2]%2==1;
if(['gz_sunce','gz_jiangwei'].contains(name1)) return name2=='gz_zhoutai'||lib.character[name2][2]%2==1;
return false;
},
Our Song. 马上就要高考了,这次的版本更新应该是考前的最后一次更新了。 真的很感谢这段时间以来身边的大家。身边的老师和同学也好,Key圈的各位键子们也好,无名杀玩家们也好,正是有了你们的陪伴和支持,我才能够坚持下来,走到今天的这一步。 祝愿包括我自己在内的所有考生高考顺利,金榜题名吧! 最后,在这里复制粘贴一下《Angel Beats!》TV版的ED,某种意义上也是仲村ゆり的角色歌的《Brave Song》的歌词: ``` いつもひとりで歩いてた 振り返るとみんなは遠く 一路走来形单影只 转身回首望去 大家已经远去 それでもあたしは歩いた それが強さだった 即使如此我依然前行 这正是我的坚强 もう何も恐くない そう呟いてみせる 经历 使我无所畏惧 再多冷漠也是一句叹息 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 孤独さえ愛し笑ってられるように あたしは戦うんだ 为了那笑容下与孤独作伴的勇气 我决定战斗到底 涙なんて見せないんだ 我已不再哭泣 いつもひとりで歩いてた 行く先には崖が待ってた 一路走来形单影只 而前方等着的却是山崖 それでもあたしは歩いた 強さの証明のため 即使如此我依然前行 为了证明这份坚强 吹き付ける強い風 汗でシャツが張りつく 强风吹过 汗水将衣服粘湿 いつか忘れてしまえるなら 生きることそれはたやすいもの 若有一天将一切尽数忘掉的话 生存其实并不困难 忘却の彼方へと落ちていくなら それは逃げることだろう 而若坠落在那忘却的彼端的话 那便成了逃避吧 生きた意味すら消えるだろう 就连生存的意义也会消失殆尽吧 風はやがて凪いでた 汗も乾いて 风终于停息 汗也干了 お腹が空いてきたな 何かあったっけ 肚子也饿了啊 有什么可吃的吗 賑やかな声と共にいい匂いがやってきた 同熙攘的声音一道 喷香的味道也传了过来 いつもひとりで歩いてた みんなが待っていた 一路走来形单影只 大家在前方等着我 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 それでもいい 安らかなこの気持ちは それを仲間と呼ぶんだ 这倒也没什么 这种安宁的感情 称之为伙伴 いつかみんなと過ごした日々も忘れてどこかで生きてるよ 有一天我会忘掉和大家在一起度过的日子而生活在他乡 その時はもう強くなんかないよ 到了那时 我不会再坚强了 普通の女の子の弱さで涙を零すよ 像普通的女孩一样流下柔弱的泪水 ```
2020-07-03 05:22:31 +00:00
guozhanRank:function(name,player){
2019-10-31 04:43:12 +00:00
if(name.indexOf('gz_shibing')==0) return -1;
if(name.indexOf('gz_jun_')==0) return 7;
Our Song. 马上就要高考了,这次的版本更新应该是考前的最后一次更新了。 真的很感谢这段时间以来身边的大家。身边的老师和同学也好,Key圈的各位键子们也好,无名杀玩家们也好,正是有了你们的陪伴和支持,我才能够坚持下来,走到今天的这一步。 祝愿包括我自己在内的所有考生高考顺利,金榜题名吧! 最后,在这里复制粘贴一下《Angel Beats!》TV版的ED,某种意义上也是仲村ゆり的角色歌的《Brave Song》的歌词: ``` いつもひとりで歩いてた 振り返るとみんなは遠く 一路走来形单影只 转身回首望去 大家已经远去 それでもあたしは歩いた それが強さだった 即使如此我依然前行 这正是我的坚强 もう何も恐くない そう呟いてみせる 经历 使我无所畏惧 再多冷漠也是一句叹息 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 孤独さえ愛し笑ってられるように あたしは戦うんだ 为了那笑容下与孤独作伴的勇气 我决定战斗到底 涙なんて見せないんだ 我已不再哭泣 いつもひとりで歩いてた 行く先には崖が待ってた 一路走来形单影只 而前方等着的却是山崖 それでもあたしは歩いた 強さの証明のため 即使如此我依然前行 为了证明这份坚强 吹き付ける強い風 汗でシャツが張りつく 强风吹过 汗水将衣服粘湿 いつか忘れてしまえるなら 生きることそれはたやすいもの 若有一天将一切尽数忘掉的话 生存其实并不困难 忘却の彼方へと落ちていくなら それは逃げることだろう 而若坠落在那忘却的彼端的话 那便成了逃避吧 生きた意味すら消えるだろう 就连生存的意义也会消失殆尽吧 風はやがて凪いでた 汗も乾いて 风终于停息 汗也干了 お腹が空いてきたな 何かあったっけ 肚子也饿了啊 有什么可吃的吗 賑やかな声と共にいい匂いがやってきた 同熙攘的声音一道 喷香的味道也传了过来 いつもひとりで歩いてた みんなが待っていた 一路走来形单影只 大家在前方等着我 いつか人は一人になって 思い出の中に生きてくだけ 总有一天人将学会独立 在回忆中寻找自己的影子 それでもいい 安らかなこの気持ちは それを仲間と呼ぶんだ 这倒也没什么 这种安宁的感情 称之为伙伴 いつかみんなと過ごした日々も忘れてどこかで生きてるよ 有一天我会忘掉和大家在一起度过的日子而生活在他乡 その時はもう強くなんかないよ 到了那时 我不会再坚强了 普通の女の子の弱さで涙を零すよ 像普通的女孩一样流下柔弱的泪水 ```
2020-07-03 05:22:31 +00:00
if(player){
var skills=lib.character[name][3].slice(0);
for(var i=0;i<skills.length;i++){
if(lib.skill[skills[i]].limited&&player.awakenedSkills.contains(skills[i])) return skills.length-1;
}
}
2019-10-31 04:43:12 +00:00
if(_status._aozhan){
for(var i in lib.aozhanRank){
if(lib.aozhanRank[i].contains(name)) return parseInt(i);
}
}
for(var i in lib.guozhanRank){
if(lib.guozhanRank[i].contains(name)) return parseInt(i);
}
return 0;
},
2020-02-04 05:31:47 +00:00
junlingEffect:function(source,junling,performer,targets,viewer){
2020-02-23 05:45:11 +00:00
var att1=get.attitude(viewer,source),att2=get.attitude(viewer,performer);
var eff1=0,eff2=0;
switch(junling){
case 'junling1':
if(!targets.length&&game.countPlayer(function(current){return get.damageEffect(viewer,current,viewer)>0})) eff1=2;
else{
if(get.damageEffect(targets[0],performer,source)>=0) eff1=2;
else eff1=-2;
if(get.damageEffect(targets[0],source,performer)>=0) eff2=2;
else eff2=-2;
}
break;
case 'junling2':
if(performer.countCards('he')){eff1=1;eff2=0;}
else{eff1=2;eff2=-1;}
break;
case 'junling3':
if(performer.hp==1&&!performer.hasSkillTag('save',true)) eff2=-5;
else{
if(performer==viewer){
if(performer.hasSkillTag('maihp',true)) eff2=3;
else eff2=-2;
2020-02-04 05:31:47 +00:00
}
2020-02-23 05:45:11 +00:00
else{
if(performer.hasSkillTag('maihp',false)) eff2=3;
else eff2=-2;
}
}
break;
case 'junling4':eff1=0;eff2=-2;break;
case 'junling5':
var td=performer.isTurnedOver();
if(td){
if(performer==viewer){
if(_status.currentPhase==performer&&performer.hasSkill('jushou')) eff2=-3;
else eff2=3;
}
else eff2=3;
}
else{
if(performer==viewer){
if(performer.hasSkillTag('noturn',true)) eff2=0;
else eff2=-3;
}
else{
if(performer.hasSkillTag('noturn',false)) eff2=0;
else eff2=-3;
}
}
break;
case 'junling6':
if(performer.countCards('h')>1) eff2+=1-performer.countCards('h');
if(performer.countCards('e')>1) eff2+=1-performer.countCards('e');
break;
}
return Math.sign(att1)*eff1+Math.sign(att2)*eff2;
},
2019-08-30 15:10:11 +00:00
realAttitude:function(from,toidentity,difficulty){
if(from.identity==toidentity&&toidentity!='ye'){
return 4+difficulty;
}
if(from.identity=='unknown'&&lib.character[from.name1][1]==toidentity){
if(from.wontYe()) return 4+difficulty;
}
var groups=[];
for(var i=0;i<lib.group.length;i++){
groups.push(get.population(lib.group[i]));
}
var max=Math.max.apply(this,groups);
if(max<=1) return -3;
var from_p=get.population(from.identity!='unknown'?from.identity:lib.character[from.name1][1]);
var to_p=get.population(toidentity);
if(from.identity=='ye') from_p=1;
if(toidentity=='ye') to_p=1;
if(to_p==max) return -5;
if(from_p==max) return -2-get.population(toidentity);
if(max>=game.players.length/2){
if(to_p<=from_p){
return 0.5;
}
return 0;
}
if(to_p<max-1) return 0;
return -0.5;
},
rawAttitude:function(from,to){
if(to.identity=='unknown'&&game.players.length==2) return -5;
if(_status.currentPhase==from&&from.ai.tempIgnore&&
from.ai.tempIgnore.contains(to)&&to.identity=='unknown'&&
(!from.storage.zhibi||!from.storage.zhibi.contains(to))) return 0;
var difficulty=0;
if(to==game.me) difficulty=(2-get.difficulty())*1.5;
if(from==to) return 5+difficulty;
if(from.identity==to.identity&&from.identity!='unknown'&&from.identity!='ye') return 5+difficulty;
if(from.identity=='unknown'&&lib.character[from.name1][1]==to.identity){
if(from.wontYe()) return 4+difficulty;
}
var toidentity=to.identity;
if(toidentity=='unknown'){
toidentity=lib.character[to.name1][1];
if(!to.wontYe()){
2019-08-30 15:10:11 +00:00
toidentity='ye';
}
}
var att=get.realAttitude(from,toidentity,difficulty);
if(from.storage.zhibi&&from.storage.zhibi.contains(to)){
return att;
}
if(to.ai.shown>=0.5) return att*to.ai.shown;
var nshown=0;
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=from&&game.players[i].identity=='unknown'){
nshown++;
}
}
if(to.ai.shown==0){
if(nshown>=game.players.length/2&&att>=0){
return 0;
}
return Math.min(0,Math.random()-0.5)+difficulty;
}
if(to.ai.shown>=0.2){
if(att>2){
return Math.max(0,Math.random()-0.5)+difficulty;
}
if(att>=0){
return 0;
}
return Math.min(0,Math.random()-0.7)+difficulty;
}
if(att>2){
return Math.max(0,Math.random()-0.7)+difficulty;
}
if(att>=0){
return Math.min(0,Math.random()-0.3)+difficulty;
}
return Math.min(0,Math.random()-0.5)+difficulty;
},
}
};
});