迷途往生

This commit is contained in:
Spmario233 2020-09-25 18:40:43 +08:00 committed by GitHub
parent 49765647d1
commit 914309fc0d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
31 changed files with 2125 additions and 1017 deletions

View File

@ -910,10 +910,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
if(typeof event.baseDamage!='number') event.baseDamage=1;
if(typeof event.extraDamage!='number'){
event.extraDamage=0;
if(!event.shaReq) event.shaReq={};
if(typeof event.shaReq[player.playerid]!='number') event.shaReq[player.playerid]=1;
if(typeof event.shaReq[target.playerid]!='number') event.shaReq[target.playerid]=1;
}
if(!event.shaReq) event.shaReq={};
if(typeof event.shaReq[player.playerid]!='number') event.shaReq[player.playerid]=1;
if(typeof event.shaReq[target.playerid]!='number') event.shaReq[target.playerid]=1;
event.playerCards=[];
event.targetCards=[];
"step 1"

View File

@ -56,6 +56,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_shiori:['female','key','2/3',['shiori_huijuan']],
key_kaori:['female','key','3/4',['kaori_siyuan']],
key_akiko:['female','key',3,['akiko_dongcha']],
key_abyusa:['female','key',3,['abyusa_jueqing','abyusa_dunying']],
key_kud:['female','key',3,['kud_qiaoshou','kud_buhui']],
key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']],
@ -150,7 +151,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"ns_huangchengyan","ns_sunchensunjun","ns_yuanxi","ns_caoshuang"],
diy_tieba:["diy_wenyang","ns_zuoci","ns_lvzhi","ns_wangyun","ns_nanhua","ns_nanhua_left","ns_nanhua_right","ns_huamulan","ns_huangzu","ns_jinke","ns_yanliang","ns_wenchou","ns_caocao","ns_caocaosp","ns_zhugeliang","ns_wangyue","ns_yuji","ns_xinxianying","ns_guanlu","ns_simazhao","ns_sunjian","ns_duangui","ns_zhangbao","ns_masu","ns_zhangxiu","ns_lvmeng","ns_shenpei","ns_yujisp","ns_yangyi","ns_liuzhang","ns_xinnanhua","ns_zhangwei"],
diy_default:["diy_feishi","diy_liuyan","diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji","diy_liufu","diy_xizhenxihong","diy_liuzan","diy_zaozhirenjun","diy_yangyi","diy_tianyu"],
diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki","key_miki","key_shiori","key_kaori","sp_key_yuri","key_akiko"],
diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki","key_miki","key_shiori","key_kaori","sp_key_yuri","key_akiko","key_abyusa"],
diy_yongjian:["ns_chendao","yj_caoang"],
},
},
@ -166,6 +167,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_tianyu:'字国让,渔阳雍奴(今天津市武清区东北)人。三国时期曹魏将领。初从刘备,因母亲年老回乡,后跟随公孙瓒,公孙瓒败亡,劝说鲜于辅加入曹操。曹操攻略河北时,田豫正式得到曹操任用,历任颖阴、郎陵令、弋阳太守等。',
},
characterTitle:{
key_abyusa:'#rAngel Beats!',
key_akiko:'#bKanon',
key_kaori:'#bKanon',
key_shiori:'#bKanon',
@ -317,6 +319,49 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_lucia:['key_shizuru'],
},
skill:{
abyusa_jueqing:{
audio:'jueqing',
trigger:{source:'damageBegin2'},
skillAnimation:true,
animationColor:'water',
filter:function(event,player){
return player!=event.player&&!player.hasSkill('abyusa_jueqing_1st');
},
prompt2:function(event,player){
var num=get.cnNumber(2*event.num);
return '防止即将令其造成的伤害,改为令其失去'+num+'点体力并对自己造成'+num+'点伤害';
},
check:function(event,player){
return player.hp>event.num*2&&event.player.hp>event.num&&event.player.hp<=2*event.num&&get.attitude(player,event.player)<0;
},
logTarget:'player',
content:function(){
'step 0'
trigger.cancel();
trigger.player.loseHp(2*trigger.num);
player.damage(2*trigger.num);
'step 1'
player.addSkill('abyusa_jueqing_1st');
},
derivation:'abyusa_jueqing_rewrite',
},
abyusa_jueqing_1st:{
trigger:{source:'damageBefore'},
forced:true,
charlotte:true,
audio:'jueqing',
filter:function(event,player){
return player.hasSkill('abyusa_jueqing');
},
check:function(){return false;},
content:function(){
trigger.cancel();
trigger.player.loseHp(trigger.num);
},
ai:{
jueqing:true
}
},
akiko_dongcha:{
trigger:{global:'gameDrawAfter'},
forced:true,
@ -341,6 +386,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
},
abyusa_dunying:{
trigger:{player:['phaseZhunbeiBegin','phaseJieshuBegin']},
forced:true,
filter:function(event,player){
return player.isDamaged();
},
content:function(){
player.draw(player.getDamagedHp());
},
mod:{
globalTo:function(from,to,num){
return num+to.getDamagedHp();
},
},
},
kaori_siyuan:{
enable:'phaseUse',
filter:function(event,player){
@ -10231,6 +10291,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_shiori:'美坂栞',
key_kaori:'美坂香里',
key_akiko:'水濑秋子',
key_abyusa:'游佐',
lucia_duqu:'毒躯',
lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。<br>②当你因【毒】失去体力时,你改为回复等量的体力。<br>③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。',
lucia_zhenren:'振刃',
@ -10466,6 +10527,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
akiko_dongcha:'洞察',
akiko_dongcha_info_identity:'锁定技,其他角色的手牌对你可见。游戏开始时,你令其他角色的身份牌对你可见。',
akiko_dongcha_info:'锁定技,其他角色的手牌对你可见。',
abyusa_jueqing:'绝情',
abyusa_jueqing_info:'当你对其他角色造成伤害时你可以防止此伤害。若如此做你令其失去2X点体力修改〖绝情〗并对自己造成2X点伤害。',
abyusa_jueqing_1st:'绝情',
abyusa_jueqing_rewrite:'绝情·改',
abyusa_jueqing_rewrite_info:'锁定技,你即将造成的伤害均视为失去体力。',
abyusa_dunying:'遁影',
abyusa_dunying_info:'锁定技,其他角色计算与你的距离时+X。准备阶段和结束阶段你摸X张牌X为你已损失的体力值。',
key_kud:'库特莉亚芙卡',
kud_qiaoshou:'巧手',

View File

@ -6,13 +6,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true,
characterSort:{
mobile:{
mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei"],
mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong"],
mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning"],
mobile_others:["re_jikang","old_bulianshi","old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","xin_yuanshao","re_liushan","xin_xiahoudun","re_sp_zhugeliang","re_heqi","re_guanqiujian","re_pangtong","old_liuzan","xin_chengpu","re_sunjian","re_xusheng","re_dongzhuo"],
mobile_sunben:["re_sunben"],
mobile_standard:["xin_xiahoudun"],
mobile_shenhua:["re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian"],
mobile_yijiang1:["re_jikang","old_bulianshi","xin_liaohua","xin_caozhang","re_xusheng"],
mobile_sp:["old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","re_heqi","re_pangtong","old_liuzan","xin_chengpu"],
mobile_trashbin:['old_jiakui'],
},
},
character:{
old_jiakui:['male','wei',4,['tongqu','xinwanlan']],
xin_caozhang:['male','wei',4,['rejiangchi']],
xin_liaohua:['male','shu',4,['redangxian','refuli']],
furong:['male','shu',4,['xuewei','liechi']],
re_dongzhuo:['male','qun',8,['rejiuchi','roulin','benghuai','baonue'],['zhu']],
re_xusheng:['male','wu',4,['repojun']],
sp_sufei:['male','qun',4,['zhengjian','gaoyuan']],
@ -67,6 +75,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_sunben:['male','wu',4,['jiang','rehunzi','zhiba'],['zhu']],
},
characterIntro:{
furong:'傅肜róng222年义阳今湖北枣阳三国时蜀汉将领。刘备攻伐吴国时傅肜为别督。后刘备被陆逊击败傅肜率部断后奋战至死。死前怒斥道“吴狗何有汉将军降者”',
zhengxuan:'郑玄127年200年字康成。北海郡高密县今山东省高密市人。东汉末年儒家学者、经学大师。郑玄曾入太学攻《京氏易》、《公羊春秋》及《三统历》、《九章算术》又从张恭祖学《古文尚书》、《周礼》和《左传》等最后从马融学古文经。游学归里之后复客耕东莱聚徒授课弟子达数千人家贫好学终为大儒。党锢之祸起遭禁锢杜门注疏潜心著述。晚年守节不仕却遭逼迫从军最终病逝于元城年七十四。郑玄治学以古文经学为主兼采今文经学。他遍注儒家经典以毕生精力整理古代文化遗产使经学进入了一个“小统一时代”。著有《天文七政论》、《中侯》等书共百万余言世称“郑学”为汉代经学的集大成者。唐贞观年间列郑玄于二十二“先师”之列配享孔庙。宋代时被追封为高密伯。后人建有郑公祠以纪念。',
dengzhi:'邓芝178年251年字伯苗。义阳郡新野县今河南新野人。东汉名将邓禹之后三国时期蜀汉重臣。邓芝早年曾被预言能位至大将后被刘备任为郫令升迁为广汉太守。因任官公廉且有治绩被征入朝为尚书。刘备逝世后奉命出使吴国成功修复两国关系并深为吴大帝孙权所赏识。建兴六年228年丞相诸葛亮策划北伐命邓芝与大将赵云佯攻郿城以吸引魏国曹真军主力。建兴十二年234年迁前军师、前将军领兖州刺史封阳武亭侯不久督领江州。延熙六年243年迁车骑将军后授假节。又率军平定涪陵叛乱。延熙十四年251年邓芝病逝。邓芝性格正直、简单不刻意修饰情绪。他为将二十多年赏罚明断体恤士卒。身上的衣食取自官府从未经营过私产妻儿甚至还有忍饥挨饿之时死时家中也没有多余财物。',
yangyi:'杨仪235年字威公襄阳今湖北襄阳三国时期蜀汉官员。最初为荆州刺史傅群的主簿后投奔关羽任为功曹。关羽遣其至成都大受刘备赞赏擢为尚书。因与尚书令刘巴不和调为弘农太守。建兴三年225年任丞相参军此后一直跟随诸葛亮战斗。亮卒他部署安全退军。诸葛亮在生前定蒋琬继己任杨仪仅拜中军师。建兴十三年235年因多出怨言被削职流放至汉嘉郡。但杨仪仍不自省又上书诽谤言辞激烈最后下狱自杀身亡。',
@ -286,6 +295,165 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterFilter:{},
skill:{
//芙蓉,手杀廖化,手杀曹彰
rejiangchi:{
audio:2,
trigger:{
player:"phaseUseBegin",
},
direct:true,
content:function(){
"step 0"
var list=['弃牌','摸牌','取消'];
if(!player.countCards('he')) list.remove('弃牌');
player.chooseControl(list,function(){
var player=_status.event.player;
if(list.contains('弃牌')){
if(player.countCards('h')>3&&player.countCards('h','sha')>1){
return '弃牌';
}
if(player.countCards('h','sha')>2){
return '弃牌';
}
}
if(!player.countCards('h','sha')){
return '摸牌';
}
return 'cancel2';
}).set('prompt',get.prompt2('rejiangchi'));
"step 1"
if(result.control=='弃牌'){
player.chooseToDiscard(true,'he');
player.addTempSkill('jiangchi2','phaseUseEnd');
player.logSkill('rejiangchi');
}
else if(result.control=='摸牌'){
player.draw();
player.addTempSkill('rejiangchi3','phaseUseEnd');
player.logSkill('rejiangchi');
}
},
},
rejiangchi3:{
mod:{
cardEnabled:function(card){
if(card.name=='sha') return false;
},
},
},
refuli:{
skillAnimation:true,
animationColor:'soil',
audio:2,
unique:true,
limited:true,
enable:'chooseToUse',
mark:true,
filter:function(event,player){
if(event.type!='dying') return false;
if(player!=event.dying) return false;
return true;
},
content:function(){
"step 0"
player.awakenSkill('refuli');
event.num=game.countGroup();
if(event.num>player.hp) player.recover(event.num-player.hp);
"step 1"
if(player.isMaxHp(true)) player.turnOver();
},
ai:{
save:true,
skillTagFilter:function(player){
return player.hp<=0;
},
result:{
player:10
},
threaten:function(player,target){
if(!target.storage.refuli) return 0.9;
}
},
},
redangxian:{
trigger:{player:'phaseBegin'},
forced:true,
audio:'dangxian',
audioname:['guansuo','xin_liaohua'],
content:function(){
'step 0'
var card=get.discardPile(function(card){
return card.name=='sha';
});
if(card) player.gain(card,'gain2');
'step 1'
game.updateRoundNumber();
player.phaseUse();
'step 2'
var stat=player.getStat();
stat.card={};
for(var i in stat.skill){
var bool=false;
var info=lib.skill[i];
if(info.enable!=undefined){
if(typeof info.enable=='string'&&info.enable=='phaseUse') bool=true;
else if(typeof info.enable=='object'&&info.enable.contains('phaseUse')) bool=true;
}
if(bool) stat.skill[i]=0;
}
},
},
xuewei:{
audio:2,
trigger:{player:'phaseZhunbeiBegin'},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt2('xuewei'),lib.filter.notMe).set('ai',function(target){
var player=_status.event.player;
if(player==get.zhu(player)&&player.hp<=2) return 0;
return get.attitude(player,target)-4;
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('xuewei');
player.addTempSkill('xuewei2',{player:'phaseBegin'});
player.storage.xuewei2=target;
}
},
ai:{
threaten:1.05,
},
},
xuewei2:{
audio:'xuewei',
forced:true,
onremove:true,
trigger:{global:'damageBegin4'},
charlotte:true,
filter:function(event,player){
return event.player==player.storage.xuewei2;
},
logTarget:'player',
content:function(){
player.removeSkill('xuewei2');
trigger.cancel();
player.damage(trigger.num,trigger.source||'nosource');
if(trigger.source&&trigger.source.isIn()) trigger.source.damage(trigger.num,trigger.nature,player);
},
},
liechi:{
trigger:{player:'dying'},
forced:true,
filter:function(event,player){
return event.getParent().name=='damage'&&event.source&&event.source.countCards('he');
},
audio:2,
content:function(){
trigger.source.chooseToDiscard('he',true);
},
},
rejiuchi:{
group:['jiuchi'],
audioname:['re_dongzhuo'],
@ -309,14 +477,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tongqu:{
audio:'zhongzuo',
trigger:{
global:['gameDrawAfter','damageEnd','phaseDrawBegin2'],
player:['enterGame','phaseUseBegin'],
global:['gameDrawAfter','dying','phaseDrawBegin2'],
player:['enterGame','phaseZhunbeiBegin'],
},
direct:true,
filter:function(event,player){
if(event.name=='phaseDraw') return !event.numFixed&&event.player.hasMark('tongqu');
if(event.name=='damage') return event.player.hasMark('tongqu');
if(event.name=='phaseUse') return game.hasPlayer(function(current){
if(event.name=='phaseDraw') return event.player.hasMark('tongqu');
if(event.name=='dying') return event.player.hasMark('tongqu');
if(event.name=='phaseZhunbei') return game.hasPlayer(function(current){
return !current.hasMark('tongqu');
});
return !player.hasMark('tongqu');
@ -325,20 +493,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
if(trigger.name=='phaseDraw'){
player.logSkill('tongqu',trigger.player);
trigger.num++;
trigger.player.draw('nodelay');
trigger.player.addTempSkill('tongqu2','phaseDrawAfter');
event.finish();
}
else if(trigger.name=='damage'){
else if(trigger.name=='dying'){
player.logSkill('tongqu',trigger.player);
trigger.player.removeMark('tongqu',1);
event.finish();
}
else if(trigger.name=='phaseUse'){
else if(trigger.name=='phaseZhunbei'){
player.chooseTarget(get.prompt2('tongqu'),function(card,player,target){
return !target.hasMark('tongqu');
}).set('ai',function(target){
return get.attitude(_status.event.player,target)
if(_status.event.player.hp<3) return 0;
return get.attitude(_status.event.player,target);
});
}
else{
@ -349,12 +518,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.bool){
var target=result.targets[0];
player.loseHp();
player.logSkill('tongqu',target);
target.addMark('tongqu',1);
}
},
marktext:'渠',
intro:{content:'mark'},
intro:{content:'mark',name2:'渠'},
},
tongqu2:{
trigger:{player:'phaseDrawEnd'},
@ -405,7 +575,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(card.name=='du') return -6*att;
if(att>0){
if(get.position(card)=='h'&&target.getUseValue(card)>player.getUseValue(card)) return 4*att;
if(get.value(card,target)>get.value(card,player)) return 2*att;
if(target.hasUseTarget(card)) return 2*att;
return 1.2*att;
}
return 0;
@ -413,8 +583,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
});
'step 1'
if(result.bool){
if(result.targets.length) result.targets[0].gain(result.cards,player,'giveAuto');
else player.discard(result.cards);
if(result.targets.length){
event.target=result.targets[0];
event.target.gain(result.cards,player,'giveAuto');
event.card=result.cards[0];
}
else{
player.discard(result.cards);
event.finish();
}
}
'step 2'
if(target.getCards('h').contains(card)&&get.type(card)=='equip'){
target.chooseUseTarget(card,true);
}
},
},
@ -422,9 +603,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'wanlan',
trigger:{global:'damageBegin4'},
filter:function(event,player){
return event.player.hp<=event.num&&player.countCards('he',function(card){
return lib.filter.cardDiscardable(card,player)&&get.type(card)!='basic';
})>=1;
return event.player.hp<=event.num&&player.countCards('e')>=1;
},
logTarget:'player',
check:function(event,player){
@ -442,9 +621,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return !player.hasUnknown();
},
content:function(){
player.discard(player.getCards('he',function(card){
return lib.filter.cardDiscardable(card,player)&&get.type(card)!='basic';
}));
player.discard(player.getCards('e'));
trigger.cancel();
},
},
@ -2604,7 +2781,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){},
},
rexushen:{
derivation:['new_rewusheng','xindangxian'],
derivation:['new_rewusheng','redangxian'],
audio:'xinfu_xushen',
limited:true,
enable:'phaseUse',
@ -2679,8 +2856,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool){
player.line(trigger.source,'fire');
trigger.source.addSkillLog('new_rewusheng');
trigger.source.addSkillLog('xindangxian');
trigger.source.storage.xinfuli=true;
trigger.source.addSkillLog('redangxian');
}
},
},
@ -4545,9 +4721,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tunchu:{
audio:2,
trigger:{player:'phaseDrawBegin2'},
check:function(event,player){
return player.countCards('h')-player.countCards('h',{type:'equip'})<=player.hp;
},
frequent:true,
filter:function(event,player){
if(event.numFixed||player.storage.tunchu&&player.storage.tunchu.length) return false;
return true;
@ -5566,7 +5740,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
meiyong:'姝勇',
meiyong_info:'当你使用或打出【杀】时,你可以获得一名其他角色的一张牌,然后其摸一张牌。',
rexushen:'许身',
rexushen_info:'限定技出牌阶段你可以失去X点体力X为场上男性角色的数量。若你以此法进入了濒死状态则当你因一名角色而脱离此濒死状态后你可以令其获得技能〖武圣〗和〖当先〗(其以此法获得的〖当先〗结算时视为其发动过〖伏枥〗)。',
rexushen_info:'限定技出牌阶段你可以失去X点体力X为场上男性角色的数量。若你以此法进入了濒死状态则当你因一名角色而脱离此濒死状态后你可以令其获得技能〖武圣〗和〖当先〗。',
rezhennan:'镇南',
rezhennan_info:'当你成为其他角色使用的牌的目标后若此牌的目标数大于该角色的体力值则你可以弃置一张牌并对其造成1点伤害。',
@ -5701,13 +5875,32 @@ game.import('character',function(lib,game,ui,get,ai,_status){
gaoyuan:'告援',
gaoyuan_info:'当你成为【杀】的目标时,你可弃置一张牌将此【杀】转移给一名有“诤”且不是此【杀】使用者的其他角色。',
tongqu:'通渠',
tongqu_info:'游戏开始时,你获得一个“渠”。出牌阶段开始时,你可令一名没有“渠”的角色获得一个“渠”。有“渠”的角色摸牌阶段,其多摸一张牌,然后其将一张牌交给一名有“渠”的其他角色或弃置一张牌。有“渠”的角色受到伤害后,其弃置“渠”',
tongqu_info:'游戏开始时,你拥有一个“渠”标记。准备阶段你可以失去1点体力令一名没有“渠”标记的角色获得“渠”标记。有“渠”的角色摸牌阶段额外摸一张牌然后将一张牌交给其他有“渠”的角色或弃置。若以此法给出的是装备牌则使用之。当有“渠”的角色进入濒死状态时移除其“渠”标记。',
xinwanlan:'挽澜',
xinwanlan_info:'当有角色受到伤害时,若伤害点数大于其体力值,则你可以弃置所有非基本牌(至少两张)并防止此伤害。',
xinwanlan_info:'当一名角色受到会令其进入濒死状态的伤害时,你可以弃置装备区中的所有牌(至少一张) 防止此伤害。',
re_xusheng:'手杀徐盛',
re_dongzhuo:'手杀董卓',
rejiuchi:'酒池',
rejiuchi_info:'你可以将一张黑桃手牌当做【酒】使用。锁定技,当你于回合内使用带有【酒】效果的【杀】造成伤害时,你令你的【崩坏】失效直到回合结束。',
furong:'傅肜',
xuewei:'血卫',
xuewei_info:'准备阶段,你可以选择一名其他角色(仅自己可见)。若如此做,直到你的下回合开始前,当其第一次受到伤害时,你防止此伤害,改为由你受到等量的伤害并对伤害来源造成等量同属性的伤害。',
liechi:'烈斥',
liechi_info:'锁定技,当你进入濒死状态时,伤害来源弃置一张牌。',
xin_liaohua:'手杀廖化',
redangxian:'当先',
redangxian_info:'锁定技,回合开始时,你从弃牌堆中获得一张【杀】并进行一个额外的准备阶段。',
refuli:'伏枥',
refuli_info:'限定技当你处于濒死状态时你可以将体力值回复至X点X为势力数。然后若你的体力值为全场唯一最多你翻面。',
xin_caozhang:'手杀曹彰',
"rejiangchi":"将驰",
"rejiangchi_info":"出牌阶段开始时你可以选择一项1、摸一张牌若如此做你本阶段内不能使用【杀】。 2、弃置一张牌若如此做此阶段你使用【杀】无距离限制且你可以额外使用一张【杀。",
mobile_standard:'手杀异构·标准包',
mobile_shenhua:'手杀异构·神话再临',
mobile_yijiang1:'手杀异构·一将成名',
mobile_sp:'手杀异构·SP',
mobile_trashbin:'通厕所的',
old_jiakui:'贾逵重制',
}
};
});

File diff suppressed because it is too large Load Diff

View File

@ -4,21 +4,25 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'refresh',
characterSort:{
refresh:{
refresh_standard:["re_caocao","re_simayi","re_guojia","re_lidian","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_xushu","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_gongsunzan","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong"],
refresh_standard:["re_caocao","re_simayi","re_guojia","re_lidian","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_xushu","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong"],
refresh_feng:['caoren','ol_xiahouyuan','re_huangzhong','ol_weiyan','ol_xiaoqiao','zhoutai','re_zhangjiao','xin_yuji'],
refresh_huo:["ol_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"],
refresh_lin:['re_zhurong','re_menghuo','ol_sunjian','re_caopi','re_xuhuang','ol_dongzhuo'],
refresh_shan:['re_dengai','re_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce'],
refresh_yijiang1:['re_wuguotai','re_gaoshun','re_caozhi','yujin_yujin','re_lingtong','re_masu','xin_xusheng','xin_fazheng'],
refresh_yijiang2:['old_madai','wangyi','guanzhang','re_handang','re_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_liubiao'],
refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran'],
refresh_yijiang4:['re_sunluban','re_wuyi'],
refresh_yijiang2:['old_madai','wangyi','guanzhang','re_handang','re_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_liubiao','re_bulianshi','xin_gongsunzan'],
refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong'],
refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan'],
refresh_yijiang5:['re_zhangyi','re_quancong'],
},
},
connect:true,
character:{
//re_liubiao:['male','qun',3,['rezishou','zongshi'],['unseen']],
xin_gongsunzan:['male','qun',4,['xinyicong','qiaomeng']],
re_bulianshi:['female','wu',3,['reanxu','zhuiyi']],
re_hanhaoshihuan:['male','wei',4,['reshenduan','reyonglve']],
re_panzhangmazhong:['male','wu',4,['reduodao','reanjian']],
re_liubiao:['male','qun',3,['zishou','rezongshi']],
xin_fazheng:['male','shu',3,['xinenyuan','xinxuanhuo'],['die_audio']],
wangyi:['female','wei',3,['zhenlie','miji']],
old_madai:['male','shu',4,['mashu','qianxi']],
@ -62,7 +66,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_daqiao:['female','wu',3,['reguose','liuli']],
re_huanggai:['male','wu',4,['rekurou','zhaxiang']],
re_lvbu:['male','qun',5,['wushuang','new_liyu']],
re_gongsunzan:['male','qun',4,['qiaomeng','reyicong']],
re_huatuo:['male','qun',3,['jijiu','new_reqingnang']],
re_liubei:['male','shu',4,['rerende','jijiang'],['zhu']],
re_diaochan:['female','qun',3,['lijian','rebiyue']],
@ -118,6 +121,109 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sunben:['zhouyu','taishici','daqiao'],
},
skill:{
xinyicong:{
mod:{
globalFrom:function(from,to,current){
return current-Math.max(0,from.hp-1);
},
globalTo:function(from,to,current){
return current+Math.max(0,to.getDamagedHp()-1);
},
},
ai:{
threaten:0.8
}
},
reanxu:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return game.countPlayer()>2&&game.hasPlayer(function(current){
return current!=player&&current.countCards('he');
});
},
selectTarget:2,
filterTarget:function(card,player,target){
if(target==player) return false;
if(!ui.selected.targets.length) return target.countCards('he')>0;
return target!=ui.selected.targets[0]&&ui.selected.targets[0].countGainableCards(target,'he')>0;
},
multitarget:true,
targetprompt:['被拿牌','得到牌'],
content:function(){
'step 0'
targets[1].gainPlayerCard(targets[0],'he',true);
'step 1'
if(targets[0].getHistory('lose',function(evt){
return evt.getParent(3)==event&&!evt.es.length;
}).length) player.draw();
'step 2'
if(targets[0].isIn()&&targets[1].isIn()&&
targets[0].countCards('h')!=targets[1].countCards('h')){
event.target=targets[targets[0].countCards('h')>targets[1].countCards('h')?1:0];
player.chooseBool('是否令'+get.translation(event.target)+'摸一张牌?').set('ai',function(){
var evt=_status.event.getParent();
return get.attitude(evt.player,evt.target)>0;
})
}
else event.finish();
'step 3'
if(result.bool) target.draw();
},
ai:{
expose:0.2,
threaten:2,
order:9,
result:{
player:function(player,target){
if(ui.selected.targets.length) return 0.01;
return target.countCards('e')?0:0.5;
},
target:function(player,target){
if(ui.selected.targets.length){
player=target;
target=ui.selected.targets[0];
if(get.attitude(player,target)>1){
return 0;
}
return target.countCards('h')-player.countCards('h')>(target.countCards('e')?2:1)?2:1;
}
else{
if(get.attitude(player,target)<=0) return (target.countCards('he',function(card){
return card.name=='tengjia'||get.value(card)>0;
})>0)?-1.5:1.5;
return (target.countCards('he',function(card){
return card.name!='tengjia'&&get.value(card)<=0;
})>0)?1.5:-1.5
}
},
},
},
},
rezongshi:{
audio:2,
mod:{
maxHandcard:function(player,num){
return num+game.countGroup();
},
},
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
filter:function(event,player){
return player.countCards('h')>player.hp;
},
content:function(){
player.addTempSkill('rezongshi_paoxiao');
},
},
rezongshi_paoxiao:{
mod:{
cardUsable:function(card,player,num){
if(card.name=='sha') return Infinity;
},
},
},
olbaonue:{
audio:2,
unique:true,
@ -156,6 +262,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
rezishou:{
audio:'zishou',
audioname:['re_liubiao'],
trigger:{player:'phaseDrawBegin2'},
check:function(event,player){
return player.countCards('h')<=(player.hasSkill('zongshi')?player.maxHp:(player.hp-2))||player.skipList.contains('phaseUse')||!player.countCards('h',function(card){
@ -423,6 +530,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
wulie:{
trigger:{player:'phaseJieshuBegin'},
audio:2,
direct:true,
limited:true,
skillAnimation:true,
@ -6713,8 +6821,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(card.name=='jiu') return Infinity;
},
},
audio:'jiuchi',
audioname:['ol_dongzhuo'],
audio:2,
enable:'chooseToUse',
filterCard:function(card){
return get.suit(card)=='spade';
@ -6888,7 +6995,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_lvbu:'界吕布',
re_xushu:'界徐庶',
re_huanggai:'界黄盖',
re_gongsunzan:'界公孙瓒',
re_daqiao:'界大乔',
re_ganning:'界甘宁',
re_huatuo:'界华佗',
@ -7230,9 +7336,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
rezishou:'自守',
rezishou2:'自守',
rezishou_info:'摸牌阶段你可以多摸X张牌。若如此做本回合你对其他角色造成伤害时防止此伤害且结束阶段若你本回合没有使用牌指定其他角色为目标则你可以将场上的一张装备牌移动到自己的装备区。X为场上势力数',
rezongshi:'宗室',
rezongshi_info:'锁定技,你的手牌上限+XX为势力数。准备阶段若你的手牌数大于体力值则你本回合内使用【杀】无次数限制。',
ol_dongzhuo:'界董卓',
olbaonue:'暴虐',
olbaonue_info:'主公技其他群雄角色造成1点伤害后其可进行判定若为♠你回复1点体力并获得判定牌。',
re_panzhangmazhong:'界潘璋马忠',
re_hanhaoshihuan:'界韩浩史涣',
re_bulianshi:'界步练师',
reanxu:'安恤',
reanxu_info:'出牌阶段限一次,你可以选择两名其他角色,令其中一名角色获得另一名角色的一张牌。若以此法移动的牌不来自装备区,则你摸一张牌。然后你可以令二者中手牌数较少的一名角色摸一张牌。',
xin_gongsunzan:'界公孙瓒',
xinyicong:'义从',
xinyicong_info:'锁定技,你计算与其他角色的距离时-X其他角色计算与你的距离时+Y。X为你的体力值-1Y为你的已损失体力值-1',
refresh_standard:'界限突破·标',
refresh_feng:'界限突破·风',

View File

@ -5,7 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true,
characterSort:{
sp:{
sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","liuxie","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","fuwan","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","lingju","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","xujing","yuantanyuanshang","sunshao","zhangling",'guansuo','baosanniang','ol_zhangchangpu'],
sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","liuxie","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","fuwan","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","lingju","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","xujing","yuantanyuanshang","sunshao","zhangling",'guansuo','baosanniang','ol_zhangchangpu','caoshuang'],
sp_zhongdan:["cuiyan","huangfusong"],
sp_star:["sp_xiahoushi","jsp_zhaoyun","huangjinleishi","sp_pangtong","sp_daqiao","sp_ganning","sp_xiahoudun","sp_lvmeng","sp_zhangfei","sp_liubei"],
sp_sticker:['sp_gongsunzan','sp_simazhao','sp_wangyuanji','sp_xinxianying','sp_liuxie'],
@ -17,7 +17,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterFilter:{},
character:{
//caoshuang:['male','wei',4,['tuogu','shanzhuan']],
caoshuang:['male','wei',4,['tuogu','shanzhuan']],
ol_zhangchangpu:['female','wei',3,['yanjiao','olxingshen']],
zhangling:['male','qun',4,['zlhuji','zlshoufu'],['unseen']],
caiyang:['male','qun',1,['yinka'],['forbidai','unseen']],
@ -33,8 +33,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yuantanyuanshang:['male','qun',4,['neifa']],
xujing:['male','shu',3,['yuxu','xjshijian']],
hejin:['male','qun',4,['mouzhu','yanhuo']],
hansui:['male','qun',4,['mashu','niluan']],
hejin:['male','qun',4,['spmouzhu']],
hansui:['male','qun',4,['spniluan','spweiwu']],
niujin:['male','wei',4,['cuorui','liewei']],
jianggan:["male","wei",3,["weicheng","daoshu"]],
@ -392,6 +392,250 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//曹爽,韩遂,何进
xiaoxi:{
audio:2,
audioname:['machao','hansui','pangde'],
trigger:{
player:'enterGame',
global:'gameDrawAfter',
},
direct:true,
content:function(){
player.chooseUseTarget('sha',get.prompt('xiaoxi'),'视为使用一张【杀】').logSkill='xiaoxi';
},
},
spmouzhu:{
enable:'phaseUse',
audio:'mouzhu',
usable:1,
chooseButton:{
dialog:function(event,player){
var list=[
'选择距离为1的角色',
'选择体力值等于你的角色',
];
var choiceList=ui.create.dialog('谋诛:请选择一项','forcebutton','hidden');
for(var i=0;i<list.length;i++){
var str='<div class="popup text" style="width:calc(100% - 10px);display:inline-block">';
var bool=lib.skill.spmouzhu.chooseButton.filter({link:i},player);
if(!bool) str+='<div style="opacity:0.5">';
str+=list[i];
if(!bool) str+='</div>';
str+='</div>';
var next=choiceList.add(str);
next.firstChild.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
next.firstChild.link=i;
for(var j in lib.element.button){
next[j]=lib.element.button[i];
}
choiceList.buttons.add(next.firstChild);
}
return choiceList;
},
filter:function(button,player){
return game.hasPlayer(function(current){
return lib.skill.spmouzhux.filterTargets[button.link](null,player,current)
});
},
check:function(button){
return Math.random();
},
backup:function(links){
lib.skill.spmouzhux.link=links[0];
return lib.skill.spmouzhux;
},
},
ai:{
order:7,
result:{
player:1,
},
},
},
spmouzhux:{
audio:'mouzhu',
filterTarget:function(card,player,target){
return lib.skill.spmouzhux.filterTargets[lib.skill.spmouzhu_backup.link](card,player,target);
},
filterTargets:[
function(card,player,target){
return player!=target&&get.distance(player,target)<=1;
},
function(card,player,target){
return player!=target&&player.hp==target.hp;
}
],
selectTarget:-1,
content:function(){
'step 0'
target.chooseCard('he','交给'+get.translation(player)+'一张牌',true);
'step 1'
player.gain(result.cards,target,'giveAuto');
'step 2'
if(player.countCards('h')<=target.countCards('h')){
event.finish();
return;
}
var list=[];
if(target.canUse('sha',player,false)) list.push('sha');
if(target.canUse('juedou',player,false)) list.push('juedou');
if(!list.length) event.finish();
else if(list.length==1) event._result={control:list[0]};
else target.chooseControl(list).set('prompt','对'+get.translation(player)+'使用一张【杀】或【决斗】。').ai=function(){
return get.effect(player,{name:'sha'},target,target)>=get.effect(player,{name:'juedou'},target,target)?'sha':'juedou';
};
'step 3'
target.useCard({name:result.control,isCard:true},player,'noai');
},
ai:{
order:7,
result:{
target:-1.2,
player:function(player,target){
if(target.countCards('h')-player.countCards('h')>1) return 1;
if(get.damageEffect(target,player,player,player)>0) return 1;
if(player.hp>3||player.countCards('h','sha')&&player.countCards('h','shan')) return 0;
if(player.hp>2) return -1.1;
return -2;
},
},
},
},
spniluan:{
enable:'phaseUse',
audio:'niluan',
viewAs:{name:'sha'},
check:function(card){
return 5.1-get.value(card);
},
filterCard:{color:'black'},
filterTarget:function(card,player,target){
if(target.hp<=player.hp) return false;
return lib.filter.filterTarget.apply(this,arguments);
},
position:'he',
audio:'niluan',
viewAsFilter:function(player){
return player.countCards('he',lib.skill.spniluan.filterCard)>0&&game.hasPlayer(function(current){
return current.hp>player.hp&&player.canUse('sha',current);
});
},
group:'spniluan_clear',
},
spniluan_clear:{
trigger:{player:'useCardAfter'},
forced:true,
silent:true,
charlotte:true,
filter:function(event,player){
return event.skill=='spniluan'&&event.addCount!==false&&player.getHistory('sourceDamage',function(card){
return card.card==event.card;
}).length==0;
},
content:function(){
trigger.addCount=false;
if(player.stat[player.stat.length-1].card.sha>0){
player.stat[player.stat.length-1].card.sha--;
}
},
},
spweiwu:{
enable:'phaseUse',
usable:1,
viewAs:{name:'shunshou'},
filterCard:{color:'red'},
position:'he',
audio:'xiaoxi',
check:function(card){
return 7-get.value(card);
},
filterTarget:function(card,player,target){
if(target.countCards('h')<=player.countCards('h')) return false;
return lib.filter.filterTarget.apply(this,arguments);
},
viewAsFilter:function(player){
return player.countCards('he',lib.skill.spweiwu.filterCard)>0&&game.hasPlayer(function(current){
return current.countCards('h')>player.countCards('h')&&player.canUse('shunshou',current);
});
},
},
tuogu:{
audio:2,
trigger:{global:'die'},
filter:function(event,player){
return event.player.getStockSkills('仲村由理','天下第一').filter(function(skill){
var info=get.info(skill);
return info&&!info.juexingji&&!info.zhuSkill&&!info.charlotte&&!info.limited;
}).length>0;
},
logTarget:'player',
skillAnimation:true,
animationColor:'thunder',
content:function(){
'step 0'
player.awakenSkill('tuogu');
var list=trigger.player.getStockSkills('仲村由理','天下第一').filter(function(skill){
var info=get.info(skill);
return info&&!info.juexingji&&!info.zhuSkill&&!info.charlotte&&!info.limited;
});
if(!list.length) event._result={control:list[0]};
else trigger.player.chooseControl(list).set('prompt','选择令'+get.translation(player)+'获得一个技能').set('forceDie',true).set('ai',function(){
return list.randomGet();
});
'step 1'
player.addSkillLog(result.control);
game.broadcastAll(function(skill){
var list=[skill];game.expandSkills(list);
for(var i of list){
var info=lib.skill[i];
if(!info) continue;
if(!info.audioname2) info.audioname2={};
info.audioname2.caoshuang='tuogu';
}
},result.control);
},
},
shanzhuan:{
trigger:{source:'damageSource'},
audio:2,
direct:true,
filter:function(event,player){
return player!=event.player&&event.player.countCards('he')&&!event.player.countCards('j');
},
content:function(){
'step 0'
player.choosePlayerCard(trigger.player,'he',get.prompt('shanzhuan',trigger.player)).set('ai',function(card){
if(get.attitude(_status.event.player,_status.event.target)>=0) return 0;
return get.buttonValue(card);
});
'step 1'
if(result.bool){
player.logSkill('shanzhuan',trigger.player);
var card=result.cards[0];
trigger.player.$throw(card);
game.delayx();
if(get.type(card)=='delay') trigger.player.addJudge(card);
else trigger.player.addJudge({name:get.color(card)=='red'?'lebu':'bingliang'},result.cards);
}
},
group:'shanzhuan_draw',
subfrequent:['draw'],
subSkill:{
draw:{
audio:'shanzhuan',
trigger:{player:'phaseEnd'},
frequent:true,
prompt:'是否发动【擅专】摸一张牌?',
filter:function(event,player){
return !player.getHistory('sourceDamage').length;
},
content:function(){
player.draw();
},
},
},
},
olxingshen:{
trigger:{player:'damageEnd'},
frequent:true,
@ -1538,7 +1782,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.effect(player,{name:'sha'},target,target)>=get.effect(player,{name:'juedou'},target,target)?'sha':'juedou';
};
'step 3'
target.useCard({name:result.control,isCard:true},player);
target.useCard({name:result.control,isCard:true},player,'noai');
},
ai:{
order:7,
@ -4859,6 +5103,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
if(player.storage.fanghun) player.draw(player.storage.fanghun);
player.removeMark('fanghun',player.storage.fanghun);
player.awakenSkill('refuhan');
'step 1'
var list;
if(_status.characterlist){
list=[];
@ -4883,16 +5129,109 @@ game.import('character',function(lib,game,ui,get,ai,_status){
list.remove(players[i].name1);
list.remove(players[i].name2);
}
// var dialog=ui.create.dialog();
// dialog.add([list.randomGets(5),'character']);
player.chooseButton(true).set('ai',function(button){
return get.rank(button.link,true)-lib.character[button.link][2];
}).set('createDialog',['获得一张武将牌上的所有技能',[list.randomGets(5),'character']]);
player.awakenSkill('refuhan');
'step 1'
player.addSkill(lib.character[result.links[0]][3]);
player.flashAvatar('refuhan',result.links[0]);
game.log(player,'获得了','#g'+get.translation(result.links[0]),'的所有技能');
list=list.randomGets(Math.max(2,Math.min(8,game.countPlayer())));
var skills=[];
for(var i of list){
skills.addArray((lib.character[i][3]||[]).filter(function(skill){
var info=get.info(skill);
return info&&!info.zhuSkill&&!info.limited&&!info.juexingji&&!info.charlotte;
}));
}
if(!list.length||!skills.length){event.finish();return;}
if(player.isUnderControl()){
game.modeSwapPlayer(player);
}
var switchToAuto=function(){
_status.imchoosing=false;
event._result={
bool:true,
skills:skills.randomGets(2),
};
if(event.dialog) event.dialog.close();
if(event.control) event.control.close();
};
var chooseButton=function(list,skills){
var event=_status.event;
event._result.skills=[];
var rSkill=event._result.skills;
var dialog=ui.create.dialog('请选择获得至多两个技能',[list,'character'],'hidden');
event.dialog=dialog;
var table=document.createElement('div');
table.classList.add('add-setting');
table.style.margin='0';
table.style.width='100%';
table.style.position='relative';
for(var i=0;i<skills.length;i++){
var td=ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode');
td.link=skills[i];
table.appendChild(td);
td.innerHTML='<span>'+get.translation(skills[i])+'</span>';
td.addEventListener(lib.config.touchscreen?'touchend':'click',function(){
if(_status.dragged) return;
if(_status.justdragged) return;
_status.tempNoButton=true;
setTimeout(function(){
_status.tempNoButton=false;
},500);
var link=this.link;
if(!this.classList.contains('bluebg')){
if(rSkill.length>=2) return;
rSkill.add(link);
this.classList.add('bluebg');
}
else{
this.classList.remove('bluebg');
rSkill.remove(link);
}
});
}
dialog.content.appendChild(table);
dialog.add('  ');
dialog.open();
event.switchToAuto=function(){
event.dialog.close();
event.control.close();
game.resume();
_status.imchoosing=false;
};
event.control=ui.create.control('ok',function(link){
event.dialog.close();
event.control.close();
game.resume();
_status.imchoosing=false;
});
for(var i=0;i<event.dialog.buttons.length;i++){
event.dialog.buttons[i].classList.add('selectable');
}
game.pause();
game.countChoose();
};
if(event.isMine()){
chooseButton(list,skills);
}
else if(event.isOnline()){
event.player.send(chooseButton,list,skills);
event.player.wait();
game.pause();
}
else{
switchToAuto();
}
'step 2'
var map=event.result||result;
if(map&&map.skills&&map.skills.length){
for(var i of map.skills) player.addSkillLog(i);
}
game.broadcastAll(function(list){
game.expandSkills(list);
for(var i of list){
var info=lib.skill[i];
if(!info) continue;
if(!info.audioname2) info.audioname2={};
info.audioname2.old_yuanshu='weidi';
}
},map.skills);
},
},
refanghun:{
@ -14524,7 +14863,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
fuhan:'扶汉',
fuhan_info:'限定技回合开始时你可以移去所有“梅影”标记并摸等量的牌随机观看五名未登场的蜀势力角色将武将牌替换为其中一名角色并将体力上限数调整为本局游戏中移去“梅影”标记的数量至少为2至多为8然后回复1点体力。',
refuhan:'扶汉',
refuhan_info:'限定技,回合开始时,你可以移去所有“梅影”标记并摸等量的牌,随机观看五名未登场的蜀势力角色,获得其中一张武将牌上的所有技能。',
refuhan_info:'限定技,回合开始时,你可以移去所有"梅影"标记并摸等量的牌然后从X张蜀势力武将牌中选择并获得至多两个技能限定技、觉醒技、主公技除外。若此时你是体力值最低的角色你回复1点体力X为场上角色数且X∈[2,8]。',
yjixi:'觊玺',
yjixi_info:'觉醒技结束阶段若你连续三回合没有因〖庸肆〗而失去过体力则你增加1点体力上限并回复1点体力然后选择一项获得技能〖妄尊〗摸两张牌并获得当前主公的主公技。',
xinyongsi:'庸肆',
@ -14965,7 +15304,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tuogu:'托孤',
tuogu_info:'限定技,一名角色死亡时,你可以令其选择其武将牌上的一个技能(主公技,限定技,觉醒技等特殊技能除外),然后你获得其选择的技能。',
shanzhuan:'擅专',
shanzhuan_info:'当你对其他角色造成伤害后,你可以将其判定区的一张牌置于其的判定区。若此牌不为延时锦囊牌且此牌为:红色,此牌视为【乐不思蜀】;黑色,此牌视为【兵粮寸断】。',
shanzhuan_info:'当你对其他角色造成伤害后,若其判定区没有牌,则你你可以将其的一张牌置于其的判定区。若此牌不为延时锦囊牌且此牌为:红色,此牌视为【乐不思蜀】;黑色,此牌视为【兵粮寸断】。回合结束时,若你本回合内未造成伤害,你可摸一张牌。',
spniluan:'逆乱',
spniluan_info:'出牌阶段,你可以将一张黑色牌当做【杀】对体力值大于你的角色使用。此【杀】使用结算完成后,若你未因此【杀】造成过伤害,则你令此【杀】不计入使用次数。',
spweiwu:'违忤',
spweiwu_info:'出牌阶段限一次,你可以将一张红色牌当做【顺手牵羊】对手牌数大于你的角色使用。',
spmouzhu:'谋诛',
spmouzhu_backup:'谋诛',
spmouzhu_info:'出牌阶段限一次你可以从“距离为1”或“体力值等于你”中选择一个条件然后令此时所有满足条件的角色依次进行以下结算交给你一张手牌然后若其手牌数小于你则其视为对你使用一张【杀】或【决斗】。',
xiaoxi:'骁袭',
xiaoxi_info:'当你登场时,你可以视为使用一张【杀】。',
sp_default:"常规",
sp_zhongdan:"忠胆英杰",

View File

@ -369,13 +369,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
"step 1"
var map=event.result||result;
if(result.bool){
if(map.bool){
player.logSkill('moying');
player.addTempSkill('moying2');
var cards=[];
for(var i=0;i<ui.cardPile.childNodes.length;i++){
var card=ui.cardPile.childNodes[i];
if(get.suit(card)==result.suit&&get.number(card)==result.number) cards.push(card);
if(get.suit(card)==map.suit&&get.number(card)==map.number) cards.push(card);
}
if(cards.length) player.gain(cards,'gain2','log');
}
@ -1268,65 +1268,69 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
mansi:{
audio:2,
trigger:{global:'useCardAfter'},
group:'mansi_viewas',
trigger:{global:'damageEnd'},
filter:function(event,player){
return event.card.name=='nanman'&&game.countPlayer2(function(current){
return current.getHistory('damage',function(evt){
return evt.getParent(2)==event;
}).length>0;
})>0;
return event.card&&event.card.name=='nanman';
},
frequent:true,
content:function(){
var num=game.countPlayer2(function(current){
return current.getHistory('damage',function(evt){
return evt.getParent(2)==trigger;
}).length>0;
});
player.draw(num);
player.addMark('mansi',num,false);
player.draw();
player.addMark('mansi',1,false);
},
intro:{content:'已因此技能获得了#张牌'},
},
mansi_viewas:{
audio:'mansi',
enable:'phaseUse',
usable:1,
filterCard:true,
selectCard:-1,
filter:function(event,player){
var hs=player.getCards('h');
if(!hs.length) return false;
for(var i=0;i<hs.length;i++){
var mod2=game.checkMod(hs[i],player,'unchanged','cardEnabled2',player);
if(mod2===false) return false;
}
return true;
},
viewAs:{name:'nanman'},
},
souying:{
audio:2,
trigger:{
player:'damageBegin3',
source:'damageBegin1',
player:'useCardToPlayered',
target:'useCardToTargeted',
},
direct:true,
filter:function(event,player,name){
if(!player.countCards('h')||player.hasSkill('souying2')) return false;
if(name=='damageBegin1'){
if(event.player.sex!='male') return false;
return event.player.getHistory('damage',function(evt){
return evt.source==player;
}).length==1;
if(!player.countCards('he')||player.hasSkill('souying2')) return false;
if(!event.targets||event.targets.length!=1||event.player==event.target) return false;
if(name=='useCardToPlayered'){
var target=event.target;
return player.getHistory('useCard',function(evt){
return evt.targets&&evt.targets.length==1&&evt.targets[0]==target;
}).indexOf(event.getParent())>0;
}
else{
if(!event.source||event.source.sex!='male') return false;
return player.getHistory('damage',function(evt){
return evt.source==event.source;
}).length==1;
var source=event.player;
return source.getHistory('useCard',function(evt){
return evt.targets&&event.targets.length==1&&evt.targets[0]==player;
}).indexOf(event.getParent())>0;
}
},
content:function(){
'step 0'
var next=player.chooseToDiscard();
if(event.triggername=='damageBegin1'){
var next=player.chooseToDiscard('he');
if(event.triggername=='useCardToTargeted'){
event.target=trigger.player;
next.set('goon',get.attitude(player,event.target)<0&&!event.target.hasSkillTag('filterDamage',null,{
player:player,
card:trigger.card,
})),
next.set('prompt2','弃置一张手牌,令对其造成的伤害+1');
}
else{
event.target=trigger.source;
next.set('goon',true);
next.set('prompt2','弃置一张手牌,令即将受到的伤害-1');
event.target=trigger.cards[0];
}
next.set('prompt',get.prompt('souying',event.target));
next.set('prompt2','弃置一张牌,并获得'+get.translation(trigger.cards.filterInD()))
next.set('ai',function(card){
if(_status.event.goon) return 6-get.value(card);
return -1;
@ -1335,7 +1339,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.bool){
player.addTempSkill('souying2');
trigger.num+=(event.triggername=='damageBegin1'?1:-1);
player.gain(trigger.cards.filterInD());
}
},
ai:{
@ -1363,7 +1367,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.chooseTarget('是否失去〖蛮嗣〗,令一名其他男性角色和自己一同获得技能〖系力〗?',function(card,player,target){
return target!=player&&target.sex=='male';
}).ai=function(target){
return get.attitude(_status.event.player,target)-5;
return get.attitude(_status.event.player,target);
};
'step 2'
if(result.bool){
@ -1376,36 +1380,29 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
hmxili:{
trigger:{global:'useCardToPlayered'},
trigger:{global:'damageBegin1'},
direct:true,
audio:2,
filter:function(event,player){
return event.player!=player&&event.card.name=='sha'&&event.player.isPhaseUsing()&&event.player.hasSkill('hmxili')&&player.countCards('h')>0;
return event.source&&event.source!=player&&event.source==_status.currentPhase&&event.source.hasSkill('hmxili')&&player.countCards('he')>0&&!player.hasSkill('hmxili2');
},
content:function(){
'step 0'
player.chooseToDiscard('是否弃置一张手牌,令'+get.translation(trigger.card)+'对'+get.translation(trigger.target)+'的伤害+1','h').set('logSkill',['hmxili',trigger.target]).set('goon',function(){
var target=trigger.target;
if(get.attitude(player,target)>=0) return false;
if(trigger.target.hasSkillTag('filterDamage',null,{
player:trigger.player,
card:trigger.card,
})||target.mayHaveShan()) return false;
return true;
}()).ai=function(card){
if(_status.event.goon) return 5-get.value(card);
return -1;
player.chooseToDiscard('是否弃置一张牌,令'+get.translation(trigger.source)+'对'+get.translation(trigger.player)+'的伤害+1且你与其各摸两张牌','he').set('logSkill',['hmxili',trigger.target]).ai=function(card){
return 9-get.value(card);
};
'step 1'
if(result.bool){
var id=trigger.target.playerid;
var map=trigger.customArgs;
if(!map[id]) map[id]={};
if(!map[id].extraDamage) map[id].extraDamage=0;
map[id].extraDamage++;
game.asyncDraw([trigger.source,player],2);
trigger.num++;
player.addTempSkill('hmxili2');
}
else event.finish();
'step 2'
game.delayx();
},
},
hmxili2:{},
//说出吾名吓汝一跳
xuxie:{
audio:2,
@ -5425,14 +5422,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
huaman:'花鬘',
hmmanyi:'蛮裔',
hmmanyi_info:'锁定技,【南蛮入侵】对你无效。',
mansi_viewas:'蛮嗣',
mansi:'蛮嗣',
mansi_info:'一名角色使用的【南蛮入侵】结算完成后你可以摸X张牌X为受到过此牌伤害的角色数。',
mansi_info:'出牌阶段限一次,你可以将所有手牌【南蛮入侵】使用;当有角色受到【南蛮入侵】的伤害后,你摸一张牌。',
souying:'薮影',
souying_info:'每回合限一次,当你对一名男性角色造成伤害(或一名男性角色对你造成伤害时),若此伤害是你对其(或其对你)本回合内造成的第二次伤害,你可以弃置一张手牌令此伤害+1或-1)。',
souying_info:'每回合限一次,当你对其他角色(或其他角色对你)使用牌指定唯一目标后,若此牌不是本回合你对其(或其对你)使用的第一张牌,你可以弃置一张牌将此牌收回手牌(或令此牌对你无效)。',
zhanyuan:'战缘',
zhanyuan_info:'觉醒技准备阶段若你已因蛮嗣累计获得超过7张牌你加一点体力上限并可以选择一名男性角色你与其获得技能〖系力〗然后你失去技能〖蛮嗣〗',
hmxili:'系力',
hmxili_info:'你的回合外,当其他拥有〖系力〗技能的角色在其回合内使用【杀】指定目标后,你可以弃置一张手牌,令此【杀】伤害+1。',
hmxili_info:'每回合限一次,你的回合外,当其他拥有【系力】技能的角色在其回合内对没有【系力】技能的角色造成伤害时,你可以弃置一张牌,令此伤害+1然后你与其各摸两张牌。',
wangshuang:'王双',
spzhuilie:'追猎',
spzhuilie2:'追猎',

View File

@ -2535,7 +2535,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
"new_jiangchi":{
audio:"jiangchi",
audio:2,
trigger:{
player:"phaseDrawEnd",
},

View File

@ -7,7 +7,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
characterSort:{
yijiang:{
yijiang_2011:['caozhi','re_yujin','zhangchunhua','fazheng','xin_masu','xin_xushu','xusheng','lingtong','wuguotai','chengong','gaoshun'],
yijiang_2012:['old_wangyi','xunyou','zhonghui','madai','liaohua','old_guanzhang','bulianshi','handang','chengpu','liubiao','old_huaxiong','caozhang'],
yijiang_2012:['old_wangyi','xunyou','zhonghui','madai','liaohua','old_guanzhang','bulianshi','handang','chengpu','liubiao','old_huaxiong','caozhang','re_gongsunzan'],
yijiang_2013:['manchong','guohuai','caochong','guanping','liufeng','jianyong','yufan','panzhangmazhong','zhuran','xin_liru','fuhuanghou'],
yijiang_2014:['hanhaoshihuan','chenqun','caozhen','zhangsong','wuyi','zhoucang','zhuhuan','guyong','sunluban','yj_jushou','caifuren'],
yijiang_2015:['caoxiu','caorui','zhongyao','xiahoushi','liuchen','zhangyi','zhuzhi','quancong','sunxiu','gongsunyuan','guotufengji'],
@ -16,6 +16,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
re_gongsunzan:['male','qun',4,['qiaomeng','reyicong']],
fazheng:['male','shu',3,['enyuan','xuanhuo']],
old_guanzhang:['male','shu',4,['old_fuhun']],
old_wangyi:['female','wei',3,['oldzhenlie','oldmiji']],
@ -51,7 +52,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhuhuan:['male','wu',4,['fenli','pingkou']],
xiahoushi:['female','shu',3,['qiaoshi','yanyu']],
panzhangmazhong:['male','wu',4,['reduodao','reanjian']],
panzhangmazhong:['male','wu',4,['duodao','anjian']],
zhoucang:['male','shu',4,['xinzhongyong']],
guanping:['male','shu',4,['longyin']],
liaohua:['male','shu',4,['dangxian','fuli']],
@ -59,7 +60,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
gaoshun:['male','qun',4,['xinxianzhen','jinjiu']],
caozhen:['male','wei',4,['xinsidi']],
wuyi:['male','shu',4,['benxi']],
hanhaoshihuan:['male','wei',4,['reshenduan','reyonglve']],
hanhaoshihuan:['male','wei',4,['shenduan','yonglve']],
caorui:['male','wei',3,['huituo','mingjian','xingshuai'],['zhu']],
caoxiu:['male','wei',4,['reqianju','reqingxi']],
@ -407,7 +408,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
xindanshou:{
audio:'danshou',
audio:2,
trigger:{
global:'phaseJieshuBegin',
target:'useCardToTargeted',
@ -459,7 +460,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
xinbenxi:{
group:['xinbenxi_summer','xinbenxi_damage'],
audio:'benxi',
audio:2,
trigger:{
player:'useCard2',
},
@ -629,7 +630,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
damage:{
sub:true,
trigger:{global:'damageBegin1'},
audio:'benxi',
audio:2,
forced:true,
filter:function(event,player){
return event.card&&player.storage.xinbenxi_damage.contains(event.card);
@ -664,7 +665,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
xinyaoming:{
audio:'yaoming',
audio:2,
trigger:{
player:'damageEnd',
source:'damageSource',
@ -827,10 +828,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
xinfuli:{
audio:'fuli',
audio:2,
skillAnimation:true,
animationColor:'soil',
audio:2,
unique:true,
limited:true,
enable:'chooseToUse',
@ -876,7 +876,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'phaseBegin'},
forced:true,
audio:'dangxian',
audioname:['guansuo'],
audioname:['guansuo','xin_liaohua','re_liaohua'],
content:function(){
'step 0'
player.phaseUse().xindangxian=true;
@ -3572,6 +3572,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
jyzongshi:{
audio:2,
audioname:['re_jianyong'],
trigger:{player:['chooseToCompareAfter','compareMultipleAfter'],target:['chooseToCompareAfter','compareMultipleAfter']},
filter:function(event,player){
if(event.preserve) return false;
@ -4935,7 +4936,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
check:function(event,player){
return get.attitude(player,event.target)<0;
},
logTarget:'player',
logTarget:'target',
content:function(){
'step 0'
var num=Math.min(game.countPlayer(function(current){
@ -5364,6 +5365,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return false;
},
audio:2,
audioname:['re_chengpu'],
check:function(event,player){
return false;
},
@ -5723,7 +5725,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var att=get.attitude(player,trigger.player);
var nh=trigger.player.countCards('h');
var eff=get.effect(trigger.player,{name:'sha',isCard:true},player,player);
if(!player.canUse({name:'sha',isCard:true},trigger.player,false)) eff=0;
if(player.inRange(trigger.player)||!player.canUse({name:'sha',isCard:true},trigger.player,false)) eff=0;
player.discardPlayerCard(get.prompt('yonglve',trigger.player),trigger.player,'j').set('ai',function(button){
var name=button.link.viewAs||button.link.name;
var att=_status.event.att;
@ -5740,15 +5742,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}).set('att',att).set('nh',nh).set('eff',eff).set('logSkill',['reyonglve',trigger.player]);
'step 1'
if(result.bool){
if(player.canUse({name:'sha',isCard:true},trigger.player,false)){
event.related=player.useCard({name:'sha',isCard:true},trigger.player);
if(!player.inRange(trigger.player)&&player.canUse({name:'sha',isCard:true},trigger.player,false)){
player.useCard({name:'sha',isCard:true},trigger.player);
}
else player.draw();
}
else{
event.finish();
}
'step 2'
player.draw();
},
},
yonglve:{
@ -6461,7 +6459,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
'step 0'
player.chooseTarget([1,(player.storage.reyanzhu?player.hp:player.maxHp)],get.prompt('rexingxue'),'令所有目标角色依次摸一张牌,然后所有手牌数不等于体力值的目标角色依次将一张牌置于牌堆顶').set('ai',function(target){
player.chooseTarget([1,(player.storage.reyanzhu?player.maxHp:player.hp)],get.prompt('rexingxue'),'令所有目标角色依次摸一张牌,然后所有手牌数不等于体力值的目标角色依次将一张牌置于牌堆顶').set('ai',function(target){
var att=get.attitude(player,target);
if(target.countCards('h')==target.hp-1) att*=2;
return att;
@ -7718,26 +7716,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'duodao',
content:function(){
'step 0'
if(get.color(trigger.card)!='red'){
var prompt='弃置一张牌'
if(trigger.player.getEquip(1)) prompt+=(',然后获得'+get.translation(trigger.player)+'装备区中的'+get.translation(trigger.player.getEquip(1)));
var next=player.chooseToDiscard('he',get.prompt('reduodao',trigger.player),prompt);
next.logSkill=['reduodao',trigger.player];
next.set('ai',function(card){
if(!_status.event.getTrigger().player.getEquip(1)) return 0;
if(get.attitude(_status.event.player,_status.event.getTrigger().player)*get.value(_status.event.getTrigger().player.getEquip(1))<=0){
return 6-get.value(card);
}
return 0;
});
}
else{
player.chooseBool('是否发动夺刀】,获得'+get.translation(trigger.player)+'装备区的'+get.translation(trigger.player.getEquip(1))+'').set('ai',function(){
var player=_status.event.player;
var source=_status.event.getTrigger().player;
return get.attitude(player,source)*get.value(source.getEquip(1))<=0;
});
}
var prompt='弃置一张牌'
if(trigger.player.getEquip(1)) prompt+=(',然后获得'+get.translation(trigger.player)+'装备区中的'+get.translation(trigger.player.getEquip(1)));
var next=player.chooseToDiscard('he',get.prompt('reduodao',trigger.player),prompt);
next.logSkill=['reduodao',trigger.player];
next.set('ai',function(card){
if(!_status.event.getTrigger().player.getEquip(1)) return 0;
if(get.attitude(_status.event.player,_status.event.getTrigger().player)*get.value(_status.event.getTrigger().player.getEquip(1))<=0){
return 6-get.value(card);
}
return 0;
});
'step 1'
if(result.bool&&trigger.player.getEquip(1)){
if(!result.cards||!result.cards.length) player.logSkill('reduodao',trigger.player);
@ -8459,7 +8448,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
olsanyao1:{},
rezhiman:{
audio:'zhiman',
audioname:['guansuo'],
audioname:['guansuo','re_masu'],
trigger:{source:'damageBegin2'},
check:function(event,player){
if(get.damageEffect(event.player,player,player)<0) return true;
@ -8484,7 +8473,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
resanyao:{
audio:'sanyao',
audio:2,
enable:'phaseUse',
usable:1,
selectCard:function(){
@ -8540,7 +8529,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
reqiaoshui:{
audio:'qiaoshui',
audio:2,
enable:'phaseUse',
filterTarget:function(card,player,target){
return player.canCompare(target);
@ -9080,7 +9069,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
rechanhui:{
audio:'chanhui',
audio:2,
trigger:{player:'useCardToPlayer'},
filter:function(event,player){
if(_status.currentPhase!=player||player.hasSkill('rechanhui2')) return false;
@ -9131,7 +9120,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
rechanhui2:{},
rejiaojin:{
audio:'jiaojin',
audio:2,
trigger:{target:'useCardToTargeted'},
filter:function(event,player){
return (event.card.name=='sha'||get.type(event.card)=='trick')&&event.player&&event.player.sex=='male'&&player.countCards('he',function(card){
@ -9694,6 +9683,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
zhuiyi:{
audio:2,
audioname:['re_bulianshi'],
trigger:{player:'die'},
direct:true,
skillAnimation:true,
@ -10624,6 +10614,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
zishou:{
audio:2,
audioname:['re_liubiao'],
trigger:{player:'phaseDrawBegin2'},
check:function(event,player){
return player.countCards('h')<=(player.hasSkill('zongshi')?player.maxHp:(player.hp-2))||player.skipList.contains('phaseUse');
@ -11341,7 +11332,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
player.draw(2);
},
audio:'jingce',
audio:2,
},
oldchengxiang:{
audio:'chengxiang',
@ -12129,7 +12120,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhenjun:"镇军",
"zhenjun_info":"准备阶段你可以弃置一名手牌数多于体力值的角色的X张牌X为其手牌数和体力值之差然后选择一项1.你弃置等同于其中非装备牌数量的牌2.其摸等量的牌。",
rezhenjun:"镇军",
rezhenjun_info:"准备阶段,你可以弃置一名手牌数多于体力值的角色的X张牌X为其手牌数和体力值之差且至少为1然后选择一项1.你弃置X张牌2.其摸X张牌。X为其弃置的牌中非装备牌的数量",
rezhenjun_info:"准备阶段,你可以弃置一名角色的X张牌X为其手牌数和体力值之差且至少为1然后选择一项1.你弃置X张牌2.其摸X张牌。X为其弃置的牌中非装备牌的数量",
xinzhenjun:'镇军',
xinzhenjun_info:'出牌阶段开始时你可以将一张牌交给一名其他角色令其选择是否使用一张不为黑色的【杀】。若其选择是则你于此【杀】结算完成后摸1+X张牌(X为此【杀】造成的伤害总点数)。若其选择否则你对其或其攻击范围内的一名其他角色造成1点伤害。',
fenli:'奋励',
@ -12278,7 +12269,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
reshenduan:'慎断',
reshenduan_info:'当你的黑色基本牌或装备牌因弃置而进入弃牌堆后,你可以将其当做【兵粮寸断】使用(无距离限制)。',
reyonglve:'勇略',
reyonglve_info:'一名其他角色的判定阶段开始时,你可以弃置其判定区里的一张牌,视为对该角色使用一张【杀】。然后你摸一张牌。',
reyonglve_info:'其他角色的判定阶段开始时,你可以弃置其判定区里的一张牌。然后若该角色在你攻击范围内,你摸一张牌。若其在你攻击范围外,视为你对其使用一张【杀】。',
benxi:'奔袭',
benxi_info:'锁定技,你的回合内,你每使用一次牌后,你的进攻距离+1直到回合结束你的回合内若你与所有角色的距离均为1你无视其他角色的防具且你使用的【杀】可额外指定一个目标',
xinbenxi:'奔袭',
@ -12358,7 +12349,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xingshuai:'兴衰',
xingshuai_info:'主公技限定技当你进入濒死状态时其他魏势力角色可依次令你回复1点体力然后这些角色依次受到1点伤害。',
reduodao:'夺刀',
reduodao_info:'当你成为【杀】的目标后,若此杀:为红色,你可点击确定键。不为红色,你可以弃置一张牌。然后你获得此【杀】使用者装备区里的武器牌。',
reduodao_info:'当你成为【杀】的目标后,你可以弃置一张牌。然后你获得此【杀】使用者装备区里的武器牌。',
reanjian:'暗箭',
reanjian_info:'锁定技,当你使用【杀】指定目标后,若你不在其攻击范围内,则此杀伤害+1且无视其防具。若其因执行此【杀】的效果受到伤害而进入濒死状态则其不能使用【桃】直到此濒死事件结算结束。',
duodao:'夺刀',
@ -12605,6 +12596,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
reshangshi:'伤逝',
reshangshi_2nd:'伤逝',
reshangshi_info:'当你受到伤害时你可以弃置一张牌。当你的手牌数小于X时你可以将手牌摸至X张。X为你已损失的体力值',
re_gongsunzan:'界公孙瓒',
yijiang_2011:'一将成名2011',
yijiang_2012:'一将成名2012',

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.103.4',
'v1.9.104',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -593,6 +593,26 @@ window.noname_asset_list=[
'audio/die/old_madai.mp3',
'audio/die/old_wangyi.mp3',
'audio/die/sunshao.mp3',
'audio/die/caoshuang.mp3',
'audio/die/furong.mp3',
'audio/die/ol_dongzhuo.mp3',
'audio/die/re_bulianshi.mp3',
'audio/die/re_caozhang.mp3',
'audio/die/re_chengpu.mp3',
'audio/die/re_guohuai.mp3',
'audio/die/re_jianyong.mp3',
'audio/die/re_liaohua.mp3',
'audio/die/re_liubiao.mp3',
'audio/die/re_masu.mp3',
'audio/die/re_quancong.mp3',
'audio/die/re_sunluban.mp3',
'audio/die/re_wuyi.mp3',
'audio/die/re_zhangyi.mp3',
'audio/die/re_zhuran.mp3',
'audio/die/xin_caozhang.mp3',
'audio/die/xin_gongsunzan.mp3',
'audio/die/xin_liaohua.mp3',
'audio/die/xin_xusheng.mp3',
'audio/skill/anguo1.mp3',
'audio/skill/anguo2.mp3',
@ -2621,6 +2641,70 @@ window.noname_asset_list=[
'audio/skill/oldqianxi2.mp3',
'audio/skill/oldzhenlie1.mp3',
'audio/skill/oldzhenlie2.mp3',
'audio/skill/benghuai_ol_dongzhuo1.mp3',
'audio/skill/benghuai_ol_dongzhuo2.mp3',
'audio/skill/dangxian_re_liaohua1.mp3',
'audio/skill/dangxian_re_liaohua2.mp3',
'audio/skill/dangxian_xin_liaohua1.mp3',
'audio/skill/dangxian_xin_liaohua2.mp3',
'audio/skill/decadepojun1.mp3',
'audio/skill/decadepojun2.mp3',
'audio/skill/jyzongshi_re_jianyong1.mp3',
'audio/skill/jyzongshi_re_jianyong2.mp3',
'audio/skill/liechi1.mp3',
'audio/skill/liechi2.mp3',
'audio/skill/lihuo_re_chengpu1.mp3',
'audio/skill/lihuo_re_chengpu2.mp3',
'audio/skill/new_jiangchi1.mp3',
'audio/skill/new_jiangchi2.mp3',
'audio/skill/olbaonue1.mp3',
'audio/skill/olbaonue2.mp3',
'audio/skill/oljiuchi1.mp3',
'audio/skill/oljiuchi2.mp3',
'audio/skill/reanxu1.mp3',
'audio/skill/reanxu2.mp3',
'audio/skill/rechanhui1.mp3',
'audio/skill/rechanhui2.mp3',
'audio/skill/rechunlao1.mp3',
'audio/skill/rechunlao2.mp3',
'audio/skill/refuli1.mp3',
'audio/skill/refuli2.mp3',
'audio/skill/rejiangchi1.mp3',
'audio/skill/rejiangchi2.mp3',
'audio/skill/rejiaojin1.mp3',
'audio/skill/rejiaojin2.mp3',
'audio/skill/reqiaoshui1.mp3',
'audio/skill/reqiaoshui2.mp3',
'audio/skill/resanyao1.mp3',
'audio/skill/resanyao2.mp3',
'audio/skill/rewurong1.mp3',
'audio/skill/rewurong2.mp3',
'audio/skill/rezongshi1.mp3',
'audio/skill/rezongshi2.mp3',
'audio/skill/roulin_ol_dongzhuo1.mp3',
'audio/skill/roulin_ol_dongzhuo2.mp3',
'audio/skill/shanzhuan1.mp3',
'audio/skill/shanzhuan2.mp3',
'audio/skill/tuogu1.mp3',
'audio/skill/tuogu2.mp3',
'audio/skill/xinbenxi1.mp3',
'audio/skill/xinbenxi2.mp3',
'audio/skill/xindanshou1.mp3',
'audio/skill/xindanshou2.mp3',
'audio/skill/xinfuli1.mp3',
'audio/skill/xinfuli2.mp3',
'audio/skill/xinjingce1.mp3',
'audio/skill/xinjingce2.mp3',
'audio/skill/xinyaoming1.mp3',
'audio/skill/xinyaoming2.mp3',
'audio/skill/xuewei1.mp3',
'audio/skill/xuewei2.mp3',
'audio/skill/zhiman_re_masu1.mp3',
'audio/skill/zhiman_re_masu2.mp3',
'audio/skill/zhuiyi_re_bulianshi1.mp3',
'audio/skill/zhuiyi_re_bulianshi2.mp3',
'audio/skill/zishou_re_liubiao1.mp3',
'audio/skill/zishou_re_liubiao2.mp3',
'font/huangcao.ttf',
'font/shousha.ttf',
@ -3239,6 +3323,16 @@ window.noname_asset_list=[
'image/character/caobuxing.jpg',
'image/character/key_akiko.jpg',
'image/character/re_maliang.jpg',
'image/character/caoshuang.jpg',
'image/character/furong.jpg',
'image/character/key_abyusa.jpg',
'image/character/re_bulianshi.jpg',
'image/character/re_hanhaoshihuan.jpg',
'image/character/re_liubiao.jpg',
'image/character/re_panzhangmazhong.jpg',
'image/character/xin_caozhang.jpg',
'image/character/xin_gongsunzan.jpg',
'image/character/xin_liaohua.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',
@ -5074,10 +5168,14 @@ window.noname_skin_list={
key_hinata:1,
key_iwasawa:2,
key_nao:3,
key_shiki:3,
key_shiki:4,
key_yui:2,
key_yuri:3,
key_yuzuru:2,
sp_key_kanade:1,
key_kamome:1,
key_umi:1,
key_umi2:1,
key_mio:1,
key_midori:1,
};

View File

@ -5530,7 +5530,7 @@
name:'斗地主',
connect:{
update:function(config,map){
if(config.connect_doudizhu_mode=='kaihei'){
if(config.connect_doudizhu_mode=='kaihei'||config.connect_doudizhu_mode=='huanle'){
map.connect_double_character.hide();
}
else{
@ -5541,8 +5541,9 @@
name:'游戏模式',
init:'normal',
item:{
normal:'标准',
normal:'休闲',
kaihei:'开黑',
huanle:'欢乐',
},
restart:true,
frequent:true,
@ -5562,13 +5563,13 @@
},
config:{
update:function(config,map){
if(config.doudizhu_mode=='kaihei'){
if(config.doudizhu_mode=='kaihei'||config.doudizhu_mode=='huanle'){
map.double_character.hide();
}
else{
map.double_character.show();
}
if(config.double_character&&config.doudizhu_mode!='kaihei'){
if(config.double_character&&config.doudizhu_mode!='kaihei'&&config.doudizhu_mode!='huanle'){
map.double_hp.show();
}
else{
@ -5579,8 +5580,9 @@
name:'游戏模式',
init:'normal',
item:{
normal:'标准',
normal:'休闲',
kaihei:'开黑',
huanle:'欢乐',
},
restart:true,
frequent:true,
@ -16303,7 +16305,7 @@
},this.playerid,str);
},
chat:function(str){
if(str&&str.indexOf('http')!=-1) return;
if(get.is.banWords(str)) return;
lib.element.player.say.call(this,str);
game.broadcast(function(id,str){
if(lib.playerOL[id]){
@ -24216,7 +24218,7 @@
if(lib.config.forbidai.contains(i)) return true;
if(lib.characterFilter[i]&&!lib.characterFilter[i](get.mode())) return true;
if(_status.connectMode){
if(lib.configOL.banned.contains(i)) return true;
if(lib.configOL.banned.contains(i)||lib.connectBanned.contains(i)) return true;
var double_character=false;
if(lib.configOL.mode=='guozhan'){
double_character=true;
@ -25758,7 +25760,9 @@
ui.connectClients=ui.create.div('.forceopaque.menubutton.large.connectevents.pointerdiv.left','在线',ui.window,ui.click.connectClients);
ui.connectClientsCount=ui.create.div('.forceopaque.menubutton.icon.connectevents.highlight.left','1',ui.window);
if(events.length){
ui.connectEventsCount.innerHTML=events.length;
ui.connectEventsCount.innerHTML=events.filter(function(evt){
return evt.creator==game.onlineKey||!get.is.banWords(evt.content)
}).length;
ui.connectEventsCount.show();
}
}
@ -25879,8 +25883,11 @@
updateevents:function(events){
if(events&&ui.connectEvents){
ui.connectEvents.info=events;
if(events.length){
ui.connectEventsCount.innerHTML=events.length;
var num=events.filter(function(evt){
return evt.creator==game.onlineKey||!get.is.banWords(evt.content)
}).length;
if(num){
ui.connectEventsCount.innerHTML=num;
ui.connectEventsCount.show();
}
else{
@ -42049,6 +42056,7 @@
});
}
}
lib.init.js(lib.assetURL+'game','keyWords',function(){});
lib.updateURL=lib.updateURLS[lib.config.update_link]||lib.updateURLS.coding;
lib.init.cssstyles();
@ -43265,6 +43273,77 @@
alert('创建失败,时间已过');
return;
}
if(get.is.banWords(button.input.value)){
var eventnode=ui.create.div('.menubutton.videotext.onlineevent.pointerdiv',function(){
var that=this;
setTimeout(function(){
if(that.classList.contains('active')){
if(confirm('确定要离开'+that.info.content+'')){
that.classList.remove('active');
}
}
else{
if(confirm('确定要加入'+that.info.content+'')){
that.classList.add('active');
}
}
});
},uiintro.content,3);
var fakeinfo={
utc:utc,
day:parseInt(daysselect.value),
hour:parseInt(hoursselect.value),
nickname:lib.config.connect_nickname,
avatar:lib.config.connect_avatar,
content:button.input.value,
create:game.onlineKey,
members:[game.onlineKey],
};
eventnode.info=fakeinfo;
ui.create.div('.title',fakeinfo.content,eventnode);
var str;
if(fakeinfo.day<currentDay){
str='下周';
}
else{
str='周';
}
if(fakeinfo.day==7){
str+='日'
}
else{
str+=get.cnNumber(fakeinfo.day,true);
}
str+=' ';
var hour=fakeinfo.hour;
if(hour<=12){
if(hour<=5){
str+='凌晨';
}
else if(hour<12){
str+='上午';
}
else{
str+='中午';
}
str+=fakeinfo.hour+'点';
}
else{
if(hour<=17){
str+='下午';
}
else{
str+='晚上';
}
str+=(fakeinfo.hour-12)+'点';
}
ui.create.div('','已有'+(fakeinfo.members.length)+'人加入',eventnode);
ui.create.div('','时间:'+str,eventnode);
if(fakeinfo.members.contains(game.onlineKey)){
eventnode.classList.add('active');
}
return;
}
game.send('server','events',{
utc:utc,
day:parseInt(daysselect.value),
@ -43277,6 +43356,7 @@
var num=0;
for(var i=0;i<button.info.length;i++){
if(button.info[i].creator!=game.onlineKey&&get.is.banWords(button.info[i].content)) continue;
if(button.info[i].creator==game.onlineKey&&button.info[i].members.contains(game.onlineKey)){
num++;
}
@ -44057,14 +44137,21 @@
}
}
if(!player) return;
if(game.online){
game.send('chat',game.onlineID,str);
if(get.is.banWords(input.value)){
player.say(input.value);
input.value='';
_status.chatValue='';
}
else{
lib.element.player.chat.call(player,str);
if(game.online){
game.send('chat',game.onlineID,str);
}
else{
lib.element.player.chat.call(player,str);
}
input.value='';
_status.chatValue='';
}
input.value='';
_status.chatValue='';
}
e.stopPropagation();
}
@ -47201,6 +47288,12 @@
return 0;
},
is:{
banWords:function(str){
for(var i of window.bannedKeyWords){
if(str.indexOf(i)!=-1) return true;
}
return false;
},
converted:function(event){
return !(event.card&&event.card.isCard);
},
@ -47907,7 +48000,13 @@
}
},
modetrans:function(config,server){
if(config.mode=='doudizhu') return config.doudizhu_mode=='kaihei'?'开黑斗地主':'欢乐斗地主';
if(config.mode=='doudizhu'){
switch(config.doudizhu_mode){
case 'kaihei':return '开黑斗地主';
case 'huanle':return '欢乐斗地主';
default:return '休闲斗地主';
}
}
if(config.mode=='versus'){
switch(config.versus_mode){
case '1v1':return '单人对决';

3
game/keyWords.js Normal file
View File

@ -0,0 +1,3 @@
window.bannedKeyWords=[
'ghs','直肠','性交','做爱','http','吃奶',
];

View File

@ -40,6 +40,7 @@ window.noname_source_list=[
'game/game.js',
'game/http.js',
'game/jszip.js',
'game/keyWords.js',
'game/NoSleep.js',
'game/package.js',
'game/phantom.js',

View File

@ -1,8 +1,11 @@
window.noname_update={
version:'1.9.103.4',
update:'1.9.103.3',
version:'1.9.104',
update:'1.9.103.4',
changeLog:[
'新孙休、曹休、刘表、张春华',
'游佐',
'曹爽',
'界潘璋马忠、界韩浩史涣、新花蔓、新赵襄',
'傅肜、界步练师、界刘表、手杀曹彰、界公孙瓒、手杀廖化、贾逵重制',
'bug修复',
],
@ -10,7 +13,7 @@ window.noname_update={
//'card/extra.js',
//'card/huanlekapai.js',
//'card/sp.js',
//'card/standard.js',
'card/standard.js',
//'card/swd.js',
//'card/mtg.js',
//'card/gujian.js',
@ -19,21 +22,21 @@ window.noname_update={
//'card/yunchou.js',
//'card/zhenfa.js',
//'card/zhulu.js',
//'character/diy.js',
'character/diy.js',
//'character/extra.js',
//'character/hearth.js',
//'character/gujian.js',
//'character/gwent.js',
//'character/hearth.js',
//'character/mobile.js',
'character/mobile.js',
//'character/mtg.js',
//'character/old.js',
'character/old.js',
'character/refresh.js',
//'character/shenhua.js',
//'character/sp.js',
'character/shenhua.js',
'character/sp.js',
'character/sp2.js',
//'character/tw.js',
//'character/standard.js',
'character/standard.js',
//'character/swd.js',
//'character/xianjian.js',
//'character/xinghuoliaoyuan.js',
@ -43,21 +46,22 @@ window.noname_update={
//'layout/default/layout.css',
//'layout/nova/layout.css',
//'mode/identity.js',
//'mode/doudizhu.js',
'mode/doudizhu.js',
//'mode/guozhan.js',
//'mode/chess.js',
//'mode/tafang.js',
//'mode/single.js',
'mode/single.js',
//'mode/stone.js',
//'mode/brawl.js',
//'mode/versus.js',
//'mode/boss.js',
'game/game.js',
'game/keyWords.js',
//'game/NoSleep.js',
//'game/config.js',
//'game/package.js',
//'game/asset.js',
//'game/source.js',
'game/source.js',
//'theme/style/hp/xinglass.css',
//'theme/style/hp/xinround.css',
//'theme/style/hp/image/xinglass1.png',

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
image/character/furong.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
image/skin/key_midori/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
image/skin/key_mio/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
image/skin/key_shiki/4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

BIN
image/skin/key_umi/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
image/skin/key_umi2/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

@ -86,6 +86,15 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
game.zhu.showGiveup();
},
game:{
recommendDizhu:[
're_guojia','re_huanggai','re_lvbu','re_guanyu','re_sunquan','re_xusheng','re_wuyi','re_sunben',
'xuyou','zhangchunhua','caochong','zhangsong','zhongyao','wangyi',
'caochun','maliang','sp_diaochan','quyi','sp_zhaoyun','shamoke',
'lijue','liuzan','wenyang','shen_lvmeng','shen_ganning',
'jiakui','wangyuanji','lingcao','miheng',
'sp_key_yuri','key_hinata','key_rin','key_kyousuke',
'ns_chendao','old_jiakui',
],
addRecord:function(bool){
if(typeof bool=='boolean'){
var data=lib.config.gameRecord.doudizhu.data;
@ -193,6 +202,78 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
else return player.identity=='fan';
},
chooseCharacterHuanle:function(){
var next=game.createEvent('chooseCharacter',false);
next.setContent(function(){
"step 0"
ui.arena.classList.add('choose-character');
var i;
event.list=[];
event.list2=[];
if(!event.map) event.map={};
for(i in lib.character){
if(lib.filter.characterDisabled(i)) continue;
event.list.push(i);
if(game.recommendDizhu.contains(i)) event.list2.push(i);
}
event.list.randomSort();
_status.characterlist=event.list.slice(0);
event.controls=['不叫','叫地主'];
for(var player of game.players){
var id=player.playerid;
if(!event.map[id]) event.map[id]=[];
event.map[id].addArray(event.list2.randomRemove(1));
event.list.removeArray(event.map[id]);
event.map[id].addArray(event.list.randomRemove(4-event.map[id].length));
}
event.dialog=ui.create.dialog('你的选将框',[event.map[game.me.playerid],'character']);
event.start=game.players.randomGet();
event.current=event.start;
lib.init.onfree();
game.delay(2.5);
"step 1"
event.current.chooseControl(event.controls).set('ai',function(){
return Math.random()>0.5?'不叫':'叫地主';
});
if(event.current==game.me){
event.dialog.content.childNodes[0].innerHTML='是否抢地主?';
}
"step 2"
event.current.chat(result.control);
if(result.control=='叫地主'||event.current==event.start.next){
game.zhu=result.control=='叫地主'?event.current:event.current.next;
for(var player of game.players){
player.identity=player==game.zhu?'zhu':'fan';
player.showIdentity();
}
event.dialog.close();
event.map[game.zhu.playerid].addArray(event.list.randomRemove(3));
}
else{
event.current=event.current.next;
event.goto(1);
game.delay(1.5);
}
"step 3"
game.me.chooseButton(['请选择你的武将',[event.map[game.me.playerid],'character']],true);
"step 4"
game.me.init(result.links[0]);
for(var player of game.players){
if(player!=game.me) player.init(event.map[player.playerid].randomGet());
}
game.zhu.hp++;
game.zhu.maxHp++;
game.zhu.update();
for(var i=0;i<game.players.length;i++){
_status.characterlist.remove(game.players[i].name);
_status.characterlist.remove(game.players[i].name2);
}
setTimeout(function(){
ui.arena.classList.remove('choose-character');
},500);
});
},
chooseCharacterKaihei:function(){
var next=game.createEvent('chooseCharacter',false);
next.setContent(function(){
@ -262,6 +343,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
game.chooseCharacterKaihei();
return;
}
if(_status.mode=='huanle'){
game.chooseCharacterHuanle();
return;
}
var next=game.createEvent('chooseCharacter',false);
next.showConfig=true;
next.addPlayer=function(player){
@ -778,11 +863,130 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},500);
});
},
chooseCharacterHuanleOL:function(){
var next=game.createEvent('chooseCharacter',false);
next.setContent(function(){
"step 0"
ui.arena.classList.add('choose-character');
var i;
event.list=[];
event.list2=[];
event.controls=['不叫','叫地主'];
if(!event.map) event.map={};
var libCharacter={};
for(var i=0;i<lib.configOL.characterPack.length;i++){
var pack=lib.characterPack[lib.configOL.characterPack[i]];
for(var j in pack){
if(j=='zuoci') continue;
if(lib.character[j]) libCharacter[j]=pack[j];
}
}
for(i in libCharacter){
if(lib.filter.characterDisabled(i,libCharacter)) continue;
event.list.push(i);
if(game.recommendDizhu.contains(i)) event.list2.push(i);
}
for(var player of game.players){
var id=player.playerid;
if(!event.map[id]) event.map[id]=[];
event.map[id].addArray(event.list2.randomRemove(1));
event.list.removeArray(event.map[id]);
event.map[id].addArray(event.list.randomRemove(4-event.map[id].length));
}
_status.characterlist=event.list.slice(0);
event.videoId=lib.status.videoId++;
game.broadcastAll(function(map,id){
ui.create.dialog('你的选将框',[map[game.me.playerid],'character']).videoId=id;
},event.map,event.videoId);
event.start=game.players.randomGet();
event.current=event.start;
if(event.current!=game.me||!event.current.isOnline()) game.delay(3);
"step 1"
event.current.chooseControl(event.controls).set('ai',function(){
return Math.random()>0.5?'不叫':'叫地主';
});
"step 2"
event.current.chat(result.control);
if(result.control=='叫地主'||event.current==event.start.next){
game.zhu=result.control=='叫地主'?event.current:event.current.next;
for(var player of game.players){
player.identity=player==game.zhu?'zhu':'fan';
player.showIdentity();
player.identityShown=true;
}
game.broadcastAll('closeDialog',event.videoId)
event.map[game.zhu.playerid].addArray(event.list.randomRemove(3));
}
else{
event.current=event.current.next;
event.goto(1);
}
"step 3"
var list=[];
var str='选择角色';
for(var i=0;i<game.players.length;i++){
list.push([game.players[i],[str,[event.map[game.players[i].playerid],'character']],true]);
}
game.me.chooseButtonOL(list,function(player,result){
if(game.online||player==game.me) player.init(result.links[0],result.links[1]);
});
"step 4"
for(var i in result){
if(result[i]&&result[i].links){
for(var j=0;j<result[i].links.length;j++){
event.list2.remove(result[i].links[j]);
}
}
}
for(var i in result){
if(result[i]=='ai'){
result[i]=event.list2.randomRemove(lib.configOL.double_character?2:1);
}
else{
result[i]=result[i].links
}
if(!lib.playerOL[i].name){
lib.playerOL[i].init(result[i][0],result[i][1]);
}
}
game.zhu.maxHp++;
game.zhu.hp++;
game.zhu.update();
game.broadcast(function(result,zhu){
for(var i in result){
if(!lib.playerOL[i].name){
lib.playerOL[i].init(result[i][0],result[i][1]);
}
}
game.zhu=zhu;
zhu.maxHp++;
zhu.hp++;
zhu.update();
setTimeout(function(){
ui.arena.classList.remove('choose-character');
},500);
},result,game.zhu);
for(var i=0;i<game.players.length;i++){
_status.characterlist.remove(game.players[i].name);
_status.characterlist.remove(game.players[i].name2);
}
setTimeout(function(){
ui.arena.classList.remove('choose-character');
},500);
});
},
chooseCharacterOL:function(){
if(_status.mode=='kaihei'){
game.chooseCharacterKaiheiOL();
return;
}
else if(_status.mode=='huanle'){
game.chooseCharacterHuanleOL();
return;
}
var next=game.createEvent('chooseCharacter',false);
next.setContent(function(){
"step 0"

View File

@ -862,18 +862,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
},
skill:{
xiaoxi:{
audio:2,
audioname:['machao','hansui','pangde'],
trigger:{
player:'enterGame',
global:'gameDrawAfter',
},
direct:true,
content:function(){
player.chooseUseTarget('sha',get.prompt('xiaoxi'),'视为使用一张【杀】').logSkill='xiaoxi';
},
},
manyi:{
audio:2,
trigger:{target:'useCardToBefore'},
@ -1196,8 +1184,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
changban2:'血战长坂坡',
dianjiang2:'点将单挑',
xiaoxi:'骁袭',
xiaoxi_info:'当你登场时,你可以视为使用一张【杀】。',
manyi:'蛮裔',
manyi_info:'锁定技,【南蛮入侵】对你无效。当你登场时,你可以视为使用一张【南蛮入侵】。',
wanrong:'婉容',