v1.9.116.3

This commit is contained in:
Spmario233 2022-11-12 19:47:23 +08:00
parent c869b41506
commit cb6b81e7b5
17 changed files with 1502 additions and 280 deletions

BIN
audio/skill/tongqu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/tongqu2.mp3 Normal file

Binary file not shown.

View File

@ -664,7 +664,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
player.updateMarks();
},
},
huogong2:{},
huogong2:{charlotte:true},
jiu:{
trigger:{player:'useCard1'},
filter:function(event){

View File

@ -644,7 +644,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},targets);
}
}
},
},/*
contentBefore:function(){
if(get.mode()=='guozhan'){
var evt=event.getParent();
@ -655,11 +655,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
evt.targets.push(player);
}
}
},
},*/
content:function(){
'step 0'
if(get.mode()!='guozhan'){
if(player==target) target.draw(game.players.length);
if(player==target) target.draw(game.filterPlayer().length);
else target.chooseDrawRecover(true);
event.finish();
}
@ -1830,8 +1830,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
lulitongxin_info:'出牌阶段,对所有大势力角色或所有小势力角色使用。若目标角色:不处于“连环状态”,其横置;处于“连环状态”,其摸一张牌',
lulitongxin_info_versus:'出牌阶段,对所有敌方角色或所有己方角色使用。若目标角色:为敌方角色且不处于“连环状态”,其横置;为己方角色且处于“连环状态”,其摸一张牌。',
lianjunshengyan:'联军盛宴',
lianjunshengyan_info:'出牌阶段,对你和你选择的除你的势力外的一个势力的所有角色。若目标角色为你你选择摸Y张牌并回复X-Y点体力X为该势力的角色数Y∈[0,X]);不为你,其摸一张牌,然后重置。',
lianjunshengyan_info_boss:'出牌阶段对场上所有角色使用。你摸X张牌X为存活角色数其他角色依次选择回复1点体力或摸一张牌。',
lianjunshengyan_info:'出牌阶段,对你和你选择的除你的势力外的一个势力的所有角色使用。若目标角色为你你选择摸Y张牌并回复X-Y点体力X为该势力的角色数Y∈[0,X]);不为你,其摸一张牌,然后重置。',
lianjunshengyan_info_boss:'出牌阶段对场上所有角色使用。你摸X张牌X为存活角色数其他角色依次选择回复1点体力或摸一张牌。',
chiling:'敕令',
chiling_info:'出牌阶段对所有没有势力的角色使用。目标角色选择一项1、明置一张武将牌然后摸一张牌2、弃置一张装备牌3、失去1点体力。当【敕令】因判定或弃置而置入弃牌堆时系统将之移出游戏并将【诏书】置于牌堆底然后系统于当前回合结束后视为对所有没有势力的角色使用【敕令】。',
diaohulishan:'调虎离山',

View File

@ -14900,7 +14900,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var switchToAuto=function(){
game.pause();
game.countChoose();
setTimeout(function(){
event.timeout=setTimeout(function(){
_status.imchoosing=false;
event._result={
bool:true,
@ -14947,6 +14947,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var skip=function(){
if(event.pingcai_delayed){
delete event.pingcai_delayed;
clearTimeout(event.timeout);
event._result={
bool:true,
};

View File

@ -272,6 +272,7 @@ window.noname_character_rank={
'ol_puyuan',
'ns_limi',
'jin_zhouchu',
'huojun',
'key_misuzu',
'key_sunohara',
'key_umi',
@ -810,6 +811,7 @@ window.noname_character_rank={
'niufu',
're_liufeng',
'huzhao',
'guanhai',
],
b:[
'diy_feishi',
@ -1406,6 +1408,7 @@ window.noname_character_rank={
'shen_sunquan',
'shen_machao',
'tw_shen_guanyu',
'huojun',
'key_tomoya',
'key_masato',
'key_shiorimiyuki',
@ -2023,6 +2026,7 @@ window.noname_character_rank={
'caoxiancaohua',
'huzhao',
're_liufeng',
'guanhai',
],
junk:[
'sunshao',

View File

@ -4045,8 +4045,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filter:function(event,player,name){
if(name=='damageEnd') return true;
if(!event.card) return false;
var evt=event.getParent();
return evt&&evt.card==event.card&&evt.type=='card'&&evt.targets&&evt.targets.length==1;
if(player.hasHistory('useSkill',function(evt){
return evt.skill=='gzquanji'&&evt.event.triggername==name;
})) return false;
return true;
},
content:function(){
'step 0'
@ -4104,7 +4106,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
result:{
target:function(player,target){
if(target!=player) return 0;
if(player.needsToDiscard()&&!player.getEquip('zhuge')&&!player.hasSkill('new_paoxiao')) return 0;
if(player.getExpansions('gzquanji').length<=1||(player.needsToDiscard()&&!player.getEquip('zhuge')&&!player.hasSkill('new_paoxiao'))) return 0;
return 1;
}
},
@ -4118,7 +4120,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var card=lib.skill.gzpaiyi_backup.card;
player.loseToDiscardpile(card);
"step 1"
target.draw(2);
var num=player.getExpansions('gzquanji').length;
if(num>0) target.draw(num);
"step 2"
if(target.countCards('h')>player.countCards('h')){
target.damage();
@ -12459,10 +12462,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xinjiefan:'解烦',
xinjiefan_info:'限定技出牌阶段你可以选择一名角色令攻击范围内含有该角色的所有角色依次选择一项1.弃置一张武器牌2.令其摸一张牌。然后若游戏轮数为1则你于此回合结束时恢复此技能。',
gzquanji:'权计',
gzquanji_info:'当你受到伤害后或当你使用牌指定唯一目标并对其造成伤害后,你可以摸一张牌,然后你将一张牌置于武将牌上,称为“权”;你的手牌上限+XX为“权”的数量。',
gzquanji_info:'每回合每项各限一次。当你受到伤害后或造成伤害后,你可以摸一张牌,然后你将一张牌置于武将牌上,称为“权”;你的手牌上限+XX为“权”的数量。',
gzpaiyi:'排异',
gzpaiyi_backup:'排异',
gzpaiyi_info:'出牌阶段限两次。你可以移去一张“权”,然后选择一名角色并令其摸两张牌。若其手牌数大于你则你对其造成1点伤害。',
gzpaiyi_info:'出牌阶段限一次。你可以移去一张“权”并选择一名角色。令其摸X张牌X为你的“权”数且至多为7。然后若其手牌数大于你则你对其造成1点伤害。',
ol_zhurong:'界祝融',
changbiao:'长标',
changbiao_info:'出牌阶段限一次你可以将任意张手牌当做【杀】使用无距离限制。若你因此【杀】对目标角色造成过伤害则你于出牌阶段结束时摸X张牌X为此【杀】对应的实体牌数量。',

View File

@ -10,7 +10,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_tianzhu:["wutugu","yanbaihu","shamoke","panfeng","zhugedan",'huangzu','gaogan',"tadun"],
sp_nvshi:["lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu','ol_xinxianying',"daxiaoqiao"],
sp_shaowei:["simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan','ol_puyuan'],
sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","fanjiangzhangda"],
sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","fanjiangzhangda","huojun"],
sp_liesi:['mizhu','weizi'],
sp_default:["sp_diaochan","sp_zhaoyun","sp_sunshangxiang","sp_caoren","sp_jiangwei","sp_machao","sp_caiwenji","jsp_guanyu","jsp_huangyueying","sp_pangde","sp_jiaxu","yuanshu",'sp_zhangliao','sp_ol_zhanghe','sp_menghuo'],
sp_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv','jin_zhouchu'],
@ -28,6 +28,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
huojun:['male','shu',4,['qiongshou','fenrui']],
caoxiancaohua:['female','qun',3,['huamu','qianmeng','liangyuan','jisi']],
jin_zhouchu:['male','jin',4,['shanduan','yilie']],
zhaoyǎn:['male','wei',4,['tongxie']],
@ -649,6 +650,117 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//霍峻
qiongshou:{
audio:2,
trigger:{
player:'enterGame',
global:'phaseBefore',
},
forced:true,
filter:function(event,player){
if(event.name=='phase'&&game.phaseNumber!=0) return false;
return player.countDisabled()<5;
},
content:function(){
for(var i=1;i<6;i++){
if(!player.isDisabled(i)) player.disableEquip(i);
}
player.draw(4);
},
mod:{
maxHandcard:function(player,num){
return num+4;
},
},
ai:{
halfneg:true,
combo:'fenrui',
threaten:3.2,
},
},
fenrui:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
direct:true,
onremove:true,
filter:function(event,player){
var es=player.countCards('e');
return (player.countDisabled()>0&&player.countCards('he')>0)||(!player.storage.fenrui&&game.hasPlayer(function(current){
return current!=player&&current.countCards('e')<es;
}));
},
content:function(){
'step 0'
if(player.countDisabled()>0&&player.countCards('he')>0){
var str='弃置一张牌,恢复一个装备栏并使用一张对应装备牌';
player.chooseToDiscard('he',get.prompt('fenrui'),str).set('ai',function(card){
return 7-get.value(card);
}).logSkill='fenrui';
}
else event.goto(3);
'step 1'
if(result.bool){
player.chooseToEnable().set('ai',function(){
var player=_status.event.player;
var list=[2,5,1,3,4];
for(var i of list){
if(player.isDisabled(i)) return 'equip'+i;
}
});
}
else{
var es=player.countCards('e');
if(player.storage.fenrui||!game.hasPlayer(function(current){
return current!=player&&current.countCards('e')<es;
})) event.finish();
else event.goto(3);
}
'step 2'
var func=function(card){
return get.subtype(card,false)==result.control&&player.canUse(card,player)&&!get.cardtag(card,'gifts');
};
var card=get.discardPile(func)||get.cardPile2(func);
if(card){
player.chooseUseTarget(card,true,'nopopup');
}
if(player.storage.fenrui) event.finish();
'step 3'
var es=player.countCards('e');
if(es>0&&game.hasPlayer(function(current){
return current!=player&&current.countCards('e')<es;
})){
player.chooseTarget('是否对一名装备数小于你的角色造成伤害?','你可以选择一名装备区内牌数小于你的角色并对其造成X点伤害X为你与其装备区牌数之差但此效果每局游戏内仅限一次。',function(card,player,target){
return player!=target&&player.countCards('e')>target.countCards('e');
}).set('ai',function(target){
var player=_status.event.player;
var num=player.countCards('h')-target.countCards('h');
if(get.attitude(player,target)>=0) return 0;
if(num>=Math.min(2,player.hp,target.hp)) return get.damageEffect(target,player,player);
return 0;
});
}
else event.finish();
'step 4'
if(result.bool){
var target=result.targets[0];
player.logSkill('fenrui_animate',target);
player.storage.fenrui=true;
player.unmarkSkill('fenrui');
game.delayx();
target.damage(player.countCards('e')-target.countCards('e'));
}
},
group:'fenrui_animate',
mark:true,
intro:{content:'王炸尚未使用'},
subSkill:{
animate:{
skillAnimation:true,
animationColor:'fire',
},
},
},
//曹宪曹华
huamu:{
audio:2,
@ -9267,23 +9379,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
logTarget:function(){
return _status.currentPhase;
},
preHidden:true,
content:function(){
"step 0"
event.count=trigger.num;
"step 1"
event.count--;
var source=_status.currentPhase;
if(source.hasSkill('rehengjiang2')){
source.storage.rehengjiang2++;
source.storage.rehengjiang3.push(player);
source.storage.rehengjiang3.sortBySeat(source);
source.updateMarks();
}
else{
source.storage.rehengjiang3=[player];
source.storage.rehengjiang2=1;
source.addTempSkill('rehengjiang2');
}
source.addTempSkill('rehengjiang2');
source.addMark('rehengjiang2',1,false);
player.addTempSkill('rehengjiang3');
"step 2"
if(event.count){
player.chooseBool(get.prompt2('rehengjiang',_status.currentPhase)).set('ai',function(){
@ -9305,6 +9410,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
rehengjiang2:{
mark:true,
charlotte:true,
onremove:true,
intro:{
content:'手牌上限-#'
},
@ -9313,34 +9419,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return num-player.storage.rehengjiang2;
}
},
onremove:function(player){
delete player.storage.rehengjiang2;
delete player.storage.rehengjiang3;
},
trigger:{player:'phaseDiscardEnd'},
filter:function(event,player){
if(event.cards&&event.cards.length) return false;
var players=player.storage.rehengjiang3;
for(var i=0;i<players.length;i++){
if(players[i].isIn()) return true;
}
return false;
},
},
rehengjiang3:{
audio:'hengjiang',
trigger:{global:'phaseEnd'},
forced:true,
popup:false,
charlotte:true,
filter:function(event,player){
if(!event.player.countMark('rehengjiang2')) return false;
if(event.player.hasHistory('lose',function(evt){
return evt.type=='discard'&&evt.cards2.length>0&&evt.getParent('phaseDiscard').player==event.player;
})) return false;
return true;
},
logTarget:'player',
content:function(){
var players=player.storage.rehengjiang3;
var list=[];
for(var i=0;i<players.length;i++){
if(!list.contains(players[i])&&players[i].isIn()){
list.push(players[i])
players[i].logSkill('rehengjiang',player);
}
}
game.asyncDraw(list,function(target){
return get.numOf(players,target);
});
}
var num=player.getHistory('useSkill',function(evt){
return evt.skill=='rehengjiang'&&evt.targets.contains(trigger.player);
}).length;
if(num>0) player.draw(num);
},
},
shuangren:{
trigger:{player:'phaseUseBegin'},
@ -15545,7 +15643,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
check:function(event,player){
var num=game.countPlayer(function(current){
if(current.isLinked()&&current.countCards('he')){
return get.attitude(player,current);
return get.effect(current,{name:'guohe_copy2'},player,player);
}
});
return num<0;
@ -15589,13 +15687,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:'phaseUse',
usable:1,
audio:2,
filter:function(event,player){
return !player.isLinked()&&game.hasPlayer(function(current){
return current!=player&&current.isLinked();
})
},
filterTarget:function(card,player,target){
return player!=target&&!target.isLinked();
},
selectTarget:function(){
return [1,Math.max(1,_status.event.player.getDamagedHp())];
},
content:function(){
"step 0"
if(!target.isLinked()) target.link();
"step 1"
},
contentAfter:function(){
if(!player.isLinked()) player.link();
},
ai:{
@ -18460,6 +18566,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
huangchengyan:['huangchengyan','dc_huangchengyan'],
puyuan:['puyuan','ol_puyuan'],
huangzu:['dc_huangzu','huangzu'],
huojun:['huojun','tw_huojun'],
},
translate:{
"xinfu_lingren":"凌人",
@ -18783,6 +18890,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
hengjiang_info:'当你受到1点伤害后你可以令当前回合角色本回合的手牌上限-1。然后若其弃牌阶段内没有弃牌则你摸一张牌。',
rehengjiang:'横江',
rehengjiang2:'横江',
rehengjiang3:'横江',
rehengjiang_info:'当你受到1点伤害后你可以令当前回合角色本回合的手牌上限-1。然后若其弃牌阶段内没有弃牌则你摸X张牌X为你本回合内对其发动过〖横江〗的次数。',
shuangren:'双刃',
shuangren_info:'出牌阶段开始时,你可以与一名角色拼点。若你赢,你视为对其或与其势力相同的另一名角色使用一张【杀】(不计入出牌阶段的次数限制);若你没赢,你本回合内不能对其他角色使用牌。',
@ -19127,7 +19235,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yongjue_info:'每回合限一次。当其他角色于回合内使用的【杀】结算完成后,若你不是此【杀】的目标角色,则你可以获得之。',
guixiu_info:'当你成为【杀】的目标后,若你的手牌数小于体力值,则你可以摸一张牌。',
fenming_info:'结束阶段开始时,若你处于横置状态,你可以弃置所有处于横置状态的角色的各一张牌。',
duanxie_info:'出牌阶段限一次,你可以令一名其他角色横置,若如此做,你横置。',
duanxie_info:'出牌阶段限一次,你可以令至多X名其他角色横置X为你已损失的体力值且至少为1然后你横置。',
xiaoguo_info:'其他角色的结束阶段开始时你可以弃置一张基本牌令该角色选择一项1.弃置一张装备牌然后你摸一张牌2.受到你对其造成的1点伤害。',
sijian_info:'当你失去最后的手牌时,你可以弃置一名其他角色的一张牌。',
suishi_info:'当其他角色进入濒死状态时伤害来源可以令你摸一张牌当其他角色死亡时伤害来源可以令你失去1点体力',
@ -19431,6 +19539,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
liangyuan_info:'每轮每项各限一次。你可以将场上所有的“灵杉”/“玉树”置于处理区,然后将这些牌当做【酒】/【桃】使用。',
jisi:'羁肆',
jisi_info:'限定技。准备阶段,你可以令一名其他角色获得你武将牌上的一个已发动过的其他技能。然后你弃置所有手牌,并视为对其使用一张【杀】(无距离关系的限制)。',
huojun:'霍峻',
qiongshou:'穷守',
qiongshou_info:'锁定技。①游戏开始时,你废除所有装备栏并摸四张牌。②你的手牌上限+4。',
fenrui:'奋锐',
fenrui_info:'结束阶段你可以弃置一张牌并恢复一个装备栏。系统检索一张对应的装备牌你使用之。然后你可以选择一名装备区内牌数小于你的其他角色对其造成X点伤害X为你与其装备区内的牌数之差且每局限一次。',
sp_tianji:'天极·皇室宗亲',
sp_sibi:'四弼·辅国文曲',

View File

@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sp2',
connect:true,
character:{
guanhai:['male','qun',4,['suoliang','qinbao']],
huzhao:['male','wei',3,['midu','xianwang']],
niufu:['male','qun','4/7',['dcxiaoxi','xiongrao']],
bianxi:['male','wei',4,['dunxi']],
@ -178,6 +179,65 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
skill:{
//管亥
suoliang:{
audio:2,
trigger:{source:'damageSource'},
logTarget:'player',
usable:1,
filter:function(event,player){
return event.player!=player&&event.player.maxHp>0&&event.player.countCards('he')>0;
},
check:function(event,player){
return get.attitude(player,event.player)<=0;
},
content:function(){
'step 0'
var target=trigger.player;
event.target=target;
player.choosePlayerCard(target,true,'he',[1,target.maxHp],'选择'+get.translation(target)+'的至多'+get.cnNumber(target.maxHp)+'张牌');
'step 1'
if(result.bool){
var cards=result.cards.filter(function(card){
var suit=get.suit(card,target);
if(suit!='heart'&&suit!='club') return false;
return lib.filter.canBeGained(card,target,player)
});
if(cards.length) player.gain(cards,target,'giveAuto','bySelf');
else{
var cards=result.cards.filter(function(card){
return lib.filter.canBeDiscarded(card,target,player)
});
if(cards.length) target.discard(cards,'notBySelf');
}
}
},
},
qinbao:{
audio:2,
trigger:{player:'useCard'},
forced:true,
filter:function(event,player){
return (event.card.name=='sha'||get.type(event.card,null,false)=='trick')&&game.hasPlayer(function(current){
return current!=player&&current.countCards('h')>=player.countCards('h');
});
},
content:function(){
var hs=player.countCards('h');
trigger.directHit.addArray(game.filterPlayer(function(current){
return current!=player&&current.countCards('h')>=hs;
}));
},
ai:{
threaten:1.4,
directHit_ai:true,
skillTagFilter:function(player,tag,arg){
return player.countCards('h',function(card){
return !ui.selected.cards.contains(card);
})<=arg.target.countCards('h');
},
},
},
//胡昭
midu:{
audio:2,
@ -661,9 +721,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
order:1,
result:{
target:function(player,target){
player:function(player,target){
var eff=get.recoverEffect(target,player,player);
if(target.getDamagedHp()>1) eff+=get.effect(target,{name:'wuzhong'},player,target)/2;
if(target.getDamagedHp()>1) eff+=get.effect(target,{name:'wuzhong'},player,player)/2;
return eff;
},
},
@ -714,21 +774,54 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
subSkill:{
gain:{
trigger:{global:'loseAfter'},
trigger:{global:['loseAfter','cardsDiscardAfter']},
forced:true,
logTarget:'player',
logTarget:()=>_status.currentPhase,
filter:function(event,player){
if(event.type!='discard'||event.player!=_status.currentPhase) return false;
var current=_status.currentPhase;
if(!current) return false;
if(event.name=='cardsDiscard'){
var evtx=event.getParent();
if(evtx.name!='orderingDiscard') return false;
var evtx2=(evtx.relatedEvent||evtx.getParent());
return current.hasHistory('lose',function(evtx3){
var evtx4=evtx3.relatedEvent||evtx3.getParent();
if(evtx2!=evtx4) return false;
for(var i in evtx3.gaintag_map){
if(evtx3.gaintag_map[i].contains('dcliuzhuan_tag')) return true;
}
});
}
if(event.player!=current||event.position!=ui.discardPile) return false;
for(var i in event.gaintag_map){
if(event.gaintag_map[i].contains('dcliuzhuan_tag')) return true;
}
return false;
},
content:function(){
var cards=trigger.hs.filter(function(i){
return trigger.gaintag_map[i.cardid]&&trigger.gaintag_map[i.cardid].contains('dcliuzhuan_tag');
var cards,current=_status.currentPhase;
if(trigger.name=='lose') cards=trigger.hs.filter(function(i){
return trigger.gaintag_map[i.cardid]&&trigger.gaintag_map[i.cardid].contains('dcliuzhuan_tag')&&get.position(i,true)=='d';
});
if(cards.length>0) player.gain(cards,'gain2');
else{
var evtx=trigger.getParent();;
var evtx2=(evtx.relatedEvent||evtx.getParent());
var bool=false;
var history=current.getHistory('lose',function(evtx3){
var evtx4=evtx3.relatedEvent||evtx3.getParent();
if(evtx2!=evtx4) return false;
for(var i in evtx3.gaintag_map){
if(evtx3.gaintag_map[i].contains('dcliuzhuan_tag')) return true;
}
});
cards=trigger.cards.filter(function(i){
for(var evt of history){
if(evt.gaintag_map[i.cardid]&&evt.gaintag_map[i.cardid].contains('dcliuzhuan_tag')&&get.position(i,true)=='d') return true;
}
return false;
});
}
if(cards&&cards.length>0) player.gain(cards,'gain2');
},
},
mark:{
@ -2417,7 +2510,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 2'
player.addToExpansion(result.cards,target,'give').gaintag.add('yuanyu');
'step 3'
if(event.count>0&&target.countCards('he')>0&&player.hasSkill('yuanyu_damage')) event.goto(1);
if(event.count>0&&target.countCards('h')>0&&player.hasSkill('yuanyu_damage')) event.goto(1);
},
},
},
@ -17214,6 +17307,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
bianxi:'小说《三国演义》里的人物。汜水关守将,并州人氏。原是黄巾余党,后投曹操,拨来守汜水关。善使流星锤。在镇国寺设下伏兵欲谋害千里寻兄的关羽,但是寺中僧人普净暗示加以解救。最后被关羽斩杀。',
niufu:'牛辅,东汉末年武将,东汉相国董卓的女婿。曾任中郎将,征讨白波军,不能取胜。董卓被杀时,牛辅别屯于陕地。吕布派李肃前去征讨牛辅,被牛辅击败。后来,牛辅营中有士兵半夜背叛出逃,造成内乱,牛辅以为整营皆叛,于是带着金银珠宝,独与亲信胡赤儿等五六人逾城北渡河。赤儿等人以绳索系在牛辅腰间将其从城头放下,但赤儿等因为谋财而在离地面数丈高的地方就松开了绳子使得牛辅重重摔在地上腰部受伤,而后赤儿与诸胡人将牛辅斩首,将其首级送去长安。',
huzhao:'胡昭162年250年字孔明颍川治今河南禹州人。汉末三国时期隐士、书法家。胡昭善长隶书与钟繇、邯郸淳、卫觊、韦诞齐名。有“钟氏小巧胡氏豪放”之说世人并称“钟胡”。',
guanhai:'管亥(生卒年不详),青州黄巾军渠帅,率军侵略北海,围北海相孔融于都昌。孔融派遣太史慈突围而出,前往平原向刘备求援,刘备率军来到,击退管亥。《三国演义》中管亥在单挑中为关羽斩杀。',
},
characterTitle:{
wulan:'#b对决限定武将',
@ -18172,7 +18266,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dczhubi_info:'当有♦牌因弃置而进入弃牌堆后,你可以令系统从牌堆/弃牌堆中检索一张【无中生有】,并将此牌置于牌堆顶。',
dcliuzhuan:'流转',
dcliuzhuan_tag:'转',
dcliuzhuan_info:'锁定技。①其他角色于其回合内不于摸牌阶段而获得的牌称为“转”。②你不能成为实体牌中包含“转”的牌的目标。③当有“转”因弃置而进入弃牌堆后,你获得之。',
dcliuzhuan_info:'锁定技。①其他角色于其回合内不于摸牌阶段而获得的牌称为“转”。②你不能成为实体牌中包含“转”的牌的目标。③当有“转”直接进入弃牌堆或经由处理区进入弃牌堆后,你获得之。',
xiahoulingnv:'夏侯令女',
fuping:'浮萍',
fuping_info:'①其他角色对你使用的结算结束后,若你未因此技能记录过此牌的名称且你有未废除的装备栏,则你可以废除一个装备栏,记录此牌的名称。②每回合每种牌名限一次。你可以将一张非基本牌当做〖浮萍①〗记录过的基本牌或锦囊牌使用或打出。③若你的所有装备栏均已被废除,则你使用牌无距离限制。',
@ -18191,6 +18285,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
midu_info:'出牌阶段限一次。你可以选择一项:⒈废除任意个装备栏,并令一名角色摸等量的牌。⒉恢复一个已经被废除的装备栏,然后你获得〖活墨〗直到下回合开始。',
xianwang:'贤望',
xianwang_info:'锁定技。若你有被废除的装备栏,则其他角色至你的距离+1若废除的装备栏数大于2则改为距离+2。',
guanhai:'管亥',
suoliang:'索粮',
suoliang_info:'每回合限一次。当你对其他角色造成伤害后你可以选择其的至多X张牌X为其体力上限且至多为5。若这些牌中有♥或♣牌则你获得这些牌否则你弃置这些牌。',
qinbao:'侵暴',
qinbao_info:'锁定技。当你使用【杀】或普通锦囊牌时,你令所有手牌数不小于你的角色不能响应此牌。',
sp_whlw:"文和乱武",
sp_zlzy:"逐鹿中原",

View File

@ -380,7 +380,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'bingyi',
trigger:{player:'loseAfter'},
filter:function(event,player){
return event.type=='discard'&&player.countCards('h')>0&&!player.hasSkill('olbingyi_blocker',null,null,false);
return event.type=='discard'&&event.cards2.length>0&&player.countCards('h')>0&&!player.hasSkill('olbingyi_blocker',null,null,false);
},
prompt2:function(event,player){
var str='展示所有手牌,然后',hs=player.getCards('h');
@ -3002,6 +3002,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
markcount:'expansion',
},
frequent:true,
locked:false,
content:function(){
player.addToExpansion(get.cards(),'gain2').gaintag.add('bizhuan');
},
@ -3912,7 +3913,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
else{
if(event.num1<event.num1){
if(event.num1<event.num2){
return !get.owner(event.card1);
}
else{

View File

@ -783,12 +783,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
trigger:{player:'phaseZhunbeiBegin'},
direct:true,
preHidden:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt('qimei'),'选择一名其他角色并获得“齐眉”效果',lib.filter.notMe).set('',function(target){
player.chooseTarget(get.prompt('qimei'),'选择一名其他角色并获得“齐眉”效果',lib.filter.notMe).set('ai',function(target){
var player=_status.event.player;
return get.attitude(player,target)/(Math.abs(player.countCards('h')+2-target.countCards('h'))+1)
});
}).setHiddenSkill('qimei');
'step 1'
if(result.bool){
var target=result.targets[0];
@ -858,6 +859,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
trigger:{player:'phaseUseBegin'},
direct:true,
preHidden:true,
content:function(){
'step 0'
var list=['摸两张牌并于出牌阶段结束时失去1点体力'];
@ -866,7 +868,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var player=_status.event.player;
if(player.isDamaged()&&player.countCards('h','tao')<player.getDamagedHp()) return 1;
return 'cancel2';
});
}).setHiddenSkill('ybzhuiji');
'step 1'
if(result.control!='cancel2'){
if(result.index==0) player.draw(2);
@ -910,6 +912,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
return false;
},
preHidden:true,
content:function(){
'step 0'
var prompt2='为'+get.translation(trigger.card)+'增加一个目标'
@ -920,7 +923,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var trigger=_status.event.getTrigger();
var player=_status.event.source;
return get.effect(target,trigger.card,player,_status.event.player);
}).set('targets',trigger.targets).set('card',trigger.card).set('source',trigger.player);
}).set('targets',trigger.targets).set('card',trigger.card).set('source',trigger.player).setHiddenSkill(event.name);
'step 1'
if(result.bool){
if(!event.isMine()&&!event.isOnline()) game.delayx();
@ -931,7 +934,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
'step 2'
if(event.targets){
player.logSkill('canmou',event.targets);
player.logSkill(event.name,event.targets);
trigger.targets.addArray(event.targets);
game.log(event.targets,'也成为了',trigger.card,'的目标');
}
@ -948,6 +951,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
check:function(event,player){
return get.effect(player,event.card,event.player,player)>0;
},
preHidden:true,
content:function(){
trigger.targets.push(player);
game.log(player,'也成为了',trigger.card,'的目标');
@ -3173,7 +3177,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
pozhu:{
enable:'phaseUse',
viewAsFilter:function(player){
return !player.hasSkill('pozhu3')&&player.countCards('hs')>0;
return !player.hasSkill('pozhu3',null,null,false)&&player.countCards('hs')>0;
},
viewAs:{name:'chuqibuyi'},
filterCard:true,
@ -3195,7 +3199,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.addTempSkill('pozhu3');
},
},
pozhu3:{},
pozhu3:{charlotte:true},
xijue:{
audio:2,
trigger:{
@ -3488,7 +3492,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
characterFilter:{},
dynamicTranslate:{},
perfectPair:{
jin_simayi:['jin_zhangchunhua','shibao'],
jin_simayi:['jin_zhangchunhua','shibao','duyu'],
jin_simazhao:['jin_wangyuanji'],
jin_simashi:['jin_xiahouhui','jin_yanghuiyu'],
},

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.116.2',
'v1.9.116.3',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -5070,6 +5070,8 @@ window.noname_asset_list=[
'image/card/zhuangshu_trick.png',
'image/card/zhuangshu_equip.png',
'image/character/guanhai.jpg',
'image/character/huojun.jpg',
'image/character/bianxi.jpg',
'image/character/huzhao.jpg',
'image/character/niufu.jpg',

View File

@ -1,5 +1,9 @@
"use strict";
(function(){
if(!localStorage.getItem('noname_alerted')){
localStorage.setItem('noname_alerted',true);
alert('无名杀官方发布地址仅有GitHub仓库\n其他所有的所谓“无名杀”社群包括但不限于绝大多数“官方”QQ群、QQ频道等均为粉丝自发组织与无名杀官方无关');
}
var _status={
paused:false,
paused2:false,
@ -2827,7 +2831,7 @@
node.style.fontFamily=link;
}
else{
node.style.fontFamily="'STHeiti','SimHei','Microsoft JhengHei','Microsoft YaHei','WenQuanYi Micro Hei',Helvetica,Arial,sans-serif";
node.style.fontFamily="'STHeiti','SimHei','Microsoft JhengHei','Microsoft YaHei','WenQuanYi Micro Hei','Suits',Helvetica,Arial,sans-serif";
}
node.style.fontSize='20px';
},
@ -6665,6 +6669,7 @@
globalId:0,
},
help:{
'关于游戏':'<div style="margin:10px">关于无名杀</div><ul style="margin-top:0"><li>无名杀官方发布地址仅有GitHub仓库<br><a href="https://github.com/libccy/noname">点击前往Github仓库</a><br><li>其他所有的所谓“无名杀”社群包括但不限于绝大多数“官方”QQ群、QQ频道等均为粉丝自发组织与无名杀官方无关',
'游戏操作':'<ul><li>长按/鼠标悬停/右键单击显示信息。<li>触屏模式中,双指点击切换暂停;下划显示菜单,上划切换托管。<li>键盘快捷键<br>'+
'<table><tr><td>A<td>切换托管<tr><td>W<td>切换不询问无懈<tr><td>空格<td>暂停</table><li>编辑牌堆<br>在卡牌包中修改牌堆后,将自动创建一个临时牌堆,在所有模式中共用,当保存当前牌堆后,临时牌堆被清除。每个模式可设置不同的已保存牌堆,设置的牌堆优先级大于临时牌堆。</ul>',
'游戏命令':'<div style="margin:10px">变量名</div><ul style="margin-top:0"><li>场上角色<br>game.players<li>阵亡角色<br>game.dead'+
@ -7594,6 +7599,7 @@
lib.configMenu.appearence.config.cardtext_font.item[i]=pack.font[i];
lib.configMenu.appearence.config.global_font.item[i]=pack.font[i];
ui.css.fontsheet.sheet.insertRule("@font-face {font-family: '"+i+"'; src: url('"+lib.assetURL+"font/"+i+".ttf');}",0);
if(lib.config.suits_font) ui.css.fontsheet.sheet.insertRule("@font-face {font-family: '"+i+"'; src: url('"+lib.assetURL+"font/suits.ttf');}",0);
}
if(lib.config.suits_font) ui.css.fontsheet.sheet.insertRule("@font-face {font-family: 'Suits'; src: url('"+lib.assetURL+"font/suits.ttf');}",0);
lib.configMenu.appearence.config.cardtext_font.item.default='默认';
@ -7660,9 +7666,10 @@
}
var alerted=false;
for(var i=0;i<lib.config.extensions.length;i++){
if(!alerted&&window.bannedExtensions.contains(lib.config.extensions[i])){
if(window.bannedExtensions.contains(lib.config.extensions[i])){
//if(!alerted) alert('读取某些扩展时出现问题。');
alerted=true;
alert('读取某些扩展时出现问题。');
continue;
}
var extcontent=localStorage.getItem(lib.configprefix+'extension_'+lib.config.extensions[i]);
if(extcontent){
@ -7686,9 +7693,10 @@
if(lib.config.mode!='connect'||(!localStorage.getItem(lib.configprefix+'directstart')&&show_splash)){
var alerted=false;
for(var i=0;i<lib.config.extensions.length;i++){
if(!alerted&&window.bannedExtensions.contains(lib.config.extensions[i])){
if(window.bannedExtensions.contains(lib.config.extensions[i])){
//if(!alerted) alert('读取某些扩展时出现问题。');
alerted=true;
alert('读取某些扩展时出现问题。');
continue;
}
game.import('extension',{name:lib.config.extensions[i]});
}
@ -7762,7 +7770,17 @@
loadPack();
}
}
//读取扩展
var alerted=false;
for(var i=0;i<extensionlist.length;i++){
if(window.bannedExtensions.contains(extensionlist[i])){
alerted=true;
extToLoad--;
if(extToLoad==0){
loadPack();
}
continue;
}
lib.init.js(lib.assetURL+'extension/'+extensionlist[i],'extension',extLoaded,(function(i){
return function(){
game.removeExtension(i);
@ -10657,6 +10675,9 @@
if(ui.confirm) ui.confirm.close();
game.resume();
_status.imchoosing=false;
setTimeout(function(){
ui.arena.classList.remove('choose-to-move');
},500);
};
event.dialog.classList.add('scroll1');
event.dialog.classList.add('scroll2');
@ -11123,8 +11144,11 @@
list.push('equip'+i);
}
if(!list.length) event.finish();
else{
else if(list.length==1){
event.list=list;
event._result={control:list[0]};
}
else{
var next=player.chooseControl(list);
next.set('prompt','请选择恢复一个装备栏');
if(!event.ai) event.ai=function(event,player,list){
@ -11149,6 +11173,10 @@
list.push('equip'+i);
}
if(!list.length) event.finish();
else if(list.length==1){
event.list=list;
event._result={control:list[0]};
}
else{
event.list=list;
var next=player.chooseControl(list);
@ -16870,14 +16898,13 @@
delete player.equiping;
return;
}
if(lib.config.background_audio){
game.playAudio('effect',get.subtype(card));
}
game.broadcast(function(type){
var subtype=get.subtype(card);
if(subtype=='equip6') subtype='equip3';
game.broadcastAll(function(type){
if(lib.config.background_audio){
game.playAudio('effect',type);
}
},get.subtype(card));
},subtype);
player.$equip(card);
game.addVideo('equip',player,get.cardInfo(card));
game.log(player,'装备了',card);
@ -19570,6 +19597,7 @@
if(card.name=='du') addi-=3;
var source=_status.event.source;
var player=_status.event.player;
var event=_status.event.getParent();
var getn=function(card){
if(player.hasSkill('tianbian')&&get.suit(card)=='heart') return 13*(event.small?-1:1);
return get.number(card)*(event.small?-1:1);
@ -36648,7 +36676,7 @@
roundNumber:0,
shuffleNumber:0,
};
window['b'+'ann'+'e'+'dE'+'x'+'ten'+'s'+'i'+'o'+'ns']=[];
window['b'+'ann'+'e'+'dE'+'x'+'ten'+'s'+'i'+'o'+'ns']=['\u4fa0\u4e49','\u5168\u6559\u7a0b'];
var ui={
updates:[],
thrown:[],
@ -52511,7 +52539,7 @@
},
position:function(card,ordering){
if(get.itemtype(card)=='player') return parseInt(card.dataset.position);
if(card.timeout&&card.destiny){
if(card.timeout&&card.destiny&&card.destiny.classList){
if(card.destiny.classList.contains('equips')) return 'e';
if(card.destiny.classList.contains('judges')) return 'j';
if(card.destiny.classList.contains('expansions')) return 'x';
@ -52522,7 +52550,7 @@
if(card.destiny.id=='ordering') return ordering?'o':'d';
return null;
}
if(!card.parentNode) return;
if(!card.parentNode||!card.parentNode.classList) return;
if(card.parentNode.classList.contains('equips')) return 'e';
if(card.parentNode.classList.contains('judges')) return 'j';
if(card.parentNode.classList.contains('expansions')) return 'x';
@ -52966,8 +52994,8 @@
var func;
if(sort=='type_sort'){
func=function(card){
var type=get.type(card);
var subtype=get.subtype(card);
var type=get.type(card,null,false);
var subtype=get.subtype(card,false);
if(lib.cardType[subtype]){
return lib.cardType[subtype];
}

View File

@ -1,14 +1,15 @@
window.noname_update={
version:'1.9.116.2',
update:'1.9.116.1',
version:'1.9.116.3',
update:'1.9.116.2',
changeLog:[
'十周年卞喜、胡昭、牛辅、界刘封、界SP太史慈',
'技能调整与bug修复',
'OL霍峻十周年管亥',
'国战模式晋武将更新与技能调整',
'其他技能调整和bug修复',
],
files:[
//'card/extra.js',
'card/extra.js',
//'card/gujian.js',
//'card/guozhan.js',
'card/guozhan.js',
//'card/gwent.js',
//'card/huanlekapai.js',
//'card/mtg.js',
@ -31,8 +32,8 @@ window.noname_update={
//'character/offline.js',
//'character/old.js',
//'character/ow.js',
//'character/rank.js',
//'character/refresh.js',
'character/rank.js',
'character/refresh.js',
//'character/sb.js',
//'character/shenhua.js',
'character/sp.js',
@ -42,24 +43,24 @@ window.noname_update={
//'character/swd.js',
//'character/xianjian.js',
//'character/xinghuoliaoyuan.js',
//'character/yingbian.js',
//'character/yijiang.js',
'character/yingbian.js',
'character/yijiang.js',
//'character/yxs.js',
//'extension/boss/extension.js',
//'font/suits.ttf',
'layout/default/layout.css',
//'layout/default/layout.css',
//'layout/default/menu.css',
'layout/long2/layout.css',
//'layout/long2/layout.css',
//'layout/mobile/equip.css',
'layout/mobile/layout.css',
'layout/newlayout/global.css',
'layout/nova/layout.css',
//'layout/mobile/layout.css',
//'layout/newlayout/global.css',
//'layout/nova/layout.css',
//'mode/boss.js',
//'mode/brawl.js',
//'mode/chess.js',
//'mode/connect.js',
//'mode/doudizhu.js',
//'mode/guozhan.js',
'mode/guozhan.js',
//'mode/identity.js',
//'mode/single.js',
//'mode/stone.js',

BIN
image/character/guanhai.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
image/character/huojun.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

File diff suppressed because it is too large Load Diff