Skip to content

Commit

Permalink
v1.10.4
Browse files Browse the repository at this point in the history
v1.10.4版本更新内容
※我们继续和一些优秀且具有开源精神的代码编写者保持着积极合作。在这一版本中,我们通过接收GitHub的Pull Request,整合了@copcap @PZ157 @mengxinzxz @lieren2023 @CatIgnore @Tipx-L @kuangshen04 @nonameShijian @universe-st @BauxiteAl @Rintim @S-N-O-R-L-A-X @xiaoas @kola-king @Howard-Zhou-77 等15位代码贡献者编写的代码。
※添加武将包《江山如故·转》的所有新武将并添加对应机制。添加新武将「神贾诩」「族王沦」「族荀攸」「张曼成」「星曹仁」「吕伯奢」「张燕」「丁尚浣(OL)」「李婉(OL)」「孟优(数学)」。调整「凌统」「旧马谡」的技能和手杀新武将的数值。调整部分同名武将的分包和插画
※现在无名杀对9人局和10人局提供了原生支持,且在玩家数量继续增加的情况下依然能够动态处理css样式布局,但可能会破坏原有的人数增加扩展
※添加“谋攻篇”游戏模式(位于身份模式的子模式内)和相关的机制
※将“群雄割据”的国战模式改为常驻模式,而非乱斗限定模式
※底层代码更新:将游戏内的Player,Card,VCard,GameEvent,NodeWS等对象Class化,且拆分部分游戏规则操作与DOM操作的逻辑,允许扩展单独修改其中一部分而不干扰其他部分。此改动将不再允许玩家使用for-in循环方法遍历lib.element中的内容(可以使用for-of循环和Object.keys()组合),且不兼容一些旧的扩展,但将会减少新扩展和游戏更新的冲突
※底层代码更新:添加事件handler机制,允许在不添加全局技能的情况下,在某个事件的每个step前后执行特定函数。详情见: #576#596
※游戏机制修改:允许card.destroy自定义销毁流程(如“进入弃牌堆后销毁”),而不需要手动编写技能进行销毁
※游戏机制修改:按照凌天翼规则集修改回合事件流程,修复部分相关技能结算顺序错误的问题,优化“获得额外阶段”与“替换阶段”的写法
※游戏机制修改:现在可以将坐骑栏的游戏逻辑修改为英文版三国杀中的“合并模式”,开启后装备内将只能容纳一张坐骑牌
※修改庞统〖连环〗的操作逻辑
※AI机制优化:添加“记明牌”机制。详情见: #594
※添加了创建身份牌实例和卡牌翻开效果实例的ui方法(用法详见神贾诩)
※现在角色弹出对话框中会显示玩家的手牌上限了
※现在游戏不会尝试在读取mp3音频文件失败后读取ogg文件了。如果您仍想在扩展中播放ogg文件,请手动指定配音文件的扩展名
※添加属性伤害和属性杀的音效逻辑
※修复联机模式选将阶段的一系列bug:武将标记错误执行unmark,房主选将结束时会暴露体力值等
※修复拼音库判断包含非中文字符的文本时出错的bug
※content函数可以进行debugger了
※其他bug修复和优化
  • Loading branch information
