星曹仁配音+星袁术

This commit is contained in:
mengxinzxz 2023-11-01 12:06:55 +08:00
parent 6443b2db9a
commit 6afc8be484
15 changed files with 215 additions and 5 deletions

BIN
audio/die/star_caoren.mp3 Normal file

Binary file not shown.

BIN
audio/die/star_yuanshu.mp3 Normal file

Binary file not shown.

BIN
audio/skill/starcanxi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/starcanxi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/starlifeng1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/starlifeng2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/starpizhi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/starpizhi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/starsujun1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/starsujun2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1574,7 +1574,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
chooseButton:{ chooseButton:{
dialog:function(event,player){ dialog:function(event,player){
return ui.create.dialog( return ui.create.dialog(
'###缚豕###<div class="text center">重铸任意“缚豕”牌,视为使用一张【杀】并执行等量项</div>', '###缚豕###<div class="text center">将任意“缚豕”牌置入弃牌堆,视为使用一张【杀】并执行等量项</div>',
player.getExpansions('olfushi'), player.getExpansions('olfushi'),
[['额外目标','伤害-1','伤害+1'],'tdnodes'], [['额外目标','伤害-1','伤害+1'],'tdnodes'],
'hidden' 'hidden'
@ -1686,7 +1686,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
delete event.result.skill; delete event.result.skill;
event.result.card=new lib.element.VCard(lib.skill.olfushi_wusheng_backup.viewAs); event.result.card=new lib.element.VCard(lib.skill.olfushi_wusheng_backup.viewAs);
event.result.cards=[]; event.result.cards=[];
player.recast(cards); player.loseToDiscardpile(cards);
event.result.card.storage.olfushi_buff=controls; event.result.card.storage.olfushi_buff=controls;
player.addTempSkill('olfushi_buff'); player.addTempSkill('olfushi_buff');
} }
@ -1695,7 +1695,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
prompt:function(links,player){ prompt:function(links,player){
let controls=links.filter(button=>typeof button=='string'); let controls=links.filter(button=>typeof button=='string');
if(!controls.length) controls=['额外目标','伤害-1','伤害+1']; if(!controls.length) controls=['额外目标','伤害-1','伤害+1'];
return `选择【杀】的目标(${controls.join('、')}`; return `选择【杀】的目标(${controls.join('、')}`;
} }
}, },
ai:{ ai:{
@ -26454,7 +26454,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
skill_feiyi_B_info:'每回合每项限一次当你的手牌数变为1后你可以展示此唯一手牌A并摸一张牌然后你选择一项①本回合使用点数大于A的点数的牌额外结算一次②本回合使用点数小于A的点数的牌额外结算一次。', skill_feiyi_B_info:'每回合每项限一次当你的手牌数变为1后你可以展示此唯一手牌A并摸一张牌然后你选择一项①本回合使用点数大于A的点数的牌额外结算一次②本回合使用点数小于A的点数的牌额外结算一次。',
lvboshe:'吕伯奢', lvboshe:'吕伯奢',
olfushi:'缚豕', olfushi:'缚豕',
olfushi_info:'①一名角色使用【杀】结算结束后若你至其的距离不大于1你将此【杀】对应的所有实体牌置于武将牌上。②当你需要使用一张【杀】时你可以重铸任意张“缚豕”牌视为使用一张【杀】并选择X项X为你以此法重铸的牌数且至多为31.你为此【杀】额外指定一个目标2.你选择此【杀】的一个目标角色,此牌对其造成的伤害-13.你选择此【杀】的一个目标角色,此【杀】对其造成的伤害+1。当此【杀】指定最后一个目标后若此牌被选择的效果选项相邻且此牌的目标角色座位连续则此【杀】不计入次数限制。', olfushi_info:'①一名角色使用【杀】结算结束后若你至其的距离不大于1你将此【杀】对应的所有实体牌置于武将牌上。②当你需要使用一张【杀】时你可以将任意张“缚豕”牌置入弃牌堆视为使用一张【杀】并选择X项X为你以此法重铸的牌数且至多为31.你为此【杀】额外指定一个目标2.你选择此【杀】的一个目标角色,此牌对其造成的伤害-13.你选择此【杀】的一个目标角色,此【杀】对其造成的伤害+1。当此【杀】指定最后一个目标后若此牌被选择的效果选项相邻且此牌的目标角色座位连续则此【杀】不计入次数限制。',
oldongdao:'东道', oldongdao:'东道',
oldongdao_info:'农民的回合结束时:阴,你可以令地主进行一个额外回合;阳,其可以进行一个额外回合。', oldongdao_info:'农民的回合结束时:阴,你可以令地主进行一个额外回合;阳,其可以进行一个额外回合。',
zhangyan:'张燕', zhangyan:'张燕',

View File

@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sp2', name:'sp2',
connect:true, connect:true,
character:{ character:{
star_yuanshu:['male','qun',4,['starcanxi','starpizhi','starzhonggu'],['zhu']],
star_caoren:['male','wei',4,['starsujun','starlifeng']], star_caoren:['male','wei',4,['starsujun','starlifeng']],
dc_jikang:['male','wei',3,['new_qingxian','dcjuexiang']], dc_jikang:['male','wei',3,['new_qingxian','dcjuexiang']],
dc_jsp_guanyu:['male','wei',4,['new_rewusheng','dcdanji']], dc_jsp_guanyu:['male','wei',4,['new_rewusheng','dcdanji']],
@ -108,11 +109,209 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_xuzhou:['re_taoqian','caosong','zhangmiao','qiuliju'], sp_xuzhou:['re_taoqian','caosong','zhangmiao','qiuliju'],
sp_zhongyuan:['re_hucheer','re_zoushi','caoanmin','re_dongcheng'], sp_zhongyuan:['re_hucheer','re_zoushi','caoanmin','re_dongcheng'],
sp_xiaohu:['haomeng','yanfuren','yanrou','dc_zhuling'], sp_xiaohu:['haomeng','yanfuren','yanrou','dc_zhuling'],
sp_star:['star_caoren'], sp_star:['star_caoren','star_yuanshu'],
sp_decade:['caobuxing','re_maliang','xin_baosanniang','dc_jikang'], sp_decade:['caobuxing','re_maliang','xin_baosanniang','dc_jikang'],
} }
}, },
skill:{ skill:{
//星袁术
starcanxi:{
audio:2,
trigger:{
global:['phaseBefore','roundStart'],
player:'enterGame',
},
filter:function(event,player,name){
if(name=='roundStart') return player.getSkills().some(skill=>skill.indexOf('starcanxi_')==0);
return event.name!='phase'||game.phaseNumber==0;
},
forced:true,
content:function(){
'step 0'
if(event.triggername!='roundStart'){
var list=game.filterPlayer().reduce((list,target)=>list.add(target.group),[]);
list.sort((a,b)=>lib.group.indexOf(a)-lib.group.indexOf(b));
list.forEach(group=>lib.skill.starcanxi.create(group,player));
}
'step 1'
var groups=player.getSkills().filter(skill=>skill.indexOf('starcanxi_')==0);
groups=groups.map(group=>group.slice(10));
groups.sort((a,b)=>lib.group.indexOf(a)-lib.group.indexOf(b));
var map={};
groups.forEach(group=>map[group]=get.translation(group+'2'));
event.map=map;
player.chooseButton([
'###残玺###<div class="text center">请选择势力和效果</div>',
[Object.values(map),'tdnodes'],
[[
['wangsheng','<div class="popup text" style="width:calc(100% - 10px);display:inline-block"><div class="skill">【妄生】</div><div>被选择势力角色每回合首次造成的伤害+1且计算与其他角色间的距离-1</div></div>'],
['xiangsi','<div class="popup text" style="width:calc(100% - 10px);display:inline-block"><div class="skill">【向死】</div><div>被选择势力角色每回合首次回复体力后失去1点体力且每回合对你使用的第一张牌无效</div></div>']
],'textbutton']
],2,true).set('filterButton',function(button){
var list=['wangsheng','xiangsi'];
if(!ui.selected.buttons.length) return true;
return list.includes(ui.selected.buttons[0].link)!=list.includes(button.link);
}).set('ai',function(button){
var player=_status.event.player;
var map=_status.event.map,list=['wangsheng','xiangsi'];
var getNum=function(group,effect){
var num=0,sgn=effect=='wangsheng'?1:-1;
game.countPlayer(function(current){
num+=get.sgn(get.attitude(player,current))*sgn;
});
return num;
};
var listx=[];
Object.keys(map).forEach(group=>list.forEach(effect=>listx.add([group,effect])));
listx.sort((a,b)=>getNum(b[0],b[1])-getNum(a[0],a[1]));
if(button.link==map[listx[0][0]]||button.link==listx[0][1]) return 1;
return 0;
}).set('map',map);
'step 2'
if(result.bool){
if(!Object.keys(event.map).some(group=>event.map[group]==result.links[0])) result.links.reverse();
player.popup(result.links[0]);
var group=Object.keys(event.map).find(group=>event.map[group]==result.links[0]);
var skill='starcanxi_'+result.links[1];
player.popup(skill);
game.log(player,'选择了','#g'+result.links[0],'、','#y'+get.translation(skill));
player.addTempSkill(skill,'roundStart');
player.markAuto(skill,[group]);
}
},
create:function(group,player){
if(!lib.skill['starcanxi_'+group]){
lib.skill['starcanxi_'+group]={
mark:true,
charlotte:true,
onremove:function(player){
player.addMark('starpizhi',1,false);
},
intro:{content:'玉玺的一角'},
};
lib.translate['starcanxi_'+group]='残玺·'+get.translation(group+'2');
lib.skill['starcanxi_'+group].marktext=get.translation(group);
lib.translate['starcanxi_'+group+'_bg']=get.translation(group);
}
player.addSkill('starcanxi_'+group);
},
subSkill:{
wangsheng:{
charlotte:true,
onremove:true,
trigger:{global:'damageBegin1'},
filter:function(event,player){
if(!event.source||!player.getStorage('starcanxi_wangsheng').includes(event.source.group)) return false;
return !event.source.getHistory('sourceDamage').length;
},
forced:true,
logTarget:'source',
content:function(){
trigger.num++;
},
group:'starcanxi_remove',
global:'starcanxi_effect',
intro:{content:'$势力角色每回合首次造成的伤害+1且计算与其他角色间的距离-1'},
},
xiangsi:{
charlotte:true,
onremove:true,
trigger:{global:'recoverEnd'},
filter:function(event,player){
if(!player.getStorage('starcanxi_xiangsi').includes(event.player.group)) return false;
return game.getGlobalHistory('changeHp',function(evt){
return evt.getParent().name=='recover'&&evt.player==event.player;
}).length==1;
},
forced:true,
logTarget:'player',
content:function(){
trigger.player.loseHp();
},
group:['starcanxi_remove','starcanxi_cancel'],
global:'starcanxi_effect',
intro:{content:'$势力角色每回合首次回复体力后失去1点体力且每回合对你使用的第一张牌无效'},
},
cancel:{
charlotte:true,
trigger:{global:'useCard'},
filter:function(event,player){
if(!event.targets||!event.targets.includes(player)||!player.getStorage('starcanxi_xiangsi').includes(event.player.group)) return false;
return event.player.getHistory('useCard',evt=>evt.targets&&evt.targets.includes(player)).indexOf(event)==0;
},
forced:true,
logTarget:'player',
content:function(){
trigger.excluded.add(player);
},
},
effect:{
mod:{
globalFrom:function(from,to,distance){
if(game.hasPlayer(target=>target.getStorage('starcanxi_wangsheng').includes(from.group))) return distance-1;
},
},
ai:{
effect:{
player_use:function(card,player,target){
var targets=game.filterPlayer(target=>target.getStorage('starcanxi_xiangsi').includes(player.group));
if(!targets.length) return;
if(get.tag(card,'recover')&&target==player&&target.hp>2) return 0;
if(get.tag(card,'damage')&&targets.includes(target)) return 0.5;
},
},
},
},
remove:{
charlotte:true,
trigger:{player:'die'},
forced:true,
popup:false,
firstDo:true,
forceDie:true,
content:function(){
player.removeSkill('starcanxi_wangsheng');
player.removeSkill('starcanxi_xiangsi');
},
},
},
},
starpizhi:{
audio:2,
trigger:{player:'phaseEnd',global:'die'},
filter:function(event,player){
if(event.name=='phase') return player.hasMark('starpizhi');
var groups=player.getSkills().filter(skill=>skill.indexOf('starcanxi_')==0);
groups=groups.map(group=>group.slice(10));
return groups.includes(event.player.group);
},
forced:true,
content:function(){
'step 0'
if(trigger.name=='die'){
var skills=player.getSkills().filter(skill=>skill.indexOf('starcanxi_')==0&&skill.slice(10)==trigger.player.group);
player.removeSkill(skills);
}
'step 1'
player.draw(player.countMark('starpizhi'));
},
intro:{content:'已失去#个“玺角”'},
ai:{combo:'starcanxi'},
},
starzhonggu:{
unique:true,
audio:2,
trigger:{player:'phaseDrawBegin2'},
filter:function(event,player){
return !event.numFixed;
},
forced:true,
zhuSkill:true,
content:function(){
var num=(game.roundNumber>=game.countPlayer(current=>current.group=='qun')?2:-1);
trigger.num+=num;
},
},
//星曹仁 //星曹仁
starsujun:{ starsujun:{
audio:2, audio:2,
@ -10606,6 +10805,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
starsujun_info:'当你使用一张牌时,若你手牌中的基本牌和非基本牌的牌数相等,你可以摸两张牌。', starsujun_info:'当你使用一张牌时,若你手牌中的基本牌和非基本牌的牌数相等,你可以摸两张牌。',
starlifeng:'砺锋', starlifeng:'砺锋',
starlifeng_info:'你可以将一张本回合未有角色使用过的颜色的手牌当做不计入次数的【杀】或【无懈可击】使用。', starlifeng_info:'你可以将一张本回合未有角色使用过的颜色的手牌当做不计入次数的【杀】或【无懈可击】使用。',
star_yuanshu:'星袁术',
star_yuanshu_prefix:'星',
starcanxi:'残玺',
starcanxi_wangsheng:'妄生',
starcanxi_xiangsi:'向死',
starcanxi_cancel:'向死',
starcanxi_info:'锁定技。游戏开始时,你获得场上所有角色的势力对应的“玺角”标记,然后选择一个“玺角”对应势力并选择以下一项;一轮开始时,你选择一个“玺角”对应势力并选择以下一项:①妄生:本轮被选择势力角色每回合首次造成的伤害+1且计算与其他角色间的距离-1②向死本轮被选择势力角色每回合首次回复体力后失去1点体力且每回合对你使用的第一张牌无效。',
starpizhi:'圮秩',
starpizhi_info:'锁定技。①一名角色死亡后若你拥有该角色对应的“玺角”标记你失去之并摸X张牌。②结束阶段你摸X张牌。X为你本局游戏失去的“玺角”标记数',
starzhonggu:'冢骨',
starzhonggu_info:'主公技,锁定技。摸牌阶段,若游戏轮数大于等于场上的群势力角色数,则你额外摸两张牌,否则你少摸一张牌。',
sp_whlw:"文和乱武", sp_whlw:"文和乱武",
sp_zlzy:"逐鹿中原", sp_zlzy:"逐鹿中原",

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB