diff --git a/mode/boss.js b/mode/boss.js index 673a86cd2..d3e54fa1c 100644 --- a/mode/boss.js +++ b/mode/boss.js @@ -25,13 +25,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { } for (var i in lib.characterPack.mode_boss) { lib.character[i] = lib.characterPack.mode_boss[i]; - if (!lib.character[i][4]) { - lib.character[i][4] = []; - } } - // for(var i in lib.cardPack.mode_boss){ - // lib.card[i]=lib.cardPack.mode_boss[i]; - // } for (var i in lib.skill) { if (lib.skill[i].changeSeat) { lib.skill[i] = {}; @@ -82,7 +76,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { if (lib.storage.current == undefined) lib.storage.current = "boss_hundun"; for (var i in lib.character) { var info = lib.character[i]; - if (info[4].includes("boss")) { + if (info.isBoss) { // var cfg=i+'_bossconfig'; // if(get.config(cfg)==undefined){ // game.saveConfig(cfg,true,true); @@ -1443,7 +1437,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { }, init: function () { for (var i in lib.characterPack.mode_boss) { - if (lib.characterPack.mode_boss[i][4].includes("hiddenboss")) continue; + if (get.convertedCharacter(lib.characterPack.mode_boss[i]).isHiddenBoss) continue; lib.mode.boss.config[i + "_boss_config"] = { name: get.translation(i), init: true, @@ -1643,10 +1637,10 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { var list = []; event.list = list; for (i in lib.character) { - if (lib.character[i][4].includes("minskin")) continue; - if (lib.character[i][4].includes("boss")) continue; - if (lib.character[i][4].includes("hiddenboss")) continue; - if (lib.character[i][4] && lib.character[i][4].includes("forbidai")) continue; + if (lib.character[i].isMinskin) continue; + if (lib.character[i].isBoss) continue; + if (lib.character[i].isHiddenBoss) continue; + if (lib.character[i].isAiForbidden) continue; if (lib.config.forbidboss.includes(i)) continue; if (lib.filter.characterDisabled(i)) continue; list.push(i); @@ -7027,8 +7021,8 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { } for (var i in lib.character) { if (lib.character[i][1] != "wei") continue; - if (lib.character[i][4].includes("boss")) continue; - if (lib.character[i][4].includes("minskin")) continue; + if (lib.character[i].isBoss) continue; + if (lib.character[i].isMinskin) continue; if (player.storage.xiongcai.includes(i)) continue; if (list2.includes(i)) continue; list.push(i); diff --git a/mode/brawl.js b/mode/brawl.js index 7963c93b7..d58de7ff2 100644 --- a/mode/brawl.js +++ b/mode/brawl.js @@ -533,9 +533,11 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { if (lib.filter.characterDisabled(name)) continue; if (name.indexOf("old_") == 0) continue; var skillsx = lib.character[name][3].slice(0); - lib.character[name][2] = 4; - lib.character[name][3] = []; - if (lib.character[name][4]) lib.character[name][4].remove("hiddenSkill"); + lib.character[name].hp = 4; + lib.character[name].maxHp = 4; + lib.character[name].hujia = 0; + lib.character[name].skills = []; + lib.character[name].hasHiddenSkill = false; characters.push(name); var list = skillsx.slice(0); for (var j = 0; j < skillsx.length; j++) { diff --git a/mode/chess.js b/mode/chess.js index 16326c333..97a1849cc 100644 --- a/mode/chess.js +++ b/mode/chess.js @@ -45,9 +45,6 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { } if (!playback && i.indexOf("leader_") == 0 && _status.mode != "leader") continue; lib.character[i] = lib.characterPack.mode_chess[i]; - if (!lib.character[i][4]) { - lib.character[i][4] = []; - } } } if (get.config("chess_card")) { @@ -106,7 +103,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { } else { game.chooseCharacterDouble( function (i) { - if (lib.character[i][4].includes("chessboss")) { + if (lib.character[i].isChessBoss) { return false; } return !lib.filter.characterDisabled(i); @@ -3957,15 +3954,15 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { var jiangelist = []; event.list = list; for (i in lib.character) { - if (lib.character[i][4].includes("chessboss")) { + if (lib.character[i].isChessBoss) { bosslist.push(i); continue; - } else if (lib.character[i][4].includes("jiangeboss")) { + } else if (lib.character[i].isJiangeBoss) { // if(get.config('chess_jiange')) jiangelist.push(i); continue; } if (i.indexOf("treasure_") == 0) continue; - if (lib.character[i][4].includes("minskin")) continue; + if (lib.character[i].isMinskin) continue; if (lib.config.forbidchess.includes(i)) continue; if (lib.filter.characterDisabled(i)) continue; list.push(i); diff --git a/mode/guozhan.js b/mode/guozhan.js index 5ef523cb5..dcc5fdf33 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -9,25 +9,13 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { if (lib.character[i.slice(3)]) continue; } lib.character[i] = lib.characterPack.mode_guozhan[i]; - if (!lib.character[i][4]) { - lib.character[i][4] = []; - } if (!lib.translate[i]) { lib.translate[i] = lib.translate[i.slice(3)]; } } for (var i in lib.character) { - if (lib.character[i][1] == "shen") { - if (lib.character[i][4]) { - var group = lib.character[i][4].find( - (group) => - lib.group.includes(group) || group == "key" || group.startsWith("gzgroup:") - ); - if (group) { - if (group.startsWith("gzgroup:")) lib.character[i][1] = group.slice(8); - else lib.character[i][1] = group; - } else lib.character[i][1] = "qun"; - } else lib.character[i][1] = "qun"; + if (lib.character[i].group == "shen") { + lib.character[i].group = (lib.character[i].groupInGuozhan || "qun"); } } }, @@ -35,25 +23,13 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { var pack = lib.characterPack.mode_guozhan; for (var i in pack) { lib.character[i] = pack[i]; - if (!lib.character[i][4]) { - lib.character[i][4] = []; - } if (!lib.translate[i]) { lib.translate[i] = lib.translate[i.slice(3)]; } } for (var i in lib.character) { - if (lib.character[i][1] == "shen") { - if (lib.character[i][4]) { - var group = lib.character[i][4].find( - (group) => - lib.group.includes(group) || group == "key" || group.startsWith("gzgroup:") - ); - if (group) { - if (group.startsWith("gzgroup:")) lib.character[i][1] = group.slice(8); - else lib.character[i][1] = group; - } else lib.character[i][1] = "qun"; - } else lib.character[i][1] = "qun"; + if (lib.character[i].group == "shen") { + lib.character[i].group = (lib.character[i].groupInGuozhan || "qun"); } } }, @@ -154,28 +130,13 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { } for (var i in pack) { lib.character[i] = pack[i]; - if (!lib.character[i][4]) { - lib.character[i][4] = []; - } if (!lib.translate[i]) { lib.translate[i] = lib.translate[i.slice(3)]; } } for (var i in lib.character) { if (lib.character[i][1] == "shen") { - if (lib.character[i][4]) { - var group = lib.character[i][4].find( - (group) => - lib.group.includes(group) || - group == "key" || - group.startsWith("gzgroup:") - ); - if (group) { - if (group.startsWith("gzgroup:")) - lib.character[i][1] = group.slice(8); - else lib.character[i][1] = group; - } else lib.character[i][1] = "qun"; - } else lib.character[i][1] = "qun"; + lib.character[i].group = (lib.character[i].groupInGuozhan || "qun"); } } //lib.characterReplace={}; @@ -22319,9 +22280,9 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { continue; if (get.is.jun(i)) continue; } - if (lib.character[i][4].includes("hiddenSkill")) continue; - if (lib.character[i][2] == 3 || lib.character[i][2] == 4 || lib.character[i][2] == 5) - event.list.push(i); + if (lib.character[i].hasHiddenSkill) continue; + const hp = lib.character[i].hp, maxHp = lib.character[i].maxHp; + if (hp === maxHp && hp >= 3 && hp <= 5) event.list.push(i); } _status.characterlist = event.list.slice(0); _status.yeidentity = []; diff --git a/mode/tafang.js b/mode/tafang.js index 94fc96cf3..7fce5424f 100644 --- a/mode/tafang.js +++ b/mode/tafang.js @@ -245,9 +245,9 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { for (i in lib.character) { if (i.indexOf("treasure_") == 0) continue; if (i.indexOf("tafang_mech_") == 0) continue; - if (lib.character[i][4].includes("minskin")) continue; + if (lib.character[i].isMinskin) continue; if (lib.config.forbidchess.includes(i)) continue; - if (lib.character[i][4].includes("boss")) continue; + if (lib.character[i].isBoss) continue; if (lib.filter.characterDisabled(i)) continue; list.push(i); } diff --git a/mode/versus.js b/mode/versus.js index 1a4cc5e42..ca91191ab 100644 --- a/mode/versus.js +++ b/mode/versus.js @@ -755,8 +755,8 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { for (var i in lib.characterPack.boss) { if (!lib.character[i] && lib.characterPack.boss[i][4]) { if ( - lib.characterPack.boss[i][4].includes("jiangeboss") || - lib.characterPack.boss[i][4].includes("jiangemech") + get.convertedCharacter(lib.characterPack.boss[i]).isJiangeBoss || + get.convertedCharacter(lib.characterPack.boss[i]).isJiangeMech ) { lib.character[i] = lib.characterPack.boss[i]; } @@ -765,11 +765,11 @@ game.import("mode", function (lib, game, ui, get, ai, _status) { } for (var i in lib.character) { if (lib.character[i][4]) { - if (lib.character[i][4].includes("jiangeboss")) { - list[lib.character[i][1] + "boss"].push(i); + if (lib.character[i].isJiangeBoss) { + list[lib.character[i].group + "boss"].push(i); continue; - } else if (lib.character[i][4].includes("jiangemech")) { - list[lib.character[i][1] + "mech"].push(i); + } else if (lib.character[i].isJiangeMech) { + list[lib.character[i].group + "mech"].push(i); continue; } } diff --git a/noname/game/index.js b/noname/game/index.js index d3363b59f..bfac1e54d 100644 --- a/noname/game/index.js +++ b/noname/game/index.js @@ -4731,6 +4731,7 @@ export class Game { let extname = _status.extension || "扩展"; let gzFlag = false; packagename = packagename || extname; + //TODO: 把这里一大坨改成新写法 for (let i in pack) { if (i == "mode") { if (pack[i] == "guozhan") gzFlag = true; diff --git a/noname/get/index.js b/noname/get/index.js index 914b2d357..dd20e705e 100644 --- a/noname/get/index.js +++ b/noname/get/index.js @@ -1360,11 +1360,11 @@ export class Get { if (rank.bm.includes(name)) return num ? Math.round((2 * (num - 1)) / 8 + 1) : "bm"; if (rank.c.includes(name)) return num ? Math.round((1 * (num - 1)) / 8 + 1) : "c"; if (rank.d.includes(name)) return num ? Math.round((0 * (num - 1)) / 8 + 1) : "d"; - if (lib.character[name] && lib.character[name][4]) { + if (lib.character[name]) { if ( - lib.character[name][4].includes("boss") || - lib.character[name][4].includes("bossallowed") || - lib.character[name][4].includes("hiddenboss") + lib.character[name].isBoss || + lib.character[name].isBossAllowed || + lib.character[name].isHiddenBoss ) { return num ? Math.round((9 * (num - 1)) / 8 + 1) : "sp"; } @@ -2594,14 +2594,11 @@ export class Get { for (var i in lib.character) { if (lib.filter.characterDisabled(i)) continue; if (lib.filter.characterDisabled2(i)) continue; - if (lib.character[i][4]) { - if (lib.character[i][4].includes("boss")) continue; - if (lib.character[i][4].includes("hiddenboss")) continue; - if (lib.character[i][4].includes("minskin")) continue; - if (lib.character[i][4].includes("unseen")) continue; - } - for (var j = 0; j < lib.character[i][3].length; j++) { - var skill = lib.character[i][3][j]; + if (lib.character[i].isBoss) continue; + if (lib.character[i].isHiddenBoss) continue; + if (lib.character[i].isMinskin) continue; + if (lib.character[i].isUnseen) continue; + for (var skill of lib.character[i].skills) { var info = lib.skill[skill]; if (lib.filter.skillDisabled(skill)) continue; if (func && !func(info, skill, i)) continue; @@ -2616,13 +2613,12 @@ export class Get { var list = []; if (name && lib.character[name]) { if (lib.character[name][4]) { - if (lib.character[name][4].includes("boss")) return list; - if (lib.character[name][4].includes("hiddenboss")) return list; - if (lib.character[name][4].includes("minskin")) return list; + if (lib.character[name].isBoss) return list; + if (lib.character[name].isHiddenBoss) return list; + if (lib.character[name].isMinskin) return list; if (lib.character[name].isUnseen) return list; } - for (var j = 0; j < lib.character[name][3].length; j++) { - var skill = lib.character[name][3][j]; + for (var skill of lib.character[name].skills) { var info = lib.skill[skill]; if (lib.filter.skillDisabled(skill)) continue; if (func && !func(info, skill, name)) continue; diff --git a/noname/library/element/character.js b/noname/library/element/character.js index ef2794710..c17f75561 100644 --- a/noname/library/element/character.js +++ b/noname/library/element/character.js @@ -105,6 +105,21 @@ export class Character { * @type { boolean } **/ isBossAllowed = false; + /** + * 武将牌是否为战旗模式下的BOSS + * @type { boolean } + **/ + isChessBoss = false; + /** + * 武将牌是否为剑阁模式下的BOSS + * @type { boolean } + **/ + isJiangeBoss = false; + /** + * 武将牌是否为剑阁模式下的机械 + * @type { boolean } + **/ + isJiangeMech = false; /** * 武将牌对应的全部宗族 * @type { string[] } @@ -136,8 +151,10 @@ export class Character { clans = []; for (let i = 0; i < trash.length; i++) { let item = trash[i]; - if (i === 0 && lib.group.includes(item)) { + if (i === 0 && (lib.group.includes(item) || item === 'key')) { character.groupInGuozhan = item; + } else if(item.startsWith("gzgroup:")){ + character.groupInGuozhan = item.slice(8); } else if (item === "zhu") { character.isZhugong = true; } else if (item === "unseen") { @@ -146,6 +163,12 @@ export class Character { character.isMinskin = true; } else if (item === "boss") { character.isBoss = true; + } else if (item === "chessboss") { + character.isChessBoss = true; + } else if (item === "jiangeboss") { + character.isJiangeBoss = true; + } else if (item === "jiangemech") { + character.isJiangeMech = true; } else if (item === "bossallowed") { character.isBossAllowed = true; } else if (item === "hiddenboss") { @@ -216,13 +239,14 @@ export class Character { } /** - * @deprecated + * 把新格式下的数据转换回传统的屎山 + * @deprecated */ get 4() { const trashes = [], character = this; if (lib.group.includes(character.groupInGuozhan)) { - trashes.push(character.groupInGuozhan); + trashes.push(`gzgroup:${character.groupInGuozhan}`); } if (character.isZhugong) { trashes.push("zhu"); @@ -236,6 +260,15 @@ export class Character { if (character.isBoss) { trashes.push("boss"); } + if (character.isChessBoss) { + trashes.push("chessboss"); + } + if (character.isJiangeBoss) { + trashes.push("jiangeboss"); + } + if (character.isJiangeMech) { + trashes.push("jiangemech"); + } if (character.isBossAllowed) { trashes.push("bossallowed"); } diff --git a/noname/library/element/content.js b/noname/library/element/content.js index 0cd1bda8a..21b4e2638 100644 --- a/noname/library/element/content.js +++ b/noname/library/element/content.js @@ -2399,6 +2399,7 @@ export const Content = { } for (j in character[i]) { if (j == "mode" || j == "forbid" || j == "characterSort") continue; + //TODO: 改掉这第二坨 for (k in character[i][j]) { if (j == "character") { if (!character[i][j][k][4]) { diff --git a/noname/library/element/player.js b/noname/library/element/player.js index ba76f6d5a..db5a43df4 100644 --- a/noname/library/element/player.js +++ b/noname/library/element/player.js @@ -2491,12 +2491,12 @@ export class Player extends HTMLDivElement { info = get.convertedCharacter(["", "", 1, [], []]); } - if (!game.minskin && get.is.newLayout() && !info[4].includes("minskin")) { + if (!game.minskin && get.is.newLayout() && !info.isMinskin) { this.classList.remove("minskin"); this.node.avatar.setBackground(character, "character"); } else { this.node.avatar.setBackground(character, "character"); - if (info[4].includes("minskin")) { + if (info.isMinskin) { this.classList.add("minskin"); } else if (game.minskin) { this.classList.add("minskin"); diff --git a/noname/library/index.js b/noname/library/index.js index 5e8455c75..755a30a55 100644 --- a/noname/library/index.js +++ b/noname/library/index.js @@ -10531,7 +10531,7 @@ export class Library { return true; }, characterDisabled: function (i, libCharacter) { - if (!lib.character[i] || (lib.character[i][4] && lib.character[i][4].includes("forbidai"))) + if (!lib.character[i] || lib.character[i].isAiForbidden) return true; if (lib.character[i].isUnseen) return true; if (lib.config.forbidai.includes(i)) return true; @@ -10602,11 +10602,11 @@ export class Library { var info = lib.character[i]; if (!info) return true; if (info[4]) { - if (info[4].includes("boss")) return true; - if (info[4].includes("hiddenboss")) return true; - if (info[4].includes("minskin")) return true; + if (info.isBoss) return true; + if (info.isHiddenBoss) return true; + if (info.isMinskin) return true; if (info.isUnseen) return true; - if (info[4].includes("forbidai") && (!_status.event.isMine || !_status.event.isMine())) + if (info.isAiForbidden && (!_status.event.isMine || !_status.event.isMine())) return true; if (lib.characterFilter[i] && !lib.characterFilter[i](get.mode())) return true; } @@ -12213,22 +12213,19 @@ export class Library { trigger: { global: "gameStart", player: "enterGame" }, silent: true, content: function () { - var list = [player.name, player.name1, player.name2]; + var list = [player.name1, player.name2]; for (var i = 0; i < list.length; i++) { if (list[i] && lib.character[list[i]]) { var info = lib.character[list[i]]; - if (info[3].includes("dualside") && info[4]) { + if (info.skills.includes("dualside") && info.dualSideCharacter) { player.storage.dualside = [list[i], player.hp, player.maxHp]; - for (var j = 0; j < info[4].length; j++) { - if (info[4][j].startsWith("dualside:")) { - var name2 = info[4][j].slice(9); - var info2 = lib.character[name2]; - player.storage.dualside.push(name2); - player.storage.dualside.push(get.infoHp(info2[2])); - player.storage.dualside.push(get.infoMaxHp(info2[2])); - } - } + var name2 = info.dualSideCharacter; + var info2 = lib.character[name2]; + player.storage.dualside.push(name2); + player.storage.dualside.push(info2.hp); + player.storage.dualside.push(info2.maxHp); } + break; } } var cfg = player.storage.dualside; diff --git a/noname/ui/create/index.js b/noname/ui/create/index.js index d7cfd758e..8c9318851 100644 --- a/noname/ui/create/index.js +++ b/noname/ui/create/index.js @@ -1127,16 +1127,16 @@ export class Create { characterDialog2(filter) { var list = []; for (var i in lib.character) { - if (lib.character[i][4].includes("minskin")) continue; + if (lib.character[i].isMinskin) continue; if ( - lib.character[i][4].includes("boss") || - lib.character[i][4].includes("hiddenboss") + lib.character[i].isBoss || + lib.character[i].isHiddenBoss ) { if (lib.config.mode == "boss") continue; - if (!lib.character[i][4].includes("bossallowed")) continue; + if (!lib.character[i].isBossAllowed) continue; } - if (lib.character[i][4].includes("stonehidden")) continue; + if (lib.character[i].isHiddenInStoneMode) continue; if (lib.config.banned.includes(i)) continue; if (filter && filter(i)) continue; list.push(i); @@ -1306,16 +1306,16 @@ export class Create { } else { for (var i in lib.character) { if(lib.character[i][4]) { - if (lib.character[i][4].includes("minskin")) continue; + if (lib.character[i].isMinskin) continue; if ( - lib.character[i][4].includes("boss") || - lib.character[i][4].includes("hiddenboss") + lib.character[i].isBoss || + lib.character[i].isHiddenBoss ) { if (lib.config.mode == "boss") continue; - if (!lib.character[i][4].includes("bossallowed")) continue; + if (!lib.character[i].isBossAllowed) continue; } - if (lib.character[i][4].includes("stonehidden")) continue; + if (lib.character[i].isHiddenInStoneMode) continue; if (lib.character[i].isUnseen) continue; } if (lib.config.banned.includes(i)) continue;