Merge branch 'libccy:PR-Branch' into PR-Branch
This commit is contained in:
commit
5179b65ed8
|
@ -982,10 +982,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 1'
|
||||
if(result.bool){
|
||||
var list=result.links;
|
||||
game.addVideo('skill',player,['qiexie',[list]])
|
||||
game.broadcastAll(function(list){
|
||||
game.addVideo('skill',player,['qiexie',[list]]);
|
||||
_status.characterlist.removeArray(list);
|
||||
game.broadcastAll(function(player,list){
|
||||
player.tempname.addArray(list);
|
||||
for(var name of list) lib.skill.qiexie.createCard(name);
|
||||
},list);
|
||||
},player,list);
|
||||
var cards=list.map(function(name){
|
||||
var card=game.createCard('qiexie_'+name,'none',get.infoMaxHp(lib.character[name][2]));
|
||||
return card;
|
||||
|
@ -1138,6 +1140,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
card._destroy=true;
|
||||
game.log(card,'被放回武将牌堆');
|
||||
var name=card.name.slice(7);
|
||||
if(player.tempname&&player.tempname.includes(name)){
|
||||
game.broadcastAll((player,name)=>{
|
||||
player.tempname.remove(name);
|
||||
},player,name);
|
||||
}
|
||||
if(lib.character[name]) _status.characterlist.add(name);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -96,7 +96,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_chunyuqiong:['male','qun',4,['recangchu','reliangying','reshishou']],
|
||||
xingdaorong:['male','qun','4/6',['xuxie']],
|
||||
re_panfeng:['male','qun',4,['xinkuangfu']],
|
||||
dc_jiangfei:['male','shu',3,['dcshengxi','dcshoucheng']],
|
||||
jiangfei:['male','shu',3,['dcshengxi','dcshoucheng']],
|
||||
},
|
||||
characterSort:{
|
||||
huicui:{
|
||||
|
@ -108,7 +108,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_jianghu:['guanning','huzhao','dc_huangchengyan','mengjie'],
|
||||
sp_zongheng:['huaxin','luyusheng','re_xunchen','re_miheng','fengxi','re_dengzhi','dc_yanghu','zongyu'],
|
||||
sp_taiping:['guanhai','liupi','peiyuanshao','zhangchu','zhangkai','dc_zhangmancheng'],
|
||||
sp_yanhan:['dc_liuba','dc_huangquan','furongfuqian','xianglang','dc_huojun','gaoxiang','dc_wuban','dc_jiangfei'],
|
||||
sp_yanhan:['dc_liuba','dc_huangquan','furongfuqian','xianglang','dc_huojun','gaoxiang','dc_wuban','jiangfei'],
|
||||
sp_jishi:['dc_jiben','zhenghun','dc_sunhanhua','liuchongluojun'],
|
||||
sp_raoting:['dc_huanghao','dc_sunziliufang','dc_sunchen','dc_jiachong'],
|
||||
sp_yijun:['gongsundu','mengyou','dc_sp_menghuo'],
|
||||
|
@ -117,77 +117,54 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
skill:{
|
||||
dcshengxi:{
|
||||
audio:2,
|
||||
inherit:'reshengxi',
|
||||
trigger:{player:'phaseDiscardEnd'},
|
||||
filter(event,player){
|
||||
return !player.getStat('damage');
|
||||
},
|
||||
frequent:true,
|
||||
content(){
|
||||
player.draw(2);
|
||||
},
|
||||
},
|
||||
dcshoucheng:{
|
||||
audio:2,
|
||||
init(player){
|
||||
game.addGlobalSkill('dcshoucheng_draw',player);
|
||||
},
|
||||
audio:'shoucheng',
|
||||
global:'dcshoucheng_ai',
|
||||
trigger:{
|
||||
global:['equipAfter','addJudgeAfter','loseAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'],
|
||||
},
|
||||
filter(event,player){
|
||||
return game.hasPlayer(function(current){
|
||||
if(current==_status.currentPhase) return false;
|
||||
const target=_status.currentPhase;
|
||||
return game.hasPlayer(current=>{
|
||||
if(target&¤t==target) return false;
|
||||
let evt=event.getl(current);
|
||||
return evt&&evt.hs&&evt.hs.length&¤t.countCards('h')==0;
|
||||
});
|
||||
},
|
||||
direct:true,
|
||||
content(){
|
||||
"step 0"
|
||||
event.list=game.filterPlayer(current=>{
|
||||
if(current==_status.currentPhase) return false;
|
||||
async content(event,trigger,player){
|
||||
const targetx=_status.currentPhase;
|
||||
const targets=game.filterPlayer(current=>{
|
||||
if(targetx&¤t==targetx) return false;
|
||||
let evt=trigger.getl(current);
|
||||
return evt&&evt.hs&&evt.hs.length&¤t.countCards('h')==0;
|
||||
}).sortBySeat(_status.currentPhase);
|
||||
"step 1"
|
||||
var target=event.list.shift();
|
||||
event.target=target;
|
||||
if(target.isIn()) player.chooseBool(get.prompt2('dcshoucheng',target)).set('ai',function(){
|
||||
return get.attitude(_status.event.player,_status.event.getParent().target)>0;
|
||||
});
|
||||
else event.goto(3);
|
||||
"step 2"
|
||||
if(result.bool){
|
||||
player.logSkill(event.name,target);
|
||||
if(player!==target&&(get.mode()!=='identity'||player.identity!=='nei')) player.addExpose(0.2);
|
||||
target.draw(2);
|
||||
}).sortBySeat(targetx||player);
|
||||
for(const target of targets){
|
||||
if(!target.isIn()) continue;
|
||||
const {result:{bool}}=await player.chooseBool(get.prompt2('dcshoucheng',target)).set('choice',get.attitude(player,target)>0);
|
||||
if(bool){
|
||||
player.logSkill('dcshoucheng',target);
|
||||
if(target!=player) player.addExpose(0.2);
|
||||
target.draw(2);
|
||||
}
|
||||
}
|
||||
"step 3"
|
||||
if(event.list.length) event.goto(1);
|
||||
},
|
||||
ai:{
|
||||
threaten(player,target){
|
||||
return Math.sqrt(game.countPlayer(i=>{
|
||||
return get.attitude(target,i)>0;
|
||||
}));
|
||||
}
|
||||
},
|
||||
},
|
||||
subSkill:{
|
||||
draw:{
|
||||
trigger:{player:'dieAfter'},
|
||||
filter(event,player){
|
||||
return !game.hasPlayer(current=>{
|
||||
return current.hasSkill('dcshoucheng');
|
||||
},true);
|
||||
},
|
||||
content(){
|
||||
game.removeGlobalSkill('dcshoucheng_draw');
|
||||
},
|
||||
ai:{
|
||||
ai:{
|
||||
noh:true,
|
||||
skillTagFilter(player,tag,arg){
|
||||
if(player.countCards('h')!==1) return false;
|
||||
if(player.countCards('h')!=1||(_status.currentPhase&&_status.currentPhase==player)) return false;
|
||||
return game.hasPlayer(current=>{
|
||||
return current.hasSkill('dcshoucheng')&&get.attitude(current,player)>0;
|
||||
});
|
||||
|
@ -11991,12 +11968,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
yue_daqiao_prefix:'乐',
|
||||
dczixi:'姊希',
|
||||
dczixi_info:'①出牌阶段开始和结束时,你可以将一张“琴”当作一张无效果的【乐不思蜀】、【兵粮寸断】或【闪电】置于一名角色的判定区。②当你使用基本牌或普通锦囊牌指定唯一目标后,你可根据其判定区内的牌数执行对应项:1.令此牌对其额外结算一次;2.摸两张牌;3.弃置其判定区所有牌,对其造成3点伤害。',
|
||||
dc_jiangfei:'新杀蒋琬费祎',
|
||||
dc_jiangfei_prefix:'新杀',
|
||||
jiangfei:'蒋琬费祎',
|
||||
dcshengxi:'生息',
|
||||
dcshengxi_info:'弃牌阶段结束时,若你本回合未造成过伤害,你可以摸两张牌。',
|
||||
dcshoucheng:'守成',
|
||||
dcshoucheng_info:'一名角色于其回合外失去最后的手牌时,你可令其摸两张牌。',
|
||||
dcshoucheng_info:'一名角色于其回合外失去最后的手牌后,你可令其摸两张牌。',
|
||||
|
||||
sp_baigei:'无双上将',
|
||||
sp_caizijiaren:'才子佳人',
|
||||
|
|
|
@ -11,7 +11,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
offline_yijiang:['ol_xinxianying'],
|
||||
offline_luanwu:["ns_lijue","ns_zhangji","ns_fanchou"],
|
||||
offline_yongjian:["ns_chendao","yj_caoang","yj_caocao",'yj_liru','yj_caohong','yj_zhangfei','yongjian_ganning','yj_dongzhuo','yj_xuyou','yj_jiaxu','yj_zhenji'],
|
||||
offline_piracyE:['shen_jiaxu','pe_wangyun','pe_zhonghui','pe_sunchen','pe_mengda','pe_wenqin','ns_caoanmin','jiangfei','chendong','jiangqing','zy_kongrong','jiling','tianfeng','mateng'],
|
||||
offline_piracyE:['shen_jiaxu','pe_wangyun','pe_zhonghui','pe_sunchen','pe_mengda','pe_wenqin','ns_caoanmin','chendong','jiangqing','zy_kongrong','jiling','tianfeng','mateng'],
|
||||
offline_piracyS:['ns_jiaxu','longyufei','ps_guanyu','ps1059_guojia','ps2070_guojia','ps2063_zhaoyun','ps2067_zhaoyun','ps1062_zhouyu','ps2080_zhouyu','ps_caozhi','ps_jin_simayi','ps_caopi','ps_simayi','ps2068_simayi','ps_machao','ps_zhugeliang','ps2066_zhugeliang','ps_jiaxu','ps_lvbu','ps_shen_machao','jsp_liubei'],
|
||||
offline_piracyK:['pk_sp_duyu'],
|
||||
offline_vtuber:['vtb_xiaosha','vtb_xiaoshan','vtb_xiaotao','vtb_xiaole','vtb_xiaojiu'],
|
||||
|
@ -36,7 +36,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zy_kongrong:['male','qun',3,['zymingshi','lirang']],
|
||||
chendong:['male','wu',4,['duanxie','fenming']],
|
||||
jiangqing:['male','wu',4,['zyshangyi']],
|
||||
jiangfei:['male','shu',3,['reshengxi','shoucheng']],
|
||||
pk_sp_duyu:['male','qun',4,['pkwuku','pksanchen']],
|
||||
ps_lvbu:['male','qun',4,['wushuang','pssheji']],
|
||||
ps_jiaxu:['male','qun',4,['wansha','psqupo','psbaoquan']],
|
||||
|
@ -6794,8 +6793,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ol_xinxianying_prefix:'将',
|
||||
chendong:'战役篇陈武董袭',
|
||||
chendong_prefix:'战役篇',
|
||||
jiangfei:'战役篇蒋琬费祎',
|
||||
jiangfei_prefix:'战役篇',
|
||||
jiangqing:'战役篇蒋钦',
|
||||
jiangqing_prefix:'战役篇',
|
||||
tianfeng:'战役篇田丰',
|
||||
|
|
|
@ -11401,7 +11401,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
starzongshi:'纵势',
|
||||
starzongshi_info:'出牌阶段,你可以展示一张可展示目标的基本牌或普通锦囊牌,然后你将手牌中所有与此牌花色相同的其他牌当作此牌使用,且此牌至多指定转化牌数的目标。',
|
||||
starjiaowang:'骄妄',
|
||||
starjiaowang_info:'锁定技,非首轮游戏开始时,若上一轮没有角色死亡,则你失去1点体力并发动〖硝焰〗。',
|
||||
starjiaowang_info:'锁定技,非首轮游戏开始时,若上一轮没有角色死亡(因〖硝焰〗死亡的角色除外),则你失去1点体力并发动〖硝焰〗。',
|
||||
staraoshi:'傲势',
|
||||
staraoshi_info:'主公技,其他群势力角色的出牌阶段限一次,其可以交给你一张手牌,然后你可以发动一次〖纵势〗。',
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ export const importMode = generateImportFunction('mode', (name) => `../../mode/$
|
|||
function generateImportFunction(type, pathParser) {
|
||||
return async (name) => {
|
||||
if(type == 'extension' && !game.hasExtension(name) && !lib.config.all.stockextension.includes(name)){
|
||||
await game.import(type,createEmptyExtension(name));
|
||||
await game.import(type,await createEmptyExtension(name));
|
||||
return;
|
||||
}
|
||||
let path = pathParser(name);
|
||||
|
@ -72,8 +72,21 @@ function generateImportFunction(type, pathParser) {
|
|||
}
|
||||
}
|
||||
|
||||
function createEmptyExtension(name){
|
||||
return {name:name,content:function(config,pack){},precontent:function(){},config:{},help:{},package:{
|
||||
async function createEmptyExtension(name){
|
||||
const extensionInfo = await lib.init.promises.json(`${lib.assetURL}extension/${name}/info.json`)//await import(`../../extension/${name}/info.json`,{assert:{type:'json'}})
|
||||
.then(info=>{
|
||||
return info;
|
||||
},()=>{
|
||||
return {
|
||||
name:name,
|
||||
intro:`扩展<b>《${name}》</b>尚未开启,请开启后查看信息。(建议扩展添加info.json以在关闭时查看信息)`,
|
||||
author:"未知",
|
||||
diskURL:"",
|
||||
forumURL:"",
|
||||
version:"1.0",
|
||||
};
|
||||
});
|
||||
return {name:extensionInfo.name,content:function(config,pack){},precontent:function(){},config:{},help:{},package:{
|
||||
character:{
|
||||
character:{
|
||||
},
|
||||
|
@ -93,10 +106,10 @@ function createEmptyExtension(name){
|
|||
translate:{
|
||||
},
|
||||
},
|
||||
intro:`扩展《${name}》尚未开启,请开启后查看信息。`,
|
||||
author:"未知",
|
||||
diskURL:"",
|
||||
forumURL:"",
|
||||
version:"1.0",
|
||||
intro:extensionInfo.intro?extensionInfo.intro.replace("${assetURL}",lib.assetURL):"",
|
||||
author:extensionInfo.author?extensionInfo.author:"未知",
|
||||
diskURL:extensionInfo.diskURL?extensionInfo.diskURL:"",
|
||||
forumURL:extensionInfo.forumURL?extensionInfo.forumURL:"",
|
||||
version:extensionInfo.version?extensionInfo.version:"1.0.0",
|
||||
},files:{"character":[],"card":[],"skill":[],"audio":[]}}
|
||||
}
|
|
@ -787,4 +787,14 @@ export class LibInit extends Uninstantable {
|
|||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
/**
|
||||
* 在返回当前加载的esm模块相对位置。
|
||||
* @param {*} url 传入import.meta.url
|
||||
*/
|
||||
static getCurrentFileLocation(url){
|
||||
let head = window.location.href.slice(0,window.location.href.lastIndexOf('/')+1);
|
||||
let ret = url.replace(head,'');
|
||||
return decodeURIComponent(ret);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue