This commit is contained in:
libccy 2018-06-12 15:06:21 +08:00
parent d1fb9b6f9f
commit 898fc353a0
12 changed files with 423 additions and 11 deletions

View File

@ -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:'当一名角色翻面或横置后,你可以令其摸一张牌。',

View File

@ -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;i<list.length;i++){
if(list[i]!=player&&!list[i].hasSkill('zongkui_mark')){
list[i].addSkill('zongkui_mark');
player.line(list[i],'green');
}
}
player.removeSkill('guju');
player.addSkill('bmcanshi');
}
},
bmcanshi:{
group:['bmcanshi_add','bmcanshi_remove'],
subSkill:{
add:{
trigger:{player:'useCard'},
filter:function(event,player){
if(!event.targets||event.targets.length!=1) return false;
var info=get.info(event.card);
if(info.multitarget) return false;
if(info.allowMultiple==false) return false;
if(info.type=='equip') return false;
if(info.type=='delay') return false;
return game.hasPlayer(function(current){
if(!current.hasSkill('zongkui_mark')) return false;
return !event.targets.contains(current)&&lib.filter.filterTarget2(event.card,player,current);
});
},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt2('bmcanshi'),[1,Infinity],function(card,player,target){
if(!target.hasSkill('zongkui_mark')) return false;
var trigger=_status.event.getTrigger();
return !trigger.targets.contains(target)&&lib.filter.filterTarget2(trigger.card,player,target);
}).set('ai',function(target){
var player=_status.event.player;
return get.effect(target,_status.event.getTrigger().card,player,player);
});
'step 1'
if(result.bool){
if(!event.isMine()&&!_status.connectMode) game.delayx();
event.targets=result.targets.slice(0);
for(var i=0;i<event.targets.length;i++){
event.targets[i].removeSkill('zongkui_mark');
}
}
else{
event.finish();
}
'step 2'
player.logSkill('bmcanshi',event.targets);
trigger.targets.addArray(event.targets);
}
},
remove:{
trigger:{target:'useCardToBefore'},
check:function(event,player){
return get.attitude(event.player,player)<0&&get.effect(player,event.card,event.player,player)<0;
},
logTarget:'player',
filter:function(event,player){
if(!event.targets||event.targets.length!=1) return false;
return event.player.hasSkill('zongkui_mark');
},
content:function(){
trigger.cancel();
game.delay();
trigger.player.removeSkill('zongkui_mark');
}
}
}
},
guju:{
init:function(player){
player.storage.guju=0;
},
intro:{
content:'已因此技能获得#张牌'
},
trigger:{global:'damageAfter'},
forced:true,
filter:function(event,player){
return event.player!=player&&event.player.hasSkill('zongkui_mark');
},
content:function(){
player.draw();
player.storage.guju++;
player.markSkill('guju');
},
ai:{
combo:'zongkui'
}
},
zongkui:{
trigger:{player:'phaseBegin'},
direct:true,
filter:function(event,player){
return game.hasPlayer(function(current){
return current!=player&&!current.hasSkill('zongkui_mark');
});
},
content:function(){
'step 0'
player.chooseTarget(get.prompt2('zongkui'),function(card,player,target){
return target!=player&&!target.hasSkill('zongkui_mark');
}).set('ai',function(target){
var num=target.isMinHp()?0.5:(1+Math.random());
if(get.attitude(_status.event.player,target)<0){
num+=0.5;
}
return num;
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('zongkui',target);
target.addSkill('zongkui_mark');
}
},
group:'zongkui_round',
subSkill:{
mark:{
mark:true,
intro:{
content:'已获得“傀”标记'
}
},
round:{
trigger:{global:'roundStart'},
forced:true,
filter:function(event,player){
return game.hasPlayer(function(current){
return current.isMinHp(true);
});
},
content:function(){
var targets=game.filterPlayer(function(current){
return current.isMinHp(true);
});
if (targets.length==1){
var target=targets[0];
player.logSkill('zongkui',target);
target.addSkill('zongkui_mark');
}
}
}
},
ai:{
combo:'guju',
threaten:1.4
}
},
zishu:{
subSkill:{
discard:{
@ -381,6 +551,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
ai:{
threaten:1.2,
nogain:1
},
group:['zishu_draw','zishu_discard','zishu_discard2','zishu_discard3']
@ -443,7 +614,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
ai:{
threaten:1.5
threaten:1.8
}
},
choulve:{
@ -9700,7 +9871,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xizhicai:'戏志才',
quyi:'麹义',
liuye:'刘晔',
beimihu:'卑弥呼',
zongkui:'纵傀',
zongkui_mark:'纵傀',
zongkui_mark_bg:'傀',
zongkui_info:'回合开始时,你可以指定一名未拥有“傀”标记的其他角色,令其获得一枚“傀”标记。每轮游戏开始时,体力值最少且没有“傀”标记的一名其他角色也获得一个“傀”标记。',
guju:'骨疽',
guju_info:'锁定技,拥有“傀”标记的角色受到伤害后,你摸一张牌。',
baijia:'拜假',
baijia_info:'觉醒技准备阶段若你因“骨疽”获得牌不小于7张则你增加1点体力上限回复1点体力然后令所有未拥有“傀”标记的其他角色获得“傀”标记最后失去技能“骨疽”并获得技能“蚕食”。',
bmcanshi:'蚕食',
bmcanshi_info:'一名角色使用牌指定你为唯一目标时,若其有“傀”标记,你可以取消之,然后其失去“傀”标记;你使用牌仅指定一名角色为目标时,你可以额外指定任意名带有“傀”标记的角色为目标,然后其失去“傀”标记。',
zishu:'自书',
zishu_info:'锁定技,你的回合外,你获得的牌均会在当前回合结束后置入弃牌堆;你的回合内,当你不因此技能效果获得牌时,额外摸一张牌。',
yingyuan:'应援',

View File

@ -37,7 +37,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
caifuren:['female','qun',3,['qieting','xianzhou']],
yj_jushou:['male','qun',3,['jianying','shibei']],
zhangsong:['male','shu',3,['qiangzhi','xiantu']],
zhuhuan:['male','wu',4,['youdi']],
zhuhuan:['male','wu',4,['fenli','pingkou']],
xiahoushi:['female','shu',3,['qiaoshi','yanyu']],
panzhangmazhong:['male','wu',4,['anjian','duodao']],
@ -56,7 +56,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
liuchen:['male','shu',4,['zhanjue','qinwang'],['zhu']],
zhangyi:['male','shu',4,['wurong','shizhi']],
sunxiu:['male','wu',3,['yanzhu','xingxue','zhaofu'],['zhu']],
zhuzhi:['male','wu',4,['anguo']],
zhuzhi:['male','wu',4,['xinanguo']],
quancong:['male','wu',4,['yaoming']],
gongsunyuan:['male','qun',4,['huaiyi']],
guotufengji:['male','qun',3,['jigong','shifei']],
@ -170,6 +170,170 @@ game.import('character',function(lib,game,ui,get,ai,_status){
liuchen:['liushan'],
},
skill:{
fenli:{
group:['fenli_draw','fenli_use','fenli_discard'],
subSkill:{
draw:{
trigger:{player:'phaseDrawBefore'},
prompt:'是否发动【奋励】跳过摸牌阶段?',
filter:function(event,player){
return player.isMaxHandcard();
},
check:function(event,player){
if(player.storage.pingkou) return false;
return game.hasPlayer(function(current){
return get.attitude(player,current)<0&&current.hp==1&&get.damageEffect(current,player,player)>0;
});
},
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&&current.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:'诫训',

View File

@ -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',

View File

@ -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<changes.length;i++){
var extname=path.extname(changes[i]);
@ -89,4 +97,4 @@ get(path.dirname(__dirname),function(){
console.log('updated update.js');
});
});
});
});

View File

@ -8473,7 +8473,7 @@
mode.remove('brawl');
var banned=['yxs_luzhishen','zhenji','shen_guanyu','shen_caocao','zhurong',
'daqiao','lingcao','liuzan','lusu','luxun','yanwen','zhouyu','ns_wangyue','gw_yenaifa',
'zhuzhi','old_caozhen','guojia','simayi','sp_pangde','swd_kangnalishi','hs_siwangzhiyi'];
'old_caozhen','guojia','simayi','sp_pangde','swd_kangnalishi','hs_siwangzhiyi'];
var bannedcards=['zengbin','huoshan','hongshui','guiyoujie','fengyinzhidan','sifeizhenmian'];
for(var i=0;i<mode.length;i++){
game.saveConfig(mode[i]+'_banned',banned);
@ -18184,6 +18184,32 @@
}
return true;
},
isMaxEquip:function(equal){
var nh=this.countCards('e');
for(var i=0;i<game.players.length;i++){
if(game.players[i].isOut()||game.players[i]==this) continue;
if(equal){
if(game.players[i].countCards('e')>=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<game.players.length;i++){
if(game.players[i].isOut()||game.players[i]==this) continue;
if(equal){
if(game.players[i].countCards('e')<=nh) return false;
}
else{
if(game.players[i].countCards('e')<nh) return false;
}
}
return true;
},
isLinked:function(){
if(get.is.linked2(this)){
return this.classList.contains('linked2');
@ -21324,6 +21350,10 @@
return (lib.filter.targetEnabled(card,player,target)&&
lib.filter.targetInRange(card,player,target));
},
filterTarget2:function(card,player,target){
return (lib.filter.targetEnabled2(card,player,target)&&
lib.filter.targetInRange(card,player,target));
},
notMe:function(card,player,target){
return player!=target;
},

View File

@ -1,10 +1,24 @@
window.noname_update={
version:'1.9.49.3',
version:'1.9.50',
update:'1.9.49.2',
changeLog:[
'GitLab镜像替换Coding'
'GitLab镜像替换Coding',
'iPhone X优化',
'卑弥呼、朱治、朱桓'
],
players:[
'beimihu',
'zhuran',
'zhuzhi'
],
files:[
'game/game.js'
'character/old.js',
'character/sp.js',
'character/yijiang.js',
'game/asset.js',
'game/directory.js',
'game/game.js',
'game/update.js',
'layout/default/layout.css'
]
};
};

BIN
image/character/beimihu.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@ -2,7 +2,7 @@
<meta charset="UTF-8">
<meta name="format-detection" content="telephone=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="viewport" content="user-scalable=no">
<meta name="viewport" content="user-scalable=no, viewport-fit=cover">
<title>无名杀</title>
<script src="game/update.js"></script>
<script src="game/config.js"></script>

View File

@ -1342,6 +1342,7 @@ div:not(.handcards)>.card>.info>span,
top: 69px;
}
.buttons.smallzoom {
display: block;
zoom: 0.65
}
.buttons .card.button>.name {