Satou Hina

This commit is contained in:
Spmario233 2021-10-20 22:12:24 +08:00
parent b757ac0563
commit 49c65b447f
21 changed files with 484 additions and 229 deletions

BIN
audio/die/ol_dengzhi.mp3 Normal file

Binary file not shown.

BIN
audio/die/xin_caozhen.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/olsujian1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olsujian2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olxiuhao1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olxiuhao2.mp3 Normal file

Binary file not shown.

View File

@ -835,6 +835,14 @@ game.import('card',function(lib,game,ui,get,ai,_status){
type:"equip",
subtype:"equip2",
skills:['huxinjing'],
filterTarget:function(card,player,target){
if(get.mode()!='guozhan') return true;
return player==target;
},
selectTarget:function(){
return get.mode()=='guozhan'?-1:1;
},
toself:false,
ai:{
basic:{
equipValue:6
@ -1739,6 +1747,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
target:player,
card:event.card
})) return false;
if(get.mode()!='guozhan'&&event.num>1) return true;
return event.num>=player.hp;
},
content:function(){
@ -1747,20 +1756,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
if(e2){
player.discard(e2);
}
}
},
huxinjing2:{
equipSkill:true,
trigger:{player:['damageEnd','damageZero']},
//priority:10,
forced:true,
popup:false,
content:function(){
var card=player.getEquip('huxinjing');
if(card){
player.discard(card);
}
player.removeSkill('huxinjing2');
player.removeSkill('huxinjing');
}
},
wuliu_skill:{
@ -1886,7 +1882,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
jingfanma_info:'你的进攻距离+1',
huxinjing_bg:'镜',
huxinjing:'护心镜',
huxinjing_info:'当你受到伤害时,若伤害值大于或等于你的体力值,则你可以将【护心镜】置入弃牌堆,然后防止此伤害。',
huxinjing_info:'此牌可对其他角色使用。当你受到伤害时若伤害值大于1或大于等于你的体力值则你可以将【护心镜】置入弃牌堆然后防止此伤害。',
huxinjing_info_guozhan:'当你受到伤害时,若伤害值大于或等于你的体力值,则你可以将【护心镜】置入弃牌堆,然后防止此伤害。',
gz_haolingtianxia:'号令天下',
gz_haolingtianxia_info:'出牌阶段,对一名体力值不为全场最少的角色使用。所有其他角色依次选择一项:①弃置一张牌(魏势力角色无需弃牌),视为对目标角色使用一张【杀】;②弃置目标角色的一张牌(魏势力角色改为获得其一张牌)。',
gz_kefuzhongyuan:'克复中原',

View File

@ -115,6 +115,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
event.yingbian_addTarget=true;
}
},
yingbian_tags:['hit','damage','add'],
filterTarget:function(card,player,target){return player!=target},
content:function(){
"step 0"
@ -340,6 +341,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}
return str;
},
yingbian_tags:['gain','draw'],
yingbian:function(event){
var bool=false;
if(get.cardtag(event.card,'yingbian_damage')){
@ -829,6 +831,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
cardcolor:'red',
reverseOrder:true,
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌减少一个目标',
yingbian_tags:['remove'],
yingbian:function(event){
event.yingbian_removeTarget=true;
},
@ -868,6 +871,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
enable:true,
selectTarget:-1,
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌减少一个目标',
yingbian_tags:['remove'],
yingbian:function(event){
event.yingbian_removeTarget=true;
},
@ -944,6 +948,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
selectTarget:-1,
reverseOrder:true,
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌减少一个目标',
yingbian_tags:['remove'],
yingbian:function(event){
event.yingbian_removeTarget=true;
},
@ -1061,6 +1066,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
type:'trick',
enable:true,
yingbian_prompt:'你令此牌不可被响应',
yingbian_tags:['hit'],
yingbian:function(event){
event.directHit.addArray(game.players);
},
@ -1362,6 +1368,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return target.countDiscardableCards(player,get.is.single()?'he':'hej');
},
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌增加一个目标',
yingbian_tags:['add'],
yingbian:function(event){
event.yingbian_addTarget=true;
},
@ -1596,12 +1603,13 @@ game.import('card',function(lib,game,ui,get,ai,_status){
expose:0.2
},
notarget:true,
yingbian_tags:['gain','draw'],
yingbian_prompt:function(card){
if(!get.cardtag(card,'yingbian_gain')) return '当你声明使用此牌时,你摸一张牌';
return '当此牌生效后,你获得此牌响应的目标牌';
},
yingbian:function(event){
if(!get.cardtag(event.card,'yingbian_gain')) event.player.draw();
if(!get.cardtag(event.card,'yingbian_gain')||get.cardtag(event.card,'yingbian_draw')) event.player.draw();
},
contentBefore:function(){
'step 0'

View File

@ -16,6 +16,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){
return target!=player&&target.countCards('hej')>0;
},
yingbian_tags:['all','hit','add'],
yingbian_prompt:function(card){
var str='';
if(get.cardtag(card,'yingbian_all')){
@ -174,6 +175,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return target!=player&&target.countCards('h')>0;
},
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌增加一个目标',
yingbian_tags:['add'],
yingbian:function(event){
event.yingbian_addTarget=true;
},
@ -385,13 +387,13 @@ game.import('card',function(lib,game,ui,get,ai,_status){
equipSkill:true,
audio:true,
filter:function(event,player){
return event.card.name=='sha'&&(!event.target.isLinked()||event.target.countCards('h'));
return event.card.name=='sha'&&!event.target.isLinked();//||event.target.countCards('h'));
},
logTarget:'target',
content:function(){
var target=trigger.target;
if(!target.isLinked()) target.link();
else player.viewHandcards(target);
//else player.viewHandcards(target);
},
},
heiguangkai_skill:{
@ -803,7 +805,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
wuxinghelingshan_info:'当你声明使用不为神属性的属性【杀】时,你可将此【杀】的属性改为不为神属性的其他属性。',
wutiesuolian:'乌铁锁链',
wutiesuolian_skill:'乌铁锁链',
wutiesuolian_info:'锁定技,当你使用【杀】指定目标后,若其:已横置,你观看其手牌。未横置,其横置。',
wutiesuolian_info:'锁定技,当你使用【杀】指定目标后,若其未横置,其横置。',
heiguangkai:'黑光铠',
heiguangkai_skill:'黑光铠',
heiguangkai_info:'锁定技当你成为【杀】或黑色普通锦囊牌的目标后若此牌的目标数大于1则你令此牌对你无效。',
@ -866,7 +868,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
['spade',11,'wuxie'],
['spade',11,'shunshou'],
['spade',11,'tiesuo'],
['spade',12,'zhujinqiyuan',null,['yingbian_zhuzhan','yingbian_hit']],
['spade',12,'zhujinqiyuan',null,['yingbian_fujia','yingbian_hit']],
['spade',12,'tiesuo'],
['spade',12,'zhangba'],
['spade',13,'wuxie',null,['yingbian_kongchao','yingbian_draw']],

View File

@ -12,7 +12,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
extra_shan:['shen_zhaoyun','shen_simayi'],
extra_yin:['shen_liubei','shen_luxun'],
extra_lei:['shen_ganning','shen_zhangliao'],
extra_key:['key_kagari','key_shiki','key_hina'],
extra_key:['key_kagari','key_shiki','db_key_hina'],
extra_ol:['ol_zhangliao','shen_caopi','shen_zhenji'],
extra_mobilezhi:['shen_guojia','shen_xunyu'],
extra_mobilexin:['shen_taishici'],
@ -22,7 +22,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
character:{
key_kagari:['female','shen',3,['kagari_zongsi'],['key']],
key_shiki:['female','shen','3/5',['shiki_omusubi'],['key']],
key_hina:['female','shen',3,['hina_shenxian','hina_mashu','hina_tieji'],['key','hiddenSkill']],
db_key_hina:['female','key',3,['hina_shenshi','hina_xingzhi'],['doublegroup:key:shen']],
shen_xunyu:['male','shen',3,['tianzuo','lingce','dinghan'],['wei']],
shen_taishici:['male','shen',4,['dulie','tspowei','dangmo'],['wu']],
@ -52,9 +52,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shen_zhouyu:'字公瑾庐江舒县人。东汉末年名将。有姿貌、精音律江东有“曲有误周郎顾”之语。周瑜少与孙策交好后孙策遇刺身亡孙权继任。周瑜将兵赴丧以中护军的身份与长史张昭共掌众事建安十三年208年周瑜率东吴军与刘备军联合在赤壁击败曹操。此战也奠定了三分天下的基础。',
shen_zhugeliang:'字孔明、号卧龙汉族琅琊阳都人三国时期蜀汉丞相、杰出的政治家、军事家、发明家、文学家。在世时被封为武乡侯死后追谥忠武侯后来东晋政权推崇诸葛亮军事才能特追封他为武兴王。诸葛亮为匡扶蜀汉政权呕心沥血、鞠躬尽瘁、死而后已。其代表作有《前出师表》、《后出师表》、《诫子书》等。曾发明木牛流马等并改造连弩可一弩十矢俱发。于234年在宝鸡五丈原逝世。',
},
characterTitle:{
//shen_ganning:"体力上限6",
},
characterReplace:{
shen_zhangliao:['shen_zhangliao','ol_zhangliao'],
shen_zhaoyun:['shen_zhaoyun','boss_zhaoyun'],
@ -65,164 +62,234 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
hina_shenxian:{
hiddenSkill:true,
trigger:{player:'showCharacterAfter'},
hina_shenshi:{
groupSkill:true,
trigger:{player:['phaseUseBegin','phaseUseEnd']},
frequent:true,
filter:function(event,player){
return player.group=='shen';
},
content:function(){
'step 0'
player.draw(2).gaintag=['hina_shenshi'];
player.addSkill('hina_shenshi_yingbian');
'step 1'
var cards=player.getCards('h',function(card){
return card.hasGaintag('hina_shenshi');
});
if(!cards.length) event.finish();
else if(cards.length==1) event._result={bool:true,cards:cards};
else player.chooseCard('h',true,'将一张“神视”牌置于牌堆顶',function(card){
return card.hasGaintag('hina_shenshi');
});
'step 2'
if(result.bool){
game.log(player,'将一张牌置于了牌堆顶');
player.lose(result.cards,ui.cardPile,'insert');
player.$throw(1,1000);
}
else event.finish();
'step 3'
game.delayx();
},
onremove:function(){
player.removeGaintag('hina_shenshi');
},
group:'hina_shenshi_yingbian',
},
hina_shenshi_yingbian:{
trigger:{player:'useCard1'},
forced:true,
filter:function(event,player){
return event.toShow.contains('key_hina');
return event.cards.length==1&&!event.card.yingbian&&player.hasHistory('lose',function(evt){
if(evt.getParent()!=event) return false;
for(var i in evt.gaintag_map){
if(evt.gaintag_map[i].contains('hina_shenshi')) return true;
}
return false;
})&&Array.isArray(get.info(event.card).yingbian_tags);
},
content:function(){
player.equip(game.createCard('hina_shenji','diamond',13));
},
},
hina_mashu:{
mod:{
globalFrom:function(from,to,distance){
return distance-1;
if(!trigger.card.yingbian){
trigger.card.yingbian=true;
var info=get.info(trigger.card);
trigger.card.cardtags=info.yingbian_tags.map(function(i){
return 'yingbian_'+i;
});
if(info&&info.yingbian) info.yingbian(trigger);
player.addTempSkill('yingbian_changeTarget');
}
},
},
hina_tieji:{
shaRelated:true,
trigger:{player:'useCardToPlayered'},
check:function(event,player){
return get.attitude(player,event.target)<0;
},
hina_xingzhi:{
groupSkill:true,
trigger:{player:'useCard1'},
usable:1,
filter:function(event,player){
return event.card.name=='sha';
},
logTarget:'target',
content:function(){
"step 0"
player.judge(function(){return 0});
if(!trigger.target.hasSkill('fengyin')){
trigger.target.addTempSkill('fengyin');
}
"step 1"
var suit=result.suit;
if(result.suit=='spade'){
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++;
}
var target=trigger.target;
var num=target.countCards('h','shan');
target.chooseToDiscard('请弃置一张'+get.translation(suit)+'牌,否则不能使用闪抵消此杀','he',function(card){
return get.suit(card)==_status.event.suit;
}).set('ai',function(card){
var num=_status.event.num;
if(num==0) return 0;
if(card.name=='shan') return num>1?2:0;
return 8-get.value(card);
}).set('num',num).set('suit',suit);
"step 2"
if(!result.bool){
trigger.directHit.add(trigger.target);
}
},
ai:{
ignoreSkill:true,
skillTagFilter:function(player,tag,arg){
if(!arg||arg.isLink||!arg.card||arg.card.name!='sha') return false;
if(!arg.target||get.attitude(player,arg.target)>=0) return false;
if(!arg.skill||!lib.skill[arg.skill]||lib.skill[arg.skill].charlotte||get.is.locked(arg.skill)||!arg.target.getSkills(true,false).contains(arg.skill)) return false;
},
},
},
hina_guixin:{
trigger:{
player:"phaseZhunbeiBegin",
},
filter:function(event,player){
return player.hasSkill('hina_shenxian');
return player.group=='key'&&!event.card.yingbian&&Array.isArray(get.info(event.card).yingbian_tags);
},
content:function(){
"step 0"
var targets=game.filterPlayer();
targets.remove(player);
targets.sort(lib.sort.seat);
event.targets=targets;
"step 1"
event.num=0;
player.line(targets,'green');
player.chooseControl('手牌区','装备区','判定区').set('ai',function(){
if(game.hasPlayer(function(current){
return current.countCards('j')&&current!=player&&get.attitude(player,current)>0;
})) return 2;
return Math.floor(Math.random()*3);
}).set('prompt','请选择优先获得的区域');
"step 2"
event.range={
手牌区:['h','e','j'],
装备区:['e','h','j'],
判定区:['j','h','e'],
}[result.control||'手牌区'];
"step 3"
if(num<event.targets.length){
var target=event.targets[num];
var range=event.range;
for(var i=0;i<range.length;i++){
var cards=target.getCards(range[i]);
if(cards.length){
var card=cards.randomGet();
player.gain(card,target,'giveAuto','bySelf');
break;
'step 0'
var info=get.info(trigger.card);
trigger.card.cardtags=info.yingbian_tags.map(function(i){
return 'yingbian_'+i;
});
event.card=trigger.card;
event._global_waiting=true;
event.send=function(player,card,source,targets,id,id2,skillState){
if(skillState){
player.applySkills(skillState);
}
var type=get.type2(card);
var str=get.translation(source);
if(targets&&targets.length){
str+='对';
str+=get.translation(targets);
}
event.num++;
}
"step 4"
if(num<event.targets.length) event.goto(3);
"step 5"
player.turnOver();
str+='使用了';
var next=player.chooseCard({
filterCard:function(card){
return get.type2(card)==type&&lib.filter.cardDiscardable.apply(this,arguments);
},
},
hina_shenfen:{
trigger:{
player:"phaseJieshuBegin",
},
filter:function(event,player){
return player.hasSkill('hina_shenxian');
},
content:function(){
"step 0"
event.delay=false;
event.targets=game.filterPlayer();
event.targets.remove(player);
event.targets.sort(lib.sort.seat);
player.line(event.targets,'green');
event.targets2=event.targets.slice(0);
event.targets3=event.targets.slice(0);
"step 1"
if(event.targets2.length){
event.targets2.shift().damage('nocard');
event.redo();
prompt:str+=(get.translation(card)+',是否弃置一张'+get.translation(type)+'为其助战?'),
position:'h',
_global_waiting:true,
id:id,
id2:id2,
ai:function(cardx){
var info=get.info(card),num=0;
if(info&&info.ai&&info.ai.yingbian){
var ai=info.ai.yingbian(card,source,targets,player);
if(ai) num=ai;
}
"step 2"
if(event.targets.length){
event.current=event.targets.shift()
if(event.current.countCards('e')) event.delay=true;
event.current.discard(event.current.getCards('e')).delay=false;
if(get.attitude(player,source)<=0) return 0;
return Math.max(ai,6)-get.value(cardx);
},
});
if(game.online){
_status.event._resultid=id;
game.resume();
}
"step 3"
if(event.delay) game.delay(0.5);
event.delay=false;
if(event.targets.length) event.goto(2);
"step 4"
if(event.targets3.length){
var target=event.targets3.shift();
target.chooseToDiscard(4,'h',true).delay=false;
if(target.countCards('h')) event.delay=true;
};
'step 1'
var type=get.type2(card);
var list=game.filterPlayer(function(current){
if(current==player) return false;
if(!current.countCards('h')) return false;
return _status.connectMode||current.countCards('h',function(cardx){
return get.type2(cardx)==type;
})
});
event.list=list;
event.id=get.id();
list.sort(function(a,b){
return get.distance(event.source,a,'absolute')-get.distance(event.source,b,'absolute');
});
'step 2'
if(event.list.length==0){
event.finish();
return;
}
else if(_status.connectMode&&(event.list[0].isOnline()||event.list[0]==game.me)){
event.goto(4);
}
else{
event.current=event.list.shift();
event.send(event.current,event.card,player,trigger.targets,event.id,trigger.parent.id);
}
'step 3'
if(result.bool){
event.zhuzhanresult=event.current;
event.zhuzhanresult2=result;
if(event.current!=game.me) game.delayx();
event.goto(8);
}
else{
event.goto(2);
}
'step 4'
var id=event.id;
var sendback=function(result,player){
if(result&&result.id==id&&!event.zhuzhanresult&&result.bool){
event.zhuzhanresult=player;
event.zhuzhanresult2=result;
game.broadcast('cancel',id);
if(_status.event.id==id&&_status.event.name=='chooseCard'&&_status.paused){
return (function(){
event.resultOL=_status.event.resultOL;
ui.click.cancel();
if(ui.confirm) ui.confirm.close();
});
}
}
else{
if(_status.event.id==id&&_status.event.name=='chooseCard'&&_status.paused){
return (function(){
event.resultOL=_status.event.resultOL;
});
}
}
};
var withme=false;
var withol=false;
var list=event.list;
for(var i=0;i<list.length;i++){
if(list[i].isOnline()){
withol=true;
list[i].wait(sendback);
list[i].send(event.send,list[i],event.card,player,trigger.targets,event.id,trigger.parent.id,get.skillState(list[i]));
list.splice(i--,1);
}
else if(list[i]==game.me){
withme=true;
event.send(list[i],event.card,player,trigger.targets,event.id,trigger.parent.id);
list.splice(i--,1);
}
}
if(!withme){
event.goto(6);
}
if(_status.connectMode){
if(withme||withol){
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=player) game.players[i].showTimer();
}
}
}
event.withol=withol;
'step 5'
if(result&&result.bool&&!event.zhuzhanresult){
game.broadcast('cancel',event.id);
event.zhuzhanresult=game.me;
event.zhuzhanresult2=result;
}
'step 6'
if(event.withol&&!event.resultOL){
game.pause();
}
'step 7'
for(var i=0;i<game.players.length;i++){
game.players[i].hideTimer();
}
'step 8'
if(event.zhuzhanresult){
var target=event.zhuzhanresult;
target.line(player,'green');
target.discard(event.zhuzhanresult2.cards);
target.draw(2);
target.popup('助战','wood');
game.log(target,'响应了',player,'发起的助战');
target.addExpose(0.2);
}
else event.finish();
'step 9'
if(!trigger.card.yingbian){
trigger.card.yingbian=true;
var info=get.info(trigger.card);
if(info&&info.yingbian) info.yingbian(trigger);
player.addTempSkill('yingbian_changeTarget');
}
"step 5"
if(event.delay) game.delay(0.5);
event.delay=false;
if(event.targets3.length) event.goto(4);
"step 6"
player.turnOver();
},
},
tianzuo:{
@ -4407,22 +4474,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
},
hina_shenji:{
type:'equip',
subtype:'equip5',
derivation:'key_hina',
skills:['hina_guixin','hina_shenfen'],
fullskin:true,
ai:{
equipValue:function(card,player){
if(player.hasSkill('hina_shenxian')) return 100;
return 0;
},
basic:{
equipValue:100
}
},
},
},
dynamicTranslate:{
nzry_longnu:function(player){
@ -4630,19 +4681,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shiki_omusubi:'御结',
shiki_omusubi_info:'一轮游戏开始时你可以减1点体力上限然后将一名其他角色武将牌上的技能加入到你的武将牌上。',
shiki_omusubi_append:'<span style="font-family: yuanli">来吧,羽依里。用你的手,让我变成那只真正的鬼吧!</span>',
key_hina:'佐藤雏',
hina_shenxian:'神现',
hina_shenxian_info:'隐匿技,锁定技,当你明置此武将牌时,你将一张【神机】置入装备区。',
hina_mashu:'马术',
hina_mashu_info:'锁定技,你计算于其他角色的距离时始终-1。',
hina_tieji:'铁骑',
hina_tieji_info:'当你使用【杀】指定目标后,你可进行判定。你令目标角色的所有非锁定技失效直到回合结束。除非其弃置一张与判定结果花色相同的牌,则其不能响应此【杀】。若判定结果为♠,则此【杀】对其的伤害+1。',
hina_tieji_append:'<span style="font-family: yuanli">她成为神明的那一天,世界走向毁灭。</span>',
hina_shenji:'神机',
hina_shenji_info:'若你拥有技能〖神现〗,则你可以于准备阶段发动〖归心〗,并可于结束阶段发动〖神愤〗。',
hina_guixin:'归心',
hina_shenfen:'神愤',
db_key_hina:'佐藤雏',
hina_shenshi:'神视',
hina_shenshi_yingbian:'神视',
hina_shenshi_info:'神势力技。出牌阶段开始时/结束时,你可摸两张牌,然后将其中一张牌置于牌堆顶。你以此法获得的牌视为拥有全部应变效果,且可以无条件发动。',
hina_xingzhi:'幸凪',
hina_xingzhi_info:'键势力技。每回合限一次,你可以通过“助战”触发一张牌的全部助战效果,且响应助战的角色摸两张牌。',
extra_feng:'神话再临·风',
extra_huo:'神话再临·火',

View File

@ -575,7 +575,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'useCardAfter'},
direct:true,
filter:function(event,player){
return get.type(event.card,false)!='delay'&&event.targets.length==1&&game.hasPlayer(function(current){
return get.type(event.card,false)!='delay'&&game.hasPlayer(function(current){
return player!=current&&(!player.storage.disordersidi||!player.storage.disordersidi.contains(current));
});
},
@ -609,7 +609,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
intro:{
content:function(storage,player){
if((player==game.me||player.iscardUnderControl())&&!game.observe){
if((player==game.me||player.isUnderControl())&&!game.observe){
var str='R={ ';
for(var i=0;i<storage.length;i++){
str+=('<'+get.translation(storage[i])+', '+get.translation(player.storage.disordersidi2[i])+'>');
@ -618,7 +618,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
str+=' }'
return str;
}
return get.translation(storage);
return '已指定'+get.translation(storage)+'为目标';
},
},
onremove:function(player){
@ -641,6 +641,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
exec:{
audio:'disordersidi',
trigger:{global:'useCardToPlayered'},
forced:true,
locked:false,
@ -808,7 +809,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
fail:{
trigger:{player:'compareAfter'},
trigger:{player:'chooseToCompareAfter'},
forced:true,
filter:function(event,player){
return event.getParent().name=='rechuhai'&&event.num1<13&&!event.result.bool;
@ -12534,7 +12535,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
relihuo_damage:'疠火',
relihuo_baigei:'疠火',
relihuo_info:'当你使用普【杀】时,你可以将此杀改为火属性。若如此做,当你因执行此【杀】的效果而对横置角色造成伤害时,此伤害+1当你使用的火【杀】结算完成后你失去X点体力X为你因此【杀】造成的伤害总点数的一半且向下取整',
dengzhi:'邓芝',
dengzhi:'手杀邓芝',
jimeng:'急盟',
jimeng_info:'出牌阶段开始时你可以获得一名其他角色的一张牌然后交给该角色X张牌X为你当前体力值。',
shuaiyan:'率言',
@ -12926,7 +12927,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xinjiaojin_info:'当你受到男性角色造成的伤害时,你可以弃置一张装备牌,令此伤害-1。',
xin_caozhen:'手杀曹真',
disordersidi:'司敌',
disordersidi_info:'①当你使用的不为延时锦囊牌的牌结算结束后你可选择一名R内不存在以a为第一序偶的二元序偶的角色a并选择一名角色b在关系R内建立二元序偶<a,b>b对其他角色不可见。②一名角色a使用的不为延时锦囊牌的牌结算结束后你清除R内以其为第一元素的二元序偶。③一名角色a使用不为延时锦囊牌的牌指定b为唯一目标时若aRb成立则你从R内移除<a,b>若b为你你摸一张牌若b不为你你可选择⒈取消此牌的目标并对a造成1点伤害。⒉摸两张牌。',
disordersidi_info:'①当你使用的不为延时锦囊牌的牌结算结束后你可选择一名R内不存在以a为第一序偶的二元序偶的其他角色a并选择一名角色b在关系R内建立二元序偶<a,b>b对其他角色不可见。②一名角色a使用的不为延时锦囊牌的牌结算结束后你清除R内以其为第一元素的二元序偶。③一名角色a使用不为延时锦囊牌的牌指定b为唯一目标时若aRb成立则你从R内移除<a,b>若b为你你摸一张牌若b不为你你可选择⒈取消此牌的目标并对a造成1点伤害。⒉摸两张牌。',
mobile_standard:'手杀异构·标准包',
mobile_shenhua:'手杀异构·神话再临',

View File

@ -33,7 +33,7 @@ window.noname_character_rank={
'key_yuri',
'key_yui',
'key_lucia',
'key_hina',
'db_key_hina',
'sp_key_kanade',
'key_shizuru',
'key_sakuya',
@ -895,6 +895,7 @@ window.noname_character_rank={
'duosidawang',
're_jiaxu',
'xin_caozhen',
'ol_dengzhi',
],
bm:[
'diy_xizhenxihong',
@ -1234,7 +1235,7 @@ window.noname_character_rank={
'key_noda',
'key_shiina',
'key_shiroha',
'key_hina',
'db_key_hina',
'key_sakuya',
'key_yuuki',
'key_kyouko',

View File

@ -326,11 +326,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mod:{
cardEnabled:function(card,player){
var source=_status.currentPhase;
if(card.name=='tao'&&source&&source!=player&&source.hasSkill('rewansha')) return false;
if(card.name=='tao'&&source&&source!=player&&source.hasSkill('rewansha')&&!player.isDying()) return false;
},
cardSavable:function(card,player){
var source=_status.currentPhase;
if(card.name=='tao'&&source&&source!=player&&source.hasSkill('rewansha')) return false;
if(card.name=='tao'&&source&&source!=player&&source.hasSkill('rewansha')&&!player.isDying()) return false;
},
},
},

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","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","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_zhangliao','wolongfengchu','ol_xinxianying','panshu','huangzu','huangchengyan','gaogan','duxi'],
sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","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_zhangliao','wolongfengchu','ol_xinxianying','panshu','huangzu','huangchengyan','gaogan','duxi','ol_dengzhi'],
sp_tongque:["liuxie","lingju","fuwan","sp_fuwan","sp_fuhuanghou","sp_jiben"],
sp_zhongdan:["cuiyan","huangfusong"],
sp_guozhan:["zangba","shamoke","ganfuren","yuejin","hetaihou","dingfeng","panfeng","jianggan","sp_mifangfushiren","bianfuren"],
@ -16,6 +16,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterFilter:{},
character:{
ol_dengzhi:['male','shu',3,['olxiuhao','olsujian']],
bianfuren:['female','wei',3,['fuwei','yuejian']],
duxi:['male','wei',3,['quxi','bixiong']],
gaogan:['male','qun',4,['juguan']],
@ -392,6 +393,191 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//邓芝
olxiuhao:{
audio:2,
trigger:{
player:'damageBegin4',
source:'damageBegin2',
},
usable:1,
filter:function(event,player){
return event.source&&event.source.isIn()&&event.source!=event.player;
},
logTarget:function(event,player){
return player==event.player?event.source:event.player;
},
check:function(event,player){
_status.olxiuhao_judging=true;
var bool=false;
if(player==event.source){
if(get.attitude(player,event.player)>0) bool=true;
if(get.damageEffect(event.player,player,player,event.nature)<=0) bool=true;
}
else{
if(get.attitude(player,event.source)>0) bool=true;
if(get.damageEffect(player,event.source,player,event.nature)<0){
if(event.source.hasSkillTag('nogain')) bool=true;
if(event.num>=player.hp+player.countCards('hs',{name:['tao','jiu']})&&(!player.hasFriend()||player==get.zhu(player))) return true;
return false;
}
}
delete _status.olxiuhao_judging;
return bool;
},
content:function(){
trigger.cancel();
trigger.source.draw(2);
},
ai:{
effect:{
target:function(card,player,target){
if(!_status.olxiuhao_judging&&get.tag(card,'damage')&&get.attitude(target,player)>0&&(!player.storage.counttrigger||!player.storage.counttrigger.olxiuhao)) return [0,0.5,0,0.5];
},
player:function(card,player,target){
if(!_status.olxiuhao_judging&&get.tag(card,'damage')&&get.attitude(player,target)>0&&(!player.storage.counttrigger||!player.storage.counttrigger.olxiuhao)) return [0,0.5,0,0.5];
},
},
},
},
olsujian:{
trigger:{player:'phaseDiscardBefore'},
forced:true,
content:function(){
'step 0'
trigger.cancel();
var cards=lib.skill.olsujian.update(player);
if(!cards.length) event.finish();
else{
event.cards=cards;
var str=get.translation(cards);
player.chooseControl().set('choiceList',[
'将'+str+'分配给任意名其他角色',
'弃置'+str+'并弃置一名其他角色至多等量的牌',
]).set('ai',function(){
var cards=_status.event.getParent().cards,player=_status.event.player;
if(!game.hasPlayer(function(current){
return get.attitude
})) return 1;
if(game.hasPlayer(function(current){
var att=get.attitude(player,current);
return att!=0&&current.countDiscardableCards(player,'he',function(i){
if(att>0) return get.value(i,current)>=4;
return get.value(i,current)<=0;
})>=cards.length&&get.effect(current,{name:'guohe_copy2'},player,player)>0;
})) return 1;
return 0;
});
}
'step 1'
if(result.index==1){
cards=event.cards.filter(function(i){
return lib.filter.cardDiscardable(i,player,'olsujian');
});
if(cards.length){
event.num=cards.length;
player.discard(cards);
}
else event.finish();
}
else event.goto(4);
'step 2'
if(game.hasPlayer(function(current){
return current!=player&&current.countDiscardableCards(player,'he')>0;
})){
player.chooseTarget(true,'弃置一名其他角色的至多'+get.cnNumber(num)+'张牌',function(card,player,current){
return current!=player&&current.countDiscardableCards(player,'he')>0;
}).set('ai',function(current){
var att=get.attitude(player,current);
if(current.countDiscardableCards(player,'he',function(i){
if(att>0) return get.value(i,current)>=4;
return get.value(i,current)<=0;
})>=num) return 4*get.effect(current,{name:'guohe_copy2'},player,player);
return get.effect(current,{name:'guohe_copy2'},player,player);
});
}
else event.finish();
'step 3'
if(result.bool){
var target=result.targets[0];
player.line(target,'green');
player.discardPlayerCard(target,true,[1,num]);
}
event.finish();
'step 4'
if(_status.connectMode) game.broadcastAll(function(){_status.noclearcountdown=true});
event.given_map={};
'step 5'
player.chooseCardTarget({
filterCard:function(card){
return card.hasGaintag('olsujian');
},
filterTarget:lib.filter.notMe,
selectCard:[1,cards.length],
forced:true,
prompt:'请选择要分配的卡牌和目标',
ai1:function(card){
if(!ui.selected.cards.length) return 1;
return 0;
},
ai2:function(target){
var player=_status.event.player,card=ui.selected.cards[0];
var val=target.getUseValue(card);
if(val>0) return val*get.attitude(player,target)*2;
return get.value(card,target)*get.attitude(player,target);
},
});
'step 6'
if(result.bool){
var res=result.cards,target=result.targets[0].playerid;
player.removeGaintag('olsujian',res);
player.addGaintag(res,'olsujian_given');
cards.removeArray(res);
if(!event.given_map[target]) event.given_map[target]=[];
event.given_map[target].addArray(res);
if(cards.length) event.goto(5);
}
else event.finish();
'step 7'
if(_status.connectMode){
game.broadcastAll(function(){delete _status.noclearcountdown});
game.stopCountChoose();
}
for(var i in event.given_map){
var source=(_status.connectMode?lib.playerOL:game.playerMap)[i];
player.line(source,'green');
source.gain(event.given_map[i],player,'giveAuto');
}
event.next.sort(function(a,b){
return lib.sort.seat(a.player,b.player);
});
},
update:function(player){
player.removeGaintag('olsujian');
var hs=player.getCards('h');
player.getHistory('gain',function(evt){
hs.removeArray(evt.cards);
});
if(hs.length) player.addGaintag(hs,'olsujian');
return hs;
},
group:'olsujian_sync',
subSkill:{
sync:{
trigger:{player:['phaseBeginStart','gainBegin']},
forced:true,
popup:false,
firstDo:true,
filter:function(event,player){
if(event.name=='gain') return (player==_status.currentPhase)&&(event.getParent('olsujian').player!=player);
return true;
},
content:function(){
lib.skill.olsujian.update(player);
},
},
},
},
//卞夫人
fuwei:{
audio:'wanwei',
@ -14805,6 +14991,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
huaxin:['ol_huaxin','huaxin','sp_huaxin'],
xujing:['xujing','sp_xujing'],
zhaoxiang:['zhaoxiang','tw_zhaoxiang'],
dengzhi:['ol_dengzhi','dengzhi'],
},
translate:{
"xinfu_lingren":"凌人",
@ -15629,6 +15816,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
fuwei_info:'每回合限一次。当你的牌被其他角色弃置或获得后,你可从牌堆中获得一张与此牌名称相同的牌(若没有则改为摸一张牌)。',
yuejian:'约俭',
yuejian_info:'每回合限两次。当其他角色对你使用的牌A结算结束后你可展示所有手牌。若牌A有花色且你的手牌中没有同花色的牌则你获得牌A对应的所有实体牌。',
ol_dengzhi:'邓芝',
olxiuhao:'修好',
olxiuhao_info:'每回合限一次。当你受到其他角色造成的伤害时,或对其他角色造成伤害时,你可防止此伤害,然后令伤害来源摸两张牌。',
olsujian:'素俭',
olsujian_given:'已分配',
olsujian_info:'锁定技。弃牌阶段开始前,你跳过此阶段。然后你选择一项:①将所有不为本回合获得的手牌分配给其他角色。②弃置这些手牌,然后弃置一名其他角色等量的牌。',
sp_default:"常规",
sp_tongque:"铜雀台",

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.110.9.3',
'v1.9.110.9.3.1',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -790,6 +790,8 @@ window.noname_asset_list=[
'audio/die/qiaozhou.mp3',
'audio/die/shen_xunyu.mp3',
'audio/die/xin_sunluban.mp3',
'audio/die/ol_dengai.mp3',
'audio/die/xin_caozhen.mp3',
'audio/skill/decadezishou1.mp3',
'audio/skill/decadezishou2.mp3',
@ -3556,6 +3558,12 @@ window.noname_asset_list=[
'audio/skill/yuanqing2.mp3',
'audio/skill/zhiming1.mp3',
'audio/skill/zhiming2.mp3',
'audio/skill/disordersidi1.mp3',
'audio/skill/disordersidi2.mp3',
'audio/skill/olsujian1.mp3',
'audio/skill/olsujian2.mp3',
'audio/skill/olxiuhao1.mp3',
'audio/skill/olxiuhao2.mp3',
'audio/voice/male/0.mp3',
'audio/voice/male/1.mp3',
@ -3668,7 +3676,6 @@ window.noname_asset_list=[
'image/card/yuanjun.png',
'image/card/kamome_suitcase.png',
'image/card/miki_hydrogladiator.png',
'image/card/hina_shenji.png',
'image/card/miki_binoculars.png',
'image/card/zhaoshu.png',
'image/card/tiaojiyanmei.png',
@ -4321,7 +4328,7 @@ window.noname_asset_list=[
'image/character/wangrong.jpg',
'image/character/zhujun.jpg',
'image/character/hanfu.jpg',
'image/character/key_hina.jpg',
'image/character/db_key_hina.jpg',
'image/character/re_quyi.jpg',
'image/character/hucheer.jpg',
'image/character/xin_hansui.jpg',
@ -4501,6 +4508,7 @@ window.noname_asset_list=[
'image/character/shen_xunyu.jpg',
'image/character/xin_caozhen.jpg',
'image/character/xin_sunluban.jpg',
'image/character/ol_dengzhi.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -16478,12 +16478,12 @@
}
},this,cards,tag);
},
removeGaintag:function(tag){
removeGaintag:function(tag,cards){
game.addVideo('removeGaintag',this,tag);
game.broadcastAll(function(player,tag){
var cards=player.getCards('h');
cards=cards||player.getCards('h');
for(var i of cards) i.removeGaintag(tag);
},this,tag);
},this,tag,cards);
},
canSave:function(target){
var player=this;
@ -51530,6 +51530,7 @@
if(item.cardid&&(get.itemtype(item)=='card'||!item.cards||!item.cards.length||item.name==item.cards[0].name)&&_status.cardtag&&_status.cardtag[tag]&&_status.cardtag[tag].contains(item.cardid)){
return true;
}
if(item.cardtags&&item.cardtags.contains(tag)) return true;
return false;
},
tag:function(item,tag,item2){

View File

@ -1,15 +1,15 @@
window.noname_update={
version:'1.9.110.9.3',
update:'1.9.110.9.2.3',
version:'1.9.110.9.3.1',
update:'1.9.110.9.3',
changeLog:[
'神荀彧、文鸯、手杀孙鲁班、手杀曹真',
'国战双势力修正',
'佐藤雏技能修改',
'OL邓芝新应变牌堆',
'bug修复',
],
files:[
//'card/extra.js',
//'card/gujian.js',
//'card/guozhan.js',
'card/guozhan.js',
//'card/gwent.js',
//'card/huanlekapai.js',
//'card/mtg.js',
@ -17,10 +17,10 @@ window.noname_update={
'card/standard.js',
//'card/swd.js',
//'card/yunchou.js',
//'card/yingbian.js',
'card/yingbian.js',
//'card/zhenfa.js',
//'card/zhulu.js',
'character/diy.js',
//'character/diy.js',
'character/extra.js',
//'character/hearth.js',
//'character/gujian.js',
@ -33,30 +33,30 @@ window.noname_update={
//'character/ow.js',
'character/rank.js',
'character/refresh.js',
'character/shenhua.js',
//'character/shenhua.js',
'character/sp.js',
'character/sp2.js',
'character/tw.js',
'character/standard.js',
//'character/sp2.js',
//'character/tw.js',
//'character/standard.js',
//'character/swd.js',
//'character/xianjian.js',
'character/xinghuoliaoyuan.js',
//'character/xinghuoliaoyuan.js',
//'character/yingbian.js',
'character/yijiang.js',
//'character/yijiang.js',
//'character/yxs.js',
//'extension/boss/extension.js',
//'layout/default/layout.css',
//'layout/newlayout/global.css',
//'layout/default/menu.css',
//'layout/nova/layout.css',
'layout/mobile/equip.css',
//'layout/mobile/equip.css',
//'mode/boss.js',
//'mode/brawl.js',
//'mode/chess.js',
//'mode/connect.js',
//'mode/doudizhu.js',
'mode/guozhan.js',
'mode/identity.js',
//'mode/guozhan.js',
//'mode/identity.js',
//'mode/single.js',
//'mode/stone.js',
//'mode/tafang.js',

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB