The end of Charlotte

This commit is contained in:
Spmario233 2020-10-20 21:54:19 +08:00
parent 1ca5185a98
commit 903fc118ce
18 changed files with 478 additions and 84 deletions

View File

@ -605,25 +605,31 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
skill:{
jinhe_lose:{
trigger:{player:'loseEnd'},
trigger:{
player:['loseAfter','equipAfter'],
},
equipSkill:true,
forced:true,
filter:function(event,player){
if(event.type!='discard'||!_status.jinhe||event.getParent(2).name=='jinhe_skill'&&event.getParent(2).player==player) return false;
for(var i=0;i<event.es.length;i++){
if(event.es[i].name=='jinhe'&&_status.jinhe[event.es[i].cardid]) return true;
if(event.getl===false) return false;
if(event.name=='lose'&&event.position!=ui.discardPile||!_status.jinhe||event.getParent(2).name=='jinhe_skill'&&event.getParent(2).player==player) return false;
var evt=event.getl(player);
if(!evt) return false;
for(var i=0;i<evt.es.length;i++){
if(evt.es[i].name=='jinhe'&&_status.jinhe[evt.es[i].cardid]) return true;
}
return false;
},
content:function(){
"step 0"
for(var i=0;i<trigger.es.length;i++){
if(trigger.es[i].name=='jinhe'&&_status.jinhe[trigger.es[i].cardid]){
var card=_status.jinhe[trigger.es[i].cardid].card;
var es=trigger.getl(player).es;
for(var i=0;i<es.length;i++){
if(es[i].name=='jinhe'&&_status.jinhe[es[i].cardid]){
var card=_status.jinhe[es[i].cardid].card;
game.cardsDiscard(card);
player.$throw(card);
game.log(card,'进入了弃牌堆');
delete _status.jinhe[trigger.es[i].cardid];
delete _status.jinhe[es[i].cardid];
};
}
game.broadcastAll(function(jinhe){

View File

@ -3,7 +3,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return {
name:'diy',
connect:true,
connectBanned:['diy_tianyu','diy_yangyi','diy_lukang','ns_huamulan','ns_yuji','ns_duangui','ns_liuzhang'],
connectBanned:['diy_tianyu','diy_yangyi','diy_lukang','ns_huamulan','ns_yuji','ns_duangui','ns_liuzhang','key_yuu'],
character:{
sp_key_yuri:['female','qun',4,['mubing','diaoling']],
ns_zhangwei:['female','wei',3,['nsqiyue','nsxuezhu']],
@ -58,6 +58,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_akiko:['female','key',3,['akiko_dongcha']],
key_abyusa:['female','key',3,['abyusa_jueqing','abyusa_dunying']],
key_godan:['male','key',6,['godan_yuanyi','godan_feiqu','godan_xiaoyuan']],
key_yuu:['male','key',3,['yuu_lveduo']],
key_kud:['female','key',3,['kud_qiaoshou','kud_buhui']],
key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']],
@ -133,6 +134,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ns_xinnanhua:['male','qun',3,['ns_xiandao','ns_xiuzheng','ns_chuanshu'],[]],
},
characterFilter:{
key_yuu:function(mode){
return mode=='identity'||mode=='doudizhu'||mode=='single'||(mode=='versus'&&_status.mode!='standard');
},
key_tomoya:function(mode){
return mode!='chess'&&mode!='tafang'&&mode!='stone';
},
@ -152,7 +156,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","key_abyusa","key_godan"],
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","key_godan","key_yuu"],
diy_yongjian:["ns_chendao","yj_caoang"],
},
},
@ -168,6 +172,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_tianyu:'字国让,渔阳雍奴(今天津市武清区东北)人。三国时期曹魏将领。初从刘备,因母亲年老回乡,后跟随公孙瓒,公孙瓒败亡,劝说鲜于辅加入曹操。曹操攻略河北时,田豫正式得到曹操任用,历任颖阴、郎陵令、弋阳太守等。',
},
characterTitle:{
key_yuu:'#bCharlotte',
key_godan:'#rAngel Beats!',
key_abyusa:'#rAngel Beats!',
key_akiko:'#bKanon',
@ -321,6 +326,118 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_lucia:['key_shizuru'],
},
skill:{
yuu_lveduo:{
mod:{
cardEnabled:function(card,player){
if(player.isTurnedOver()) return false;
},
cardRespondable:function(card,player){
if(player.isTurnedOver()) return false;
},
cardSavable:function(card,player){
if(player.isTurnedOver()) return false;
},
},
trigger:{global:'phaseBeginStart'},
filter:function(event,player){
return player!=event.player&&!event.player._trueMe&&!player.getStorage('yuu_lveduo').contains(event.player)&&!player.isTurnedOver()&&!player.hasSkill('yuu_lveduo4');
},
charlotte:true,
check:function(event,player){
if(get.attitude(player,event.player)>0) return false;
if(event.player.hasJudge('lebu')||!event.player.needsToDiscard()) return false;
return true;
},
logTarget:'player',
content:function(){
'step 0'
player.turnOver();
'step 1'
if(player.isTurnedOver()){
player.addTempSkill('yuu_lveduo4','roundStart')
if(!player.storage.yuu_lveduo) player.storage.yuu_lveduo=[];
player.storage.yuu_lveduo.push(trigger.player);
trigger.player._trueMe=player;
game.addGlobalSkill('autoswap');
if(trigger.player==game.me){
game.notMe=true;
if(!_status.auto) ui.click.auto();
}
player.addSkill('yuu_lveduo2');
trigger.player.addSkill('yuu_lveduo3');
}
},
},
yuu_lveduo2:{
trigger:{
player:'turnOverEnd',
},
lastDo:true,
charlotte:true,
forceDie:true,
forced:true,
silent:true,
filter:function(event,player){
return !player.isTurnedOver();
},
content:function(){
var target=game.findPlayer(function(current){
return current._trueMe==player;
});
if(target){
if(target==game.me){
if(!game.notMe) game.swapPlayerAuto(target._trueMe)
else delete game.notMe;
if(_status.auto) ui.click.auto();
}
delete target._trueMe;
target.removeSkill('yuu_lveduo3');
var skills=target.getStockSkills(true,true).filter(function(skill){
var info=get.info(skill);
return info&&info.charlotte==true;
});
if(skills.length){
target.removeSkill(skills);
player.addSkill(skills);
lib.translate.yuu_lveduo_info=lib.translate.yuu_lveduo_full_info;
}
if(target.name=='key_yusa'){
delete target.storage.dualside;
target.storage.dualside_over=true;
target.unmarkSkill('dualside');
target.removeSkill('dualside');
}
else if(target.name=='key_misa'){
delete target.storage.dualside;
target.storage.dualside_over=true;
target.unmarkSkill('dualside');
target.reinit('key_misa','key_yusa');
target.removeSkill('yusa_misa');
target.removeSkill('dualside');
target.turnOver(false);
}
}
player.removeSkill('yuu_lveduo2');
},
},
yuu_lveduo3:{
trigger:{
player:['phaseAfter','dieAfter'],
global:'phaseBefore',
},
lastDo:true,
charlotte:true,
forceDie:true,
forced:true,
silent:true,
content:function(){
player.removeSkill('yuu_lveduo3');
},
onremove:function(player){
if(player._trueMe&&player._trueMe.isTurnedOver()) player._trueMe.turnOver();
},
},
yuu_lveduo4:{},
godan_yuanyi:{
trigger:{player:'phaseBegin'},
forced:true,
@ -881,6 +998,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
misuzu_hengzhou:{
trigger:{player:['phaseJieshuBegin','recoverEnd','damageEnd','phaseDrawBegin2','phaseZhunbeiBegin']},
forced:true,
character:true,
filter:function(event,player){
if(event.name=='phaseZhunbei') return true;
if(['damage','recover'].contains(event.name)) return event.num>0;
@ -1519,6 +1637,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
shizuru_nianli:{
enable:'chooseToUse',
charlotte:true,
prompt:'展示一张♦/♣/♥/♠手牌,然后视为使用一张雷杀/闪/桃/无懈可击',
viewAs:function(cards,player){
var name=false;
@ -1877,6 +1996,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'phaseZhunbeiBegin'},
limited:true,
unique:true,
charlotte:true,
skillAnimation:true,
animationColor:'water',
filter:function(event,player){
@ -1899,6 +2019,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
midori_nonghuan:{
enable:'phaseUse',
charlotte:true,
filter:function(event,player){
return (player.getStat('skill').midori_nonghuan||0)<player.hp;
},
@ -1949,6 +2070,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
midori_tishen:{
trigger:{player:'phaseZhunbeiBegin'},
limited:true,
charlotte:true,
unique:true,
skillAnimation:true,
animationColor:'water',
@ -2476,6 +2598,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
nagisa_tiandu:{
trigger:{player:'judgeEnd'},
charlotte:true,
frequent:function(event){
if(event.result.card.name=='du') return false;
return true;
@ -2754,6 +2877,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
hisako_zhuanyun:{
trigger:{player:'judgeBegin'},
forced:true,
charlotte:true,
silent:true,
filter:function(event,player){
return !event.directresult;
@ -3866,6 +3990,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
tsumugi_huilang:{
trigger:{player:'phaseEnd'},
charlotte:true,
line:{color:[253, 198, 116]},
direct:true,
filter:function(event,player){
@ -5516,7 +5641,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
check:function(event,player){
if(['equip','delay'].contains(get.type(event.card))) return get.attitude(player,event.player)<0;
return get.value(event.cards.filterInD()>0);
return get.value(event.cards.filterInD())>0;
},
logTarget:'player',
content:function(){
@ -10371,6 +10496,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_akiko:'水濑秋子',
key_abyusa:'游佐',
key_godan:'松下护騨',
key_yuu:'乙坂有宇',
lucia_duqu:'毒躯',
lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。<br>②当你因【毒】失去体力时,你改为回复等量的体力。<br>③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。',
lucia_zhenren:'振刃',
@ -10619,6 +10745,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
godan_feiqu_info:'锁定技,当你使用【杀】时,或你成为【杀】的目标后,你令此【杀】不可被响应。',
godan_xiaoyuan:'消元',
godan_xiaoyuan_info:'觉醒技当你扣减体力时若你的体力值小于4则你减3点体力上限并摸三张牌失去【肥躯】。',
yuu_lveduo:'掠夺',
yuu_lveduo_info:'每轮限一次,其他角色的回合开始时,若你本局游戏内未对其发动过〖掠夺〗且你的武将牌正面朝上,你可以将武将牌翻面并获得该角色本回合内的控制权。此回合结束时,你将武将牌翻回正面。锁定技,若你的武将牌背面朝上,则你不能使用或打出牌。',
yuu_lveduo_full_info:'每轮限一次其他角色的回合开始时若你本局游戏内未对其发动过〖掠夺〗且你的武将牌正面朝上你可以将武将牌翻面并获得该角色本回合内的控制权。此回合结束时你将武将牌翻回正面获得该角色武将牌上所有的带有「Charlotte」标签的技能且该角色失去这些技能。锁定技若你的武将牌背面朝上则你不能使用或打出牌。',
key_kud:'库特莉亚芙卡',
kud_qiaoshou:'巧手',

View File

@ -51,7 +51,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterFilter:{
shen_diaochan:function(mode){
return mode=='identity'||mode=='doudizhu';
return mode=='identity'||mode=='doudizhu'||mode=='single'||(mode=='versus'&&_status.mode!='standard');
},
},
skill:{
@ -154,8 +154,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
else event.finish();
'step 3'
if(result.bool!==true) targets[0].addMark('huoxin',1);
if(result.bool!==false) targets[1].addMark('huoxin',1);
if(result.winner!==targets[0]) targets[0].addMark('huoxin',1);
if(result.winner!==targets[1]) targets[1].addMark('huoxin',1);
},
marktext:'魅',
intro:{
@ -3594,7 +3594,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
caopi_xingdong_info:'出牌阶段限一次,你可以将一张【杀】或普通锦囊牌交给一名其他角色,然后该角色选择一项:对除你以外的角色使用此牌并在此牌结算完成后和你各摸一张牌;或跳过下回合的判定阶段和摸牌阶段。',
shen_diaochan:'神貂蝉',
meihun:'魅魂',
meihun_info:'结束阶段或当你成为【杀】的目标后,你可以令一名其他角色交给你一张你声明的花色的牌,若其没有则你观看其手牌然后弃置其中一张。',
meihun_info:'结束阶段或当你成为【杀】的目标后,你可以令一名其他角色交给你一张你声明的花色的牌,若其没有则你观看其手牌然后弃置其中一张。',
huoxin_control:'惑心',
huoxin:'惑心',
huoxin_info:'出牌阶段限一次你可以展示两张花色相同的手牌并分别交给两名其他角色然后令这两名角色拼点没赢的角色获得1个“魅惑”标记。拥有2个或更多“魅惑”的角色回合即将开始时该角色移去其所有“魅惑”此回合改为由你操控。',

View File

@ -75,7 +75,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
jiaxu:['liqueguosi'],
re_yuanshao:['yanwen'],
menghuo:['zhurong'],
sp_zhugeliang:['pangtong'],
sp_zhugeliang:['pangtong','huangyueying'],
sunce:['zhouyu','taishici','daqiao'],
zuoci:['yuji'],
xunyu:['xunyou'],

View File

@ -11,7 +11,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_sticker:['sp_gongsunzan','sp_simazhao','sp_wangyuanji','sp_xinxianying','sp_liuxie'],
sp_guozhan:["zangba","shamoke","ganfuren","yuejin","hetaihou","dingfeng","panfeng","jianggan"],
sp_guozhan2:["mifuren","mateng","tianfeng","chendong","sp_dongzhuo","jiangfei","jiangqing","kongrong","bianfuren","liqueguosi","lvfan","cuimao","jiling","zhangren","zoushi"],
sp_single:["hejin","hansui","niujin"],
sp_single:["niujin"],
sp_others:["hanba","caiyang"],
},
},
@ -33,8 +33,6 @@ 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,['spmouzhu']],
hansui:['male','qun',4,['spniluan','spweiwu']],
niujin:['male','wei',4,['cuorui','liewei']],
jianggan:["male","wei",3,["weicheng","daoshu"]],
@ -469,7 +467,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
selectTarget:-1,
content:function(){
'step 0'
target.chooseCard('he','交给'+get.translation(player)+'一张牌',true);
if(!target.countCards('he')) event.finish();
else target.chooseCard('he','交给'+get.translation(player)+'一张牌',true);
'step 1'
player.gain(result.cards,target,'giveAuto');
'step 2'
@ -8972,7 +8971,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
forced:true,
audio:2,
filter:function(event,player){
return event.parent.name=='phaseDiscard'&&player.countCards('h',{type:'basic'})<player.countCards('h');
return player.countCards('h')>player.getHandcardLimit();
},
content:function(){},
mod:{
@ -11680,12 +11679,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
sijian:{
trigger:{player:'loseAfter'},
trigger:{
player:'loseAfter',
source:'gainAfter',
global:['equipAfter','addJudgeAfter'],
},
direct:true,
audio:2,
filter:function(event,player){
if(player.countCards('h')) return false;
return event.hs&&event.hs.length>0;
var evt=event.getl(player);
return evt&&evt.hs&&evt.hs.length>0;
},
content:function(){
"step 0"

View File

@ -4,6 +4,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sp2',
connect:true,
character:{
hejin:['male','qun',4,['spmouzhu']],
hansui:['male','qun',4,['spniluan','spweiwu']],
liuhong:['male','qun',4,['yujue','tuxing'],['unseen']],
zhujun:['male','qun',4,['gongjian','kuimang'],['unseen']],
caoxing:['male','qun',4,['cxliushi','zhanwan'],['unseen']],
re_maliang:['male','shu',3,['rexiemu','heli'],[]],
ol_yujin:['male','wei',4,['rezhenjun']],
@ -61,10 +65,171 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_shengun:["puyuan","guanlu","gexuan","xushao"],
sp_baigei:['re_panfeng','xingdaorong','caoxing'],
sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou"],
sp_huangjin:['liuhong','zhujun','hejin','hansui'],
sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','re_sunluyu','caobuxing','ol_xinxianying','ol_yujin','re_maliang'],
}
},
skill:{
yujue:{
derivation:'zhihu',
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countDisabled()<5;
},
chooseButton:{
dialog:function(event,player){
return ui.create.dialog('###鬻爵###'+lib.translate.yujue_info);
},
chooseControl:function(event,player){
var list=[];
for(var i=1;i<6;i++){
if(!player.isDisabled(i)) list.push('equip'+i);
}
list.push('cancel2');
return list;
},
backup:function(result){
var next=get.copy(lib.skill.yujuex);
next.position=result.control;
return next;
},
},
},
yujuex:{
audio:'yujue',
content:function(){
'step 0'
player.disableEquip(lib.skill.yujue_backup.position);
'step 1'
if(player.isAlive()&&game.hasPlayer(function(current){
return current!=player&&current.countCards('h');
})){
player.chooseTarget(true,'选择一名角色交给你一张牌并获得技能〖执笏〗',function(card,player,target){
if(player==target) return false;
var hs=target.countCards('h');
return hs>0&&!game.hasPlayer(function(current){
return current!=player&&current!=target&&current.countCards('h')>hs;
});
});
}
else event.finish();
'step 2'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.line(target);
target.chooseCard('h',true,'交给'+get.translation(player)+'一张手牌');
}
else event.finish();
'step 3'
if(result.bool&&result.cards&&result.cards.length){
player.gain(result.cards,target,'giveAuto');
target.storage.zhihu_mark=player;
target.addSkill('zhihu');
target.addSkill('zhihu_mark');
}
},
},
zhihu:{
usable:3,
trigger:{source:'damageSource'},
forced:true,
filter:function(event,player){
return player!=event.player;
},
content:function(){
player.draw();
},
},
zhihu_mark:{
mark:'character',
intro:{
content:'以$之名,授予汝技能〖执笏〗,直至$的下回合开始为止!',
},
onremove:function(player){
delete player.storage.zhihu_mark;
player.removeSkill('zhihu');
},
trigger:{global:'phaseBeginStart'},
firstDo:true,
charlotte:true,
silent:true,
filter:function(event,player){
return event.player==player.storage.zhihu_mark;
},
content:function(){
player.removeSkill('zhihu_mark');
},
},
tuxing:{
trigger:{player:'disableEquipAfter'},
forced:true,
content:function(){
'step 0'
player.gainMaxHp();
player.recover();
'step 1'
if(player.countDisabled()>=5){
player.loseMaxHp(4);
player.addSkill('tuxing2');
}
}
},
tuxing2:{
audio:'tuxing',
trigger:{source:'damageBegin1'},
forced:true,
charlotte:true,
filter:function(event,player){
return event.getParent().name=='sha';
},
content:function(){
trigger.num++;
},
mark:true,
intro:{
content:'因执行【杀】的效果造成伤害时,此伤害+1',
},
},
gongjian:{
trigger:{player:'useCardToPlayered'},
usable:1,
logTarget:'target',
filter:function(event,player){
var evt=event.getParent();
var history=player.getAllHistory('useCard',function(evtx){
return evtx.card.name=='sha'
});
var index=history.indexOf(evt);
return index>0&&history[index-1].targets.filter(function(target){
return evt.targets.contains(target);
}).length>0&&event.target.countDiscardableCards(player,'he')>0;
},
content:function(){
'step 0'
player.discardPlayerCard(trigger.target,true,'he',2);
'step 1'
if(result.bool){
var cards=result.cards.filter(function(card){
return get.name(card,card.original=='h'?trigger.target:false)=='sha';
});
if(cards.length) player.gain(cards,'gain2','log');
}
},
},
kuimang:{
trigger:{global:'dieAfter'},
forced:true,
filter:function(event,player){
return player.getAllHistory('sourceDamage',function(target){
return target.player==event.player;
}).length>0;
},
content:function(){
player.draw(2);
},
},
cxliushi:{
enable:'phaseUse',
filter:function(event,player){
@ -475,7 +640,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
backup:function(links,player){
return {
audio:'juanhui',
popname·true,
popname:true,
filterCard:true,
viewAs:{
name:links[0][2],
@ -5265,6 +5430,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
wenyang:"文俶238年—291年一作文淑字次骞小名阿鸯世称文鸯谯郡今安徽亳州市人。魏末晋初名将曹魏扬州刺史文钦之子。骁勇善战依附大将军曹爽效忠于王室。司马师废黜皇帝曹芳后随父联合毌丘俭于淮南起兵勤王。兵败之后向南投奔吴国。诸葛诞发动淮南叛乱奉命率军驰援。双方发生内讧父亲为诸葛诞所害遂降于司马昭封关内侯。西晋建立后任平虏护军。咸宁三年277年拜平西将军、都督凉秦雍州三州军事大破鲜卑首领秃发树机能名震天下迁使持节、护东夷校尉、监辽东军事。八王之乱中为诸葛诞外孙、东安王司马繇所诬杀惨遭灭族时年五十四岁。",
liuzan:'字正明会稽长山人人曾任左护军有两子留略、留平。少为会稽郡吏曾参与镇压黄巾起义后被东吴大将凌统所引用任屯骑校尉。吴五凤二年公元255年留赞任左护军随孙峻征淮南因病撤军被魏将蒋班围困于道力战而死时年73岁。',
caoxing:'曹性,东汉末年吕布部将,史载他曾与身为自己上司的反叛者郝萌交战,并砍去郝萌一臂,受到吕布的嘉奖。在罗贯中所著古典小说《三国演义》中,也有关于曹性箭射夏侯惇左目的描述,而曹性也随即被暴怒的夏侯惇所杀。',
zhujun:'朱儁195年字公伟。会稽郡上虞县今浙江绍兴上虞区人。东汉末年名将。朱儁出身寒门赡养母亲以好义轻财闻名受乡里敬重。后被太守徐珪举为孝廉任兰陵令颇有治绩。再升任交州刺史以家兵五千大破叛军平定交州。战后以功封都亭侯入朝为谏议大夫。光和七年184年黄巾起义爆发朱儁以右中郎将、持节平定三郡之地以功进封西乡侯迁镇贼中郎将。又率军讨平黄巾“威声满天下”。中平二年185年进拜右车骑将军更封钱塘侯。后为河内太守击退进逼的张燕。权臣董卓秉政时想任朱儁为副手遭其婉拒。其后出逃荆州更屯军中牟徐州刺史陶谦等欲推举他为太师并传檄各州牧伯相邀讨伐李傕、奉迎天子。但朱儁却奉诏入京任太仆。初平三年192年升任太尉、录尚书事。兴平元年194年行骠骑将军事持节镇关东因故未成行。兴平二年195年李傕与郭汜相互攻杀郭汜扣留朱儁作为人质。朱儁性格刚烈即日发病而死。',
liuhong:'汉灵帝刘宏157年一作156年189年5月13日生于冀州河间国今河北深州。东汉第十二位皇帝168年189年在位汉章帝刘炟的玄孙。刘宏早年世袭解渎亭侯。永康元年167年十二月汉桓帝刘志逝世刘宏被外戚窦氏挑选为皇位继承人于建宁元年168年正月即位。刘宏在位的大部分时期施行党锢及宦官政治。他又设置西园巧立名目搜刮钱财甚至卖官鬻爵以用于自己享乐。在位晚期爆发了黄巾起义而凉州等地也陷入持续动乱之中。中平六年189年刘宏去世谥号孝灵皇帝葬于文陵。刘宏喜好辞赋作有《皇羲篇》、《追德赋》、《令仪颂》、《招商歌》等。',
},
characterTitle:{
wulan:'#b对决限定武将',
@ -5582,6 +5749,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
cxliushi_info:'出牌阶段,你可以将一张红桃牌置于牌堆顶,视为对一名角色使用一张不计入次数的【杀】。若此【杀】造成伤害,该角色手牌上限永久-1。',
zhanwan:'斩腕',
zhanwan_info:'锁定技,受到【流矢】效果影响的角色若弃牌阶段有弃牌,你摸等量的牌,然后移除【流矢】的效果。',
zhujun:'朱儁',
gongjian:'攻坚',
gongjian_info:'每回合限一次,当你使用【杀】指定目标后,若此【杀】和你使用的上一张【杀】有相同的目标,则你可以弃置其两张牌,然后获得以此法弃置的所有【杀】。',
kuimang:'溃蟒',
kuimang_info:'锁定技,一名角色死亡后,若你对其造成过伤害,你摸两张牌。',
liuhong:'刘宏',
yujue:'鬻爵',
yujue_backup:'鬻爵',
yujue_info:'出牌阶段限一次,你可以废除一个装备栏,然后令除你之外手牌数最多的一名其他角色交给你一张手牌。其获得〖执笏〗直到你的下回合开始。',
zhihu:'执笏',
zhihu_mark:'执笏',
zhihu_info:'锁定技,每回合限三次,当你对其他角色造成伤害后,你摸一张牌。',
tuxing:'图兴',
tuxing2:'图兴',
tuxing_info:'锁定技当你废除一个装备栏时你加1点体力上限并回复1点体力。然后若你所有的装备栏均已被废除则你减4点体力上限且本局游戏内使用【杀】造成的伤害+1。',
sp_whlw:"文和乱武",
sp_zlzy:"逐鹿中原",
@ -5591,6 +5773,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_shengun:'三国奇人传',
sp_baigei:'无双上将',
sp_guandu:'官渡之战',
sp_huangjin:'黄巾之乱',
sp_decade:'其他新服武将',
},
};

View File

@ -77,7 +77,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhenji:['caopi'],
caocao:['xuzhu','dianwei','bianfuren'],
huangzhong:['weiyan'],
zhugeliang:['huangyueying','jiangwei','jiangfei'],
zhugeliang:['jiangwei','jiangfei'],
liubei:['guanyu','zhangfei','ganfuren'],
zhaoyun:['liushan'],
daqiao:['xiaoqiao'],

View File

@ -17,7 +17,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
swd_chenjingchou:['male','wu',3,['youyin','yihua']],
swd_duguningke:['female','qun',3,['nlianji','touxi']],
swd_guyue:['male','wei',3,['gtiandao','gxianyin','wangchen']],
swd_tuobayuer:['female','shu',4,['liuhong','poyue','niepan']],
swd_tuobayuer:['female','shu',4,['swdliuhong','poyue','niepan']],
swd_yuwentuo:['male','shu',4,['wushuang','xielei','kunlunjing']],
swd_yuxiaoxue:['female','wei',3,['huanhun','daixing','yinyue']],
@ -4005,7 +4005,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.recover();
}
},
liuhong:{
swdliuhong:{
trigger:{player:['useCard']},
frequent:true,
filter:function(event){
@ -10082,8 +10082,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
gongshen:'工神',
gongshen_info:'任意一名其他角色使用一张基本牌或锦囊牌指定目标后,你可以弃置一张装备牌令其失效',
liuhong:'流虹',
liuhong_info:'每当你使用一张杀,可以摸一张牌',
swdliuhong:'流虹',
swdliuhong_info:'每当你使用一张杀,可以摸一张牌',
poyue:'破月',
poyue_info:'锁定技,你的黑杀无视距离,红色杀不计入回合内的出杀限制且不可闪避',
poyue_info_alter:'锁定技,你的黑杀无视距离,红色杀不可闪避',

View File

@ -421,9 +421,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
},
qinguo_use:{audio:2},
"xinfu_qinguo":{
group:"xinfu_qinguo_recover",
audio:2,
audio:'qinguo_use',
subfrequent:['recover'],
trigger:{
player:"useCardEnd",
@ -433,11 +434,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
direct:true,
content:function(){
player.chooseUseTarget({name:'sha'},get.prompt('xinfu_qinguo'),'视为使用一张【杀】',false).logSkill='qinguo_use';
player.chooseUseTarget({name:'sha'},get.prompt('xinfu_qinguo'),'视为使用一张【杀】',false).logSkill='xinfu_qinguo';
},
subSkill:{
recover:{
audio:'xinfu_qinguo',
audio:'qinguo_use',
trigger:{
player:'loseAfter',
source:'gainAfter',

View File

@ -21,7 +21,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_guanzhang:['male','shu',4,['old_fuhun']],
old_wangyi:['female','wei',3,['oldzhenlie','oldmiji']],
caozhang:['male','wei',4,['jiangchi']],
guohuai:['male','wei',4,['jingce']],
guohuai:['male','wei',4,['rejingce']],
zhangchunhua:['female','wei',3,['rejueqing','reshangshi']],
caozhi:['male','wei',3,['luoying','jiushi']],
caochong:['male','wei',3,['chengxiang','renxin']],
@ -194,6 +194,55 @@ game.import('character',function(lib,game,ui,get,ai,_status){
fazheng:['liubei'],
},
skill:{
rejingce:{
audio:'jingce',
trigger:{player:'phaseUseEnd'},
frequent:true,
filter:function(event,player){
return player.getHistory('useCard',function(evt){
return evt.getParent('phaseUse')==event;
}).length>0;
},
content:function(){
var list=[];
player.getHistory('useCard',function(evt){
if(evt.getParent('phaseUse')==trigger) list.add(get.type2(evt.card));
});
player.draw(list.length);
},
group:'rejingce_add',
},
rejingce_add:{
trigger:{player:'loseEnd'},
silent:true,
firstDo:true,
filter:function(event,player){
if(event.getParent().name!='useCard'||player!=_status.currentPhase) return false;
var list=player.getStorage('rejingce2');
for(var i of event.cards){
if(!list.contains(get.suit(i,player))) return true;
}
return false;
},
content:function(){
if(!player.storage.rejingce2) player.storage.rejingce2=[];
for(var i of trigger.cards) player.storage.rejingce2.add(get.suit(i,player));
player.storage.rejingce2.sort();
player.addTempSkill('rejingce2');
player.markSkill('rejingce2');
},
},
rejingce2:{
onremove:true,
intro:{
content:'当前已使用花色:$',
},
mod:{
maxHandcard:function(player,num){
return num+player.getStorage('rejingce2').length;
},
},
},
rejueqing:{
audio:'jueqing',
trigger:{source:'damageBegin2'},
@ -12617,7 +12666,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
reshangshi:'伤逝',
reshangshi_2nd:'伤逝',
reshangshi_info:'当你受到伤害时你可以弃置一张牌。当你的手牌数小于X时你可以将手牌摸至X张。X为你已损失的体力值',
re_gongsunzan:'界公孙瓒',
re_gongsunzan:'公孙瓒',
rejingce:'精策',
rejingce2:'精策',
rejingce_add:'精策',
rejingce_info:'当你于一回合内首次使用某种花色的手牌时,你的手牌上限+1。出牌阶段结束时你可以摸X张牌X为你本阶段内使用过的牌的类型数。',
yijiang_2011:'一将成名2011',
yijiang_2012:'一将成名2012',

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.105.4',
'v1.9.105.5',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -3386,6 +3386,7 @@ window.noname_asset_list=[
'image/character/xin_liaohua.jpg',
'image/character/key_godan.jpg',
'image/character/shen_diaochan.jpg',
'image/character/key_yuu.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -169,7 +169,13 @@
name:'无闪自动取消',
init:false,
unfrequent:true,
intro:'当自己需要使用或打出闪时,若自己没有闪,则跳过该步骤',
intro:'当自己需要使用或打出【闪】时,若自己没有【闪】,则跳过该步骤',
},
unauto_choose:{
name:'拆顺手牌选择',
init:false,
unfrequent:true,
intro:'拆牌或者顺牌时,就算只能选择对方的手牌依然手动选择',
},
wuxie_self:{
name:'不无懈自己',
@ -11616,11 +11622,18 @@
if(info&&info.chooseButton){
if(event.dialog&&typeof event.dialog=='object') event.dialog.close();
var dialog=info.chooseButton.dialog(event,player);
var next=player.chooseButton(dialog);
next.set('ai',info.chooseButton.check||function(){return 1;});
next.set('filterButton',info.chooseButton.filter||function(){return true;});
next.set('selectButton',info.chooseButton.select||1);
event.buttoned=event.result.skill;
if(info.chooseButton.chooseControl){
var next=player.chooseControl(info.chooseButton.chooseControl(event,player));
next.dialog=dialog;
next.set('ai',info.chooseButton.check||function(){return 0;});
}
else{
var next=player.chooseButton(dialog);
next.set('ai',info.chooseButton.check||function(){return 1;});
next.set('filterButton',info.chooseButton.filter||function(){return true;});
next.set('selectButton',info.chooseButton.select||1);
}
event.buttoned=event.result.skill;
}
else if(info&&info.precontent&&!game.online){
var next=game.createEvent('pre_'+event.result.skill);
@ -11632,9 +11645,9 @@
}
"step 3"
if(event.buttoned){
if(result.bool){
if(result.bool||result.control&&result.control!='cancel2'){
var info=get.info(event.buttoned).chooseButton;
lib.skill[event.buttoned+'_backup']=info.backup(result.links,player);
lib.skill[event.buttoned+'_backup']=info.backup(info.chooseControl?result:result.links,player);
lib.skill[event.buttoned+'_backup'].sourceSkill=event.buttoned;
if(game.online){
event._sendskill=[event.buttoned+'_backup',lib.skill[event.buttoned+'_backup']];
@ -12978,7 +12991,7 @@
if(event.prompt2){
event.dialog.addText(event.prompt2);
}
var directh=true;
var directh=!lib.config.unauto_choose;
for(var i=0;i<event.position.length;i++){
if(event.position[i]=='h'){
var hs=target.getCards('h');
@ -13024,7 +13037,7 @@
links:cs
}
}
else if(event.forced&&directh&&select[0]==select[1]){
else if(event.forced&&directh&&!event.isOnline()&&select[0]==select[1]){
event.result={
bool:true,
buttons:event.dialog.buttons.randomGets(select[0]),
@ -13096,7 +13109,7 @@
if(event.prompt2){
event.dialog.addText(event.prompt2);
}
var directh=true;
var directh=!lib.config.unauto_choose;
for(var i=0;i<event.position.length;i++){
if(event.position[i]=='h'){
var hs=target.getDiscardableCards(player,'h');
@ -13142,7 +13155,7 @@
links:cs
}
}
else if(event.forced&&directh&&select[0]==select[1]){
else if(event.forced&&directh&&!event.isOnline()&&select[0]==select[1]){
event.result={
bool:true,
buttons:event.dialog.buttons.randomGets(select[0]),
@ -13241,7 +13254,7 @@
if(event.prompt2){
event.dialog.addText(event.prompt2);
}
var directh=true;
var directh=!lib.config.unauto_choose;
for(var i=0;i<event.position.length;i++){
if(event.position[i]=='h'){
var hs=target.getGainableCards(player,'h');
@ -13288,7 +13301,7 @@
links:cs
}
}
else if(event.forced&&directh&&select[0]==select[1]){
else if(event.forced&&directh&&!event.isOnline()&&select[0]==select[1]){
event.result={
bool:true,
buttons:event.dialog.buttons.randomGets(select[0]),

View File

@ -1,8 +1,9 @@
window.noname_update={
version:'1.9.105.4',
update:'1.9.105.3',
version:'1.9.105.5',
update:'1.9.105.4',
changeLog:[
'神貂蝉(单机身份/斗地主限定)',
'乙坂有宇',
'新郭淮',
'bug修复',
],
@ -18,7 +19,7 @@ window.noname_update={
//'card/gwent.js',
//'card/yunchou.js',
//'card/zhenfa.js',
//'card/zhulu.js',
'card/zhulu.js',
'character/diy.js',
'character/extra.js',
//'character/hearth.js',
@ -28,29 +29,29 @@ window.noname_update={
//'character/mobile.js',
//'character/mtg.js',
//'character/old.js',
'character/refresh.js',
//'character/shenhua.js',
//'character/sp.js',
//'character/refresh.js',
'character/shenhua.js',
'character/sp.js',
'character/sp2.js',
//'character/tw.js',
//'character/standard.js',
//'character/swd.js',
'character/standard.js',
'character/swd.js',
//'character/xianjian.js',
'character/xinghuoliaoyuan.js',
//'character/yijiang.js',
'character/yijiang.js',
//'character/yxs.js',
//'extension/boss/extension.js',
//'layout/default/layout.css',
//'layout/nova/layout.css',
'mode/identity.js',
'mode/doudizhu.js',
//'mode/guozhan.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/versus.js',
//'mode/boss.js',
'game/game.js',
//'game/keyWords.js',

BIN
image/character/key_yuu.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@ -833,7 +833,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
subSkill:{
use:{
trigger:{
player:"useCard",
global:"useCard",
},
filter:function (event,player){
return get.type(event.card)=='equip'&&event.player.isAlive()&&
@ -6856,11 +6856,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
checkResult:function(){
_status.overing=true;
var me=game.me._trueMe||game.me;
for(var i=0;i<game.players.length;i++){
game.players[i].showCharacter(2);
}
if(game.me.identity=='ye'){
if(game.me.classList.contains('dead')){
if(me.identity=='ye'){
if(me.classList.contains('dead')){
game.over(false);
}
else{
@ -6868,7 +6869,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
}
else{
if(get.population(game.me.identity)==0){
if(get.population(me.identity)==0){
game.over(false);
}
else{

View File

@ -530,7 +530,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
},
checkResult:function(){
var me=game.trueMe||game.me;
var me=game.me._trueMe||game.me;
if(_status.brawl&&_status.brawl.checkResult){
_status.brawl.checkResult();
return;
@ -590,7 +590,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
else if(winner2.contains(me)){
game.showIdentity();
if(loser2.contains(game.trueMe||me)) game.over(false);
if(loser2.contains(me)) game.over(false);
else game.over(true);
}
else{
@ -2741,7 +2741,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
content:function(){
"step 0"
if(player.isUnderControl()){
game.modeSwapPlayer(player);
game.swapPlayerAuto(player);
}
var num=3;
var cards=get.cards(num);

View File

@ -304,7 +304,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
showIdentity:function(){},
checkResult:function(){
game.over(game.me.isAlive());
game.over((game.me._trueMe||game.me).isAlive());
},
checkOnlineResult:function(player){
return player.isAlive();

View File

@ -4570,7 +4570,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
for(var i=0;i<game.players.length;i++){
game.players[i].classList.remove('current_action');
}
game.over(_status.winside==game.me.side);
var me=game.me._trueMe||game.me;
game.over(_status.winside==me.side);
}
}
}
@ -6443,9 +6444,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
}
else{
var me=game.me._trueMe||game.me;
if(_status.mode=='four'||_status.mode=='guandu'){
if(this.identity=='zhu'){
game.over(this.side!=game.me.side);
game.over(this.side!=me.side);
}
else{
if(_status.mode=='guandu'&&source&&source.side!=this.side){
@ -6461,14 +6463,14 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
side2.push(game.players[i]);
}
}
if(game.me.side){
if(me.side){
if(side1.length<=side2.length-2){
game.me.showGiveup();
me.showGiveup();
}
}
else{
if(side1.length>=side2.length+2){
game.me.showGiveup();
me.showGiveup();
}
}
}
@ -6491,19 +6493,19 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
delete friend.replacetwo;
}
else{
game.over(this.side!=game.me.side);
game.over(this.side!=me.side);
}
}
else{
if(!friend){
game.over(this.side!=game.me.side);
game.over(this.side!=me.side);
}
}
return;
}
else if(_status.mode=='siguo'){
if(game.players.length==1||(game.players.length==2&&game.players[0].side==game.players[1].side)){
game.over(game.me.side==game.players[0].side);
game.over(me.side==game.players[0].side);
}
var assignzhibao=function(){
var list=game.players.slice(0);
@ -6563,10 +6565,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
else if(_status.mode=='jiange'){
if(get.population('wei')==0){
game.over(game.me.identity=='shu');
game.over(me.identity=='shu');
}
else if(get.population('shu')==0){
game.over(game.me.identity=='wei');
game.over(me.identity=='wei');
}
return;
}
@ -6580,7 +6582,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
}
else{
if(this==game.me){
if(this==me){
game.modeSwapPlayer(game.friendZhu);
}
game.friend.remove(this);
@ -6588,7 +6590,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
return;
}
if(this.side==game.me.side){
if(this.side==me.side){
_status.friendDied.push(this.name);
_status.friendCount.innerHTML='阵亡: '+get.cnNumber(_status.friendDied.length,true);
}
@ -6597,7 +6599,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
_status.enemyCount.innerHTML='杀敌: '+get.cnNumber(_status.enemyDied.length,true);
}
var list=(this.side==game.me.side)?_status.friend:_status.enemy;
var list=(this.side==me.side)?_status.friend:_status.enemy;
if((list.length==0&&lib.storage.noreplace_end)||
(lib.storage.zhu&&lib.storage.main_zhu&&this.identity=='zhu'&&game.players.length>2)){
if(game.friend.contains(this)){