mirror of
https://github.com/Shu-Ying/noname-shuying.git
synced 2026-10-17 20:59:58 +08:00
fixed # 补全部分卡牌
fixed # 修复部分已知BUG
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
import { createRaiderTrioBattlePlan } from "./raider-trio.js";
|
||||
import { createInkletBattlePlan } from "./inklet-group.js";
|
||||
import { createNibbitPairBattlePlan } from "./nibbit-pair.js";
|
||||
import { createKinBattlePlan } from "./kin-group.js";
|
||||
|
||||
const monsters = Object.freeze({
|
||||
crawler: "mengsan_fuzzy_wurm_crawler_shuying", nibbit: "mengsan_nibbit_shuying",
|
||||
shrinker: "mengsan_shrinker_beetle_shuying", leafS: "mengsan_leaf_slime_s_shuying",
|
||||
leafM: "mengsan_leaf_slime_m_shuying", twigS: "mengsan_twig_slime_s_shuying",
|
||||
twigM: "mengsan_twig_slime_m_shuying", cubex: "mengsan_cubex_construct_shuying",
|
||||
flyconid: "mengsan_flyconid_shuying", jaxfruit: "mengsan_snapping_jaxfruit_shuying",
|
||||
fogmog: "mengsan_fogmog_shuying", mawler: "mengsan_mawler_shuying",
|
||||
strangler: "mengsan_slithering_strangler_shuying", vine: "mengsan_vine_shambler_shuying",
|
||||
byrdonis: "mengsan_byrdonis_shuying", effigy: "mengsan_bygone_effigy_shuying",
|
||||
phrog: "mengsan_phrog_parasite_shuying", vantom: "mengsan_vantom_shuying",
|
||||
beast: "mengsan_ceremonial_beast_shuying",
|
||||
});
|
||||
const group = (id, name, variants, tier = "normal") => ({
|
||||
id: `act1.encounter.${id}`, name, tier,
|
||||
variants: variants.map(members => members.map((member, index) => ({
|
||||
id: `enemy_${index + 1}`, character: monsters[member], camp: "enemy",
|
||||
tier, hand: 4, inheritSkills: false,
|
||||
}))),
|
||||
});
|
||||
const single = (id, name, member, tier) => group(id, name, [[member]], tier);
|
||||
const custom = (id, name, createBattlePlan, tier = "normal") => ({id: `act1.encounter.${id}`, name, tier, createBattlePlan});
|
||||
|
||||
// 一个条目是一种遭遇;条目中的 variants 等概率选一组,同组成员同时上场。
|
||||
const weak = [
|
||||
single("weak.crawler", "毛绒伏地虫", "crawler"),
|
||||
single("weak.nibbit", "小啃兽", "nibbit"),
|
||||
single("weak.shrinker", "缩小甲虫", "shrinker"),
|
||||
group("weak.slimes", "史莱姆三只", [["leafS", "leafM", "twigS"], ["leafS", "twigM", "twigS"]]),
|
||||
];
|
||||
const strong = [
|
||||
single("strong.cubex", "立柱构造体", "cubex"),
|
||||
group("strong.slimeFlyconid", "中型史莱姆与飞蝇菌子", [["leafM", "flyconid"], ["twigM", "flyconid"]]),
|
||||
group("strong.jaxfruitFlyconid", "闪光贾克斯果与飞蝇菌子", [["jaxfruit", "flyconid"]]),
|
||||
single("strong.fogmog", "雾菇", "fogmog"),
|
||||
custom("strong.inklets", "墨宝三只", createInkletBattlePlan),
|
||||
single("strong.mawler", "蛮兽", "mawler"),
|
||||
custom("strong.nibbits", "小啃兽双只", createNibbitPairBattlePlan),
|
||||
group("strong.shrinkerCrawler", "缩小甲虫与毛绒伏地虫", [["shrinker", "crawler"]]),
|
||||
custom("strong.raiders", "劫掠者团伙", createRaiderTrioBattlePlan),
|
||||
group("strong.slimes", "史莱姆四只", [["leafM", "twigM", "leafS", "twigS"]]),
|
||||
group("strong.stranglerParty", "蛇行扼杀者与同行怪物", [
|
||||
["jaxfruit", "strangler"], ["leafM", "strangler"], ["twigM", "strangler"],
|
||||
["leafS", "twigS", "strangler"],
|
||||
]),
|
||||
single("strong.vine", "藤蔓蹒跚者", "vine"),
|
||||
];
|
||||
const elite = [
|
||||
single("elite.byrdonis", "多尼斯异鸟", "byrdonis", "elite"),
|
||||
single("elite.effigy", "旧日雕像", "effigy", "elite"),
|
||||
single("elite.phrog", "异蛙寄生虫", "phrog", "elite"),
|
||||
];
|
||||
const boss = [
|
||||
single("boss.vantom", "墨影幻灵", "vantom", "boss"),
|
||||
single("boss.beast", "仪式兽", "beast", "boss"),
|
||||
custom("boss.kin", "同族神官与两名信徒", createKinBattlePlan, "boss"),
|
||||
];
|
||||
|
||||
export const encounterPools = Object.freeze(Object.fromEntries(
|
||||
Object.entries({weak, strong, elite, boss}).map(([key, entries]) => [key, Object.freeze(entries.map(entry => entry.id))]),
|
||||
));
|
||||
export const encounters = Object.fromEntries([...weak, ...strong, ...elite, ...boss].map(entry => [entry.id, entry]));
|
||||
@@ -2,9 +2,11 @@ import liubeiOpening, { openingRewards } from "./stories/liubei-opening.js";
|
||||
import actMap from "./map.js";
|
||||
import { rewardPools } from "./rewards.js";
|
||||
import forestAmbush from "./stories/forest-ambush.js";
|
||||
import { encounters } from "./encounters.js";
|
||||
|
||||
export default {
|
||||
map: actMap,
|
||||
encounters,
|
||||
nodeContents: {
|
||||
[forestAmbush.id]: forestAmbush,
|
||||
[liubeiOpening.id]: liubeiOpening,
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
import { KIN_PRIEST_CHARACTER, KIN_FOLLOWER_CHARACTER } from "../../../monsters/kin-intent.js";
|
||||
|
||||
// 一名神官、两名信徒;用角色默认/入场随机HP,不把超过99的神官HP写入关卡覆盖值。
|
||||
export function createKinBattlePlan() {
|
||||
return { units: [
|
||||
{ id: "kin_priest", character: KIN_PRIEST_CHARACTER, camp: "enemy", tier: "boss", hand: 4, inheritSkills: false },
|
||||
{ id: "kin_follower_1", character: KIN_FOLLOWER_CHARACTER, camp: "enemy", tier: "normal", hand: 4, inheritSkills: false, kinOwner: "kin_priest", after: "kin_priest" },
|
||||
{ id: "kin_follower_2", character: KIN_FOLLOWER_CHARACTER, camp: "enemy", tier: "normal", hand: 4, inheritSkills: false, kinOwner: "kin_priest", after: "kin_follower_1" },
|
||||
], rules: [] };
|
||||
}
|
||||
@@ -1,6 +1,12 @@
|
||||
import { encounterPools } from "./encounters.js";
|
||||
|
||||
const act1Map = {
|
||||
id: "act1",
|
||||
name: "第一关·初梦",
|
||||
endsCurrentContent: true,
|
||||
completionDialogue: [
|
||||
{ type: "narrator", text: "战斗还未完结,等待后续更新。" },
|
||||
],
|
||||
floorNodes: [
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 1,
|
||||
@@ -10,6 +16,7 @@ const act1Map = {
|
||||
3, 3, 3, 3, 3, 3, 3, 1,
|
||||
],
|
||||
nodeWeights: { battle: 50, elite: 15, event: 15, rest: 10, shop: 10 },
|
||||
encounterPools,
|
||||
requiredFloors: { 2: "battle", 10: "chest", 16: "rest" },
|
||||
chestRewardPool: "act1.pool.chest",
|
||||
fixedNodes: [
|
||||
@@ -27,8 +34,9 @@ const act1Map = {
|
||||
"mengsan_nibbit_shuying", "mengsan_nibbit_pair_shuying", "mengsan_cubex_construct_shuying", "mengsan_shrinker_beetle_shuying", "mengsan_twig_slime_m_shuying", "mengsan_twig_slime_s_shuying", "mengsan_leaf_slime_m_shuying", "mengsan_leaf_slime_s_shuying", "mengsan_slithering_strangler_shuying", "mengsan_snapping_jaxfruit_shuying", "mengsan_fuzzy_wurm_crawler_shuying",
|
||||
"mengsan_inklet_shuying",
|
||||
],
|
||||
eliteEnemies: ["re_xiahoudun", "re_zhangliao", "re_xuzhu", "mengsan_byrdonis_shuying", "mengsan_bygone_effigy_shuying", "mengsan_phrog_parasite_shuying"],
|
||||
boss: "re_lvbu",
|
||||
eliteEnemies: ["mengsan_byrdonis_shuying", "mengsan_bygone_effigy_shuying", "mengsan_phrog_parasite_shuying"],
|
||||
boss: "mengsan_vantom_shuying",
|
||||
bossEnemies: ["mengsan_vantom_shuying", "mengsan_kin_priest_shuying", "mengsan_ceremonial_beast_shuying"],
|
||||
baseGold: 20,
|
||||
};
|
||||
|
||||
|
||||
@@ -59,6 +59,7 @@ const forestAmbush = {
|
||||
},
|
||||
],
|
||||
rewardPool: "act1.pool.story.scoutGift",
|
||||
allowSharedCardRewards: true,
|
||||
rewardTitle: "斥候的谢礼(三选一)",
|
||||
flags: {
|
||||
"story.act1.helpedScout": true,
|
||||
@@ -97,6 +98,7 @@ const forestAmbush = {
|
||||
],
|
||||
},
|
||||
rewardPool: "act1.pool.story.ambushLoot",
|
||||
allowSharedCardRewards: true,
|
||||
rewardTitle: "伏兵战利品(三选一)",
|
||||
description: "击败伏兵后,从随机出现的三个奖励中选择一个。",
|
||||
},
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
import { validateBattlePlan } from "../battle/battle-director.js";
|
||||
|
||||
export function chooseEncounterEntry(list, random) {
|
||||
if (!Array.isArray(list) || !list.length || typeof random !== "function") {
|
||||
throw new Error("梦三遭遇池为空或缺少随机数接口");
|
||||
}
|
||||
const value = random();
|
||||
if (!Number.isFinite(value) || value < 0 || value >= 1) throw new RangeError("遭遇随机数必须在[0,1)内");
|
||||
return list[Math.floor(value * list.length)];
|
||||
}
|
||||
|
||||
export function createEncounterPlan(definition, random) {
|
||||
if (!definition) throw new Error("梦三遭遇定义不存在");
|
||||
const plan = typeof definition.createBattlePlan === "function"
|
||||
? definition.createBattlePlan(random)
|
||||
: { units: JSON.parse(JSON.stringify(chooseEncounterEntry(definition.variants, random))), rules: [] };
|
||||
return validateBattlePlan(plan);
|
||||
}
|
||||
@@ -15,6 +15,7 @@ const packages = [shared, act1, act2, act3];
|
||||
const nodeContents = {};
|
||||
const rewardPools = {};
|
||||
const rewards = {};
|
||||
const encounters = Object.create(null);
|
||||
const dialogueTypes = new Set(["character", "narrator", "sound", "choice"]);
|
||||
|
||||
const validateDialogue = (dialogue, location) => {
|
||||
@@ -41,11 +42,24 @@ packages.forEach(content => {
|
||||
addEntries(nodeContents, content.nodeContents, "节点内容");
|
||||
addEntries(rewardPools, content.rewardPools, "奖励池");
|
||||
addEntries(rewards, content.rewards, "奖励");
|
||||
addEntries(encounters, content.encounters, "遭遇");
|
||||
});
|
||||
|
||||
const acts = [act1.map, act2.map, act3.map];
|
||||
if (new Set(acts.map(act => act.id)).size != acts.length) throw new Error("梦三大关ID存在重复");
|
||||
acts.forEach(act => {
|
||||
validateDialogue(act.completionDialogue, `${act.id} 通关`);
|
||||
if (act.endsCurrentContent != null && typeof act.endsCurrentContent !== "boolean") {
|
||||
throw new Error(`梦三章节结束配置无效:${act.id}`);
|
||||
}
|
||||
if (act.encounterPools) for (const key of ["weak", "strong", "elite", "boss"]) {
|
||||
const pool = act.encounterPools[key];
|
||||
if (!Array.isArray(pool) || !pool.length || new Set(pool).size !== pool.length ||
|
||||
pool.some(id => !Object.hasOwn(encounters, id) ||
|
||||
encounters[id].tier !== (["weak", "strong"].includes(key) ? "normal" : key))) {
|
||||
throw new Error(`梦三遭遇池无效:${act.id}/${key}`);
|
||||
}
|
||||
}
|
||||
(act.fixedNodes || []).forEach(node => {
|
||||
if (!nodeContents[node.contentId]) throw new Error(`梦三固定节点内容不存在:${node.contentId}`);
|
||||
if (!Number.isInteger(node.floor) || node.floor < 0 || node.floor >= act.floorNodes.length) {
|
||||
@@ -101,6 +115,14 @@ Object.values(rewards).forEach(reward => {
|
||||
if (battles !== -1 && (!Number.isInteger(battles) || battles < 1 || battles > 99)) throw new Error("梦三支援持续场数无效");
|
||||
});
|
||||
|
||||
const contentRegistry = { acts, nodeContents, rewardPools, rewards };
|
||||
for (const [id, encounter] of Object.entries(encounters)) {
|
||||
if (encounter.id !== id || typeof encounter.name !== "string" || !encounter.name ||
|
||||
!["normal", "elite", "boss"].includes(encounter.tier)) throw new Error(`梦三遭遇定义无效:${id}`);
|
||||
if (typeof encounter.createBattlePlan === "function") continue;
|
||||
if (!Array.isArray(encounter.variants) || !encounter.variants.length) throw new Error(`梦三遭遇组合为空:${id}`);
|
||||
for (const units of encounter.variants) validateBattlePlan({units, rules: []});
|
||||
}
|
||||
|
||||
const contentRegistry = { acts, nodeContents, rewardPools, rewards, encounters };
|
||||
|
||||
export default contentRegistry;
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
// 梦三私有武将:不改动原版界刘备,也不导入整套国战技能。
|
||||
// 梦三私有刘备:保留模式内 ID 以兼容已有征程,不导入原版技能。
|
||||
export function createScenarioCharacters(Character) {
|
||||
return {
|
||||
mengsan_liubei_shuying: new Character({ sex: "male", group: "han", hp: 50, maxHp: 50,
|
||||
skills: ["mengsan_taoyuan_bond_shuying"],
|
||||
img: "image/character/re_liubei.jpg" }),
|
||||
img: "extension/术樱包/mengsan/assets/portraits/liubei-portrait.jpg" }),
|
||||
// 羁绊助战使用梦三独立配置;战斗生命与技能由助战成长配置决定。
|
||||
mengsan_guanyu_shuying: new Character({ sex: "male", group: "han", hp: 40, maxHp: 40,
|
||||
skills: [], img: "extension/术樱包/mengsan/assets/portraits/guanyu-portrait.jpg" }),
|
||||
mengsan_zhangfei_shuying: new Character({ sex: "male", group: "han", hp: 40, maxHp: 40,
|
||||
skills: [], img: "extension/术樱包/mengsan/assets/portraits/zhangfei-portrait.jpg" }),
|
||||
// 国战男性普通小兵使用原生 shibing1 立绘;实际战斗生命由怪物类或关卡配置决定。
|
||||
mengsan_soldier_shuying: new Character({ sex: "male", group: "qun", hp: 4, maxHp: 4,
|
||||
skills: [], img: "image/character/shibing1.jpg" }),
|
||||
@@ -31,6 +36,13 @@ export function createScenarioCharacters(Character) {
|
||||
skills: [], img: "extension/术樱包/mengsan/assets/portraits/phrog-parasite-forest-portrait.png" }),
|
||||
mengsan_wriggler_shuying: new Character({ sex: "none", group: "qun", hp: 19, maxHp: 19,
|
||||
skills: [], img: "extension/术樱包/mengsan/assets/portraits/wriggler-forest-portrait.png" }),
|
||||
mengsan_ceremonial_beast_shuying: new Character({ sex: "none", group: "qun", hp: 252, maxHp: 252, skills: [], img: "extension/术樱包/mengsan/assets/portraits/ceremonial-beast-forest-portrait.png" }),
|
||||
mengsan_kin_priest_shuying: new Character({ sex: "none", group: "qun", hp: 190, maxHp: 190,
|
||||
skills: [], img: "extension/术樱包/mengsan/assets/portraits/kin-priest-forest-portrait.png" }),
|
||||
mengsan_kin_follower_shuying: new Character({ sex: "none", group: "qun", hp: 59, maxHp: 59,
|
||||
skills: [], img: "extension/术樱包/mengsan/assets/portraits/kin-follower-forest-portrait.png" }),
|
||||
mengsan_vantom_shuying: new Character({ sex: "none", group: "qun", hp: 173, maxHp: 173,
|
||||
skills: [], img: "extension/术樱包/mengsan/assets/portraits/vantom-forest-portrait.png" }),
|
||||
mengsan_bygone_effigy_shuying: new Character({ sex: "none", group: "qun", hp: 127, maxHp: 127,
|
||||
skills: [], img: "extension/术樱包/mengsan/assets/portraits/bygone-effigy-forest-portrait.png" }),
|
||||
mengsan_byrdonis_shuying: new Character({ sex: "none", group: "qun", hp: 82, maxHp: 82,
|
||||
@@ -57,15 +69,17 @@ export function createScenarioCharacters(Character) {
|
||||
skills: [], img: "extension/术樱包/mengsan/assets/portraits/raider-crossbow-portrait.png" }),
|
||||
mengsan_raider_tracker_shuying: new Character({ sex: "none", group: "qun", hp: 23, maxHp: 23,
|
||||
skills: [], img: "extension/术樱包/mengsan/assets/portraits/raider-tracker-portrait.png" }),
|
||||
mengsan_sushuang_zhangshiping_shuying: new Character({ sex: "male", group: "shu", hp: 4, maxHp: 4,
|
||||
mengsan_sushuang_zhangshiping_shuying: new Character({ sex: "male", group: "han", hp: 4, maxHp: 4,
|
||||
skills: [], img: "extension/术樱包/mengsan/assets/portraits/sushuang-zhangshiping.png", names: "苏|双-张|世平" }),
|
||||
};
|
||||
}
|
||||
export const scenarioTranslations = {
|
||||
mengsan_liubei_shuying: "界刘备",
|
||||
mengsan_liubei_shuying: "刘备",
|
||||
mengsan_guanyu_shuying: "关羽",
|
||||
mengsan_zhangfei_shuying: "张飞",
|
||||
mengsan_liubei_shuying_title: "50/50生命 · 先天桃园羁绊",
|
||||
mengsan_taoyuan_bond_shuying: "桃园羁绊",
|
||||
mengsan_taoyuan_bond_shuying_info: "先天:本征程初始结识关羽、张飞,二人羁绊均为8级。可在行军菜单中指定一名助战角色;战斗结束,到场增加50%升级进度,未到场增加25%。",
|
||||
mengsan_taoyuan_bond_shuying_info: "先天:本征程初始结识关羽、张飞,二人羁绊均为8级,默认选择关羽助战。可在行军菜单中更换助战角色;战斗结束,到场增加50%升级进度,未到场增加25%。",
|
||||
mengsan_soldier_shuying: "士兵",
|
||||
mengsan_flyconid_shuying: "飞蝇菌子",
|
||||
mengsan_fogmog_shuying: "雾菇",
|
||||
@@ -75,6 +89,10 @@ export const scenarioTranslations = {
|
||||
mengsan_cubex_construct_shuying: "立柱构造体",
|
||||
mengsan_byrdonis_shuying: "多尼斯异鸟",
|
||||
mengsan_bygone_effigy_shuying: "旧日雕像",
|
||||
mengsan_vantom_shuying: "墨影幻灵",
|
||||
mengsan_ceremonial_beast_shuying: "仪式兽",
|
||||
mengsan_kin_priest_shuying: "同族神官",
|
||||
mengsan_kin_follower_shuying: "同族信徒",
|
||||
mengsan_phrog_parasite_shuying: "异蛙寄生虫",
|
||||
mengsan_wriggler_shuying: "扭动虫",
|
||||
mengsan_nibbit_pair_shuying: "小啃兽双只",
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
import { relicRewards, relicRewardIds } from "../../relics/definitions.js";
|
||||
import { cardPackRewards, cardPackRewardIds } from "../../cards/packs/rewards.js";
|
||||
import { cardDefinitions } from "../../cards/card-definitions.js";
|
||||
|
||||
export const rewards = {
|
||||
...relicRewards,
|
||||
...cardPackRewards,
|
||||
"shared.reward.support.scout": {
|
||||
name: "道具·斥候援令", description: "本次征程后续每场战斗,友方张辽携 4 张手牌参战;重复获得不叠加人数。",
|
||||
support: { category: "item", battles: -1, unit: { character: "re_zhangliao", camp: "ally", hand: 4 } },
|
||||
@@ -11,6 +14,34 @@ export const rewards = {
|
||||
card: { name: "mengsan_zhongsha" }, name: "获得一张【重杀】",
|
||||
description: "2费:造成8点伤害,然后给予目标2层易伤。",
|
||||
},
|
||||
"shared.reward.card.baozou": {
|
||||
card: { name: "mengsan_baozou" }, name: "获得一张【暴走】",
|
||||
description: "1费:造成9点伤害,然后将这张牌本场战斗中的伤害增加5点。",
|
||||
},
|
||||
"shared.reward.card.yuanhen": {
|
||||
card: { name: "mengsan_yuanhen" }, name: "获得一张【怨恨】",
|
||||
description: "0费:造成5点伤害;本回合失去过生命时改为攻击2次。",
|
||||
},
|
||||
"shared.reward.card.xuanfengzhan": {
|
||||
card: { name: "mengsan_xuanfengzhan" }, name: "获得一张【旋风斩】",
|
||||
description: "X费:消耗剩余费用,对所有敌人各造成5点伤害X次。",
|
||||
},
|
||||
"shared.reward.card.qiling": {
|
||||
card: { name: "mengsan_qiling" }, name: "获得一张【欺凌】",
|
||||
description: "0费:造成4点伤害,目标每有1层易伤额外增加2点伤害。",
|
||||
},
|
||||
"shared.reward.card.xueqiang": {
|
||||
card: { name: "mengsan_xueqiang" }, name: "获得一张【血墙】",
|
||||
description: "2费:失去2点生命,然后获得16点格挡。",
|
||||
},
|
||||
"shared.reward.card.zhanli": {
|
||||
card: { name: "mengsan_zhanli" }, name: "获得一张【战栗】",
|
||||
description: "1费:给予一名敌人3层易伤。消耗。",
|
||||
},
|
||||
"shared.reward.card.wuzhuang": {
|
||||
card: { name: "mengsan_wuzhuang" }, name: "获得一张【武装】",
|
||||
description: "1费:获得5点格挡,然后强化你手牌中的一张牌(仅本场战斗)。",
|
||||
},
|
||||
"shared.reward.card.songjianwushi": {
|
||||
card: { name: "mengsan_songjianwushi" }, name: "获得一张【耸肩无视】",
|
||||
description: "1费:获得8点格挡,然后抽1张牌。",
|
||||
@@ -94,8 +125,8 @@ export const rewards = {
|
||||
"shared.reward.maxHp": { effectId: "max_hp", name: "极品强化·生机", description: "生命上限与当前生命各 +5" },
|
||||
};
|
||||
|
||||
export const rewardPools = {
|
||||
"shared.pool.battle.normal": [
|
||||
const battleCardRewardIds = [
|
||||
...cardPackRewardIds,
|
||||
"shared.reward.card.sha",
|
||||
"shared.reward.card.zhongsha",
|
||||
"shared.reward.card.fangyu",
|
||||
@@ -113,14 +144,22 @@ export const rewardPools = {
|
||||
"shared.reward.card.fangxue",
|
||||
"shared.reward.card.jianyi",
|
||||
"shared.reward.card.pomie",
|
||||
"shared.reward.card.baozou",
|
||||
"shared.reward.card.yuanhen",
|
||||
"shared.reward.card.xuanfengzhan",
|
||||
"shared.reward.card.qiling",
|
||||
"shared.reward.card.xueqiang",
|
||||
"shared.reward.card.zhanli",
|
||||
"shared.reward.card.wuzhuang",
|
||||
"shared.reward.card.songjianwushi", "shared.reward.card.wanmeidaji", "shared.reward.card.yubeidaji",
|
||||
"shared.reward.card.tao",
|
||||
"shared.reward.card.wuzhong",
|
||||
],
|
||||
"shared.pool.boss.premium": [
|
||||
...relicRewardIds,
|
||||
"shared.reward.skill.heroic",
|
||||
"shared.reward.item.handCharm",
|
||||
"shared.reward.maxHp",
|
||||
],
|
||||
];
|
||||
|
||||
export const rewardPools = {
|
||||
"shared.pool.battle.normal": [...battleCardRewardIds],
|
||||
"shared.pool.battle.elite": [...battleCardRewardIds],
|
||||
"shared.pool.elite.relics": [...relicRewardIds],
|
||||
"shared.pool.boss.premium": battleCardRewardIds.filter(id =>
|
||||
cardDefinitions[rewards[id].card?.name]?.rarity === "rare"),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user