Merge branch 'libccy:PR-Branch' into PR-Branch

This commit is contained in:
157 2023-11-20 16:20:33 +08:00 committed by GitHub
commit 06776685bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
35 changed files with 263 additions and 365 deletions

View File

@ -12,8 +12,19 @@
"no-undef": 0,
"no-redeclare": 0,
"require-yield": 0,
"no-irregular-whitespace": ["error", { "skipStrings": true, "skipTemplates": true }],
"no-constant-condition": ["error", { "checkLoops": false }]/* ,
"no-irregular-whitespace": [
"error",
{
"skipStrings": true,
"skipTemplates": true
}
],
"no-constant-condition": [
"error",
{
"checkLoops": false
}
] /* ,
"comma-dangle": ["error", "only-multiline"],
"complexity": ["error",100] */
}

Binary file not shown.

Binary file not shown.

BIN
audio/die/boss_lvbu3.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -115,8 +115,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'虎:使用仅指定唯一目标的牌对目标角色造成的伤害+1',
'鹿回复1点体力并弃置判定区的所有牌不能成为延时锦囊牌的目标',
'熊:受到伤害时,此伤害-1',
'猿:出牌阶段开始时,摸两张牌',
'鹤:出牌阶段开始时,选择一名角色,随机获得其装备区里的一张牌',
'猿:出牌阶段开始时,选择一名角色,随机获得其装备区里的一张牌',
'鹤:出牌阶段开始时,摸两张牌',
],
updateMark:function(player){
var wuqinxi=player.storage.wuling_wuqinxi;
@ -143,11 +143,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
intro:{
content:function(storage){
var str='<li>当前效果:'+storage;
var list=lib.skill.wuling.wuqinxiMap;
var list1=list.map(str2=>str2.slice(0,1));
var list2=list.map(str2=>str2.slice(2));
var list=lib.skill.wuling.wuqinxiMap.map(str2=>str2.slice(2));
str+='<br><li>';
str+=list2[list1.indexOf(storage)];
str+=list[lib.skill.wuling.wuqinxi.indexOf(storage)];
return str;
},
},
@ -166,8 +164,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(event.name=='phase') return true;
switch(name){
case 'damageBegin1':
if(wuqinxi!='虎') return false;
return event.card&&event.targets&&event.targets.length==1&&event.targets.includes(event.player);
if(wuqinxi!='虎'||!event.card) return false;
var evt=event.getParent('useCard');
return evt.targets&&evt.targets.length==1&&evt.targets.includes(event.player);
break;
case 'damageBegin2':
return wuqinxi=='熊';
@ -234,7 +233,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
effect:{
target:function(card,player,target){
var wuqinxi=target.storage.wuling_wuqinxi;
if(!wuqinxi&&wuqinxi!='熊') return;
if(!wuqinxi||wuqinxi!='熊') return;
if(player.hasSkillTag('jueqing',false,target)) return;
var num=get.tag(card,'damage');
if(num){
@ -7809,8 +7808,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'<br><li>虎:你使用仅指定唯一目标的牌对目标角色造成的伤害+1'+
'<br><li>鹿获得或更换至此效果时回复1点体力并弃置判定区的所有牌你不能成为延时锦囊牌的目标'+
'<br><li>熊:当你受到伤害时,此伤害-1'+
'<br><li>猿:出牌阶段开始时,你摸两张牌'+
'<br><li>鹤:出牌阶段开始时,你选择一名角色,随机获得其装备区里的一张牌',
'<br><li>猿:出牌阶段开始时,你选择一名角色,随机获得其装备区里的一张牌'+
'<br><li>鹤:出牌阶段开始时,你摸两张牌',
youyi:'游医',
youyi_info:'①弃牌阶段结束时你可以将所有于此阶段进入弃牌堆的牌置入仁区。②出牌阶段限一次你可以将仁区的所有牌置入弃牌堆然后令所有角色各回复1点体力。',

View File

@ -171,9 +171,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
skill:{
//界凌统
olxuanfeng:{
audio:2,
audio:'xuanfeng',
audioname:['boss_lvbu3'],
audioname2:{
lingtong:'xuanfeng',
ol_lingtong:'rexuanfeng',
},
trigger:{
player:['loseAfter'],
@ -5222,7 +5224,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//贾诩
rewansha:{
audio:'wansha',
audioname:['re_jiaxu','shen_simayi','boss_lvbu2'],
audioname:['re_jiaxu','shen_simayi','boss_lvbu3'],
global:'rewansha_global',
trigger:{global:'dyingBegin'},
forced:true,

View File

@ -364,7 +364,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filter:function(event,player){
return event.player!=player&&player.getStorage('sbkanpo').includes(event.card.name);
},
prompt:function(event,player){
prompt2:function(event,player){
return '移除'+get.translation(event.card.name)+',令'+get.translation(event.card)+'失效';
},
check:function(event,player){
@ -414,7 +414,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(cards.length) player.loseToDiscardpile(cards);
var bool=player.getAllHistory('useSkill',evt=>evt.skill=='sbguanxing').length>1;
var num=Math.min(7,bool?cards.length+1:7);
var cards2=get.cards(num+1);
var cards2=get.cards(num);
player.$gain2(cards2,false);
game.log(player,'将',cards2,'置于了武将牌上');
player.loseToSpecial(cards2,'sbguanxing').visible=true;

View File

@ -9,7 +9,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_sibi:["yangxiu","chenlin","chengyu","shixie","fuwan","wangyun","zhugejin","simalang","maliang","buzhi","dongyun","kanze","sunqian","xizhicai","sunshao",'duxi',"jianggan",'ol_dengzhi','ol_yangyi','ol_dongzhao','ol_chendeng','jin_yanghu','wangyan','xiahouxuan','quhuang','zhanghua','wangguan','sunhong','caoxi'],
sp_tianzhu:['zhangyan','niujin','hejin','hansui',"wutugu","yanbaihu","shamoke","zhugedan",'huangzu','gaogan',"tadun","fanjiangzhangda","ahuinan","dongtuna",'ol_wenqin'],
sp_nvshi:["lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu',"daxiaoqiao","jin_guohuai"],
sp_shaowei:["simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan','zhangzhi','lushi'],
sp_shaowei:['lvboshe',"simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan','zhangzhi','lushi'],
sp_huben:['duanjiong','ol_mengda',"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','ol_huban','haopu','ol_qianzhao'],
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'],
@ -18,7 +18,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_zhongdan:["cuiyan","huangfusong"],
sp_guozhan2:["sp_dongzhuo","liqueguosi","zhangren"],
sp_others:["hanba","caiyang"],
sp_waitforsort:['ol_luyusheng','ol_pengyang','ol_tw_zhangji','ol_feiyi','lvboshe','ol_dingshangwan','ol_liwan'],
sp_waitforsort:['ol_luyusheng','ol_pengyang','ol_tw_zhangji','ol_feiyi','ol_dingshangwan','ol_liwan'],
},
},
characterFilter:{

View File

@ -5477,14 +5477,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
else{
player.addTempSkill('taoluan3');
var next=player.loseHp();
event.next.remove(next);
event.getParent('phase').after.push(next);
player.loseHp();
}
}
},
taoluan3:{charlotte:true},
taoluan4:{
audio:'taoluan',
prompt:'将一张牌当做闪使用',
enable:'chooseToUse',
filter:function(event,player){
@ -14238,11 +14237,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lianhuo:'链祸',
lianhuo_info:'锁定技,当你受到火焰伤害时,若你的武将牌处于横置状态且此伤害不为连环伤害,则此伤害+1。',
taoluan:'滔乱',
taoluan_backup:'滔乱',
taoluan4:'滔乱',
taoluan5:'滔乱',
taoluan_backup:'滔乱',
taoluan_info:'你可以将一张牌当做任意一张基本牌或普通锦囊牌使用此牌不得是本局游戏你以此法使用过的牌然后你令一名其他角色选择一项1.交给你一张与你以此法使用的牌类别不同的牌2.你于回合结束时失去1点体力且〖滔乱〗无效直到回合结束。',
taoluan_info:'你可以将一张牌当做任意一张基本牌或普通锦囊牌使用此牌不得是本局游戏你以此法使用过的牌然后你令一名其他角色选择一项1.交给你一张与你以此法使用的牌类别不同的牌2.你失去1点体力且〖滔乱〗无效直到回合结束。',
xintaoluan:'滔乱',
xintaoluan_backup:'滔乱',
xintaoluan4:'滔乱',
xintaoluan5:'滔乱',
xintaoluan_backup:'滔乱',

View File

@ -1,7 +1,7 @@
/**
* core-js 3.33.0
* core-js 3.33.2
* © 2014-2023 Denis Pushkarev (zloirock.ru)
* license: https://github.com/zloirock/core-js/blob/v3.33.0/LICENSE
* license: https://github.com/zloirock/core-js/blob/v3.33.2/LICENSE
* source: https://github.com/zloirock/core-js
*/
!function (undefined) { 'use strict'; /******/ (function(modules) { // webpackBootstrap
@ -721,14 +721,15 @@ if (!NATIVE_SYMBOL) {
var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);
var tag = uid(description);
var setter = function (value) {
if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);
if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
var $this = this === undefined ? global : this;
if ($this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);
if (hasOwn($this, HIDDEN) && hasOwn($this[HIDDEN], tag)) $this[HIDDEN][tag] = false;
var descriptor = createPropertyDescriptor(1, value);
try {
setSymbolDescriptor(this, tag, descriptor);
setSymbolDescriptor($this, tag, descriptor);
} catch (error) {
if (!(error instanceof RangeError)) throw error;
fallbackDefineProperty(this, tag, descriptor);
fallbackDefineProperty($this, tag, descriptor);
}
};
if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });
@ -1483,10 +1484,10 @@ var store = __webpack_require__(37);
(module.exports = function (key, value) {
return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
version: '3.33.0',
version: '3.33.2',
mode: IS_PURE ? 'pure' : 'global',
copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',
license: 'https://github.com/zloirock/core-js/blob/v3.33.0/LICENSE',
license: 'https://github.com/zloirock/core-js/blob/v3.33.2/LICENSE',
source: 'https://github.com/zloirock/core-js'
});
@ -3758,7 +3759,6 @@ if (ErrorPrototype.toString !== errorToString) {
var DESCRIPTORS = __webpack_require__(6);
var fails = __webpack_require__(7);
var anObject = __webpack_require__(47);
var create = __webpack_require__(72);
var normalizeStringArgument = __webpack_require__(121);
var nativeErrorToString = Error.prototype.toString;
@ -3766,8 +3766,8 @@ var nativeErrorToString = Error.prototype.toString;
var INCORRECT_TO_STRING = fails(function () {
if (DESCRIPTORS) {
// Chrome 32- incorrectly call accessor
// eslint-disable-next-line es/no-object-defineproperty -- safe
var object = create(Object.defineProperty({}, 'name', { get: function () {
// eslint-disable-next-line es/no-object-create, es/no-object-defineproperty -- safe
var object = Object.create(Object.defineProperty({}, 'name', { get: function () {
return this === object;
} }));
if (nativeErrorToString.call(object) !== 'true') return true;
@ -4977,13 +4977,12 @@ module.exports = defineIterator(Array, 'Array', function (iterated, kind) {
}, function () {
var state = getInternalState(this);
var target = state.target;
var kind = state.kind;
var index = state.index++;
if (!target || index >= target.length) {
state.target = undefined;
return createIterResultObject(undefined, true);
}
switch (kind) {
switch (state.kind) {
case 'keys': return createIterResultObject(index, false);
case 'values': return createIterResultObject(target[index], false);
} return createIterResultObject([index, target[index]], false);
@ -6008,11 +6007,11 @@ var uncurryThis = __webpack_require__(14);
var aCallable = __webpack_require__(31);
var toIndexedObject = __webpack_require__(12);
var arrayFromConstructorAndList = __webpack_require__(199);
var getVirtual = __webpack_require__(200);
var getBuiltInPrototypeMethod = __webpack_require__(200);
var addToUnscopables = __webpack_require__(140);
var $Array = Array;
var sort = uncurryThis(getVirtual('Array').sort);
var sort = uncurryThis(getBuiltInPrototypeMethod('Array', 'sort'));
// `Array.prototype.toSorted` method
// https://tc39.es/ecma262/#sec-array.prototype.tosorted
@ -6053,8 +6052,10 @@ module.exports = function (Constructor, list) {
var global = __webpack_require__(4);
module.exports = function (CONSTRUCTOR) {
return global[CONSTRUCTOR].prototype;
module.exports = function (CONSTRUCTOR, METHOD) {
var Constructor = global[CONSTRUCTOR];
var Prototype = Constructor && Constructor.prototype;
return Prototype && Prototype[METHOD];
};
@ -15957,14 +15958,14 @@ var getIterator = __webpack_require__(135);
var getIteratorDirect = __webpack_require__(496);
var getIteratorMethod = __webpack_require__(136);
var getMethod = __webpack_require__(30);
var getVirtual = __webpack_require__(200);
var getBuiltIn = __webpack_require__(24);
var getBuiltInPrototypeMethod = __webpack_require__(200);
var wellKnownSymbol = __webpack_require__(34);
var AsyncFromSyncIterator = __webpack_require__(494);
var toArray = __webpack_require__(497).toArray;
var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');
var arrayIterator = uncurryThis(getVirtual('Array').values);
var arrayIterator = uncurryThis(getBuiltInPrototypeMethod('Array', 'values'));
var arrayIteratorNext = uncurryThis(arrayIterator([]).next);
var safeArrayIterator = function () {
@ -17721,7 +17722,7 @@ var AsyncFromSyncIterator = __webpack_require__(494);
var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');
module.exports = function from(obj) {
module.exports = function (obj) {
var object = anObject(obj);
var alreadyAsync = true;
var method = getMethod(object, ASYNC_ITERATOR);
@ -18272,7 +18273,7 @@ var uncurryThis = __webpack_require__(14);
var getUint8 = uncurryThis(DataView.prototype.getUint8);
// `DataView.prototype.getUint8Clamped` method
// https://github.com/tc39/proposal-dataview-get-set-uint8c
// https://github.com/tc39/proposal-dataview-get-set-uint8clamped
$({ target: 'DataView', proto: true, forced: true }, {
getUint8Clamped: function getUint8Clamped(byteOffset) {
return getUint8(this, byteOffset);
@ -18345,7 +18346,7 @@ var $TypeError = TypeError;
var setUint8 = uncurryThis(DataView.prototype.setUint8);
// `DataView.prototype.setUint8Clamped` method
// https://github.com/tc39/proposal-dataview-get-set-uint8c
// https://github.com/tc39/proposal-dataview-get-set-uint8clamped
$({ target: 'DataView', proto: true, forced: true }, {
setUint8Clamped: function setUint8Clamped(byteOffset, value) {
if (classof(this) !== 'DataView') throw new $TypeError('Incorrect receiver');
@ -20734,18 +20735,19 @@ var INVALID_RADIX = 'Invalid radix';
var $RangeError = RangeError;
var $SyntaxError = SyntaxError;
var $TypeError = TypeError;
var valid = /^[\da-z]+$/;
var pow = Math.pow;
var valid = /^[\d.a-z]+$/;
var charAt = uncurryThis(''.charAt);
var exec = uncurryThis(valid.exec);
var numberToString = uncurryThis(1.0.toString);
var stringSlice = uncurryThis(''.slice);
var split = uncurryThis(''.split);
// `Number.fromString` method
// https://github.com/tc39/proposal-number-fromstring
$({ target: 'Number', stat: true, forced: true }, {
fromString: function fromString(string, radix) {
var sign = 1;
var R, mathNum;
if (typeof string != 'string') throw new $TypeError(INVALID_NUMBER_REPRESENTATION);
if (!string.length) throw new $SyntaxError(INVALID_NUMBER_REPRESENTATION);
if (charAt(string, 0) === '-') {
@ -20753,11 +20755,13 @@ $({ target: 'Number', stat: true, forced: true }, {
string = stringSlice(string, 1);
if (!string.length) throw new $SyntaxError(INVALID_NUMBER_REPRESENTATION);
}
R = radix === undefined ? 10 : toIntegerOrInfinity(radix);
var R = radix === undefined ? 10 : toIntegerOrInfinity(radix);
if (R < 2 || R > 36) throw new $RangeError(INVALID_RADIX);
if (!exec(valid, string) || numberToString(mathNum = parseInt(string, R), R) !== string) {
throw new $SyntaxError(INVALID_NUMBER_REPRESENTATION);
}
if (!exec(valid, string)) throw new $SyntaxError(INVALID_NUMBER_REPRESENTATION);
var parts = split(string, '.');
var mathNum = parseInt(parts[0], R);
if (parts.length > 1) mathNum += parseInt(parts[1], R) / pow(R, parts[1].length);
if (numberToString(mathNum, R) !== string) throw new $SyntaxError(INVALID_NUMBER_REPRESENTATION);
return sign * mathNum;
}
});
@ -23203,7 +23207,6 @@ defineWellKnownSymbol('matcher');
"use strict";
// TODO: Remove from `core-js@4`
var defineWellKnownSymbol = __webpack_require__(81);
// `Symbol.metadata` well-known symbol
@ -23217,6 +23220,7 @@ defineWellKnownSymbol('metadata');
"use strict";
// TODO: Remove from `core-js@4`
var defineWellKnownSymbol = __webpack_require__(81);
// `Symbol.metadataKey` well-known symbol
@ -24449,7 +24453,7 @@ try {
var IS_PURE = __webpack_require__(36);
var $ = __webpack_require__(3);
var global = __webpack_require__(4);
var getBuiltin = __webpack_require__(24);
var getBuiltIn = __webpack_require__(24);
var uncurryThis = __webpack_require__(14);
var fails = __webpack_require__(7);
var uid = __webpack_require__(41);
@ -24469,7 +24473,8 @@ var validateArgumentsLength = __webpack_require__(329);
var getRegExpFlags = __webpack_require__(369);
var MapHelpers = __webpack_require__(506);
var SetHelpers = __webpack_require__(659);
var arrayBufferTransfer = __webpack_require__(519);
var setIterate = __webpack_require__(664);
var detachTransferable = __webpack_require__(520);
var ERROR_STACK_INSTALLABLE = __webpack_require__(125);
var PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(522);
@ -24477,25 +24482,17 @@ var Object = global.Object;
var Array = global.Array;
var Date = global.Date;
var Error = global.Error;
var EvalError = global.EvalError;
var RangeError = global.RangeError;
var ReferenceError = global.ReferenceError;
var SyntaxError = global.SyntaxError;
var TypeError = global.TypeError;
var URIError = global.URIError;
var PerformanceMark = global.PerformanceMark;
var WebAssembly = global.WebAssembly;
var CompileError = WebAssembly && WebAssembly.CompileError || Error;
var LinkError = WebAssembly && WebAssembly.LinkError || Error;
var RuntimeError = WebAssembly && WebAssembly.RuntimeError || Error;
var DOMException = getBuiltin('DOMException');
var DOMException = getBuiltIn('DOMException');
var Map = MapHelpers.Map;
var mapHas = MapHelpers.has;
var mapGet = MapHelpers.get;
var mapSet = MapHelpers.set;
var Set = SetHelpers.Set;
var setAdd = SetHelpers.add;
var objectKeys = getBuiltin('Object', 'keys');
var setHas = SetHelpers.has;
var objectKeys = getBuiltIn('Object', 'keys');
var push = uncurryThis([].push);
var thisBooleanValue = uncurryThis(true.valueOf);
var thisNumberValue = uncurryThis(1.0.valueOf);
@ -24510,7 +24507,7 @@ var checkBasicSemantic = function (structuredCloneImplementation) {
var set1 = new global.Set([7]);
var set2 = structuredCloneImplementation(set1);
var number = structuredCloneImplementation(Object(7));
return set2 === set1 || !set2.has(7) || typeof number != 'object' || +number !== 7;
return set2 === set1 || !set2.has(7) || !isObject(number) || +number !== 7;
}) && structuredCloneImplementation;
};
@ -24606,10 +24603,10 @@ var cloneBuffer = function (value, map, $type) {
// `ArrayBuffer#slice` is not available in IE10
// `ArrayBuffer#slice` and `DataView` are not available in old FF
if (!DataView && typeof value.slice != 'function') throwUnpolyfillable('ArrayBuffer');
if (!DataView && !isCallable(value.slice)) throwUnpolyfillable('ArrayBuffer');
// detached buffers throws in `DataView` and `.slice`
try {
if (typeof value.slice == 'function' && !value.resizable) {
if (isCallable(value.slice) && !value.resizable) {
clone = value.slice(0);
} else {
length = value.byteLength;
@ -24639,13 +24636,7 @@ var cloneView = function (value, type, offset, length, map) {
return new C(cloneBuffer(value.buffer, map), offset, length);
};
var Placeholder = function (object, type, metadata) {
this.object = object;
this.type = type;
this.metadata = metadata;
};
var structuredCloneInternal = function (value, map, transferredBuffers) {
var structuredCloneInternal = function (value, map) {
if (isSymbol(value)) throwUncloneable('Symbol');
if (!isObject(value)) return value;
// effectively preserves circular references
@ -24678,34 +24669,21 @@ var structuredCloneInternal = function (value, map, transferredBuffers) {
name = value.name;
switch (name) {
case 'AggregateError':
cloned = new (getBuiltin('AggregateError'))([]);
cloned = new (getBuiltIn(name))([]);
break;
case 'EvalError':
cloned = new EvalError();
break;
case 'RangeError':
cloned = new RangeError();
break;
case 'ReferenceError':
cloned = new ReferenceError();
break;
case 'SuppressedError':
case 'SyntaxError':
cloned = new SyntaxError();
break;
case 'TypeError':
cloned = new TypeError();
break;
case 'URIError':
cloned = new URIError();
cloned = new (getBuiltIn(name))();
break;
case 'CompileError':
cloned = new CompileError();
break;
case 'LinkError':
cloned = new LinkError();
break;
case 'RuntimeError':
cloned = new RuntimeError();
cloned = new (getBuiltIn('WebAssembly', name))();
break;
default:
cloned = new Error();
@ -24716,9 +24694,7 @@ var structuredCloneInternal = function (value, map, transferredBuffers) {
break;
case 'ArrayBuffer':
case 'SharedArrayBuffer':
cloned = transferredBuffers
? new Placeholder(value, type)
: cloneBuffer(value, map, type);
cloned = cloneBuffer(value, map, type);
break;
case 'DataView':
case 'Int8Array':
@ -24734,17 +24710,15 @@ var structuredCloneInternal = function (value, map, transferredBuffers) {
case 'BigInt64Array':
case 'BigUint64Array':
length = type === 'DataView' ? value.byteLength : value.length;
cloned = transferredBuffers
? new Placeholder(value, type, { offset: value.byteOffset, length: length })
: cloneView(value, type, value.byteOffset, length, map);
cloned = cloneView(value, type, value.byteOffset, length, map);
break;
case 'DOMQuad':
try {
cloned = new DOMQuad(
structuredCloneInternal(value.p1, map, transferredBuffers),
structuredCloneInternal(value.p2, map, transferredBuffers),
structuredCloneInternal(value.p3, map, transferredBuffers),
structuredCloneInternal(value.p4, map, transferredBuffers)
structuredCloneInternal(value.p1, map),
structuredCloneInternal(value.p2, map),
structuredCloneInternal(value.p3, map),
structuredCloneInternal(value.p4, map)
);
} catch (error) {
cloned = tryNativeRestrictedStructuredClone(value, type);
@ -24765,7 +24739,7 @@ var structuredCloneInternal = function (value, map, transferredBuffers) {
dataTransfer = createDataTransfer();
if (dataTransfer) {
for (i = 0, length = lengthOfArrayLike(value); i < length; i++) {
dataTransfer.items.add(structuredCloneInternal(value[i], map, transferredBuffers));
dataTransfer.items.add(structuredCloneInternal(value[i], map));
}
cloned = dataTransfer.files;
} else cloned = tryNativeRestrictedStructuredClone(value, type);
@ -24774,7 +24748,7 @@ var structuredCloneInternal = function (value, map, transferredBuffers) {
// Safari 9 ImageData is a constructor, but typeof ImageData is 'object'
try {
cloned = new ImageData(
structuredCloneInternal(value.data, map, transferredBuffers),
structuredCloneInternal(value.data, map),
value.width,
value.height,
{ colorSpace: value.colorSpace }
@ -24871,105 +24845,38 @@ var structuredCloneInternal = function (value, map, transferredBuffers) {
keys = objectKeys(value);
for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {
key = keys[i];
createProperty(cloned, key, structuredCloneInternal(value[key], map, transferredBuffers));
createProperty(cloned, key, structuredCloneInternal(value[key], map));
} break;
case 'Map':
value.forEach(function (v, k) {
mapSet(cloned, structuredCloneInternal(k, map, transferredBuffers), structuredCloneInternal(v, map, transferredBuffers));
mapSet(cloned, structuredCloneInternal(k, map), structuredCloneInternal(v, map));
});
break;
case 'Set':
value.forEach(function (v) {
setAdd(cloned, structuredCloneInternal(v, map, transferredBuffers));
setAdd(cloned, structuredCloneInternal(v, map));
});
break;
case 'Error':
createNonEnumerableProperty(cloned, 'message', structuredCloneInternal(value.message, map, transferredBuffers));
createNonEnumerableProperty(cloned, 'message', structuredCloneInternal(value.message, map));
if (hasOwn(value, 'cause')) {
createNonEnumerableProperty(cloned, 'cause', structuredCloneInternal(value.cause, map, transferredBuffers));
createNonEnumerableProperty(cloned, 'cause', structuredCloneInternal(value.cause, map));
}
if (name === 'AggregateError') {
cloned.errors = structuredCloneInternal(value.errors, map, transferredBuffers);
cloned.errors = structuredCloneInternal(value.errors, map);
} else if (name === 'SuppressedError') {
cloned.error = structuredCloneInternal(value.error, map);
cloned.suppressed = structuredCloneInternal(value.suppressed, map);
} // break omitted
case 'DOMException':
if (ERROR_STACK_INSTALLABLE) {
createNonEnumerableProperty(cloned, 'stack', structuredCloneInternal(value.stack, map, transferredBuffers));
createNonEnumerableProperty(cloned, 'stack', structuredCloneInternal(value.stack, map));
}
}
return cloned;
};
var replacePlaceholders = function (value, map) {
if (!isObject(value)) return value;
if (mapHas(map, value)) return mapGet(map, value);
var type, object, metadata, i, length, keys, key, replacement;
if (value instanceof Placeholder) {
type = value.type;
object = value.object;
switch (type) {
case 'ArrayBuffer':
case 'SharedArrayBuffer':
replacement = cloneBuffer(object, map, type);
break;
case 'DataView':
case 'Int8Array':
case 'Uint8Array':
case 'Uint8ClampedArray':
case 'Int16Array':
case 'Uint16Array':
case 'Int32Array':
case 'Uint32Array':
case 'Float16Array':
case 'Float32Array':
case 'Float64Array':
case 'BigInt64Array':
case 'BigUint64Array':
metadata = value.metadata;
replacement = cloneView(object, type, metadata.offset, metadata.length, map);
}
} else switch (classof(value)) {
case 'Array':
case 'Object':
keys = objectKeys(value);
for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {
key = keys[i];
value[key] = replacePlaceholders(value[key], map);
} break;
case 'Map':
replacement = new Map();
value.forEach(function (v, k) {
mapSet(replacement, replacePlaceholders(k, map), replacePlaceholders(v, map));
});
break;
case 'Set':
replacement = new Set();
value.forEach(function (v) {
setAdd(replacement, replacePlaceholders(v, map));
});
break;
case 'Error':
value.message = replacePlaceholders(value.message, map);
if (hasOwn(value, 'cause')) {
value.cause = replacePlaceholders(value.cause, map);
}
if (value.name === 'AggregateError') {
value.errors = replacePlaceholders(value.errors, map);
} // break omitted
case 'DOMException':
if (ERROR_STACK_INSTALLABLE) {
value.stack = replacePlaceholders(value.stack, map);
}
}
mapSet(map, value, replacement || value);
return replacement || value;
};
var tryToTransfer = function (rawTransfer, map) {
if (!isObject(rawTransfer)) throw new TypeError('Transfer option cannot be converted to a sequence');
@ -24981,7 +24888,7 @@ var tryToTransfer = function (rawTransfer, map) {
var i = 0;
var length = lengthOfArrayLike(transfer);
var buffers = [];
var buffers = new Set();
var value, type, C, transferred, canvas, context;
while (i < length) {
@ -24989,12 +24896,14 @@ var tryToTransfer = function (rawTransfer, map) {
type = classof(value);
if (type === 'ArrayBuffer') {
push(buffers, value);
continue;
if (type === 'ArrayBuffer' ? setHas(buffers, value) : mapHas(map, value)) {
throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);
}
if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);
if (type === 'ArrayBuffer') {
setAdd(buffers, value);
continue;
}
if (PROPER_STRUCTURED_CLONE_TRANSFER) {
transferred = nativeStructuredClone(value, { transfer: [value] });
@ -25034,25 +24943,18 @@ var tryToTransfer = function (rawTransfer, map) {
return buffers;
};
var tryToTransferBuffers = function (transfer, map) {
var i = 0;
var length = lengthOfArrayLike(transfer);
var value, transferred;
while (i < length) {
value = transfer[i++];
if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);
if (arrayBufferTransfer) {
transferred = arrayBufferTransfer(value, undefined, true);
var detachBuffers = function (buffers) {
setIterate(buffers, function (buffer) {
if (PROPER_STRUCTURED_CLONE_TRANSFER) {
nativeRestrictedStructuredClone(buffer, { transfer: [buffer] });
} else if (isCallable(buffer.transfer)) {
buffer.transfer();
} else if (detachTransferable) {
detachTransferable(buffer);
} else {
if (!isCallable(value.transfer)) throwUnpolyfillable('ArrayBuffer', TRANSFERRING);
transferred = value.transfer();
}
mapSet(map, value, transferred);
throwUnpolyfillable('ArrayBuffer', TRANSFERRING);
}
});
};
// `structuredClone` method
@ -25061,24 +24963,18 @@ $({ global: true, enumerable: true, sham: !PROPER_STRUCTURED_CLONE_TRANSFER, for
structuredClone: function structuredClone(value /* , { transfer } */) {
var options = validateArgumentsLength(arguments.length, 1) > 1 && !isNullOrUndefined(arguments[1]) ? anObject(arguments[1]) : undefined;
var transfer = options ? options.transfer : undefined;
var transferredBuffers = false;
var map, buffers;
if (transfer !== undefined) {
map = new Map();
buffers = tryToTransfer(transfer, map);
transferredBuffers = !!lengthOfArrayLike(buffers);
}
var clone = structuredCloneInternal(value, map, transferredBuffers);
var clone = structuredCloneInternal(value, map);
// since of an issue with cloning views of transferred buffers, we a forced to transfer / clone them in 2 steps
// since of an issue with cloning views of transferred buffers, we a forced to detach them later
// https://github.com/zloirock/core-js/issues/1265
if (transferredBuffers) {
map = new Map();
tryToTransferBuffers(transfer, map);
clone = replacePlaceholders(clone, map);
}
if (buffers) detachBuffers(buffers);
return clone;
}
@ -26468,6 +26364,7 @@ var create = __webpack_require__(72);
var createPropertyDescriptor = __webpack_require__(11);
var getIterator = __webpack_require__(135);
var getIteratorMethod = __webpack_require__(136);
var createIterResultObject = __webpack_require__(173);
var validateArgumentsLength = __webpack_require__(329);
var wellKnownSymbol = __webpack_require__(34);
var arraySort = __webpack_require__(189);
@ -26556,17 +26453,23 @@ var serialize = function (it) {
var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {
setInternalState(this, {
type: URL_SEARCH_PARAMS_ITERATOR,
iterator: getIterator(getInternalParamsState(params).entries),
target: getInternalParamsState(params).entries,
index: 0,
kind: kind
});
}, 'Iterator', function next() {
}, URL_SEARCH_PARAMS, function next() {
var state = getInternalIteratorState(this);
var kind = state.kind;
var step = state.iterator.next();
var entry = step.value;
if (!step.done) {
step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];
} return step;
var target = state.target;
var index = state.index++;
if (!target || index >= target.length) {
state.target = undefined;
return createIterResultObject(undefined, true);
}
var entry = target[index];
switch (state.kind) {
case 'keys': return createIterResultObject(entry.key, false);
case 'values': return createIterResultObject(entry.value, false);
} return createIterResultObject([entry.key, entry.value], false);
}, true);
var URLSearchParamsState = function (init) {
@ -26586,6 +26489,7 @@ URLSearchParamsState.prototype = {
this.update();
},
parseObject: function (object) {
var entries = this.entries;
var iteratorMethod = getIteratorMethod(object);
var iterator, next, step, entryIterator, entryNext, first, second;
@ -26600,14 +26504,15 @@ URLSearchParamsState.prototype = {
(second = call(entryNext, entryIterator)).done ||
!call(entryNext, entryIterator).done
) throw new TypeError('Expected sequence with length 2');
push(this.entries, { key: $toString(first.value), value: $toString(second.value) });
push(entries, { key: $toString(first.value), value: $toString(second.value) });
}
} else for (var key in object) if (hasOwn(object, key)) {
push(this.entries, { key: key, value: $toString(object[key]) });
push(entries, { key: key, value: $toString(object[key]) });
}
},
parseQuery: function (query) {
if (query) {
var entries = this.entries;
var attributes = split(query, '&');
var index = 0;
var attribute, entry;
@ -26615,7 +26520,7 @@ URLSearchParamsState.prototype = {
attribute = attributes[index++];
if (attribute.length) {
entry = split(attribute, '=');
push(this.entries, {
push(entries, {
key: deserialize(shift(entry)),
value: deserialize(join(entry, '='))
});

View File

@ -1,5 +1,15 @@
"use strict";
{
const nonameInitialized=localStorage.getItem('noname_inited');
const assetURL=typeof nonameInitialized!='string'||nonameInitialized=='nodejs'?'':nonameInitialized;
new Promise(resolve=>{
if('__core-js_shared__' in window) resolve();
else{
const coreJSBundle=document.createElement('script');
coreJSBundle.onerror=coreJSBundle.onload=resolve;
coreJSBundle.src=`${assetURL}game/core-js-bundle.js`;
document.head.appendChild(coreJSBundle);
}
}).then(()=>{
/**
* @typedef {InstanceType<typeof lib.element.Player>} Player
* @typedef {InstanceType<typeof lib.element.Card>} Card
@ -36,7 +46,6 @@
}
}
}
const nonameInitialized=localStorage.getItem('noname_inited');
const GeneratorFunction=(function*(){}).constructor;
// gnc: GeNCoroutine
const gnc={
@ -122,7 +131,7 @@
updateURL:'https://raw.githubusercontent.com/libccy/noname',
mirrorURL:'https://raw.fgit.cf/libccy/noname',
hallURL:'47.99.105.222',
assetURL:typeof nonameInitialized!='string'||nonameInitialized=='nodejs'?'':nonameInitialized,
assetURL:assetURL,
userAgent:userAgent,
compatibleEdition:Boolean(typeof nonameInitialized=='string'&&nonameInitialized.match(/\/(?:com\.widget|yuri\.nakamura)\.noname\//)),
changeLog:[],
@ -8656,36 +8665,33 @@
else src=`image/${type}/${subfolder}/${name}${ext}`;
}
else src=`image/${name}${ext}`;
new Promise((resolve,reject)=>{
const image=new Image();
image.src=`${lib.assetURL}${src}`;
image.onload=resolve;
if(type=='character') image.onerror=reject;
}).then(()=>{
this.setBackgroundImage(src);
this.style.backgroundPositionX='center';
this.style.backgroundSize='cover';
}).catch(()=>new Promise((resolve,reject)=>{
if(type=='character'){
new Promise((_,reject)=>{
const image=new Image();
image.src=`${lib.assetURL}${src}`;
image.onerror=reject;
}).catch(()=>new Promise((_,reject)=>{
const nameinfo=get.character(name);
if(!nameinfo) reject('noinfo');
const sex=nameinfo[0];
src=`image/character/default_silhouette_${sex}${ext}`;
const image=new Image();
image.src=`${lib.assetURL}${src}`;
image.onload=()=>resolve(src);
image.onerror=reject;
}).catch(()=>new Promise((resolve,reject)=>{
const nameinfo=get.character(name);
const sex=nameinfo[0];
image.onload=()=>this.setBackgroundImage(src);
image.onerror=()=>reject(`sex:${sex}`);
})).catch(reason=>{
let sex;
if(reason=='noinfo') sex='male';
else sex=reason.slice(4);
src=`image/character/default_silhouette_${sex=='female'?'female':'male'}${ext}`;
const image=new Image();
image.src=`${lib.assetURL}${src}`;
image.onload=()=>resolve(src);
image.onerror=reject;
})).then((src)=>{
this.setBackgroundImage(src);
this.style.backgroundPositionX='center';
this.style.backgroundSize='cover';
}));
image.onload=()=>this.setBackgroundImage(src);
});
}
return this;
}
});
@ -27370,8 +27376,19 @@
}
addSkillLog(skill){
this.addSkill(skill);
this.popup(skill);
game.log(this,'获得了技能','#g【'+get.translation(skill)+'】');
if(!Array.isArray(skill)) skill=[skill];
skill.forEach(i=>{
this.popup(i);
game.log(this,'获得了技能','#g【'+get.translation(i)+'】');
});
}
removeSkillLog(skill,popop){
this.removeSkill(skill);
if(!Array.isArray(skill)) skill=[skill];
skill.forEach(i=>{
if(popop===true) this.popup(i);
game.log(this,'失去了技能','#g【'+get.translation(i)+'】');
});
}
addInvisibleSkill(skill){
if(Array.isArray(skill)){
@ -27859,7 +27876,7 @@
this.removeAdditionalSkill(i);
}
}
this.removeSkill(list);
this[all?'removeSkill':'removeSkillLog'](list);
this.checkConflict();
this.checkMarks();
return list;
@ -32533,7 +32550,7 @@
}
if(game.online||game.onlineroom){
if((game.servermode||game.onlinehall)&&_status.over){
void 0;
}
else{
localStorage.setItem(lib.configprefix+'directstart',true);
@ -35147,9 +35164,7 @@
}
}
if(!_status.requestReadClipboard&&get.config('read_clipboard','connect')){
//每次启动只请求一次
_status.requestReadClipboard=true;
function read(text){
const read=text=>{
try{
var roomId=text.split('\n')[1].match(/\d+/);
var caption=ui.rooms.find(caption=>caption.key==roomId);
@ -35159,6 +35174,8 @@
}
}catch(e){console.log(e)}
}
//每次启动只请求一次
_status.requestReadClipboard=true;
if(_status.read_clipboard_text){
read(_status.read_clipboard_text);
}else{
@ -37423,7 +37440,7 @@
ui.create.chat();
if(game.onlineroom){
void 0;
}
else{
var WebSocketServer=require('ws').Server;
@ -44904,7 +44921,7 @@
config.item=config.item();
}
if(Array.isArray(config.init)){
void 0;
}
else{
node.classList.add('switcher');
@ -44982,7 +44999,7 @@
}
}
else if(config.range){
void 0;
}
else if(config.clear){
if(node.innerHTML.length>=15) node.style.height='auto';
@ -53749,19 +53766,15 @@
},
player:(position,noclick)=>new lib.element.Player(position,noclick),
connectPlayers:ip=>{
ui.updateConnectPlayerPositions();
game.connectPlayers=[];
let numberOfPlayers=lib.configOL.number;
const gameMode=lib.configOL.mode;
if(gameMode=='guozhan'||(gameMode=='identity'&&(lib.configOL.identity_mode!='zhong'&&lib.configOL.identity_mode!='purple'))){
numberOfPlayers=10;
}
ui.updateConnectPlayerPositions(numberOfPlayers);
const configOL=lib.configOL;
const numberOfPlayers=parseInt(configOL.player_number)||configOL.number;
for(let position=0;position<numberOfPlayers;position++){
const player=ui.create.player(ui.window);
player.dataset.position=position;
player.classList.add('connect');
game.connectPlayers.push(player);
if(position>=lib.configOL.number) player.classList.add('unselectable2');
}
var bar=ui.create.div(ui.window);
@ -53793,7 +53806,7 @@
for(var i of game.connectPlayers){
if(!i.nickname&&!i.classList.contains('unselectable2')) num++;
}
if(num>=numberOfPlayers-1){
if(num>=lib.configOL.number-1){
alert('至少要有两名玩家才能开始游戏!');
return;
}
@ -58534,7 +58547,10 @@
* @param {number} [numberOfPlayers]
*/
updateConnectPlayerPositions:numberOfPlayers=>{
if(typeof numberOfPlayers!='number') numberOfPlayers=lib.configOL.number;
if(typeof numberOfPlayers!='number'){
const configOL=lib.configOL;
numberOfPlayers=parseInt(configOL.player_number)||configOL.number;
}
if(!numberOfPlayers) return;
const playerPositions=ui.playerPositions;
playerPositions.forEach((position) => {
@ -59770,14 +59786,14 @@
case 'guandu':return '官渡之战';
}
}
else if(config.mode=='single'){
if(config.mode=='single'){
switch(config.single_mode){
case 'normal':return '新1v1';
case 'changban':return '血战长坂坡';
case 'dianjiang':return '点将单挑';
}
}
else if(config.mode=='identity'){
if(config.mode=='identity'){
switch(config.identity_mode){
case 'purple':return '三对三对二';
case 'zhong':return (config.double_character?'双将':'')+'忠胆英杰';
@ -59785,21 +59801,19 @@
default:return `${get.cnNumber(parseInt(config.number))}${config.double_nei?'双内':''}${config.enable_commoner?'带民':''}${config.double_character?'双将':''}身份`;
}
}
else if(config.mode=='guozhan'){
if(config.mode=='guozhan'){
if(config.separatism) return '群雄割据';
if(config.guozhan_mode!='normal') switch(config.guozhan_mode){
case 'yingbian':return '应变国战';
case 'old':return '怀旧国战';
}
}
else{
if(server){
return get.translation(config.mode)+'模式';
}
else{
return get.cnNumber(parseInt(config.number))+'人'+get.translation(config.mode);
}
}
},
charactersOL:func=>{
var list=[];
@ -63444,11 +63458,5 @@
setAllPropertiesEnumerable(lib.element.Control.prototype);
setAllPropertiesEnumerable(lib.element.Client.prototype);
setAllPropertiesEnumerable(lib.element.NodeWS.prototype);
if('__core-js_shared__' in window) lib.init.init();
else{
const coreJSBundle=document.createElement('script');
coreJSBundle.onerror=coreJSBundle.onload=lib.init.init;
coreJSBundle.src=`${lib.assetURL}game/core-js-bundle.js`;
document.head.appendChild(coreJSBundle);
}
}
lib.init.init();
});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 52 KiB

View File

@ -3256,38 +3256,6 @@ div:not(.handcards)>.card>.info>span,
left: calc(50% - 106px);
}
#window>.player.connect[data-position='0'] {
left: calc(25% - 120px);
top: calc(300% / 7 - 155px);
}
#window>.player.connect[data-position='1'] {
left: calc(50% - 60px);
top: calc(300% / 7 - 155px);
}
#window>.player.connect[data-position='2'] {
left: calc(75% - 0px);
top: calc(300% / 7 - 155px);
}
#window>.player.connect[data-position='3'] {
left: calc(25% - 120px);
top: calc(400% / 7 - 75px);
}
#window>.player.connect[data-position='4'] {
left: calc(75% - 0px);
top: calc(400% / 7 - 75px);
}
#window>.player.connect[data-position='5'] {
left: calc(25% - 120px);
top: calc(500% / 7 + 5px);
}
#window>.player.connect[data-position='6'] {
left: calc(50% - 60px);
top: calc(500% / 7 + 5px);
}
#window>.player.connect[data-position='7'] {
left: calc(75% - 0px);
top: calc(500% / 7 + 5px);
}
#window>.player.connect[data-position='c0'] {
left: calc(50% - 120px);
top: calc(50% - 200px)

View File

@ -895,7 +895,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
boss_dizangwang:['male','qun',8,['boss_bufo','boss_wuliang','boss_dayuan','boss_diting'],['shu','hiddenboss','bossallowed']],
//boss_shikieiki:['female','qun',8,['boss_yingzhong'],['qun','hiddenboss','bossallowed']],
boss_lvbu1:['male','shen',8,['mashu','wushuang','boss_baonu','boss_jingjia','boss_aozhan'],['qun','boss','bossallowed'],'wei'],
boss_lvbu1:['male','shen',8,['mashu','wushuang','boss_baonu','boss_jingjia','boss_aozhan'],['qun','boss','bossallowed'],'qun'],
boss_lvbu2:['male','shen',6,['mashu','wushuang','xiuluo','shenwei','shenji'],['qun','hiddenboss','bossallowed'],'qun'],
boss_lvbu3:['male','shen',6,['wushuang','shenqu','jiwu'],['qun','hiddenboss','bossallowed'],'qun'],
@ -8551,20 +8551,21 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
},
jiwu:{
derivation:['qiangxix','retieji','olxuanfeng','rewansha'],
audio:2,
enable:'phaseUse',
filter:function(event,player){
if(player.countCards('h')==0) return false;
if(!player.hasSkill('qiangxix')) return true;
if(!player.hasSkill('retieji')) return true;
if(!player.hasSkill('rexuanfeng')) return true;
if(!player.hasSkill('wansha')) return true;
if(!player.hasSkill('olxuanfeng')) return true;
if(!player.hasSkill('rewansha')) return true;
return false;
},
filterCard:true,
position:'he',
check:function(card){
if(get.position(card)=='e'&&_status.event.player.hasSkill('rexuanfeng')) return 16-get.value(card);
if(get.position(card)=='e'&&_status.event.player.hasSkill('olxuanfeng')) return 16-get.value(card);
return 7-get.value(card);
},
content:function(){
@ -8572,30 +8573,30 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
var list=[];
if(!player.hasSkill('qiangxix')) list.push('qiangxix');
if(!player.hasSkill('retieji')) list.push('retieji');
if(!player.hasSkill('rexuanfeng')) list.push('rexuanfeng');
if(!player.hasSkill('wansha')) list.push('wansha');
if(!player.hasSkill('olxuanfeng')) list.push('olxuanfeng');
if(!player.hasSkill('rewansha')) list.push('rewansha');
if(list.length==1){
player.addTempSkill(list[0]);
event.finish();
}
else{
player.chooseControl(list,function(){
if(list.contains('rexuanfeng')&&player.countCards('he',{type:'equip'})) return 'rexuanfeng';
if(list.contains('olxuanfeng')&&player.countCards('he',{type:'equip'})) return 'olxuanfeng';
if(!player.getStat().skill.qiangxix){
if(player.hasSkill('qiangxix')&&player.getEquip(1)&&list.contains('rexuanfeng')) return 'rexuanfeng';
if(list.contains('wansha')||list.contains('qiangxix')){
if(player.hasSkill('qiangxix')&&player.getEquip(1)&&list.contains('olxuanfeng')) return 'olxuanfeng';
if(list.contains('rewansha')||list.contains('qiangxix')){
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i].hp==1&&get.attitude(player,players[i])<0){
if(list.contains('wansha')) return 'wansha';
if(list.contains('rewansha')) return 'rewansha';
if(list.contains('qiangxix')) return 'qiangxix';
}
}
}
}
if(list.contains('qiangxix')) return 'qiangxix';
if(list.contains('wansha')) return 'wansha';
if(list.contains('rexuanfeng')) return 'rexuanfeng';
if(list.contains('rewansha')) return 'rewansha';
if(list.contains('olxuanfeng')) return 'olxuanfeng';
return 'retieji';
}).set('prompt','选择获得一项技能直到回合结束');
}
@ -8608,8 +8609,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
var player=_status.event.player;
if(player.countCards('e',{type:'equip'})) return 10;
if(!player.getStat().skill.qiangxix){
if(player.hasSkill('qiangxix')&&player.getEquip(1)&&!player.hasSkill('rexuanfeng')) return 10;
if(player.hasSkill('wansha')) return 1;
if(player.hasSkill('qiangxix')&&player.getEquip(1)&&!player.hasSkill('olxuanfeng')) return 10;
if(player.hasSkill('rewansha')) return 1;
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i].hp==1&&get.attitude(player,players[i])<0) return 10;
@ -8621,8 +8622,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
player:function(player){
if(player.countCards('e',{type:'equip'})) return 1;
if(!player.getStat().skill.qiangxix){
if(player.hasSkill('qiangxix')&&player.getEquip(1)&&!player.hasSkill('rexuanfeng')) return 1;
if(!player.hasSkill('wansha')||!player.hasSkill('qiangxix')){
if(player.hasSkill('qiangxix')&&player.getEquip(1)&&!player.hasSkill('olxuanfeng')) return 1;
if(!player.hasSkill('rewansha')||!player.hasSkill('qiangxix')){
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i].hp==1&&get.attitude(player,players[i])<0) return 1;
@ -9293,11 +9294,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
shenwei:'神威',
shenwei_info:'锁定技摸牌阶段你额外摸X张牌你的手牌上限+XX为场上其他角色的数目且至多为3。',
xiuluo:'修罗',
xiuluo_info:'准备阶段,你可以弃置一张牌,然后弃置你判定区内一张同花色的牌你可以重复此流程。',
xiuluo_info:'准备阶段,你可以弃置一张牌,然后弃置你判定区内一张同花色的牌,然后你可以重复此流程。',
shenqu:'神躯',
shenqu_info:'每名角色的准备阶段,若你的手牌数少于或等于你的体力上限数,你可以摸两张牌;当你受到伤害后,你可以使用一张【桃】。',
jiwu:'极武',
jiwu_info:'出牌阶段,你可以弃置一张牌,然后获得一项:“强袭”、“铁骑”(界)、“旋风”、“完杀”,直到回合结束。',
jiwu_info:'出牌阶段,你可以弃置一张牌,然后获得获得以下一项技能直到回合结束:〖强袭〗、〖铁骑〗、〖旋风〗、〖完杀〗。',
"boss_jingjia":"精甲",
"boss_jingjia_info":"锁定技,游戏开始时,将本局游戏中加入的装备随机置入你的装备区。",

View File

@ -42,17 +42,20 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
node.style.overflow='hidden';
var connect=function(e){
const info=lib.config.reconnect_info;
if(info&&info[0]==node.textContent){
game.onlineID=info[1];
if(typeof (game.roomId=info[2])=='string') game.roomIdServer=true;
}
event.textnode.textContent='正在连接...';
clearTimeout(event.timeout);
if(e) e.preventDefault();
game.saveConfig('last_ip',node.textContent);
game.connect(node.textContent,function(success){
if(!success&&event.textnode){
if(success){
var info=lib.config.reconnect_info;
if(info&&info[0]==_status.ip){
game.onlineID=info[1];
if(typeof (game.roomId=info[2])=='string') game.roomIdServer=true;
}
return;
}
if(event.textnode){
alert('连接失败');
event.textnode.textContent='输入联机地址';
}
@ -121,7 +124,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},220);
if (get.config('read_clipboard','connect')){
var ced=false;
function read(text){
var read=text=>{
try{
var text2=text.split('\n')[2];
var ip=text2.slice(5);