Spmario233 authored Oct 31, 2023
2 parents e7401b6 + 6443b2d commit 3a65c95
Show file tree
Hide file tree
Showing 258 changed files with 14,649 additions and 6,884 deletions.
2 changes: 1 addition & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"extends": "chrome 46",
"extends": "chrome 46",
"env": {
"browser": true,
"node": true,
Expand Down
Binary file added audio/die/caoxi.mp3
Binary file not shown.
Binary file added audio/die/clan_wanglun.mp3
Binary file not shown.
Binary file added audio/die/dc_zhangmancheng.mp3
Binary file not shown.
Binary file added audio/die/hanlong.mp3
Binary file not shown.
Binary file added audio/die/laimin.mp3
Binary file not shown.
Binary file added audio/die/lvboshe.mp3
Binary file not shown.
Binary file added audio/die/mengyou.mp3
Binary file not shown.
Binary file added audio/die/ol_huban.mp3
Binary file not shown.
Binary file added audio/die/ol_zhangzhang.mp3
Binary file not shown.
Binary file modified audio/die/re_caoxiu.mp3
Binary file not shown.
Binary file modified audio/die/re_caozhang.mp3
Binary file not shown.
Binary file modified audio/die/re_chengpu.mp3
Binary file not shown.
Binary file modified audio/die/re_hanhaoshihuan.mp3
Binary file not shown.
Binary file modified audio/die/re_jianyong.mp3
Binary file not shown.
Binary file modified audio/die/re_jsp_huangyueying.mp3
Binary file not shown.
Binary file modified audio/die/re_sunxiu.mp3
Binary file not shown.
Binary file added audio/die/re_wangyi.mp3
Binary file not shown.
Binary file modified audio/die/re_zuoci.mp3
Binary file not shown.
Binary file added audio/die/sb_xiaoqiao.mp3
Binary file not shown.
Binary file added audio/die/sb_yl_luzhi.mp3
Binary file not shown.
Binary file added audio/die/tw_zhanghong.mp3
Binary file not shown.
Binary file added audio/die/tw_zhangzhao.mp3
Binary file not shown.
Binary file modified audio/die/xin_liubiao.mp3
Binary file not shown.
Binary file added audio/die/yj_qiaozhou.mp3
Binary file not shown.
Binary file added audio/die/yj_zhoubuyi.mp3
Binary file not shown.
Binary file added audio/die/zhangyan.mp3
Binary file not shown.
Binary file added audio/skill/cibei1.mp3
Binary file not shown.
Binary file added audio/skill/cibei2.mp3
Binary file not shown.
Binary file added audio/skill/clanjianyuan1.mp3
Binary file not shown.
Binary file added audio/skill/clanjianyuan2.mp3
Binary file not shown.
Binary file added audio/skill/clanqiuxin1.mp3
Binary file not shown.
Binary file added audio/skill/clanqiuxin2.mp3
Binary file not shown.
Binary file added audio/skill/clanzhongliu_clan_wanglun1.mp3
Binary file not shown.
Binary file added audio/skill/clanzhongliu_clan_wanglun2.mp3
Binary file not shown.
Binary file added audio/skill/dclvecheng1.mp3
Binary file not shown.
Binary file added audio/skill/dclvecheng2.mp3
Binary file not shown.
Binary file added audio/skill/dcmanzhi1.mp3
Binary file not shown.
Binary file added audio/skill/dcmanzhi2.mp3
Binary file not shown.
Binary file added audio/skill/dczhongji1.mp3
Binary file not shown.
Binary file added audio/skill/dczhongji2.mp3
Binary file not shown.
Binary file modified audio/skill/decadezishou1.mp3
Binary file not shown.
Binary file modified audio/skill/decadezishou2.mp3
Binary file not shown.
Binary file modified audio/skill/decadezongshi1.mp3
Binary file not shown.
Binary file modified audio/skill/decadezongshi2.mp3
Binary file not shown.
Binary file added audio/skill/duwang1.mp3
Binary file not shown.
Binary file added audio/skill/duwang2.mp3
Binary file not shown.
Binary file added audio/skill/jiangxi1.mp3
Binary file not shown.
Binary file added audio/skill/jiangxi2.mp3
Binary file not shown.
Binary file removed audio/skill/juyi.mp3
Binary file not shown.
Binary file modified audio/skill/jyzongshi_re_jianyong1.mp3
Binary file not shown.
Binary file modified audio/skill/jyzongshi_re_jianyong2.mp3
Binary file not shown.
Binary file added audio/skill/laishou1.mp3
Binary file not shown.
Binary file added audio/skill/laishou2.mp3
Binary file not shown.
Binary file added audio/skill/laishou3.mp3
Binary file not shown.
Binary file modified audio/skill/lihuo_re_chengpu1.mp3
Binary file not shown.
Binary file modified audio/skill/lihuo_re_chengpu2.mp3
Binary file not shown.
Binary file added audio/skill/luanqun1.mp3
Binary file not shown.
Binary file added audio/skill/luanqun2.mp3
Binary file not shown.
Binary file added audio/skill/manyi_mengyou1.mp3
Binary file not shown.
Binary file added audio/skill/manyi_mengyou2.mp3
Binary file not shown.
Binary file added audio/skill/mbhuiyao1.mp3
Binary file not shown.
Binary file added audio/skill/mbhuiyao2.mp3
Binary file not shown.
Binary file added audio/skill/mbquesong1.mp3
Binary file not shown.
Binary file added audio/skill/mbquesong2.mp3
Binary file not shown.
Binary file added audio/skill/miji_re_wangyi1.mp3
Binary file not shown.
Binary file added audio/skill/miji_re_wangyi2.mp3
Binary file not shown.
Binary file added audio/skill/nzry_mingren_1_sb_yl_luzhi1.mp3
Binary file not shown.
Binary file added audio/skill/nzry_mingren_1_sb_yl_luzhi2.mp3
Binary file not shown.
Binary file added audio/skill/oldongdao1.mp3
Binary file not shown.
Binary file added audio/skill/oldongdao2.mp3
Binary file not shown.
Binary file added audio/skill/olfushi1.mp3
Binary file not shown.
Binary file added audio/skill/olfushi2.mp3
Binary file not shown.
Binary file added audio/skill/olgangshu1.mp3
Binary file not shown.
Binary file added audio/skill/olgangshu2.mp3
Binary file not shown.
Binary file added audio/skill/olguzheng1.mp3
Binary file not shown.
Binary file added audio/skill/olguzheng2.mp3
Binary file not shown.
Binary file added audio/skill/olhuiyun1.mp3
Binary file not shown.
Binary file added audio/skill/olhuiyun2.mp3
Binary file not shown.
Binary file added audio/skill/oljianxuan1.mp3
Binary file not shown.
Binary file added audio/skill/oljianxuan2.mp3
Binary file not shown.
Binary file added audio/skill/ollangdao1.mp3
Binary file not shown.
Binary file added audio/skill/ollangdao2.mp3
Binary file not shown.
Binary file added audio/skill/olsuji1.mp3
Binary file not shown.
Binary file added audio/skill/olsuji2.mp3
Binary file not shown.
Binary file added audio/skill/olzhijian1.mp3
Binary file not shown.
Binary file added audio/skill/olzhijian2.mp3
Binary file not shown.
Binary file removed audio/skill/qice_backup1.mp3
Binary file not shown.
Binary file removed audio/skill/qice_backup2.mp3
Binary file not shown.
Binary file modified audio/skill/rechunlao1.mp3
Binary file not shown.
Binary file modified audio/skill/rechunlao2.mp3
Binary file not shown.
Binary file modified audio/skill/rehuashen1.mp3
Binary file not shown.
Binary file modified audio/skill/rehuashen2.mp3
Binary file not shown.
Binary file modified audio/skill/rejiqiao1.mp3
Binary file not shown.
Binary file modified audio/skill/rejiqiao2.mp3
Binary file not shown.
Binary file modified audio/skill/rejizhi_lukang1.mp3
Binary file not shown.
Binary file modified audio/skill/rejizhi_lukang2.mp3
Binary file not shown.
Binary file modified audio/skill/relinglong1.mp3
Binary file not shown.
Binary file modified audio/skill/relinglong2.mp3
Binary file not shown.
Binary file modified audio/skill/reqiaoshui1.mp3
Binary file not shown.
Binary file modified audio/skill/reqiaoshui2.mp3
Binary file not shown.
Binary file modified audio/skill/reqingxi1.mp3
Binary file not shown.
Binary file modified audio/skill/reqingxi2.mp3
Binary file not shown.
Binary file modified audio/skill/reshenduan1.mp3
Binary file not shown.
Binary file modified audio/skill/reshenduan2.mp3
Binary file not shown.
Binary file modified audio/skill/rexingxue1.mp3
Binary file not shown.
Binary file modified audio/skill/rexingxue2.mp3
Binary file not shown.
Binary file added audio/skill/rexinsheng1.mp3
Binary file not shown.
Binary file added audio/skill/rexinsheng2.mp3
Binary file not shown.
Binary file modified audio/skill/reyanzhu1.mp3
Binary file not shown.
Binary file modified audio/skill/reyanzhu2.mp3
Binary file not shown.
Binary file modified audio/skill/reyonglve1.mp3
Binary file not shown.
Binary file modified audio/skill/reyonglve2.mp3
Binary file not shown.
Binary file added audio/skill/sbtianxiang1.mp3
Binary file not shown.
Binary file added audio/skill/sbtianxiang2.mp3
Binary file not shown.
Binary file added audio/skill/sbzhenliang1.mp3
Binary file not shown.
Binary file added audio/skill/sbzhenliang2.mp3
Binary file not shown.
Binary file added audio/skill/shiming1.mp3
Binary file not shown.
Binary file added audio/skill/shiming2.mp3
Binary file not shown.
Binary file added audio/skill/twchungang1.mp3
Binary file not shown.
Binary file added audio/skill/twchungang2.mp3
Binary file not shown.
Binary file added audio/skill/twlijian1.mp3
Binary file not shown.
Binary file added audio/skill/twlijian2.mp3
Binary file not shown.
Binary file added audio/skill/twquanqian1.mp3
Binary file not shown.
Binary file added audio/skill/twquanqian2.mp3
Binary file not shown.
Binary file added audio/skill/twrouke1.mp3
Binary file not shown.
Binary file added audio/skill/twrouke2.mp3
Binary file not shown.
Binary file removed audio/skill/weizhong.mp3
Binary file not shown.
Binary file added audio/skill/xinjiangchi1.mp3
Binary file not shown.
Binary file added audio/skill/xinjiangchi2.mp3
Binary file not shown.
Binary file modified audio/skill/zhengnan2.mp3
Binary file not shown.
Binary file added audio/skill/zhenlie_re_wangyi1.mp3
Binary file not shown.
Binary file added audio/skill/zhenlie_re_wangyi2.mp3
Binary file not shown.
106 changes: 56 additions & 50 deletions card/extra.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,69 +99,62 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
ai:{
basic:{
useful:function(card,i){
useful:(card,i)=>{
if(_status.event.player.hp>1){
if(i==0) return 4;
if(i===0) return 4;
return 1;
}
if(i==0) return 7.3;
if(i===0) return 7.3;
return 3;
},
value:function(card,player,i){
value:(card,player,i)=>{
if(player.hp>1){
if(i==0) return 5;
if(i===0) return 5;
return 1;
}
if(i==0) return 7.3;
if(i===0) return 7.3;
return 3;
},
}
},
order:function(){
return get.order({name:'sha'})+0.2;
order:()=>{
if(_status.event.dying) return 9;
let sha=get.order({name:'sha'});
if(sha>0) return sha+0.2;
return 0;
},
result:{
target:function(player,target){
target:(player,target)=>{
if(target&&target.isDying()) return 2;
if(target&&!target.isPhaseUsing()) return 0;
if(lib.config.mode=='stone'&&!player.isMin()){
if(player.getActCount()+1>=player.actcount) return 0;
}
var shas=player.getCards('h','sha');
if(shas.length>1&&(player.getCardUsable('sha')>1||player.countCards('h','zhuge'))){
return 0;
}
shas.sort(function(a,b){
return get.order(b)-get.order(a);
})
var card;
if(shas.length){
for(var i=0;i<shas.length;i++){
if(lib.filter.filterCard(shas[i],target)){
card=shas[i];break;
}
}
}
else if(player.hasSha()&&player.needsToDiscard()){
if(player.countCards('h','hufu')!=1){
card={name:'sha'};
}
}
if(card){
if(game.hasPlayer(function(current){
return (get.attitude(target,current)<0&&
target.canUse(card,current,null,true)&&
!current.hasSkillTag('filterDamage',null,{
player:player,
card:card,
jiu:true,
})&&
get.effect(current,card,target)>0);
})){
if(!target || target._jiu_temp || !target.isPhaseUsing()) return 0;
if(!target.getCardUsable('sha') || lib.config.mode==='stone'&&!player.isMin()&&player.getActCount()+1>=player.actcount) return 0;
let shas = player.getCards('hs',card=>get.name(card)==='sha'&&!ui.selected.cards.includes(card)), card;
if(!shas.length || !target.hasSha() || shas.length>1&&(target.getCardUsable('sha')>1 || target.countCards('hs','zhuge'))) return 0;
target._jiu_temp = true;
shas.sort((a,b)=>get.order(b)-get.order(a));
for(let i=0; i<shas.length; i++){
let tars = [];
if(lib.filter.filterCard(shas[i],target)) tars = game.filterPlayer(current=>{
return get.attitude(target,current)<0&&target.canUse(shas[i],current,null,true)&&!current.hasSkillTag('filterDamage',null,{
player:target,
card:shas[i],
jiu:true
})&&get.effect(current,shas[i],target)>0;
});
if(!tars.length) continue;
tars.sort((a,b)=>{
return get.effect(b,shas[i],target)-get.effect(a,shas[i],target);
});
if(!tars[0].mayHaveShan(player,'use') || target.hasSkillTag('directHit_ai',true,{
target:tars[0],
card:shas[i]
},true) || target.needsToDiscard()>Math.max(0,3-target.hp)){
delete target._jiu_temp;
return 1;
}
}
delete target._jiu_temp;
return 0;
},
}
},
tag:{
save:1,
Expand Down Expand Up @@ -203,7 +196,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
player.chooseToDiscard({suit:get.suit(event.card2)},function(card){
var evt=_status.event.getParent();
if(get.damageEffect(evt.target,evt.player,evt.player,'fire')>0){
return 7-get.value(card,evt.player);
return 6.2+Math.min(4,evt.player.hp)-get.value(card,evt.player);
}
return -1;
}).set('prompt',false);
Expand All @@ -225,8 +218,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
value:[3,1],
useful:1,
},
wuxie:function(target,card,player,current,state){
if(get.attitude(current,player)>=0&&state>0) return false;
wuxie:function(target,card,player,viewer,state){
let att=get.attitude(viewer,target), eff=get.effect(target,card,player,target);
if(status*get.attitude(viewer,player)>0&&!player.isMad() || status*eff*att>=0) return 0;
if(get.attitude(viewer,player)>=0 || _status.event.getRand('huogong_wuxie')*4>player.countCards('h')) return 0;
},
result:{
player:function(player){
Expand All @@ -247,6 +242,17 @@ game.import('card',function(lib,game,ui,get,ai,_status){
target:function(player,target){
if(target.hasSkill('huogong2')||target.countCards('h')==0) return 0;
if(player.countCards('h')<=1) return 0;
if(_status.event.player == player){
if(target.isAllCardsKnown(player)){
if(!target.countCards('h',card=>{
return player.countCards('h',card2=>{
return get.suit(card2) == get.suit(card);
});
})){
return 0;
}
}
}
if(target==player){
if(typeof _status.event.filterCard=='function'&&
_status.event.filterCard({name:'huogong'},player,_status.event)){
Expand Down Expand Up @@ -961,7 +967,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
bingliang_bg:'粮',
bingliang_info:'出牌阶段,对一名距离为1的其他角色使用。目标角色于其判定阶段进行判定:若判定结果不为梅花,则其跳过下一个摸牌阶段。',
hualiu_bg:'+马',
hualiu_info:'你的防御距离+1',
hualiu_info:'锁定技,其他角色计算与你的距离+1。',
zhuque_bg:'扇',
zhuque_skill:'朱雀羽扇',
zhuque_info:'当你声明使用普【杀】后,你可以为此【杀】赋予火属性。',
Expand Down
34 changes: 17 additions & 17 deletions card/gujian.js
Original file line number Diff line number Diff line change
Expand Up @@ -668,7 +668,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
var value=get.value(card);
if(value>=8) return -100;
return num-value;
}).set('rand', Math.random()<0.5).prompt2='若与'+get.translation(target)+'展示的牌相同,你弃置展示的牌,'+get.translation(target)+'失去一点体力';
}).set('rand', Math.random()<0.5).prompt2='若与'+get.translation(target)+'展示的牌相同,你弃置展示的牌,'+get.translation(target)+'失去1点体力';
"step 1"
event.card1=result.cards[0];
target.chooseCard('请展示一张手牌',true).set('ai',function(card){
Expand All @@ -683,7 +683,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
var value=get.value(card);
if(value>=8) return -100;
return num-value;
}).set('rand', Math.random()<0.5).prompt2='若与'+get.translation(player)+'展示的牌相同,'+get.translation(player)+'弃置展示的牌,你失去一点体力';
}).set('rand', Math.random()<0.5).prompt2='若与'+get.translation(player)+'展示的牌相同,'+get.translation(player)+'弃置展示的牌,你失去1点体力';
"step 2"
event.card2=result.cards[0];
ui.arena.classList.add('thrownhighlight');
Expand Down Expand Up @@ -767,7 +767,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
event.finish();
}
else{
target.chooseToDiscard({color:'black'},'弃置一张黑色手牌或受流失一点体力').ai=function(card){
target.chooseToDiscard({color:'black'},'弃置一张黑色手牌或受失去1点体力').ai=function(card){
return 8-get.value(card);
};
}
Expand Down Expand Up @@ -1351,7 +1351,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
nopop:true,
intro:{
content:function(storage,player){
return '结束阶段,若你的体力值为全场最少或之一,你获得一点护甲(剩余'+player.storage.liyutang_markcount+'回合)'
return '结束阶段,若你的体力值为全场最少或之一,你获得1点护甲(剩余'+player.storage.liyutang_markcount+'回合)'
}
},
content:function(){
Expand All @@ -1378,7 +1378,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
nopop:true,
intro:{
content:function(storage,player){
return '准备阶段,若你的体力值为全场最少或之一,你回复一点体力(剩余'+player.storage.yougeng_markcount+'回合)'
return '准备阶段,若你的体力值为全场最少或之一,你回复1点体力(剩余'+player.storage.yougeng_markcount+'回合)'
}
},
content:function(){
Expand Down Expand Up @@ -1529,7 +1529,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
yunvyuanshen_skill:{
mark:'card',
intro:{
content:'下一进入濒死状态时回复一点体力'
content:'下一进入濒死状态时回复1点体力'
},
trigger:{player:'dying'},
forced:true,
Expand All @@ -1546,7 +1546,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
dinvxuanshuang_skill:{
mark:'card',
intro:{
content:'下个结束阶段获得一点护甲,若你体力值为全场最少之一,你摸一张牌'
content:'下个结束阶段获得1点护甲,若你体力值为全场最少之一,你摸一张牌'
},
trigger:{player:'phaseEnd'},
forced:true,
Expand Down Expand Up @@ -1803,9 +1803,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
longxugou:'龙须钩',
longxugou_info:'出牌阶段对一名装备区内有牌的其他角色使用,获得其装备区内的一张牌并装备之',
mianlijinzhen:'棉里针',
mianlijinzhen_info:'出牌阶段对一名体力值不小于你的角色使用,目标摸一张牌然后失去一点体力',
mianlijinzhen_info:'出牌阶段对一名体力值不小于你的角色使用,目标摸一张牌然后失去1点体力',
shenhuofeiya:'神火飞鸦',
shenhuofeiya_info:'出牌阶段对一名其他角色和其相邻角色使用,目标需打出一张闪,否则受到一点火属性伤害',
shenhuofeiya_info:'出牌阶段对一名其他角色和其相邻角色使用,目标需打出一张闪,否则受到1点火属性伤害',
// tuhunsha:'土魂砂',
// tuhunsha_info:'土魂砂',
// wenhuangsan:'瘟癀伞',
Expand All @@ -1815,16 +1815,16 @@ game.import('card',function(lib,game,ui,get,ai,_status){

bingpotong:'天女散花',
bingpotong_ab:'散花',
bingpotong_info:'出牌阶段对至多3名角色使用,你与每个目标依次同时展示一张手牌,若颜色相同,你弃置展示的手牌,目标失去一点体力并终止结算',
bingpotong_info:'出牌阶段对至多3名角色使用,你与每个目标依次同时展示一张手牌,若颜色相同,你弃置展示的手牌,目标失去1点体力并终止结算',
feibiao:'飞镖',
feibiao_info:'出牌阶段,对一名距离1以外的角色使用,令其弃置一张黑色手牌或流失一点体力',
feibiao_info:'出牌阶段,对一名距离1以外的角色使用,令其弃置一张黑色手牌或失去1点体力',

dinvxuanshuang:'帝女玄霜',
dinvxuanshuang_skill:'帝女玄霜',
dinvxuanshuang_info:'对一名濒死状态的角色使用,目标回复一点体力,然后可以弃置任意张牌并摸等量的牌',
dinvxuanshuang_info:'对一名濒死状态的角色使用,目标回复1点体力,然后可以弃置任意张牌并摸等量的牌',
yunvyuanshen:'玉女元参',
yunvyuanshen_skill:'玉女元参',
yunvyuanshen_info:'出牌阶段对一名角色使用,目标在下一次进入濒死状态时回复一点体力',
yunvyuanshen_info:'出牌阶段对一名角色使用,目标在下一次进入濒死状态时回复1点体力',
ziyangdan:'紫阳丹',
ziyangdan_info:'出牌阶段对一名角色使用,目标获得3点护甲,此后每个准备阶段失去1点护甲,直到首次失去所有护甲或累计以此法失去3点护甲',
gjyuheng:'玉衡',
Expand All @@ -1846,19 +1846,19 @@ game.import('card',function(lib,game,ui,get,ai,_status){
mutoumianju_skill:'木杀',
mutoumianju_skill_info:'出牌阶段限一次,你可以将一张手牌当作杀使用',
heilonglinpian:'黑龙鳞片',
heilonglinpian_info:'出牌阶段对自己使用,获得一点护甲,直到下一回合开始,你的防御距离+1',
heilonglinpian_info:'出牌阶段对自己使用,获得1点护甲,直到下一回合开始,你的防御距离+1',
shatang:'沙棠',
shatang_info:'出牌阶段对一名角色使用,对目标造成一点火焰伤害,然后目标获得一点护甲',
shatang_info:'出牌阶段对一名角色使用,对目标造成1点火焰伤害,然后目标获得1点护甲',

food:'食物',
chunbing:'春饼',
chunbing_info:'你的手牌上限+1,持续五回合',
gudonggeng:'骨董羹',
gudonggeng_info:'当你下一次受到杀造成的伤害时,令伤害-1,持续三回合',
yougeng:'酉羹',
yougeng_info:'准备阶段,若你的体力值为全场最少或之一,你回复一点体力,持续两回合',
yougeng_info:'准备阶段,若你的体力值为全场最少或之一,你回复1点体力,持续两回合',
liyutang:'鲤鱼汤',
liyutang_info:'结束阶段,若你的体力值为全场最少或之一,你获得一点护甲,持续两回合',
liyutang_info:'结束阶段,若你的体力值为全场最少或之一,你获得1点护甲,持续两回合',
mizhilianou:'蜜汁藕',
mizhilianou_info:'你可以将一张红桃牌当作桃使用,持续四回合',
xiajiao:'虾饺',
Expand Down
74 changes: 27 additions & 47 deletions card/guozhan.js
Original file line number Diff line number Diff line change
Expand Up @@ -696,7 +696,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
});
},
mode:['guozhan'],
global:['g_chiling1','g_chiling2','g_chiling3'],
//global:['g_chiling1','g_chiling2','g_chiling3'],
filterTarget:function(card,player,target){
return target.isUnseen();
},
Expand Down Expand Up @@ -754,6 +754,27 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}
target.draw();
},
destroy:function(card,targetPosition,player,event){
if(event.name!='lose'||event.name!='cardsDiscard'||targetPosition!='discardPile') return false;
var evt=event.getParent().relatedEvent;
if(evt&&evt.name=='useCard') return false;

return true;
},
onDestroy:function(){
var currentPhase=_status.currentPhase;
if(currentPhase){
_status.chiling=true;
currentPhase.addTempSkill('g_chiling3');
}
if(!lib.inpile.contains('zhaoshu')){
lib.inpile.push('zhaoshu');
var card=game.createCard2('zhaoshu','club',3);
game.log(card,'被置于了牌堆底');
ui.cardPile.appendChild(card);
game.updateRoundNumber();
}
},
ai:{
order:6,
result:{
Expand Down Expand Up @@ -1570,50 +1591,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}
},
},
g_chiling1:{
mode:['guozhan'],
trigger:{
player:'loseEnd',
global:'cardsDiscardEnd',
},
filter:function(event,player){
var evt=event.getParent().relatedEvent;
if(evt&&evt.name=='useCard') return false;
for(var i=0;i<event.cards.length;i++){
if(event.cards[i].name=='chiling'&&get.position(event.cards[i],true)=='d'){
return true;
}
}
return false;
},
forced:true,
popup:false,
content:function(){
var cards=[];
for(var i=0;i<trigger.cards.length;i++){
if(trigger.cards[i].name=='chiling'&&get.position(trigger.cards[i],true)=='d'){
cards.push(trigger.cards[i]);
}
}
if(cards.length){
game.cardsGotoSpecial(cards);
game.log(cards,'已被移出游戏');
_status.chiling=true;
if(player&&player.popup) player.popup('敕令');
}
if(!lib.inpile.contains('zhaoshu')){
lib.inpile.push('zhaoshu');
var card=game.createCard2('zhaoshu','club',3);
game.log(card,'被置于了牌堆底');
ui.cardPile.appendChild(card);
game.updateRoundNumber();
}
},
},
g_chiling2:{},
g_chiling3:{
mode:['guozhan'],
trigger:{player:'phaseAfter'},
trigger:{player:'phaseEnd'},
forced:true,
popup:false,
filter:function(){
Expand Down Expand Up @@ -1791,13 +1771,13 @@ game.import('card',function(lib,game,ui,get,ai,_status){
yuxi_skill:'玉玺',
yuxi_skill2:'玉玺',
yuxi:'玉玺',
yuxi_info:'锁定技。若你有明置的武将牌,则:①你的势力视为唯一的大势力。②摸牌阶段开始时,你令额定摸牌数+1。③出牌阶段开始时,你视为使用【知己知彼】',
yuxi_info:'锁定技。若你有明置的武将牌,则:①你的势力视为唯一的大势力。②摸牌阶段开始时,你令额定摸牌数+1。③出牌阶段开始时,你视为使用【知己知彼】',
xietianzi:'挟令',
xietianzi_info:'出牌阶段,对自己使用。你结束出牌阶段。本回合的弃牌阶段结束时,你可以弃置一张手牌,获得一个额外的回合。',
xietianzi_info_guozhan:'出牌阶段,对身为大势力角色的自己使用。你结束出牌阶段。本回合的弃牌阶段结束时,你可以弃置一张手牌,获得一个额外的回合。',
shuiyanqijunx:'水淹七军',
shuiyanqijunx_info:'出牌阶段,对一名其他角色使用。目标角色选择一项:⒈弃置装备区里的所有牌(至少一张)。⒉受到你造成的1点雷电伤害',
shuiyanqijunx_info_guozhan:'出牌阶段,对一名装备区里有牌的其他角色使用。目标角色选择一项:⒈弃置装备区里的所有牌。⒉受到你造成的1点雷电伤害',
shuiyanqijunx_info:'出牌阶段,对一名其他角色使用。目标角色选择一项:⒈弃置装备区里的所有牌(至少一张)。⒉受到你造成的1点雷电伤害',
shuiyanqijunx_info_guozhan:'出牌阶段,对一名装备区里有牌的其他角色使用。目标角色选择一项:⒈弃置装备区里的所有牌。⒉受到你造成的1点雷电伤害',
lulitongxin:'勠力同心',
lulitongxin_info:'出牌阶段,对所有大势力角色或所有小势力角色使用。若目标角色:未横置,则其横置;已横置,则其摸一张牌。',
lulitongxin_info_versus:'出牌阶段,对所有己方角色或所有敌方角色使用。若目标角色:未横置,则其横置;已横置,则其摸一张牌。',
Expand Down Expand Up @@ -1831,7 +1811,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
sanjian_skill:'三尖两刃刀',
jingfanma_bg:'-马',
jingfanma:'惊帆',
jingfanma_info:'你的进攻距离+1',
jingfanma_info:'锁定技,你计算与其他角色的距离-1。',
huxinjing_bg:'镜',
huxinjing:'护心镜',
huxinjing_info:'此牌可对其他角色使用。当你受到伤害时,若伤害值大于1或大于等于你的体力值,则你可以将所有【护心镜】置入弃牌堆,然后防止此伤害。',
Expand Down
Loading

0 comments on commit 3a65c95

Please sign in to comment.