diff --git a/character/old.js b/character/old.js index 7b165a6cd..695e48760 100644 --- a/character/old.js +++ b/character/old.js @@ -25,6 +25,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_lingju:['female','qun',3,['jieyuan','fenxin_old']], old_maliang:['male','shu',3,['xiemu','naman']], old_chenqun:['male','wei',3,['dingpin','oldfaen']], + old_zhuhuan:['male','wu',4,['youdi']], + old_zhuzhi:['male','wu',4,['anguo']], }, characterFilter:{ old_lingju:function(mode){ @@ -392,6 +394,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_lingju:'旧灵雎', old_maliang:'旧马良', old_chenqun:'旧陈群', + old_zhuhuan:'旧朱桓', + old_zhuzhi:'旧朱治', oldfaen:'法恩', oldfaen_info:'当一名角色翻面或横置后,你可以令其摸一张牌。', diff --git a/character/sp.js b/character/sp.js index 033a8f0f6..80650fd24 100644 --- a/character/sp.js +++ b/character/sp.js @@ -111,6 +111,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ quyi:['male','qun',4,['fuqi','jiaozi']], liuye:['male','wei',3,['polu','choulve']], + beimihu:['female','qun',3,['zongkui','guju','baijia']], }, characterIntro:{ huangfusong:'字义真。安定郡朝那县(今宁夏彭阳)人。于黄巾起义时,以中郎将身份讨伐黄巾,用火攻大破张梁、张宝。[45] 后接替董卓进攻张梁,连胜七阵。掘张角墓,拜左车骑将军、冀州牧,因拒绝贿赂宦官而被免职。[46] 董卓死,王允命其与吕布等共至郿坞抄籍董卓家产、人口,皇甫嵩将坞中所藏良家子女,尽行释放。', @@ -319,6 +320,175 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, skill:{ + baijia:{ + unique:true, + ai:{ + combo:'guju' + }, + trigger:{player:'phaseBegin'}, + forced:true, + skillAnimation:true, + animationColor:'epic', + filter:function(event,player){ + return player.hasSkill('guju')&&player.storage.guju>=7; + }, + content:function(){ + player.awakenSkill('baijia'); + player.gainMaxHp(); + player.recover(); + var list=game.filterPlayer(); + for(var i=0;i0; + }); + }, + content:function(){ + trigger.cancel(); + } + }, + use:{ + trigger:{player:'phaseUseBefore'}, + prompt:'是否发动【奋励】跳过出牌阶段?', + filter:function(event,player){ + return player.isMaxHp(); + }, + check:function(event,player){ + if(!player.needsToDiscard()||(player.countCards('e')&&player.isMaxEquip())) return true; + if(player.storage.pingkou) return false; + return game.hasPlayer(function(current){ + return get.attitude(player,current)<0&¤t.hp==1&&get.damageEffect(current,player,player)>0; + }); + }, + content:function(){ + trigger.cancel(); + } + }, + discard:{ + trigger:{player:'phaseDiscardBefore'}, + prompt:'是否发动【奋励】跳过弃牌阶段?', + filter:function(event,player){ + return player.isMaxEquip()&&player.countCards('e'); + }, + content:function(){ + trigger.cancel(); + } + } + }, + ai:{ + combo:'pingkou' + } + }, + pingkou:{ + group:['pingkou_init','pingkou_count'], + subSkill:{ + init:{ + trigger:{player:'phaseBegin'}, + silent:true, + content:function(){ + player.storage.pingkou=0; + } + }, + count:{ + trigger:{player:[ + 'phaseJudgeCancelled','phaseJudgeSkipped', + 'phaseDrawCancelled','phaseDrawSkipped', + 'phaseUseCancelled','phaseUseSkipped', + 'phaseDiscardCancelled','phaseDiscardSkipped' + ]}, + silent:true, + content:function(){ + player.storage.pingkou++; + console.log(event.triggername,trigger.name) + } + } + }, + trigger:{player:'phaseEnd'}, + direct:true, + filter:function(event,player){ + return player.storage.pingkou>0; + }, + content:function(){ + 'step 0' + player.chooseTarget([1,player.storage.pingkou],get.prompt2('pingkou'),function(card,player,target){ + return target!=player; + }).set('ai',function(target){ + var player=_status.event.player; + return get.damageEffect(target,player,player); + }); + 'step 1' + if(result.bool){ + player.logSkill('pingkou',result.targets); + event.targets=result.targets.slice(0).sortBySeat(); + } + else{ + event.finish(); + } + 'step 2' + if(event.targets&&event.targets.length){ + event.targets.shift().damage(); + event.redo(); + } + }, + ai:{ + combo:'fenli', + effect:{ + target:function(card){ + if(card.name=='lebu'||card.name=='bingliang') return 0.5; + } + } + } + }, + xinanguo:{ + audio:'anguo', + enable:'phaseUse', + usable:1, + filterTarget:function(card,player,target){ + if(player==target) return false; + if(player.isMinHandcard()||target.isMinHandcard()) return true; + if(player.isMinEquip()||target.isMinEquip()) return true; + if((player.isMinHp()&&player.isDamaged())||(target.isMinHp()&&target.isDamaged())) return true; + return false; + }, + content:function(){ + 'step 0' + if(target.isMinHandcard()){ + target.draw(); + event.h=true; + } + if(target.isMinHp()&&target.isDamaged()){ + target.recover(); + event.hp=true; + } + if(target.isMinEquip()){ + target.equip(game.createCard(get.inpile('equip').randomGet()),true); + event.e=true; + } + 'step 1' + if(!event.h&&player.isMinHandcard()){ + player.draw(); + } + if(!event.hp&&player.isMinHp()&&player.isDamaged()){ + target.recover(); + } + if(!event.e&&player.isMinEquip()){ + player.equip(game.createCard(get.inpile('equip').randomGet()),true); + } + }, + ai:{ + threaten:1.6, + order:9, + result:{ + player:function(player,target){ + if(get.attitude(player,target)<=0){ + if(target.isMinHandcard()||target.isMinEquip()||target.isMinHp()) return -1; + } + var num=0; + if(player.isMinHandcard()||target.isMinHandcard()) num++; + if(player.isMinEquip()||target.isMinEquip()) num++; + if((player.isMinHp()&&player.isDamaged())||(target.isMinHp()&&target.isDamaged())) num+=2.1; + return num; + } + } + } + }, pindi:{ enable:'phaseUse', filterTarget:function(card,player,target){ @@ -9235,6 +9399,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qinmi:'秦宓', caiyong:'蔡邕', + fenli:'奋励', + fenli_info:'若你的手牌数为全场最多,你可以跳过摸牌阶段;若你的体力值为全场最多,你可以跳过出牌阶段;若你的装备区里有牌且数量为全场最多,你可以跳过弃牌阶段。', + pingkou:'平寇', + pingkou_info:'回合结束时,你可以对至多X名其他角色各造成1点伤害(X为你本回合跳过的阶段数)。', + xinanguo:'安国', + xinanguo_info:'出牌阶段限一次,你可以选择一名其他角色,若其手牌数为全场最少,其摸一张牌;体力值为全场最低,回复1点体力;装备区内牌数为全场最少,随机使用一张装备牌。然后若该角色有未执行的效果且你满足条件,你执行之。', pindi:'品第', pindi_info:'出牌阶段,你可以弃置一张牌并选择一名其他角色(不能弃置相同类型牌且不能指定相同的角色),然后令其执行一项:摸X张牌;弃置X张牌(X为本回合此技能发动次数)。若其已受伤,你须横置自身。', funan_jiexun:'诫训', diff --git a/game/asset.js b/game/asset.js index dcc7f583d..0e4a0e90e 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - '1.9.49.1', + '1.9.50', 'audio/background/music_danji.mp3', 'audio/background/music_default.mp3', 'audio/background/music_diaochan.mp3', @@ -1509,6 +1509,7 @@ window.noname_asset_list=[ 'image/card/ziyangdan.png', 'image/card/zong.png', 'image/character/baiwuchang.jpg', + 'image/character/beimihu.jpg', 'image/character/bulianshi.jpg', 'image/character/buzhi.jpg', 'image/character/caifuren.jpg', @@ -1876,7 +1877,9 @@ window.noname_asset_list=[ 'image/character/old_xusheng.jpg', 'image/character/old_yuanshu.jpg', 'image/character/old_zhonghui.jpg', + 'image/character/old_zhuhuan.jpg', 'image/character/old_zhuran.jpg', + 'image/character/old_zhuzhi.jpg', 'image/character/ow_ana.jpg', 'image/character/ow_banzang.jpg', 'image/character/ow_baolei.jpg', diff --git a/game/directory.js b/game/directory.js index 033427fd5..f43731bb9 100644 --- a/game/directory.js +++ b/game/directory.js @@ -77,6 +77,14 @@ get(path.dirname(__dirname),function(){ apply('changeLog',updates.changeLog); updatelist+=','; } + if(updates.players){ + apply('players',updates.players); + updatelist+=','; + } + if(updates.cards){ + apply('cards',updates.cards); + updatelist+=','; + } var changes = stdout.split('\n'); for(var i=0;i=nh) return false; + } + else{ + if(game.players[i].countCards('e')>nh) return false; + } + } + return true; + }, + isMinEquip:function(equal){ + var nh=this.countCards('e'); + for(var i=0;i - + 无名杀 diff --git a/layout/default/layout.css b/layout/default/layout.css index 7176a6c9a..105fc9a12 100644 --- a/layout/default/layout.css +++ b/layout/default/layout.css @@ -1342,6 +1342,7 @@ div:not(.handcards)>.card>.info>span, top: 69px; } .buttons.smallzoom { + display: block; zoom: 0.65 } .buttons .card.button>.name {