diff --git a/card/yongjian.js b/card/yongjian.js
index 428ee0b7b..f0ae886b4 100644
--- a/card/yongjian.js
+++ b/card/yongjian.js
@@ -546,7 +546,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return 0;
},
ai2:function(target){
- return -get.attitude(_status.event.player,target);
+ return -get.attitude(_status.event.player,target)+0.01;
},
});
'step 2'
diff --git a/character/extra.js b/character/extra.js
index 5f8b2308e..953de5394 100755
--- a/character/extra.js
+++ b/character/extra.js
@@ -1110,6 +1110,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
group:'twwuhun_gain',
subSkill:{
gain:{
+ audio:'twwuhun',
trigger:{
player:'damageEnd',
source:'damageSource',
diff --git a/character/mobile.js b/character/mobile.js
index c0622d352..8c9fc2d97 100644
--- a/character/mobile.js
+++ b/character/mobile.js
@@ -18393,7 +18393,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
heji_info:'当有角色使用的【决斗】或红色【杀】结算完成后,若此牌对应的目标数为1,则你可以对相同的目标使用一张【杀】或【决斗】(无距离和次数限制)。若你以此法使用的牌不为转化牌,则你从牌堆中随机获得一张红色牌。',
liubing:'流兵',
liubing_info:'锁定技。①当你声明使用【杀】后,若此牌是你本回合使用的第一张有唯一对应实体牌的【杀】,则你将此牌的花色改为♦。②其他角色于其出牌阶段内使用的非转化黑色杀结算结束后,若此【杀】未造成伤害,则你获得之。',
- sp_mifuren:'糜夫人',
+ sp_mifuren:'手杀糜夫人',
spcunsi:'存嗣',
spcunsi2:'存嗣',
spcunsi_info:'出牌阶段限一次,你可将武将牌翻至背面并选择一名其他角色。其从牌堆或弃牌堆中获得一张【杀】,且下一张杀的伤害值基数+1。',
diff --git a/character/rank.js b/character/rank.js
index da570799a..d7ce673ef 100644
--- a/character/rank.js
+++ b/character/rank.js
@@ -924,6 +924,7 @@ window.noname_character_rank={
'vtb_xiaole',
'vtb_xiaojiu',
'ol_zhangzhang',
+ 'ol_mengda',
],
b:[
'diy_feishi',
@@ -1212,6 +1213,7 @@ window.noname_character_rank={
'sb_zhurong',
'vtb_xiaoshan',
'vtb_xiaotao',
+ 'zhangchu',
],
bm:[
'diy_xizhenxihong',
diff --git a/character/refresh.js b/character/refresh.js
index 8da8af055..b8b6aef28 100755
--- a/character/refresh.js
+++ b/character/refresh.js
@@ -9845,9 +9845,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.storage.rehuashen.current=event.card;
game.broadcastAll(function(character,player){
player.sex=lib.character[character][0];
- player.group=lib.character[character][1];
- player.node.name.dataset.nature=get.groupnature(player.group);
+ //player.group=lib.character[character][1];
+ //player.node.name.dataset.nature=get.groupnature(player.group);
},event.card,player);
+ player.changeGroup(lib.character[event.card][1],false);
}
var link=result.control;
player.storage.rehuashen.current2=link;
diff --git a/character/shenhua.js b/character/shenhua.js
index 74bb90e7f..c4eb1f74f 100755
--- a/character/shenhua.js
+++ b/character/shenhua.js
@@ -4494,8 +4494,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.markSkill('huashen');
game.broadcastAll(function(character,player){
player.sex=lib.character[character][0];
- player.group=lib.character[character][1];
- player.node.name.dataset.nature=get.groupnature(player.group);
+ //player.group=lib.character[character][1];
+ //player.node.name.dataset.nature=get.groupnature(player.group);
var mark=player.marks.huashen;
if(mark){
mark.style.transition='all 0.3s';
@@ -4513,6 +4513,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},200);
}
},character,player);
+ player.changeGroup(lib.character[character][1],false);
}
player.storage.huashen.current2=skill;
if(!player.additionalSkills.huashen||!player.additionalSkills.huashen.contains(skill)){
diff --git a/character/sp.js b/character/sp.js
index 10ed4d99b..882c26801 100755
--- a/character/sp.js
+++ b/character/sp.js
@@ -13,7 +13,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","huojun",'zhaoyǎn','dengzhong','ol_furong','macheng','ol_zhangyì','ol_zhujun','maxiumatie','luoxian'],
sp_liesi:['mizhu','weizi','ol_liuba','zhangshiping'],
sp_default:["sp_diaochan","sp_zhaoyun","sp_sunshangxiang","sp_caoren","sp_jiangwei","sp_machao","sp_caiwenji","jsp_guanyu","jsp_huangyueying","sp_pangde","sp_jiaxu","yuanshu",'sp_zhangliao','sp_ol_zhanghe','sp_menghuo'],
- sp_waitforsort:['ol_huban'],
+ sp_waitforsort:['ol_huban','ol_mengda'],
sp_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv','jin_zhouchu'],
sp_wanglang:['ol_wanglang'],
sp_zhongdan:["cuiyan","huangfusong"],
@@ -28,6 +28,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
+ ol_mengda:['male','shu',4,['olgoude']],
ol_wanglang:['male','wei',3,['gushe','oljici']],
ol_liuyan:['male','qun','4/6',['olpianan','olyinji','olkuisi'],['unseen']],
lushi:['female','qun',3,['olzhuyan','olleijie']],
@@ -683,6 +684,208 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
+ //OL孟达
+ olgoude:{
+ audio:2,
+ trigger:{
+ global:'phaseEnd',
+ },
+ filter:function(event,player){
+ var list=[];
+ game.countPlayer(current=>{
+ if(current.group!=player.group) return false;
+ var listx=lib.skill.olgoude.getActed(current);
+ list.addArray(listx);
+ });
+ return list.length&&list.length<4;
+ },
+ getActed:function(target){
+ var list=[];
+ if(target.hasHistory('gain',evt=>{
+ return evt.getParent().name=='draw'&&evt.cards.length==1;
+ })){
+ list.push(1);
+ }
+ if(game.hasPlayer2(current=>{
+ return current.hasHistory('lose',evt=>{
+ if(evt.type!='discard') return false;
+ if((evt.discarder||evt.getParent(2).player)!=target) return false;
+ var evtx=evt.getl(current);
+ if(!evtx||evtx.hs.length!=1) return false;
+ return true;
+ });
+ })){
+ list.push(2);
+ }
+ if(target.hasHistory('useCard',evt=>{
+ if(evt.card.name=='sha'&&evt.cards&&!evt.cards.length) return true;
+ return false;
+ })){
+ list.push(3);
+ }
+ if(target.hasHistory('custom',evt=>{
+ return evt.name=='changeGroup';
+ })){
+ list.push(4);
+ }
+ return list;
+ },
+ direct:true,
+ content:function(){
+ 'step 0'
+ var list=[1,2,3,4];
+ game.countPlayer(current=>{
+ if(current.group!=player.group) return false;
+ var listx=lib.skill.olgoude.getActed(current);
+ list.removeArray(listx);
+ });
+ var list2=list.slice();
+ var nochai=false,nosha=false;
+ if(!game.hasPlayer(current=>{
+ return current.countDiscardableCards(player,'h');
+ })){
+ nochai=true;
+ list2.remove(2);
+ }
+ if(!game.hasPlayer(current=>{
+ return player.canUse({name:'sha',isCard:true},current,true,false);
+ })){
+ nosha=true;
+ list2.remove(3);
+ }
+ var choices=list2.map(i=>{
+ return '选项'+get.cnNumber(i,true);
+ });
+ var choiceList=[
+ '摸一张牌',
+ '弃置一名角色的一张手牌',
+ '视为使用一张【杀】',
+ '将势力改为任意一个势力'
+ ].map((text,ind)=>{
+ var hint='';
+ if(list.contains(ind+1)){
+ return text;
+ }
+ else{
+ hint+='已被执行过且';
+ }
+ if(ind==1&&nochai&&!list2.contains(ind+1)) hint+='无有手牌角色且';
+ if(ind==2&&nosha&&!list2.contains(ind+1)) hint+='无可选目标且';
+ hint=hint.slice(0,-1);
+ return ''+text+'('+hint+')';
+ });
+ choices.push('cancel2');
+ if(_status.connectMode) game.broadcastAll(function(){_status.noclearcountdown=true});
+ player.chooseControl(choices).set('choiceList',choiceList).set('prompt',get.prompt('olgoude')).set('ai',()=>{
+ return _status.event.choice;
+ }).set('choice',function(){
+ var fn=function(control){
+ switch(control){
+ case '选项一':
+ return player.getUseValue({name:'wuzhong'})/2;
+ case '选项二':
+ return Math.max.apply(Math,game.filterPlayer().map(current=>{
+ if(current.hasSkillTag('noh')) return -1;
+ return -1.5*get.attitude(player,current)-Math.max(0,current.countCards('h')-2)/3;
+ }));
+ case '选项三':
+ return player.getUseValue({name:'sha'});
+ case '选项四':
+ var myPopulation=game.countPlayer(current=>{
+ return current.group==player.group;
+ })-1;
+ var value=Math.max.apply(Math,lib.group.map(group=>{
+ return game.countPlayer(current=>{
+ return current.group==group&¤t!=player;
+ })-myPopulation;
+ }));
+ return 10*value+0.1*(Math.random()-0.5);
+ case 'cancel2':
+ return 0;
+ }
+ }
+ var choicesx=choices.map(choice=>{
+ return [choice,fn(choice)];
+ });
+ choicesx=choicesx.sort((a,b)=>{
+ return b[1]-a[1];
+ });
+ var choice=choicesx[0];
+ if(choice[1]<0) return 'cancel2';
+ return choice[0];
+ }());
+ 'step 1'
+ if(result.control=='cancel2'){
+ event.finish();
+ return;
+ }
+ var contents={
+ 选项一:function(){
+ player.logSkill('olgoude');
+ player.draw();
+ },
+ 选项二:function(){
+ 'step 0'
+ player.chooseTarget('苟得:弃置一名角色的一张手牌',true,(card,player,target)=>{
+ return target.countDiscardableCards(player,'h');
+ }).set('ai',target=>{
+ if(target.hasSkillTag('noh')) return 0;
+ return -get.attitude(_status.event.player,target);
+ });
+ 'step 1'
+ if(result.bool){
+ var target=result.targets[0];
+ if(_status.connectMode){game.broadcastAll(function(){delete _status.noclearcountdown;game.stopCountChoose()});}
+ player.logSkill('olgoude',target);
+ player.discardPlayerCard(target,true,'h');
+ }
+ },
+ 选项三:function(){
+ player.chooseUseTarget('sha',true,false).set('logSkill','olgoude');
+ },
+ 选项四:function(){
+ 'step 0'
+ var list=lib.group.slice();
+ var maxGroup=list.slice().sort((a,b)=>{
+ return game.countPlayer(current=>{
+ return current.group==b&¤t!=player;
+ })-game.countPlayer(current=>{
+ return current.group==a&¤t!=player;
+ });
+ })[0];
+ player.chooseControl(list).set('prompt','苟得:请选择要变更为的势力').set('ai',()=>{
+ return _status.event.choice;
+ }).set('choice',maxGroup);
+ 'step 1'
+ if(_status.connectMode){game.broadcastAll(function(){delete _status.noclearcountdown;game.stopCountChoose()});}
+ var group=result.control;
+ player.logSkill('olgoude');
+ player.changeGroup(group);
+ player.popup(group+'2',get.groupnature(group,'raw'));
+ },
+ }
+ var next=game.createEvent('olgoude_'+result.control);
+ next.player=player;
+ next.setContent(contents[result.control]);
+ },
+ ai:{
+ threaten:3,
+ effect:{
+ player_use:function(card,player,target){
+ if(typeof card=='object'&&card.cards&&card.cards.some(card=>{
+ return get.position(card)=='h';
+ })&&!get.tag(card,'draw')&&!get.tag(card,'gain')&&!get.tag(card,'discard')&&
+ player==_status.currentPhase&&player.needsToDiscard()==1&&game.countPlayer(current=>{
+ return current.group==player.group&¤t!=player;
+ })<=1&&lib.group.some(group=>{
+ return game.countPlayer(current=>{
+ return current.group==group&¤t!=player;
+ })>2;
+ })) return 'zeroplayertarget';
+ },
+ },
+ },
+ },
//OL新改王朗
oljici:{
audio:'jici',
@@ -22098,7 +22301,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhugejin:'诸葛瑾',
zhugeke:'诸葛恪',
guanyinping:'关银屏',
- ganfuren:'甘夫人',
+ ganfuren:'SP甘夫人',
sunhao:'孙皓',
chengyu:'程昱',
simalang:'司马朗',
@@ -23095,6 +23298,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ol_wanglang:'OL王朗',
oljici:'激词',
oljici_info:'当你的拼点牌亮出后,若点数不大于X,你可令点数+X并令〖鼓舌〗视为未发动过(X为你的“饶舌”标记数)。',
+ ol_mengda:'OL孟达',
+ olgoude:'苟得',
+ olgoude_info:'一名角色的回合结束时,若有与你势力相同的角色执行过以下项,则你可以执行这些角色未执行过的一项:1.摸一张牌;2.弃置一名角色的一张手牌;3.使用一张无对应实体牌的【杀】;4.变更势力。',
sp_tianji:'天极·皇室宗亲',
sp_sibi:'四弼·辅国文曲',
diff --git a/character/sp2.js b/character/sp2.js
index b9b7a18cf..97d86dae9 100644
--- a/character/sp2.js
+++ b/character/sp2.js
@@ -32,7 +32,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xielingyu:['female','wu',3,['dcyuandi','dcxinyou']],
yuanyin:['male','qun',3,['dcmoshou','dcyunjiu'],['unseen']],
dongwan:['female','qun',3,['dcshengdu','dcxianjiao'],['unseen']],
- zhangchu:['female','qun',3,['dcjizhong','dcjucheng','dcguangshi'],['unseen']],
+ zhangchu:['female','qun',3,['dcjizhong','dcrihui','dcguangshi']],
peiyuanshao:['male','qun',4,['dcmoyu'],['unseen']],
mengjie:['male','qun',3,['dcyinlu','dcyouqi']],
//dc_fuwan:['male','qun',4,['dcmoukui']],
@@ -3243,7 +3243,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
},
- dcjucheng:{
+ dcrihui:{
audio:2,
trigger:{player:'useCardAfter'},
usable:1,
@@ -3262,9 +3262,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var card={name:trigger.card.name,nature:trigger.card.nature,isCard:true};
event.target=target;
event.card=card;
- if(target.hasMark('dcjizhong')) player.gainPlayerCard(get.prompt('dcjucheng',target),target,'hej').set('logSkill',['dcjucheng',target]);
+ if(target.hasMark('dcjizhong')) player.gainPlayerCard(get.prompt('dcrihui',target),target,'hej').set('logSkill',['dcrihui',target]);
else{
- player.chooseBool(get.prompt('dcjucheng',target),'令所有有“信众”的角色依次视为对其使用一张'+get.translation(card)).set('ai',()=>{
+ player.chooseBool(get.prompt('dcrihui',target),'令所有有“信众”的角色依次视为对其使用一张'+get.translation(card)).set('ai',()=>{
return _status.event.bool;
}).set('bool',function(){
var eff=0;
@@ -3277,13 +3277,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
'step 1'
if(!result.bool){
- player.storage.counttrigger.dcjucheng--;
+ player.storage.counttrigger.dcrihui--;
return;
}
if(target.hasMark('dcjizhong')) event.finish();
else{
- player.logSkill('dcjucheng',target);
+ player.logSkill('dcrihui',target);
event.targets=game.filterPlayer(current=>current.hasMark('dcjizhong'));
+ event.targets.sortBySeat(_status.currentPhase);
}
'step 2'
var current=event.targets.shift();
@@ -10033,6 +10034,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
group:'dcfuxue_draw',
subSkill:{
draw:{
+ audio:'dcfuxue',
trigger:{player:'phaseJieshuBegin'},
forced:true,
locked:false,
@@ -28146,6 +28148,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
check:function(event,player){
return get.value(event.cards)+player.maxHp*2-18>0;
},
+ prompt2:function(event,player){
+ return '你可以减1点体力上限,然后获得'+get.translation(event.cards.filterInD())+'。';
+ },
filter:function(event,player){
return player.isPhaseUsing()&&get.type(event.card)=='trick'&&event.cards.filterInD().length>0;
},
@@ -29464,7 +29469,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mushun:'穆顺,小说《三国演义》中的人物,男,东汉末宦官。献帝欲修书与国舅伏完,共谋图曹公。因顺为宦官中之忠义可托者,乃命顺往送书。顺藏书于发中,潜出禁宫,径至完宅,将书呈上。及完回书付顺,顺乃藏于头髻内,辞完回宫。然公闻信,先于宫门等候,顺回遇公,公喝左右,遍搜身上,并无夹带,放行。忽然风吹落其帽。公又唤回,取帽视之,遍观无物,还帽令戴。顺双手倒戴其帽。公心疑,令左右搜其头发中,搜出伏完书来。公见书大怒,执下顺于密室问之,顺不肯招。当晚将顺、完等宗族二百余口,皆斩于市。',
jsp_guanyu:'关羽,字云长。曾水淹七军、擒于禁、斩庞德、威震华夏,吓得曹操差点迁都躲避,但是东吴偷袭荆州,关羽兵败被害。后传说吕蒙因关羽之魂索命而死。',
ruanji:'阮籍(公元210年~263年),字嗣宗,陈留尉氏(今河南省开封市)人,三国时期魏国诗人、竹林七贤之一。阮瑀之子,门荫入仕,累迁步兵校尉,世称阮步兵。崇奉老庄之学,政治上则采取谨慎避祸的态度。景元四年(公元263年),阮籍去世,享年五十三岁。作为“正始之音”的代表,著有《咏怀八十二首》、《大人先生传》等,其著作收录在《阮籍集》中。',
- ganfurenmifuren:'甘夫人,刘备起兵后于沛城娶之为妾。后来,甘夫人随刘备到荆州,生了阿斗(也就是后主刘禅)。223年四月,刘备病死于白帝城,追谥甘夫人为“昭烈皇后”。
刘备夫人。徐州别驾糜竺之妹。长坂兵败,她怀抱年仅两岁的刘禅在乱军中走散,被赵云发现;但麋夫人因为赵云只有一匹马,不肯上马,在将阿斗托付给赵云后投井而亡。'
+ ganfurenmifuren:'甘夫人,刘备起兵后于沛城娶之为妾。后来,甘夫人随刘备到荆州,生了阿斗(也就是后主刘禅)。223年四月,刘备病死于白帝城,追谥甘夫人为“昭烈皇后”。
糜夫人,刘备夫人。徐州别驾糜竺之妹。长坂兵败,她怀抱年仅两岁的刘禅在乱军中走散,被赵云发现;但麋夫人因为赵云只有一匹马,不肯上马,在将阿斗托付给赵云后投井而亡。'
},
characterTitle:{
// wulan:'#b对决限定武将',
@@ -29633,7 +29638,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
duanwei:['duanwei','junk_duanwei'],
xushao:['xushao','jsrg_xushao'],
huban:['dc_huban','ol_huban'],
- mengda:['dc_mengda','pe_mengda'],
+ mengda:['dc_mengda','ol_mengda','pe_mengda'],
jsp_guanyu:['dc_jsp_guanyu','jsp_guanyu'],
mushun:['mushun','sp_mushun'],
},
@@ -30812,8 +30817,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhangchu:'张楚',
dcjizhong:'集众',
dcjizhong_info:'出牌阶段限一次。你可以令一名其他角色摸两张牌,然后其选择一项:1.若其没有“信众”标记,其获得“信众”标记;2.弃置三张手牌。',
- dcjucheng:'聚逞',
- dcjucheng_info:'每回合限一次。当你使用普通锦囊牌或黑色基本牌结算结束后,若此牌的目标数为1且目标不为你,且其:没有“信众”,所有有“信众”的角色依次视为对其使用一张与此牌牌名和属性相同的牌;有“信众”,你可以获得其区域里的一张牌。',
+ dcrihui:'日慧',
+ dcrihui_info:'每回合限一次。当你使用普通锦囊牌或黑色基本牌结算结束后,若此牌的目标数为1且目标不为你,且其:没有“信众”,则所有有“信众”的角色依次视为对其使用一张与此牌牌名和属性相同的牌;有“信众”,则你可以获得其区域里的一张牌。',
dcguangshi:'光噬',
dcguangshi_info:'锁定技。准备阶段,若所有其他角色均有“信众”,你失去1点体力并摸两张牌。',
dongwan:'董绾',
diff --git a/character/tw.js b/character/tw.js
index e0e4bd63f..0a6a6f79f 100644
--- a/character/tw.js
+++ b/character/tw.js
@@ -6707,7 +6707,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
logTarget:'player',
content:function(){
trigger.cancel();
- target.damage(trigger.source?trigger.source:'nosource',trigger.nature,trigger.num).set('card',trigger.card).set('cards',trigger.cards).twgonghuan=true;
+ player.damage(trigger.source?trigger.source:'nosource',trigger.nature,trigger.num).set('card',trigger.card).set('cards',trigger.cards).twgonghuan=true;
},
},
//桥蕤
diff --git a/game/game.js b/game/game.js
index 40bbdaaab..e2f7133fb 100644
--- a/game/game.js
+++ b/game/game.js
@@ -10543,6 +10543,21 @@
emptyEvent:function(){
event.trigger(event.name);
},
+ changeGroup:function(){
+ 'step 0'
+ if(!event.group) event.group=player.group;
+ var group=event.group;
+ player.getHistory('custom').push(event);
+ if(event.broadcast!==false){
+ game.broadcast(function(player,group){
+ player.group=group;
+ player.node.name.dataset.nature=get.groupnature(group);
+ },player,group);
+ }
+ player.group=group;
+ player.node.name.dataset.nature=get.groupnature(group);
+ if(event.log!==false) game.log(player,'将势力变为了','#y'+get.translation(group+2));
+ },
chooseToDebate:function(){
'step 0'
event.targets=event.list.filter(function(i){
@@ -18296,16 +18311,23 @@
return this.maxHp-Math.max(0,this.hp);
},
changeGroup:function(group,log,broadcast){
- var player=this;
- if(broadcast!==false){
- game.broadcast(function(player,group){
- player.group=group;
- player.node.name.dataset.nature=get.groupnature(group);
- },player,group);
+ var next=game.createEvent('changeGroup');
+ next.player=this;
+ next.log=true;
+ for(var i=0;i=lib.configOL.number-1){
- alert('至少要有两名玩家才能开始游戏!');
- return;
- }
+ // if(num>=lib.configOL.number-1){
+ // alert('至少要有两名玩家才能开始游戏!');
+ // return;
+ // }
game.resume();
}
button.delete();
diff --git a/image/character/ol_mengda.jpg b/image/character/ol_mengda.jpg
new file mode 100644
index 000000000..255aa0728
Binary files /dev/null and b/image/character/ol_mengda.jpg differ
diff --git a/image/character/zhangchu.jpg b/image/character/zhangchu.jpg
new file mode 100644
index 000000000..2cbe9e27f
Binary files /dev/null and b/image/character/zhangchu.jpg differ