diff --git a/audio/die/dufuren.mp3 b/audio/die/dufuren.mp3
new file mode 100644
index 000000000..5486145db
Binary files /dev/null and b/audio/die/dufuren.mp3 differ
diff --git a/audio/die/lvlingqi.mp3 b/audio/die/lvlingqi.mp3
new file mode 100644
index 000000000..aee9ac155
Binary files /dev/null and b/audio/die/lvlingqi.mp3 differ
diff --git a/audio/die/ol_wangrong.mp3 b/audio/die/ol_wangrong.mp3
new file mode 100644
index 000000000..15f2cf2dc
Binary files /dev/null and b/audio/die/ol_wangrong.mp3 differ
diff --git a/audio/skill/guowu1.mp3 b/audio/skill/guowu1.mp3
new file mode 100644
index 000000000..023ac184a
Binary files /dev/null and b/audio/skill/guowu1.mp3 differ
diff --git a/audio/skill/guowu2.mp3 b/audio/skill/guowu2.mp3
new file mode 100644
index 000000000..2616c3c59
Binary files /dev/null and b/audio/skill/guowu2.mp3 differ
diff --git a/audio/skill/olfengzi1.mp3 b/audio/skill/olfengzi1.mp3
new file mode 100644
index 000000000..89e1fb457
Binary files /dev/null and b/audio/skill/olfengzi1.mp3 differ
diff --git a/audio/skill/olfengzi2.mp3 b/audio/skill/olfengzi2.mp3
new file mode 100644
index 000000000..b82f76b00
Binary files /dev/null and b/audio/skill/olfengzi2.mp3 differ
diff --git a/audio/skill/olfusong1.mp3 b/audio/skill/olfusong1.mp3
new file mode 100644
index 000000000..73622c938
Binary files /dev/null and b/audio/skill/olfusong1.mp3 differ
diff --git a/audio/skill/olfusong2.mp3 b/audio/skill/olfusong2.mp3
new file mode 100644
index 000000000..56bd01408
Binary files /dev/null and b/audio/skill/olfusong2.mp3 differ
diff --git a/audio/skill/oljizhan1.mp3 b/audio/skill/oljizhan1.mp3
new file mode 100644
index 000000000..8b4eeface
Binary files /dev/null and b/audio/skill/oljizhan1.mp3 differ
diff --git a/audio/skill/oljizhan2.mp3 b/audio/skill/oljizhan2.mp3
new file mode 100644
index 000000000..7f99a9a6a
Binary files /dev/null and b/audio/skill/oljizhan2.mp3 differ
diff --git a/audio/skill/shunshi1.mp3 b/audio/skill/shunshi1.mp3
new file mode 100644
index 000000000..300445eda
Binary files /dev/null and b/audio/skill/shunshi1.mp3 differ
diff --git a/audio/skill/shunshi2.mp3 b/audio/skill/shunshi2.mp3
new file mode 100644
index 000000000..c89c681e5
Binary files /dev/null and b/audio/skill/shunshi2.mp3 differ
diff --git a/audio/skill/yise1.mp3 b/audio/skill/yise1.mp3
new file mode 100644
index 000000000..17df7ea12
Binary files /dev/null and b/audio/skill/yise1.mp3 differ
diff --git a/audio/skill/yise2.mp3 b/audio/skill/yise2.mp3
new file mode 100644
index 000000000..f21332bcd
Binary files /dev/null and b/audio/skill/yise2.mp3 differ
diff --git a/audio/skill/zhuangrong1.mp3 b/audio/skill/zhuangrong1.mp3
new file mode 100644
index 000000000..002474fa2
Binary files /dev/null and b/audio/skill/zhuangrong1.mp3 differ
diff --git a/audio/skill/zhuangrong2.mp3 b/audio/skill/zhuangrong2.mp3
new file mode 100644
index 000000000..7809fcbb9
Binary files /dev/null and b/audio/skill/zhuangrong2.mp3 differ
diff --git a/character/diy.js b/character/diy.js
index b45c2e35c..504bad4cb 100755
--- a/character/diy.js
+++ b/character/diy.js
@@ -8649,6 +8649,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
usedu:true,
save:true,
skillTagFilter:function(player,tag,target){
+ if(tag=='usedu') return player.isDamaged();
return player==target&&player.hasUsableCard('du')&&!player.hasSkill('lucia_duqu_terra');
},
},
diff --git a/character/mobile.js b/character/mobile.js
index fe41de20a..b72b7c78a 100644
--- a/character/mobile.js
+++ b/character/mobile.js
@@ -128,7 +128,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
hujinding:['female','shu','2/6',['renshi','wuyuan','huaizi']],
re_zhanggong:['male','wei',3,['reqianxin','rezhenxing']],
- re_xugong:['male','wu',3,['rebiaozhao','yechou']],
+ re_xugong:['male','qun',3,['rebiaozhao','yechou']],
re_weiwenzhugezhi:['male','wu',4,['refuhai']],
xin_yuanshao:['male','qun',4,['reluanji','xueyi'],['zhu']],
diff --git a/character/rank.js b/character/rank.js
index b7daf6306..165bd1ff9 100644
--- a/character/rank.js
+++ b/character/rank.js
@@ -255,6 +255,7 @@ window.noname_character_rank={
'caochun',
'xin_caifuren',
'shen_xunyu',
+ 'ol_wangrong',
'key_misuzu',
'key_sunohara',
'key_umi',
@@ -473,6 +474,7 @@ window.noname_character_rank={
'ns_yanghu',
'ns_zhangning',
'huangchengyan',
+ 'lvlingqi',
'zhongyan',
'wangling',
'zhouchu',
@@ -703,6 +705,7 @@ window.noname_character_rank={
'ol_lusu',
'zhangzhongjing',
'db_wenyang',
+ 'dufuren',
],
b:[
'diy_feishi',
@@ -1405,6 +1408,7 @@ window.noname_character_rank={
're_panshu',
'db_wenyang',
'qiaozhou',
+ 'lvlingqi',
'key_kano',
'key_haruko',
'key_akiko',
@@ -1741,6 +1745,8 @@ window.noname_character_rank={
'jiachong',
'ol_lusu',
'xin_sunluban',
+ 'ol_wangrong',
+ 'dufuren',
],
junk:[
'sunshao',
diff --git a/character/refresh.js b/character/refresh.js
index d282824dc..de2f0092b 100755
--- a/character/refresh.js
+++ b/character/refresh.js
@@ -6134,7 +6134,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
intro:{
content:function(storage,player,skill){
var str='
锁定技,你不能于〖蛊惑〗的结算流程中进行质疑。当你的体力值不大于1时,你的其他技能失效。';
- var list=player.getSkills(null,null,false).filter(function(i){
+ var list=player.getSkills(null,false,false).filter(function(i){
return lib.skill.rechanyuan.skillBlocker(i,player);
});
if(list.length) str+=('
失效技能:'+get.translation(list))
diff --git a/character/shenhua.js b/character/shenhua.js
index 6e0e91e6c..856de004e 100755
--- a/character/shenhua.js
+++ b/character/shenhua.js
@@ -7193,7 +7193,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
intro:{
content:function(storage,player,skill){
var str='锁定技,你不能质疑于吉,只要你的体力值为1,你的其他技能便全部失效。';
- var list=player.getSkills(null,null,false).filter(function(i){
+ var list=player.getSkills(null,false,false).filter(function(i){
return lib.skill.rechanyuan.skillBlocker(i,player);
});
if(list.length) str+=('
失效技能:'+get.translation(list))
diff --git a/character/sp.js b/character/sp.js
index 87f77124c..26a302b0c 100755
--- a/character/sp.js
+++ b/character/sp.js
@@ -16,7 +16,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterFilter:{},
character:{
- ol_wangrong:['female','qun',3,['olfengzi','oljizhan','olfusong'],['unseen']],
+ ol_wangrong:['female','qun',3,['olfengzi','oljizhan','olfusong']],
ol_dengzhi:['male','shu',3,['olxiuhao','olsujian']],
bianfuren:['female','wei',3,['fuwei','yuejian']],
duxi:['male','wei',3,['quxi','bixiong']],
@@ -413,8 +413,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(player!=game.me&&!player.isUnderControl()&&!player.isOnline()) game.delayx();
var type=get.type(trigger.card,false);
player.chooseToDiscard('h',get.prompt('olfengzi'),'弃置一张'+get.translation(type)+'牌,令'+get.translation(trigger.card)+'结算两次',function(card,player){
- return get.type(card,player)==_status.event.type;
- }).set('type',type).logSkill='olfengzi';
+ return get.type2(card,player)==_status.event.type;
+ }).set('type',type).set('ai',()=>-1).logSkill='olfengzi';
'step 1'
if(result.bool){
player.addTempSkill('olfengzi_buff','phaseUseAfter');
@@ -454,7 +454,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.showCards(card,get.translation(player)+'发动了【吉占】');
'step 1'
var str=get.strNumber(num);
- player.chooseControl('大于'+str,'小于'+str,'cancel2').set('prompt','吉占:猜测下一张牌的点数');
+ player.chooseControl('大于'+str,'小于'+str,'cancel2').set('prompt','吉占:猜测下一张牌的点数').set('choice',num<7?0:1).set('ai',()=>_status.event.choice);
'step 2'
var card=get.cards()[0];
game.cardsGotoOrdering(card);
@@ -485,13 +485,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
player.chooseTarget(get.prompt('olfusong'),'令一名体力上限大于你的其他角色获得〖丰姿〗或〖吉占〗',function(card,player,target){
return target.maxHp>player.maxHp;
- }).set('forceDie',true);
+ }).set('forceDie',true).set('ai',(target)=>get.attitude(_status.event.player,target));
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('olfusong',target);
- player.chooseControl('olfengzi','oljizhan').set('prompt','令'+get.translation(target)+'获得其中一个技能');
+ player.chooseControl('olfengzi','oljizhan').set('prompt','令'+get.translation(target)+'获得其中一个技能').set('ai',()=>(Math.random()>0.5?0:1));
}
else event.finish();
'step 2'
diff --git a/character/sp2.js b/character/sp2.js
index 628828f48..7a95b30c1 100644
--- a/character/sp2.js
+++ b/character/sp2.js
@@ -4,6 +4,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sp2',
connect:true,
character:{
+ lvlingqi:['female','qun',4,['guowu','zhuangrong']],
+ dufuren:['female','wei',3,['yise','shunshi']],
zhanghu:['male','wei',4,['cuijian','tongyuan']],
caoanmin:['male','wei',4,['xianwei']],
re_panshu:['female','wu',3,['zhiren','yaner']],
@@ -54,7 +56,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xingdaorong:['male','qun','4/6',['xuxie']],
lijue:["male","qun","4/6",["xinfu_langxi","xinfu_yisuan"],[]],
zhangji:["male","qun",4,["xinfu_lveming","xinfu_tunjun"],[]],
- fanchou:["male","qun",4,["xinfu_xingluan"],[]],
+ fanchou:["male","qun",4,["xinxingluan"],[]],
guosi:["male","qun",4,["xinfu_tanbei","xinfu_sidao"],[]],
lvkai:["male","shu",3,["xinfu_tunan","xinfu_bijing"],[]],
zhanggong:["male","wei",3,["xinfu_zhenxing","xinfu_qianxin"],[]],
@@ -102,10 +104,428 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_fadong:['ol_dingyuan','wangrong','re_quyi','hanfu'],
sp_xuzhou:['re_taoqian','caosong','zhangmiao','qiuliju'],
sp_zhongyuan:['re_hucheer','re_zoushi','caoanmin'],
- sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng','ruanyu','liangxing','re_niujin','re_dongzhao','re_dongcheng','yangwan','heyan','re_panshu','zhanghu'],
+ sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng','ruanyu','liangxing','re_niujin','re_dongzhao','re_dongcheng','yangwan','heyan','re_panshu','zhanghu','dufuren'],
}
},
skill:{
+ //樊稠
+ xinxingluan:{
+ audio:'xinfu_xingluan',
+ usable:1,
+ trigger:{player:'useCardAfter'},
+ direct:true,
+ filter:function(event,player){
+ return player.isPhaseUsing();
+ },
+ content:function(){
+ 'step 0'
+ var list=['观看牌堆中两张点数为6的牌并获得其中一张'];
+ event.addIndex=1;
+ var bool2=false,bool3=game.hasPlayer(function(current){
+ if(current!=player&¤t.countCards('he')>0) bool2=true;
+ return current.hasCard(function(card){
+ return get.number(card)==6&&lib.filter.canBeGained(card,current,player);
+ },'ej');
+ });
+ if(bool2){
+ event.addIndex=0;
+ list.push('令一名其他角色弃置一张点数为6的牌或交给你一张牌');
+ }
+ if(bool3) list.push('获得场上一张点数为6的牌');
+ player.chooseControl('cancel2').set('choiceList',list).set('prompt',get.prompt('xinxingluan')).set('ai',function(){
+ var player=_status.event.player;
+ if(game.hasPlayer(function(current){
+ if(current==player) return false;
+ var att=-get.sgn(get.attitude(player,current)-0.1);
+ return current.hasCard(function(card){
+ return get.number(card)==6&&lib.filter.canBeGained(card,current,player)&&get.sgn(get.useful(card,current))==att;
+ },'ej');
+ })) return 2-_status.event.getParent().addIndex;
+ if(game.hasPlayer(function(target){
+ if(target==player) return false;
+ var att=get.attitude(player,target);
+ return att<0&&target.countCards('he')>0&&!target.hasCard(function(card){
+ return get.value(card,target)<=0;
+ },'he');
+ })) return 1;
+ return 0;
+ });
+ 'step 1'
+ if(result.control!='cancel2'){
+ if(result.index==0){
+ player.logSkill('xinxingluan');
+ }
+ else if(result.index+event.addIndex==1) event.goto(6);
+ else event.goto(4);
+ }
+ else event.finish();
+ 'step 2'
+ var cards=[];
+ while(cards.length<2){
+ var card=get.cardPile(function(card){
+ return !cards.contains(card)&&get.number(card)==6;
+ });
+ if(!card) break;
+ cards.push(card);
+ }
+ if(!cards.length){
+ player.draw();
+ event.finish();
+ }
+ else if(cards.length==1){
+ event._result={bool:true,links:cards};
+ }
+ else player.chooseButton(['兴乱:选择获得其中一张',cards],true).set('ai',function(button){
+ return get.value(button.link,_status.event.player);
+ });
+ 'step 3'
+ if(result.bool){
+ player.gain(result.links,'gain2');
+ }
+ event.finish();
+ 'step 4'
+ player.chooseTarget('获得一名角色装备区或判定区内点数为6的牌',true,function(card,player,current){
+ return current.hasCard(function(card){
+ return get.number(card)==6&&lib.filter.canBeGained(card,current,player);
+ },'ej');
+ }).set('ai',function(target){
+ var player=_status.event.player,att=-get.sgn(get.attitude(player,target)-0.1),max=0,ej=target.getCards('ej',function(card){
+ return get.number(card)==6&&lib.filter.canBeGained(card,target,player);
+ });
+ for(var i of ej){
+ var num=get.useful(i,target)*att;
+ if(num>max) max=num;
+ return max;
+ }
+ });
+ 'step 5'
+ if(result.bool){
+ var target=result.targets[0];
+ player.logSkill('xinxingluan',target);
+ player.gainPlayerCard(target,'ej',true).set('filterButton',function(button){
+ return get.number(button.link)==6;
+ });
+ }
+ event.finish();
+ 'step 6'
+ player.chooseTarget('令一名其他角色弃置一张点数为6的牌,否则交给你一张牌',true,function(card,player,current){
+ return current!=player&¤t.countCards('he')>0;
+ }).set('ai',function(target){
+ var player=_status.event.player,att=get.attitude(player,target);
+ if(att>=0) return 0;
+ if(!target.hasCard(function(card){
+ return get.value(card,target)<=0;
+ },'he')) return -att/Math.sqrt(target.countCards('he'));
+ return 0;
+ });
+ 'step 7'
+ if(result.bool){
+ var target=result.targets[0];
+ event.target=target;
+ player.logSkill('xinxingluan',target);
+ target.chooseToDiscard('he','弃置一张点数为6的牌,否则交给'+get.translation(player)+'一张牌',function(card){
+ return get.number(card)==6;
+ }).ai=(card)=>(8-get.value(card));
+ }
+ 'step 8'
+ if(!result.bool){
+ target.chooseCard('he',true,'交给'+get.translation(player)+'一张牌');
+ }
+ else event.finish();
+ 'step 9'
+ if(result.bool) player.gain(result.cards,target,'giveAuto');
+ },
+ },
+ rexingluan:{
+ audio:'xinfu_xingluan',
+ usable:1,
+ trigger:{player:'useCardAfter'},
+ filter:function(event,player){
+ return event.targets&&event.targets.length==1&&typeof get.number(event.card,false)=='number'&&player.isPhaseUsing();
+ },
+ direct:true,
+ content:function(){
+ 'step 0'
+ var str='',num=get.number(trigger.card,false),nums=get.strNumber(num);
+ var list=game.filterPlayer(function(current){
+ return current.hasCard(function(card){
+ return get.number(card)==num&&lib.filter.canBeGained(card,current,player);
+ },'ej');
+ });
+ if(list.length){
+ str+='获得一名角色装备区或判定区内的一张点数为'+nums+'的牌,或直接从牌堆中获得一张点数为'+nums+'的牌';
+ player.chooseTarget(get.prompt('rexingluan'),str,[0,1],function(card,player,target){
+ return _status.event.targets.contains(target);
+ }).set('targets',list).set('ai',function(target){
+ if(!target) return 1;
+ var player=_status.event.player,num=get.number(_status.event.getTrigger().card,false),att=-get.sgn(get.attitude(player,target));
+ if(target.hasCard(function(card){
+ return get.number(card)==num&&get.effect(target,card,target,player)<0;
+ },'j')) return 1.2*Math.abs(get.attitude(player,target));
+ if(target.hasCard(function(card){
+ return get.number(card)==num&&get.sgn(get.value(card,target)+0.1)==att;
+ },'e')) return Math.abs(get.attitude(player,target));
+ return 0;
+ });
+ }
+ else{
+ player.chooseBool(get.prompt('rexingluan'),'从牌堆中获得一张点数为'+nums+'的牌').ai=()=>true;
+ }
+ 'step 1'
+ if(result.bool){
+ if(result.targets&&result.targets.length){
+ var target=result.targets[0];
+ player.logSkill('rexingluan',target);
+ player.gainPlayerCard(target,'ej',true).set('num',get.number(trigger.card,false)).set('filterButton',function(button){
+ return get.number(button.link)==_status.event.num;
+ });
+ }
+ else{
+ player.logSkill('rexingluan');
+ var num=get.number(trigger.card,false),card=get.cardPile2(function(i){
+ return get.number(i,false)==num;
+ });
+ if(card) player.gain(card,'gain2');
+ }
+ }
+ },
+ },
+ //吕玲绮
+ guowu:{
+ trigger:{player:'phaseUseBegin'},
+ filter:function(event,player){
+ return player.countCards('h')>0;
+ },
+ content:function(){
+ 'step 0'
+ var hs=player.getCards('h');
+ player.showCards(hs,get.translation(player)+'发动了【帼舞】');
+ var list=[];
+ for(var i of hs){
+ list.add(get.type2(i,player));
+ if(list.length>=3) break;
+ }
+ if(list.length>=1){
+ var card=get.discardPile(function(i){
+ return i.name=='sha';
+ });
+ if(card) player.gain(card,'gain2');
+ }
+ if(list.length>=2) player.addTempSkill('guowu_dist','phaseUseAfter');
+ if(list.length>=3) player.addTempSkill('guowu_add','phaseUseAfter');
+ },
+ subSkill:{
+ dist:{
+ charlotte:true,
+ mod:{targetInRange:()=>true},
+ },
+ add:{
+ charlotte:true,
+ trigger:{player:'useCard1'},
+ direct:true,
+ filter:function(event,player){
+ var info=get.info(event.card,false);
+ if(info.allowMultiple==false) return false;
+ if(event.card.name!='sha'&&info.type!='trick') return false;
+ if(event.targets&&!info.multitarget){
+ if(game.hasPlayer(function(current){
+ return !event.targets.contains(current)&&lib.filter.targetEnabled2(event.card,player,current)&&lib.filter.targetInRange(event.card,player,current);
+ })){
+ return true;
+ }
+ }
+ return false;
+ },
+ content:function(){
+ 'step 0'
+ var num=game.countPlayer(function(current){
+ return !trigger.targets.contains(current)&&lib.filter.targetEnabled2(trigger.card,player,current)&&lib.filter.targetInRange(trigger.card,player,current);
+ });
+ player.chooseTarget('帼舞:是否为'+get.translation(trigger.card)+'增加'+(num>1?'至多两个':'一个')+'目标?',[1,Math.min(2,num)],function(card,player,target){
+ var trigger=_status.event.getTrigger();
+ var card=trigger.card;
+ return !trigger.targets.contains(target)&&lib.filter.targetEnabled2(card,player,target)&&lib.filter.targetInRange(card,player,target);
+ }).set('ai',function(target){
+ var player=_status.event.player;
+ var card=_status.event.getTrigger().card;
+ return get.effect(target,card,player,player);
+ });
+ 'step 1'
+ if(result.bool){
+ if(player!=game.me&&!player.isOnline()) game.delayx();
+ }
+ else event.finish();
+ 'step 2'
+ var targets=result.targets.sortBySeat();
+ player.logSkill('guowu_add',targets);
+ trigger.targets.addArray(targets);
+ },
+ },
+ },
+ },
+ zhuangrong:{
+ derivation:['llqshenwei','wushuang'],
+ trigger:{global:'phaseEnd'},
+ forced:true,
+ juexingji:true,
+ skillAnimation:true,
+ animationColor:'gray',
+ filter:function(event,player){
+ return player.hp==1||player.countCards('h')==1;
+ },
+ content:function(){
+ 'step 0'
+ player.awakenSkill('zhuangrong');
+ player.loseMaxHp();
+ 'step 1'
+ if(player.maxHp>player.hp) player.recover(player.maxHp-player.hp);
+ 'step 2'
+ player.drawTo(Math.min(5,player.maxHp));
+ player.addSkillLog('llqshenwei');
+ player.addSkillLog('wushuang');
+ },
+ },
+ llqshenwei:{
+ audio:2,
+ trigger:{player:'phaseDrawBegin2'},
+ forced:true,
+ filter:(event)=>!event.numFixed,
+ content:function(){
+ trigger.num+=2;
+ },
+ mod:{
+ maxHandcard:(player,num)=>num+2,
+ },
+ },
+ //杜夫人
+ yise:{
+ audio:2,
+ trigger:{global:'gainAfter'},
+ filter:function(event,player){
+ if(player==event.player||!event.player.isIn()) return false;
+ var evt=event.getl(player);
+ if(!evt||!evt.cards2.length) return false;
+ if(event.player.isDamaged()) return true;
+ for(var i of evt.cards2){
+ var color=get.color(i,player);
+ if(color=='black') return true;
+ }
+ return false;
+ },
+ direct:true,
+ content:function(){
+ 'step 0'
+ var cards=trigger.getl(player).cards2;
+ for(var i of cards){
+ event[get.color(i,player)]=true;
+ if(event.red&&event.black) break;
+ }
+ if(event.red&&trigger.player.isDamaged()){
+ player.chooseBool(get.prompt('yise',trigger.player),'令'+get.translation(trigger.player)+'回复1点体力').set('ai',()=>get.recoverEffect(_status.event.getTrigger().player,_status.event.player,_status.event.player)>0);
+ }
+ 'step 1'
+ if(event.black||event.red&&result.bool) player.logSkill('yise',trigger.player);
+ if(event.red&&result.bool) trigger.player.recover();
+ if(event.black){
+ trigger.player.addMark('yise_damage',1,false);
+ trigger.player.addSkill('yise_damage');
+ }
+ },
+ subSkill:{
+ damage:{
+ trigger:{player:'damageBegin1'},
+ forced:true,
+ charlotte:true,
+ onremove:true,
+ filter:function(event,player){
+ return event.card&&event.card.name=='sha'&&event.getParent().name=='sha';
+ },
+ content:function(){
+ trigger.num+=player.countMark('yise_damage');
+ player.removeSkill('yise_damage');
+ },
+ intro:{
+ content:'下一次受到杀的伤害+#',
+ },
+ },
+ },
+ },
+ shunshi:{
+ trigger:{player:['damageEnd','phaseZhunbeiBegin']},
+ direct:true,
+ filter:function(event,player){
+ return (event.name!='damage'||player!=_status.currentPhase)&&player.countCards('he')>0&&game.hasPlayer(function(current){
+ return current!=player&¤t!=event.source;
+ });
+ },
+ content:function(){
+ 'step 0'
+ player.chooseCardTarget({
+ prompt:get.prompt('shunshi'),
+ prompt2:'将一张牌交给一名其他角色,并获得+1效果',
+ filterCard:true,
+ filterTarget:function(card,player,target){
+ return target!=player&&target!=_status.event.source;
+ },
+ position:'he',
+ source:trigger.source,
+ ai1:function(card){
+ var player=_status.event.player;
+ if(player.hasSkill('yise')){
+ if(get.color(card,player)=='red'&&game.hasPlayer(function(current){
+ return current!=player&¤t!=_status.event.source&¤t.isDamaged()&&get.recoverEffect(current,player,player)>0;
+ })) return 10-get.value(card);
+ if(get.color(card,player)=='black') return 4-get.value(card);
+ }
+ return 8-get.value(card);
+ },
+ ai2:function(target){
+ var player=_status.event.player,card=ui.selected.cards[0];
+ if(player.hasSkill('yise')){
+ if(get.color(card)=='red'&&target.isDamaged()) return 2*get.recoverEffect(target,player,player);
+ if(get.color(card)=='black') return -get.attitude(player,target);
+ }
+ if(get.value(card,target)<0) return -get.attitude(player,target);
+ if(get.value(card,target)<1) return 0.01*-get.attitude(player,target);
+ return Math.max(1,get.value(card,target)-get.value(card,player))*get.attitude(player,target);
+ },
+ });
+ 'step 1'
+ if(result.bool){
+ var target=result.targets[0];
+ player.logSkill('shunshi',target);
+ target.gain(result.cards,player,'giveAuto');
+ player.addMark('shunshi_mark',1,false);
+ player.addTempSkill('shunshi_mark',{player:'phaseEnd'});
+ }
+ },
+ subSkill:{
+ mark:{
+ onremove:true,
+ trigger:{player:'phaseDrawBegin2'},
+ forced:true,
+ charlotte:true,
+ popup:false,
+ filter:function(event,player){
+ return !event.numFixed;
+ },
+ content:function(){
+ trigger.num+=player.countMark('shunshi_mark');
+ },
+ mod:{
+ maxHandcard:function(player,num){
+ return num+player.countMark('shunshi_mark');
+ },
+ cardUsable:function(card,player,num){
+ if(card.name=='sha') return num+player.countMark('shunshi_mark');
+ },
+ },
+ intro:{
+ content:'拥有#层效果',
+ },
+ },
+ },
+ },
cuijian:{
audio:2,
enable:'phaseUse',
@@ -170,11 +590,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.log(player,'修改了技能','#g【摧坚】');
}
else{
- if(trigger.card.name=='wuxie') trigger.directHit.addArray(game.players);
- else{
- if(typeof trigger.baseDamage!='number') trigger.baseDamage=1;
- trigger.baseDamage++;
- }
+ if(trigger.card.name=='wuxie') trigger.directHit.addArray(game.players);
+ else{
+ if(typeof trigger.baseDamage!='number') trigger.baseDamage=1;
+ trigger.baseDamage++;
+ }
}
},
},
@@ -8279,7 +8699,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'phaseJieshuBegin'},
frequent:true,
filter:function(event,player){
- if(player.getHistory('skipped').contains('phaseUse')) return false;
+ //if(player.getHistory('skipped').contains('phaseUse')) return false;
return player.getHistory('useCard',function(evt){
if(evt.targets&&evt.targets.length&&evt.isPhaseUsing()){
var targets=evt.targets.slice(0);
@@ -8944,7 +9364,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
},
- "xinfu_zhenxing":{
+ xinfu_zhenxing:{
audio:2,
trigger:{
player:["damageEnd","phaseJieshuBegin"],
@@ -9609,6 +10029,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
luyusheng:'陆郁生(?年-?),三国时期吴国官员陆绩之女。陆郁生的父亲陆绩是吴郡公认的才子,又是当时吴郡陆氏的领袖。陆绩赴任担任郁林太守,遂取此名。陆郁生年少的时候就定下坚贞的志向。建安二十四年(219年),陆绩早亡,她与两个兄弟陆宏、陆睿当时都只有几岁,一起返回吴县,被他们的从兄陆瑁接回抚养。13周岁的陆郁生嫁给同郡出身的张白为妻。出嫁3个月后,张白因为其兄张温一族的案件遭到连坐,被处以流刑,后死于流放地,陆郁生成为了寡妇,其后公开宣言不再改嫁,困难于生计但拒绝了所有提亲,在艰苦中从未停止服侍、照顾张白的姐妹。事情传到朝廷,皇帝褒奖陆郁生,号其为“义姑”。她的表侄姚信在文集中称赞她的义举。',
dongxie:'董卓之女,牛辅之妻。在《三国群英传》中名为董宜,在电视剧《三国群英会之吕布与貂蝉》中名为董媛。',
caoanmin:'曹安民(?-197年),沛国谯县(今安徽亳州)人,字安民。东汉时期人物,曹德之子,曹操之侄,曹昂的堂兄弟,曹丕的堂兄,死于宛城之战。按曹丕《典论》记载的“亡兄孝廉子脩、从兄安民遇害。”等情况来看,安民应该是曹操侄子错不了,曹丕是他们属于兄弟关系肯定不会弄错。另外从典论的记载来看安民是和子脩并提的,子脩是曹昂的字,安民则肯定也是字不是名,至于三国志中记载则应取自曹丕之《典论》但陈寿又不知曹安民其名,故写为“长子昂、弟子安民”。',
+ dufuren:'杜夫人(生卒年不详),东汉末年至三国时人。有异色,原为吕布将秦宜禄之妻,生子秦朗。后为曹操纳为妾,又生曹林、曹衮、金乡公主。',
+ lvlingqi:'吕玲绮,虚拟人物,源于日本光荣株式会社(现光荣特库摩公司)旗下游戏《真·三国无双》系列,初次登场于《真三国无双7:猛将传》。吕布的女儿,寂寥而威风凛凛的战姬,发挥着不亚于父亲的武艺,非常勇敢地身先士卒立于前线。虽然有着能够直面困难的坚强意志,却由于过去的经历而有着非常害怕孤独的一面。',
},
characterTitle:{
wulan:'#b对决限定武将',
@@ -9759,7 +10181,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
rewenji:'问计',
rewenji_info:'出牌阶段开始时,你可以令一名其他角色交给你一张牌。你于本回合内使用与该牌类型相同的牌时不能被其他角色响应。',
sptunjiang:'屯江',
- sptunjiang_info:'结束阶段,若你未跳过本回合的出牌阶段,且你于本回合出牌阶段内未使用牌指定过其他角色为目标,则你可以摸X张牌(X为全场势力数)。',
+ sptunjiang_info:'结束阶段,若你未于本回合的出牌阶段内使用牌指定过其他角色为目标,则你可以摸X张牌(X为全场势力数)。',
zongkui:'纵傀',
zongkui_mark:'纵傀',
zongkui_mark_bg:'傀',
@@ -10204,6 +10626,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
cuijian_info:'出牌阶段限一次,你可以选择一名有手牌的其他角色。若其手牌中:有【闪】,其将装备区内的防具牌和所有【闪】交给你,然后你交给其等量的牌;没有【闪】,你弃置一张手牌。',
tongyuan:'同援',
tongyuan_info:'锁定技。①当你于回合外使用【无懈可击】时,你将〖摧坚〗中的“弃置一张手牌”改为“摸一张牌”;②当你于回合外使用【桃】时,你将〖摧坚〗中的“等量的牌”改为“一张牌”。③当你使用【无懈可击】/【桃】时,若你已发动过〖摧坚①〗和〖摧坚②〗,则此牌不可被响应/回复值+1。',
+ dufuren:'杜夫人',
+ yise:'异色',
+ yise_info:'其他角色获得你的牌后,若这些牌中:有红色牌,你可令其回复1点体力;有黑色牌,其下次受到【杀】造成的伤害时,此伤害+1。',
+ shunshi:'顺世',
+ shunshi_info:'准备阶段开始时,或当你受到伤害后,你可将一张牌交给一名其他角色并获得如下效果直到你的回合结束:摸牌阶段的额定摸牌数+1,使用【杀】的次数上限+1,手牌上限+1。',
+ lvlingqi:'吕玲绮',
+ guowu:'帼舞',
+ guowu_info:'出牌阶段开始时,你可以展示全部手牌,根据你展示的类型数,你获得对应效果:至少一类,从弃牌堆获得一张【杀】;至少两类,此阶段使用牌无距离限制;至少三类,此阶段使用【杀】或普通锦囊牌可以多指定两个目标。',
+ zhuangrong:'妆戎',
+ zhuangrong_info:'觉醒技,一名角色的回合结束时,若你的体力值或手牌数为1,你减1点体力上限并回复体力至上限,将手牌摸至体力上限,然后获得〖神威〗和〖无双〗。',
+ llqshenwei:'神威',
+ llqshenwei_info:'锁定技,摸牌阶段开始时,你令额定摸牌数+2;你的手牌上限+2。',
+ rexingluan:'兴乱',
+ rexingluan_info:'出牌阶段限一次,当你使用的仅指定一个目标的牌结算完成后,你可以获得场上一张与此牌点数相同的牌,或获得牌堆中随机一张点数与此牌相同的牌。',
+ xinxingluan:'兴乱',
+ xinxingluan_info:'出牌阶段限一次。当你使用牌结算结束后,你可选择一项:①观看牌堆中的两张点数为6的牌并获得其中一张(没有则改为摸一张牌);②令一名其他角色弃置一张点数为6的牌或交给你一张牌;③获得场上的一张点数为6的牌。',
sp_whlw:"文和乱武",
sp_zlzy:"逐鹿中原",
diff --git a/character/standard.js b/character/standard.js
index 381925d15..e4cf81cde 100755
--- a/character/standard.js
+++ b/character/standard.js
@@ -2448,7 +2448,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
wushuang:{
shaRelated:true,
audio:2,
- audioname:['re_lvbu','shen_lvbu'],
+ audioname:['re_lvbu','shen_lvbu','lvlingqi'],
forced:true,
locked:true,
group:['wushuang1','wushuang2'],
@@ -2456,7 +2456,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
wushuang1:{
audio:'wushuang',
- audioname:['re_lvbu','shen_lvbu'],
+ audioname:['re_lvbu','shen_lvbu','lvlingqi'],
trigger:{player:'useCardToPlayered'},
forced:true,
filter:function(event,player){
@@ -2484,7 +2484,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
wushuang2:{
audio:'wushuang',
- audioname:['re_lvbu','shen_lvbu'],
+ audioname:['re_lvbu','shen_lvbu','lvlingqi'],
trigger:{player:'useCardToPlayered',target:'useCardToTargeted'},
forced:true,
logTarget:function(trigger,player){
diff --git a/character/yijiang.js b/character/yijiang.js
index 774305cdb..f3781535d 100755
--- a/character/yijiang.js
+++ b/character/yijiang.js
@@ -9508,6 +9508,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
ai:{
order:1,
+ combo:'quanji',
result:{
player:1,
}
diff --git a/character/yingbian.js b/character/yingbian.js
index 4dcfd8fcd..3a2a14384 100644
--- a/character/yingbian.js
+++ b/character/yingbian.js
@@ -9,7 +9,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhongyan:['female','jin',3,['bolan','yifa']],
weiguan:['male','jin',3,['zhongyun','shenpin']],
cheliji:['male','qun',4,['chexuan','qiangshou']],
- simazhou:['male','jin',4,['caiwang','naxiang']],
+ simazhou:['male','jin',4,['recaiwang','naxiang']],
ol_lisu:['male','qun',3,['qiaoyan','xianzhu']],
jin_yanghuiyu:['female','jin',3,['huirong','ciwei','caiyuan'],['hiddenSkill']],
shibao:['male','jin',4,['zhuosheng']],
@@ -31,6 +31,81 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
+ recaiwang:{
+ audio:'caiwang',
+ inherit:'caiwang',
+ group:['recaiwang_hand','recaiwang_equip','recaiwang_judge'],
+ },
+ recaiwang_hand:{
+ audio:'caiwang',
+ enable:['chooseToUse','chooseToRespond'],
+ viewAsFilter:function(player){
+ var js=player.getCards('h');
+ return js.length==1&&game.checkMod(js[0],player,'unchanged','cardEnabled2',player);
+ },
+ selectCard:-1,
+ filterCard:true,
+ position:'h',
+ prompt:'将全部手牌当做【闪】使用',
+ viewAs:{name:'shan'},
+ check:(card)=>10-get.value(card),
+ ai:{
+ order:1,
+ respondShan:true,
+ skillTagFilter:function(player){
+ return player.countCards('h')==1;
+ },
+ },
+ },
+ recaiwang_equip:{
+ audio:'caiwang',
+ enable:['chooseToUse','chooseToRespond'],
+ viewAsFilter:function(player){
+ var js=player.getCards('e');
+ return js.length==1&&game.checkMod(js[0],player,'unchanged','cardEnabled2',player);
+ },
+ selectCard:-1,
+ filterCard:true,
+ check:(card)=>9-get.value(card),
+ position:'e',
+ prompt:'将装备区的牌当做【无懈可击】使用',
+ viewAs:{name:'wuxie'},
+ ai:{
+ order:1,
+ },
+ },
+ recaiwang_judge:{
+ audio:'caiwang',
+ enable:['chooseToUse','chooseToRespond'],
+ viewAsFilter:function(player){
+ var js=player.getCards('j');
+ return js.length==1&&game.checkMod(js[0],player,'unchanged','cardEnabled2',player);
+ },
+ selectCard:-1,
+ filterCard:true,
+ position:'j',
+ prompt:'将判定区的牌当做【杀】使用',
+ viewAs:{name:'sha'},
+ check:(card)=>1,
+ locked:false,
+ ai:{
+ order:10,
+ respondSha:true,
+ skillTagFilter:function(player){
+ return player.countCards('j')==1;
+ },
+ effect:{
+ target:function(card,player,target,current){
+ if(card&&(card.name=='shandian'||card.name=='fulei')&&player==target&&!target.countCards('j')&&target.isPhaseUsing()&&target.hasValueTarget({name:'sha'},null,true)) return [1,2];
+ },
+ },
+ },
+ mod:{
+ aiOrder:function(player,card,num){
+ if(card.name=='shandian'||card.name=='fulei') return num+3;
+ },
+ },
+ },
zhaosong:{
trigger:{global:'phaseUseBegin'},
logTarget:'player',
@@ -991,9 +1066,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
check:function(event,player){
return get.attitude(player,lib.skill.caiwang.logTarget(event,player))<=0;
},
+ popup:false,
content:function(){
+ 'step 0'
if(player!=game.me&&!player.isOnline()) game.delayx();
+ 'step 1'
var target=lib.skill.caiwang.logTarget(trigger,player);
+ player.logSkill(event.name,target);
player[player.getStorage('naxiang2').contains(target)?'gainPlayerCard':'discardPlayerCard'](target,'he',true);
},
},
@@ -2532,7 +2611,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
caiwang_info:'当你使用或打出牌响应其他角色使用的牌,或其他角色使用或打出牌响应你使用的牌后,若这两张牌颜色相同,则你可以弃置对方的一张牌。',
naxiang:'纳降',
naxiang2:'纳降',
- naxiang_info:'锁定技,当你受到其他角色造成的伤害后,或你对其他角色造成伤害后,你对其发动〖才望〗时的“弃置”改为“获得”直到你的下回合开始。',
+ naxiang_info:'锁定技,当你受到其他角色造成的伤害后,或你对其他角色造成伤害后,你对其发动〖才望①〗时的“弃置”改为“获得”直到你的下回合开始。',
cheliji:'彻里吉',
chexuan:'车悬',
chexuan_info:'出牌阶段,若你的装备区里没有宝物牌,你可弃置一张黑色牌,选择一张【舆】置入你的装备区;当你失去装备区里的宝物牌后,你可进行判定,若结果为黑色,将一张随机的【舆】置入你的装备区。',
@@ -2570,6 +2649,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhaosong_info:'一名其他角色于其出牌阶段开始时,若其没有标记,你可令其正面向上交给你一张手牌,然后根据此牌的类型,令该角色获得对应的标记:锦囊牌,“诔”标记;装备牌,“赋”标记;基本牌,“颂”标记。进入濒死时,你可弃置"诔",减少一点体力上限,回复至1体力并摸1张牌;出牌阶段开始时,你可弃置“赋”,弃置一名角色区域内的一张牌,然后可令其摸一张牌;你使用仅指定一个目标的【杀】时,可弃置“颂”为此【杀】额外选择至多两个目标,然后若此【杀】造成的伤害小于2,你失去1点体力。',
lisi:'离思',
lisi_info:'每当你于回合外使用牌的置入弃牌堆时,你可将其交给一名手牌数不大于你的其他角色。',
+ recaiwang:'才望',
+ recaiwang_info:'①当你使用或打出牌响应其他角色使用的牌,或其他角色使用或打出牌响应你使用的牌后,若这两张牌颜色相同,则你可以弃置对方的一张牌。②若你的手牌数为1,则你可以将该手牌当做【闪】使用或打出。③若你的装备区牌数为1,则你可以将该装备当做【无懈可击】使用或打出。④若你的判定区牌数为1,则你可以将该延时锦囊牌当做【杀】使用或打出。',
+ recaiwang_hand:'才望',
+ recaiwang_equip:'才望',
+ recaiwang_judge:'才望',
yingbian_pack1:'文德武备·理',
yingbian_pack2:'文德武备·备',
diff --git a/game/asset.js b/game/asset.js
index 54b603e4f..b5522c909 100644
--- a/game/asset.js
+++ b/game/asset.js
@@ -1,5 +1,5 @@
window.noname_asset_list=[
- 'v1.9.110.9.3.4',
+ 'v1.9.110.9.3.5',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@@ -798,6 +798,9 @@ window.noname_asset_list=[
'audio/die/re_lusu.mp3',
'audio/die/wuban.mp3',
'audio/die/yuejiu.mp3',
+ 'audio/die/dufuren.mp3',
+ 'audio/die/lvlingqi.mp3',
+ 'audio/die/ol_wangrong.mp3',
'audio/skill/decadezishou1.mp3',
'audio/skill/decadezishou2.mp3',
@@ -3594,6 +3597,20 @@ window.noname_asset_list=[
'audio/skill/reweimu2.mp3',
'audio/skill/wansha_re_jiaxu1.mp3',
'audio/skill/wansha_re_jiaxu2.mp3',
+ 'audio/skill/guowu1.mp3',
+ 'audio/skill/guowu2.mp3',
+ 'audio/skill/olfengzi1.mp3',
+ 'audio/skill/olfengzi2.mp3',
+ 'audio/skill/olfusong1.mp3',
+ 'audio/skill/olfusong2.mp3',
+ 'audio/skill/oljizhan1.mp3',
+ 'audio/skill/oljizhan2.mp3',
+ 'audio/skill/shunshi1.mp3',
+ 'audio/skill/shunshi2.mp3',
+ 'audio/skill/yise1.mp3',
+ 'audio/skill/yise2.mp3',
+ 'audio/skill/zhuangrong1.mp3',
+ 'audio/skill/zhuangrong2.mp3',
'audio/voice/male/0.mp3',
'audio/voice/male/1.mp3',
@@ -4539,6 +4556,9 @@ window.noname_asset_list=[
'image/character/xin_caozhen.jpg',
'image/character/xin_sunluban.jpg',
'image/character/ol_dengzhi.jpg',
+ 'image/character/dufuren.jpg',
+ 'image/character/lvlingqi.jpg',
+ 'image/character/ol_wangrong.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',
diff --git a/game/game.js b/game/game.js
index ba491f74f..e3e00e282 100644
--- a/game/game.js
+++ b/game/game.js
@@ -51721,16 +51721,21 @@
return false;
};
if(create!='discardPile'){
+ var num=get.rand(0,ui.cardPile.childNodes.length-1);
for(var i=0;i=ui.cardPile.childNodes.length) j-=ui.cardPile.childNodes.length;
+ if(filter(ui.cardPile.childNodes[j])){
+ return ui.cardPile.childNodes[j];
}
}
}
if(create!='cardPile'){
for(var i=0;i=ui.discardPile.childNodes.length) j-=ui.discardPile.childNodes.length;
+ if(filter(ui.discardPile.childNodes[j])){
+ return ui.discardPile.childNodes[j];
}
}
}
diff --git a/game/update.js b/game/update.js
index d536c5f8a..9564bdfa0 100644
--- a/game/update.js
+++ b/game/update.js
@@ -1,8 +1,9 @@
window.noname_update={
- version:'1.9.110.9.3.4',
- update:'1.9.110.9.3.3',
+ version:'1.9.110.9.3.5',
+ update:'1.9.110.9.3.4',
changeLog:[
- '界鲁肃、孙登、郭皇后、薛综、杜畿技能修改',
+ '杜夫人、吕玲绮、OL王荣',
+ '司马伷,樊稠技能修改',
'bug修复',
],
files:[
@@ -19,7 +20,7 @@ window.noname_update={
//'card/yingbian.js',
//'card/zhenfa.js',
//'card/zhulu.js',
- //'character/diy.js',
+ 'character/diy.js',
//'character/extra.js',
//'character/hearth.js',
//'character/gujian.js',
@@ -36,11 +37,11 @@ window.noname_update={
'character/sp.js',
'character/sp2.js',
//'character/tw.js',
- //'character/standard.js',
+ 'character/standard.js',
//'character/swd.js',
//'character/xianjian.js',
- 'character/xinghuoliaoyuan.js',
- //'character/yingbian.js',
+ //'character/xinghuoliaoyuan.js',
+ 'character/yingbian.js',
'character/yijiang.js',
//'character/yxs.js',
//'extension/boss/extension.js',
@@ -49,18 +50,18 @@ window.noname_update={
//'layout/default/menu.css',
//'layout/nova/layout.css',
//'layout/mobile/equip.css',
- 'mode/boss.js',
- //'mode/brawl.js',
+ //'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',
//'mode/tafang.js',
//'mode/versus.js',
- //'game/game.js',
+ 'game/game.js',
//'game/keyWords.js',
//'game/NoSleep.js',
//'game/config.js',
diff --git a/image/character/dufuren.jpg b/image/character/dufuren.jpg
new file mode 100644
index 000000000..e8caa1493
Binary files /dev/null and b/image/character/dufuren.jpg differ
diff --git a/image/character/lvlingqi.jpg b/image/character/lvlingqi.jpg
new file mode 100644
index 000000000..d459a02a8
Binary files /dev/null and b/image/character/lvlingqi.jpg differ
diff --git a/image/character/ol_wangrong.jpg b/image/character/ol_wangrong.jpg
new file mode 100644
index 000000000..0f9ccac3c
Binary files /dev/null and b/image/character/ol_wangrong.jpg differ
diff --git a/mode/brawl.js b/mode/brawl.js
index 78b304260..3cc59d466 100644
--- a/mode/brawl.js
+++ b/mode/brawl.js
@@ -468,7 +468,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
for(var j=0;j