fixed # 补全部分卡牌
fixed # 修复部分已知BUG
@@ -20,7 +20,7 @@ jobs:
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
|
||||
steps:
|
||||
- name: Build manifest and ZIP
|
||||
- name: Verify committed manifests and build ZIP
|
||||
run: |
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$tag = $env:RELEASE_TAG
|
||||
@@ -58,11 +58,14 @@ jobs:
|
||||
throw "extension.js 的版本号必须为 $version"
|
||||
}
|
||||
|
||||
python (Join-Path $stage 'tools/generate_manifest.py') `
|
||||
# The updater reads raw tag paths, not release attachments.
|
||||
# Never generate new manifests after the release tag already exists.
|
||||
python (Join-Path $stage 'tools/verify_manifest.py') `
|
||||
--root $stage `
|
||||
--version $version `
|
||||
--out dist/manifest.json
|
||||
if ($LASTEXITCODE -ne 0) { throw '生成清单失败' }
|
||||
--version $version
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw '标签内清单缺失或过期:请先生成并提交清单,再创建新版本标签'
|
||||
}
|
||||
|
||||
$manifestPath = Join-Path $stage 'dist/manifest.json'
|
||||
$manifest = Get-Content $manifestPath -Raw |
|
||||
@@ -98,6 +101,10 @@ jobs:
|
||||
)
|
||||
for name in component["files"]:
|
||||
archive.write(root / name, folder + name)
|
||||
for key in ("manifest", "legacy_manifest"):
|
||||
receipt = descriptor.get(key)
|
||||
if receipt:
|
||||
archive.write(root / receipt, folder + receipt)
|
||||
archive.write(root / "dist/manifest.json", folder + "manifest.json")
|
||||
'@ | python - $stage $package
|
||||
if ($LASTEXITCODE -ne 0) { throw '打包失败' }
|
||||
|
||||
@@ -76,6 +76,10 @@ jobs:
|
||||
--out dist/manifest.json
|
||||
if ($LASTEXITCODE -ne 0) { throw '生成清单失败' }
|
||||
|
||||
python (Join-Path $source 'tools/verify_manifest.py') `
|
||||
--root $source --version $version
|
||||
if ($LASTEXITCODE -ne 0) { throw '发布前清单校验失败' }
|
||||
|
||||
$manifestPath = Join-Path $source 'dist/manifest.json'
|
||||
$manifest = Get-Content $manifestPath -Raw |
|
||||
ConvertFrom-Json
|
||||
@@ -128,6 +132,10 @@ jobs:
|
||||
Expand-Archive -LiteralPath $snapshot `
|
||||
-DestinationPath $stage
|
||||
|
||||
python (Join-Path $stage 'tools/verify_manifest.py') `
|
||||
--root $stage --version $version
|
||||
if ($LASTEXITCODE -ne 0) { throw '标签源码与清单不一致,停止发布' }
|
||||
|
||||
$manifestPath = Join-Path $stage 'dist/manifest.json'
|
||||
$manifest = Get-Content $manifestPath -Raw |
|
||||
ConvertFrom-Json
|
||||
@@ -158,6 +166,10 @@ jobs:
|
||||
)
|
||||
for name in component["files"]:
|
||||
archive.write(root / name, folder + name)
|
||||
for key in ("manifest", "legacy_manifest"):
|
||||
receipt = descriptor.get(key)
|
||||
if receipt:
|
||||
archive.write(root / receipt, folder + receipt)
|
||||
archive.write(root / "dist/manifest.json", folder + "manifest.json")
|
||||
'@ | python - $stage $package
|
||||
if ($LASTEXITCODE -ne 0) { throw '打包失败' }
|
||||
|
||||
@@ -15,4 +15,30 @@ tools/*.mjs
|
||||
/Slay the Spire 2
|
||||
|
||||
*.mjs
|
||||
*.cjs
|
||||
*.cjs
|
||||
|
||||
# Local updater downloads and runtime logs
|
||||
/.update_tmp/
|
||||
/mengsan/logs/
|
||||
*.log
|
||||
|
||||
# Local credentials; keep shareable environment templates
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
||||
!.env.sample
|
||||
!.env.template
|
||||
|
||||
# Dependency and interpreter caches
|
||||
node_modules/
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# Editor temporary files and OS metadata
|
||||
*.tmp
|
||||
*.bak
|
||||
*.swp
|
||||
*.swo
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
Desktop.ini
|
||||
|
||||
@@ -1,18 +1,16 @@
|
||||
{
|
||||
"version": "2.0.1.1",
|
||||
"generated_at": "2026-08-28T19:09:32.815143+00:00",
|
||||
"version": "2.0.1.1-rc.1",
|
||||
"generated_at": "2026-10-04T11:24:22.012885+00:00",
|
||||
"algorithm": "sha256",
|
||||
"file_count": 282,
|
||||
"folder_sha256": "09e932678b899ba89b5871fde641ab1f4e49d93082802ade6437b98065eca907",
|
||||
"update_channels": true,
|
||||
"file_count": 278,
|
||||
"size_bytes": 55481243,
|
||||
"folder_sha256": "4e8e4d9e1f1f51c4687aa26b055887479a5ea48d6bfac1a149a3ed10259e8c49",
|
||||
"core": [
|
||||
"extension.js",
|
||||
"menu.js",
|
||||
"function.js",
|
||||
"update.js",
|
||||
"mengsan/mode.js",
|
||||
"mengsan/config.js",
|
||||
"mengsan/state.js",
|
||||
"mengsan/style.css",
|
||||
"tianshu/extension.js",
|
||||
"tianshu/config.js",
|
||||
"pve/boss/index.js",
|
||||
@@ -402,32 +400,16 @@
|
||||
"sha256": "356aa9473ab72ad43850c13451fd15a25c6ce2d93678cd0dcba5568d10443b40"
|
||||
},
|
||||
"extension.js": {
|
||||
"size": 14743,
|
||||
"sha256": "16cbdcc2f8e2cdfab03a0fb6f80de865aa709d7058dbbbbcd5d3ccd523907cd2"
|
||||
"size": 15464,
|
||||
"sha256": "f59c38efab9c337b7f8938e1f71034a2e58ea8b5b00470f5ef2ec61e26a9b5e4"
|
||||
},
|
||||
"function.js": {
|
||||
"size": 33746,
|
||||
"sha256": "df1aa3102a214986723af365da1029485680519d355a1ff88973eb36f8a6f909"
|
||||
},
|
||||
"mengsan/config.js": {
|
||||
"size": 2211,
|
||||
"sha256": "1283490af94dc3429330f6f7c192b1492b52d686018f2d68cb8482c0bc04e549"
|
||||
},
|
||||
"mengsan/mode.js": {
|
||||
"size": 22867,
|
||||
"sha256": "88a707ac6b59160e9735770d649d8d1e5c695298628c924306b824cef7e1cc27"
|
||||
},
|
||||
"mengsan/state.js": {
|
||||
"size": 8175,
|
||||
"sha256": "1096d195396f5a0fbe15c7d3627834cb3e415a5878c411eb41d9897af9abf46d"
|
||||
},
|
||||
"mengsan/style.css": {
|
||||
"size": 6859,
|
||||
"sha256": "fdce7bb71f7290254d984a35415e5012f829ae9992765d1f3282f35528c1b92b"
|
||||
},
|
||||
"menu.js": {
|
||||
"size": 22235,
|
||||
"sha256": "0920561e2b0214239dc81b1a54c955b96ea0750e57fa42f3b0e8935035c6fc84"
|
||||
"size": 25104,
|
||||
"sha256": "d894ef33889ecf1233e1107395456985da4e71a9f679a2c3a493c7c2fa57f8d7"
|
||||
},
|
||||
"pve/audio/dead/十二生肖/chenlong.mp3": {
|
||||
"size": 68757,
|
||||
@@ -1302,24 +1284,24 @@
|
||||
"sha256": "15adcfb80bd22035c604703005ae22d1721eeafcc0a1ee09c89c73713cd3d03a"
|
||||
},
|
||||
"tianshu/bondSkills.js": {
|
||||
"size": 41604,
|
||||
"sha256": "13fcda5805a7643144c55ae922f2406db2cba6e9822e086f4763f16063763e01"
|
||||
"size": 41588,
|
||||
"sha256": "0b5a1ec26d8a8881057aa1fc8d95fecaf06fa6753d23c99a4978de83f8c44ec6"
|
||||
},
|
||||
"tianshu/config.js": {
|
||||
"size": 29707,
|
||||
"sha256": "9b331adca63ff4b43dc06f707c3bd728d3ce0269b1c1f4cedec5e42281f13ff0"
|
||||
},
|
||||
"tianshu/extension.js": {
|
||||
"size": 70478,
|
||||
"sha256": "ff88e89a4067f18e10d1fbce72edc45aa89c95ee59e127520f5b2bed93023b98"
|
||||
"size": 76830,
|
||||
"sha256": "ae2585a6425cbcdf7cd2dee0f1151f5112fb8cfd4e8f6e089c6827774d6dbf9b"
|
||||
},
|
||||
"tianshu/shuYing_Skill_Xvxiang1.mp3": {
|
||||
"size": 15451,
|
||||
"sha256": "41914d7d542ddfb93c89aefffc245869d63a9fb2f52293df8e6667009832afd8"
|
||||
},
|
||||
"update.js": {
|
||||
"size": 24145,
|
||||
"sha256": "7594c68dd1308de5fd13ea7e76fde665a296400a7505b32054bf0d149986bb05"
|
||||
"size": 60005,
|
||||
"sha256": "f809d6e3ea5114f78a0773314c23b4120ccbd763b1f2f0f1f400753287af76f7"
|
||||
},
|
||||
"update.txt": {
|
||||
"size": 3953,
|
||||
@@ -1588,43 +1570,18 @@
|
||||
},
|
||||
"extension.js": {
|
||||
"type": "file",
|
||||
"size": 14743,
|
||||
"sha256": "16cbdcc2f8e2cdfab03a0fb6f80de865aa709d7058dbbbbcd5d3ccd523907cd2"
|
||||
"size": 15464,
|
||||
"sha256": "f59c38efab9c337b7f8938e1f71034a2e58ea8b5b00470f5ef2ec61e26a9b5e4"
|
||||
},
|
||||
"function.js": {
|
||||
"type": "file",
|
||||
"size": 33746,
|
||||
"sha256": "df1aa3102a214986723af365da1029485680519d355a1ff88973eb36f8a6f909"
|
||||
},
|
||||
"mengsan": {
|
||||
"type": "directory",
|
||||
"children": {
|
||||
"config.js": {
|
||||
"type": "file",
|
||||
"size": 2211,
|
||||
"sha256": "1283490af94dc3429330f6f7c192b1492b52d686018f2d68cb8482c0bc04e549"
|
||||
},
|
||||
"mode.js": {
|
||||
"type": "file",
|
||||
"size": 22867,
|
||||
"sha256": "88a707ac6b59160e9735770d649d8d1e5c695298628c924306b824cef7e1cc27"
|
||||
},
|
||||
"state.js": {
|
||||
"type": "file",
|
||||
"size": 8175,
|
||||
"sha256": "1096d195396f5a0fbe15c7d3627834cb3e415a5878c411eb41d9897af9abf46d"
|
||||
},
|
||||
"style.css": {
|
||||
"type": "file",
|
||||
"size": 6859,
|
||||
"sha256": "fdce7bb71f7290254d984a35415e5012f829ae9992765d1f3282f35528c1b92b"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu.js": {
|
||||
"type": "file",
|
||||
"size": 22235,
|
||||
"sha256": "0920561e2b0214239dc81b1a54c955b96ea0750e57fa42f3b0e8935035c6fc84"
|
||||
"size": 25104,
|
||||
"sha256": "d894ef33889ecf1233e1107395456985da4e71a9f679a2c3a493c7c2fa57f8d7"
|
||||
},
|
||||
"pve": {
|
||||
"type": "directory",
|
||||
@@ -2846,8 +2803,8 @@
|
||||
"children": {
|
||||
"bondSkills.js": {
|
||||
"type": "file",
|
||||
"size": 41604,
|
||||
"sha256": "13fcda5805a7643144c55ae922f2406db2cba6e9822e086f4763f16063763e01"
|
||||
"size": 41588,
|
||||
"sha256": "0b5a1ec26d8a8881057aa1fc8d95fecaf06fa6753d23c99a4978de83f8c44ec6"
|
||||
},
|
||||
"config.js": {
|
||||
"type": "file",
|
||||
@@ -2856,8 +2813,8 @@
|
||||
},
|
||||
"extension.js": {
|
||||
"type": "file",
|
||||
"size": 70478,
|
||||
"sha256": "ff88e89a4067f18e10d1fbce72edc45aa89c95ee59e127520f5b2bed93023b98"
|
||||
"size": 76830,
|
||||
"sha256": "ae2585a6425cbcdf7cd2dee0f1151f5112fb8cfd4e8f6e089c6827774d6dbf9b"
|
||||
},
|
||||
"shuYing_Skill_Xvxiang1.mp3": {
|
||||
"type": "file",
|
||||
@@ -2868,8 +2825,8 @@
|
||||
},
|
||||
"update.js": {
|
||||
"type": "file",
|
||||
"size": 24145,
|
||||
"sha256": "7594c68dd1308de5fd13ea7e76fde665a296400a7505b32054bf0d149986bb05"
|
||||
"size": 60005,
|
||||
"sha256": "f809d6e3ea5114f78a0773314c23b4120ccbd763b1f2f0f1f400753287af76f7"
|
||||
},
|
||||
"update.txt": {
|
||||
"type": "file",
|
||||
@@ -3012,5 +2969,15 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"modules": {
|
||||
"mengsan": {
|
||||
"title": "梦三模式",
|
||||
"entry": "mengsan/register.js",
|
||||
"manifest": "dist/modules/mengsan.json",
|
||||
"file_count": 457,
|
||||
"size_bytes": 705652979,
|
||||
"legacy_manifest": "dist/modules/mengsan.legacy.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,507 @@
|
||||
{
|
||||
"version": "2.0.1.1-rc.1",
|
||||
"module_id": "mengsan",
|
||||
"snapshot": "legacy",
|
||||
"files": [
|
||||
"mengsan/assets/card-overlays/infection-sprite.webp",
|
||||
"mengsan/assets/cards/mengsan_baozou.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_alchemize.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_anointed.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_automation.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_beacon_of_hope.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_beat_down.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_believe_in_you.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_bolas.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_calamity.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_catastrophe.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_coordinate.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_dark_shackles.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_discovery.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_dramatic_entrance.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_entropy.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_equilibrium.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_eternal_armor.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_fasten.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_finesse.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_fisticuffs.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_flash_of_steel.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_gang_up.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_gold_axe.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_hand_of_greed.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_hidden_gem.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_huddle_up.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_impatience.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_intercept.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_jack_of_all_trades.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_jackpot.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_knockdown.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_lift.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_master_of_strategy.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_mayhem.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_mimic.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_mind_blast.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_nostalgia.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_omnislice.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_panache.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_panic_button.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_prep_time.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_production.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_prolong.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_prowess.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_purity.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_rally.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_rend.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_restlessness.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_rolling_boulder.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_salvo.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_scrawl.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_secret_technique.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_secret_weapon.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_seeker_strike.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_shockwave.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_splash.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_stratagem.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_tag_team.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_the_ball.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_the_bomb.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_the_gambit.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_thinking_ahead.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_thrumming_hatchet.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_ultimate_defend.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_ultimate_strike.png",
|
||||
"mengsan/assets/cards/mengsan_colorless_volley.png",
|
||||
"mengsan/assets/cards/mengsan_curse_ascenders_bane.png",
|
||||
"mengsan/assets/cards/mengsan_curse_bad_luck.png",
|
||||
"mengsan/assets/cards/mengsan_curse_clumsy.png",
|
||||
"mengsan/assets/cards/mengsan_curse_curse_of_the_bell.png",
|
||||
"mengsan/assets/cards/mengsan_curse_debt.png",
|
||||
"mengsan/assets/cards/mengsan_curse_decay.png",
|
||||
"mengsan/assets/cards/mengsan_curse_doubt.png",
|
||||
"mengsan/assets/cards/mengsan_curse_enthralled.png",
|
||||
"mengsan/assets/cards/mengsan_curse_folly.png",
|
||||
"mengsan/assets/cards/mengsan_curse_greed.png",
|
||||
"mengsan/assets/cards/mengsan_curse_guilty.png",
|
||||
"mengsan/assets/cards/mengsan_curse_injury.png",
|
||||
"mengsan/assets/cards/mengsan_curse_normality.png",
|
||||
"mengsan/assets/cards/mengsan_curse_poor_sleep.png",
|
||||
"mengsan/assets/cards/mengsan_curse_regret.png",
|
||||
"mengsan/assets/cards/mengsan_curse_shame.png",
|
||||
"mengsan/assets/cards/mengsan_curse_spore_mind.png",
|
||||
"mengsan/assets/cards/mengsan_curse_writhe.png",
|
||||
"mengsan/assets/cards/mengsan_dazed_shuying.png",
|
||||
"mengsan/assets/cards/mengsan_event_abundance.png",
|
||||
"mengsan/assets/cards/mengsan_event_apotheosis.png",
|
||||
"mengsan/assets/cards/mengsan_event_apparition.png",
|
||||
"mengsan/assets/cards/mengsan_event_brightest_flame.png",
|
||||
"mengsan/assets/cards/mengsan_event_byrd_swoop.png",
|
||||
"mengsan/assets/cards/mengsan_event_enlightenment.png",
|
||||
"mengsan/assets/cards/mengsan_event_exterminate.png",
|
||||
"mengsan/assets/cards/mengsan_event_feeding_frenzy.png",
|
||||
"mengsan/assets/cards/mengsan_event_mad_science_chaos.png",
|
||||
"mengsan/assets/cards/mengsan_event_mad_science_choking.png",
|
||||
"mengsan/assets/cards/mengsan_event_mad_science_curious.png",
|
||||
"mengsan/assets/cards/mengsan_event_mad_science_energized.png",
|
||||
"mengsan/assets/cards/mengsan_event_mad_science_expertise.png",
|
||||
"mengsan/assets/cards/mengsan_event_mad_science_improvement.png",
|
||||
"mengsan/assets/cards/mengsan_event_mad_science_sapping.png",
|
||||
"mengsan/assets/cards/mengsan_event_mad_science_violence.png",
|
||||
"mengsan/assets/cards/mengsan_event_mad_science_wisdom.png",
|
||||
"mengsan/assets/cards/mengsan_event_maul.png",
|
||||
"mengsan/assets/cards/mengsan_event_metamorphosis.png",
|
||||
"mengsan/assets/cards/mengsan_event_neows_fury.png",
|
||||
"mengsan/assets/cards/mengsan_event_peck.png",
|
||||
"mengsan/assets/cards/mengsan_event_relax.png",
|
||||
"mengsan/assets/cards/mengsan_event_squash.png",
|
||||
"mengsan/assets/cards/mengsan_event_toric_toughness.png",
|
||||
"mengsan/assets/cards/mengsan_event_whistle.png",
|
||||
"mengsan/assets/cards/mengsan_event_wish.png",
|
||||
"mengsan/assets/cards/mengsan_fangxue.png",
|
||||
"mengsan/assets/cards/mengsan_fangyu.png",
|
||||
"mengsan/assets/cards/mengsan_feijianhuixuanbiao.png",
|
||||
"mengsan/assets/cards/mengsan_fennu.png",
|
||||
"mengsan/assets/cards/mengsan_ic_ashen_strike.png",
|
||||
"mengsan/assets/cards/mengsan_ic_barricade.png",
|
||||
"mengsan/assets/cards/mengsan_ic_battle_ready.png",
|
||||
"mengsan/assets/cards/mengsan_ic_battle_trance.png",
|
||||
"mengsan/assets/cards/mengsan_ic_blaze.png",
|
||||
"mengsan/assets/cards/mengsan_ic_bludgeon.png",
|
||||
"mengsan/assets/cards/mengsan_ic_bodyguard.png",
|
||||
"mengsan/assets/cards/mengsan_ic_boulder.png",
|
||||
"mengsan/assets/cards/mengsan_ic_brand.png",
|
||||
"mengsan/assets/cards/mengsan_ic_break.png",
|
||||
"mengsan/assets/cards/mengsan_ic_bully.png",
|
||||
"mengsan/assets/cards/mengsan_ic_burning_pact.png",
|
||||
"mengsan/assets/cards/mengsan_ic_clash.png",
|
||||
"mengsan/assets/cards/mengsan_ic_colossus.png",
|
||||
"mengsan/assets/cards/mengsan_ic_conflagration.png",
|
||||
"mengsan/assets/cards/mengsan_ic_corruption.png",
|
||||
"mengsan/assets/cards/mengsan_ic_crimson_mantle.png",
|
||||
"mengsan/assets/cards/mengsan_ic_cruelty.png",
|
||||
"mengsan/assets/cards/mengsan_ic_dark_embrace.png",
|
||||
"mengsan/assets/cards/mengsan_ic_demon_form.png",
|
||||
"mengsan/assets/cards/mengsan_ic_demonic_shield.png",
|
||||
"mengsan/assets/cards/mengsan_ic_dismantle.png",
|
||||
"mengsan/assets/cards/mengsan_ic_dominate.png",
|
||||
"mengsan/assets/cards/mengsan_ic_drum_of_battle.png",
|
||||
"mengsan/assets/cards/mengsan_ic_dual_wield.png",
|
||||
"mengsan/assets/cards/mengsan_ic_eager.png",
|
||||
"mengsan/assets/cards/mengsan_ic_entrench.png",
|
||||
"mengsan/assets/cards/mengsan_ic_evil_eye.png",
|
||||
"mengsan/assets/cards/mengsan_ic_feed.png",
|
||||
"mengsan/assets/cards/mengsan_ic_feel_no_pain.png",
|
||||
"mengsan/assets/cards/mengsan_ic_ferocity.png",
|
||||
"mengsan/assets/cards/mengsan_ic_fiend_fire.png",
|
||||
"mengsan/assets/cards/mengsan_ic_fight_me.png",
|
||||
"mengsan/assets/cards/mengsan_ic_flame_barrier.png",
|
||||
"mengsan/assets/cards/mengsan_ic_forgotten_ritual.png",
|
||||
"mengsan/assets/cards/mengsan_ic_grapple.png",
|
||||
"mengsan/assets/cards/mengsan_ic_hellraiser.png",
|
||||
"mengsan/assets/cards/mengsan_ic_hemokinesis.png",
|
||||
"mengsan/assets/cards/mengsan_ic_howl_from_beyond.png",
|
||||
"mengsan/assets/cards/mengsan_ic_impervious.png",
|
||||
"mengsan/assets/cards/mengsan_ic_infernal_blade.png",
|
||||
"mengsan/assets/cards/mengsan_ic_inferno.png",
|
||||
"mengsan/assets/cards/mengsan_ic_inflame.png",
|
||||
"mengsan/assets/cards/mengsan_ic_juggernaut.png",
|
||||
"mengsan/assets/cards/mengsan_ic_juggle.png",
|
||||
"mengsan/assets/cards/mengsan_ic_midnight.png",
|
||||
"mengsan/assets/cards/mengsan_ic_not_yet.png",
|
||||
"mengsan/assets/cards/mengsan_ic_offering.png",
|
||||
"mengsan/assets/cards/mengsan_ic_pacts_end.png",
|
||||
"mengsan/assets/cards/mengsan_ic_pillage.png",
|
||||
"mengsan/assets/cards/mengsan_ic_primal_force.png",
|
||||
"mengsan/assets/cards/mengsan_ic_pyre.png",
|
||||
"mengsan/assets/cards/mengsan_ic_rage.png",
|
||||
"mengsan/assets/cards/mengsan_ic_rally.png",
|
||||
"mengsan/assets/cards/mengsan_ic_relentless_assault.png",
|
||||
"mengsan/assets/cards/mengsan_ic_rupture.png",
|
||||
"mengsan/assets/cards/mengsan_ic_second_wind.png",
|
||||
"mengsan/assets/cards/mengsan_ic_stampede.png",
|
||||
"mengsan/assets/cards/mengsan_ic_stoke.png",
|
||||
"mengsan/assets/cards/mengsan_ic_stomp.png",
|
||||
"mengsan/assets/cards/mengsan_ic_stone_armor.png",
|
||||
"mengsan/assets/cards/mengsan_ic_taunt.png",
|
||||
"mengsan/assets/cards/mengsan_ic_tear_asunder.png",
|
||||
"mengsan/assets/cards/mengsan_ic_thrash.png",
|
||||
"mengsan/assets/cards/mengsan_ic_twin_strike.png",
|
||||
"mengsan/assets/cards/mengsan_ic_unleash.png",
|
||||
"mengsan/assets/cards/mengsan_ic_unshakable.png",
|
||||
"mengsan/assets/cards/mengsan_ic_uppercut.png",
|
||||
"mengsan/assets/cards/mengsan_infection_shuying.png",
|
||||
"mengsan/assets/cards/mengsan_jianbingdaji.png",
|
||||
"mengsan/assets/cards/mengsan_jianyi.png",
|
||||
"mengsan/assets/cards/mengsan_pomie.png",
|
||||
"mengsan/assets/cards/mengsan_qiling.png",
|
||||
"mengsan/assets/cards/mengsan_quanshenzhuangji.png",
|
||||
"mengsan/assets/cards/mengsan_rongrongzhiquan.png",
|
||||
"mengsan/assets/cards/mengsan_shandianpili.png",
|
||||
"mengsan/assets/cards/mengsan_shuangchongdaji.png",
|
||||
"mengsan/assets/cards/mengsan_slimed_shuying.png",
|
||||
"mengsan/assets/cards/mengsan_songjianwushi.png",
|
||||
"mengsan/assets/cards/mengsan_status_beckon.png",
|
||||
"mengsan/assets/cards/mengsan_status_burn.png",
|
||||
"mengsan/assets/cards/mengsan_status_debris.png",
|
||||
"mengsan/assets/cards/mengsan_status_deprecated_card.png",
|
||||
"mengsan/assets/cards/mengsan_status_frantic_escape.png",
|
||||
"mengsan/assets/cards/mengsan_status_soot.png",
|
||||
"mengsan/assets/cards/mengsan_status_toxic.png",
|
||||
"mengsan/assets/cards/mengsan_status_void.png",
|
||||
"mengsan/assets/cards/mengsan_status_wither.png",
|
||||
"mengsan/assets/cards/mengsan_tiezhanbo.png",
|
||||
"mengsan/assets/cards/mengsan_touchui.png",
|
||||
"mengsan/assets/cards/mengsan_tupo.png",
|
||||
"mengsan/assets/cards/mengsan_wanmeidaji.png",
|
||||
"mengsan/assets/cards/mengsan_wound_shuying.png",
|
||||
"mengsan/assets/cards/mengsan_wuzhuang.png",
|
||||
"mengsan/assets/cards/mengsan_xuanfengzhan.png",
|
||||
"mengsan/assets/cards/mengsan_xueqiang.png",
|
||||
"mengsan/assets/cards/mengsan_yuanhen.png",
|
||||
"mengsan/assets/cards/mengsan_yubeidaji.png",
|
||||
"mengsan/assets/cards/mengsan_yujin.png",
|
||||
"mengsan/assets/cards/mengsan_zhanli.png",
|
||||
"mengsan/assets/cards/mengsan_zhongsha.png",
|
||||
"mengsan/assets/cards/wound-original.png",
|
||||
"mengsan/assets/flyconid-portrait.png",
|
||||
"mengsan/assets/intent/Intent_attack_1.png",
|
||||
"mengsan/assets/intent/Intent_attack_1.webp",
|
||||
"mengsan/assets/intent/Intent_attack_2.png",
|
||||
"mengsan/assets/intent/Intent_attack_2.webp",
|
||||
"mengsan/assets/intent/Intent_attack_3.png",
|
||||
"mengsan/assets/intent/Intent_attack_3.webp",
|
||||
"mengsan/assets/intent/Intent_attack_4.png",
|
||||
"mengsan/assets/intent/Intent_attack_4.webp",
|
||||
"mengsan/assets/intent/Intent_attack_5.png",
|
||||
"mengsan/assets/intent/Intent_attack_5.webp",
|
||||
"mengsan/assets/intent/Intent_buff.png",
|
||||
"mengsan/assets/intent/Intent_card_debuff.png",
|
||||
"mengsan/assets/intent/Intent_death_blow.png",
|
||||
"mengsan/assets/intent/Intent_debuff.png",
|
||||
"mengsan/assets/intent/Intent_debuff.webp",
|
||||
"mengsan/assets/intent/Intent_defend.png",
|
||||
"mengsan/assets/intent/Intent_escape.png",
|
||||
"mengsan/assets/intent/Intent_heal.png",
|
||||
"mengsan/assets/intent/Intent_sleep.png",
|
||||
"mengsan/assets/intent/Intent_status_card.png",
|
||||
"mengsan/assets/intent/Intent_stun.png",
|
||||
"mengsan/assets/intent/Intent_summon.png",
|
||||
"mengsan/assets/intent/Intent_unknown.png",
|
||||
"mengsan/assets/portraits/bygone-effigy-forest-portrait.png",
|
||||
"mengsan/assets/portraits/bygone-effigy-original.png",
|
||||
"mengsan/assets/portraits/byrdonis-forest-portrait.png",
|
||||
"mengsan/assets/portraits/byrdonis-original.png",
|
||||
"mengsan/assets/portraits/ceremonial-beast-forest-portrait.png",
|
||||
"mengsan/assets/portraits/ceremonial-beast-original.png",
|
||||
"mengsan/assets/portraits/cubex-construct-forest-portrait.png",
|
||||
"mengsan/assets/portraits/cubex-construct-original.webp",
|
||||
"mengsan/assets/portraits/eye-with-teeth-forest-portrait.png",
|
||||
"mengsan/assets/portraits/eye-with-teeth.webp",
|
||||
"mengsan/assets/portraits/flyconid-portrait.png",
|
||||
"mengsan/assets/portraits/fogmog-and-eye-forest-portrait.png",
|
||||
"mengsan/assets/portraits/fogmog-forest-portrait.png",
|
||||
"mengsan/assets/portraits/fogmog.webp",
|
||||
"mengsan/assets/portraits/fuzzy-wurm-crawler-forest-portrait.png",
|
||||
"mengsan/assets/portraits/fuzzy-wurm-crawler-original.webp",
|
||||
"mengsan/assets/portraits/guanyu-portrait.jpg",
|
||||
"mengsan/assets/portraits/inklet-forest-portrait.png",
|
||||
"mengsan/assets/portraits/inklet-original.png",
|
||||
"mengsan/assets/portraits/kin-follower-forest-portrait.png",
|
||||
"mengsan/assets/portraits/kin-follower-original.webp",
|
||||
"mengsan/assets/portraits/kin-priest-forest-portrait.png",
|
||||
"mengsan/assets/portraits/kin-priest-original.png",
|
||||
"mengsan/assets/portraits/leaf-slime-m-forest-portrait.png",
|
||||
"mengsan/assets/portraits/leaf-slime-m-original.png",
|
||||
"mengsan/assets/portraits/leaf-slime-s-forest-portrait.png",
|
||||
"mengsan/assets/portraits/leaf-slime-s-original.png",
|
||||
"mengsan/assets/portraits/liubei-portrait.jpg",
|
||||
"mengsan/assets/portraits/mawler-forest-portrait.png",
|
||||
"mengsan/assets/portraits/mawler-original.webp",
|
||||
"mengsan/assets/portraits/nibbit-forest-portrait.png",
|
||||
"mengsan/assets/portraits/nibbit-original.webp",
|
||||
"mengsan/assets/portraits/phrog-parasite-forest-portrait.png",
|
||||
"mengsan/assets/portraits/phrog-parasite-original.png",
|
||||
"mengsan/assets/portraits/raider-assassin-portrait.png",
|
||||
"mengsan/assets/portraits/raider-axe-portrait.png",
|
||||
"mengsan/assets/portraits/raider-brute-portrait.png",
|
||||
"mengsan/assets/portraits/raider-crossbow-portrait.png",
|
||||
"mengsan/assets/portraits/raider-tracker-portrait.png",
|
||||
"mengsan/assets/portraits/shrinker-beetle-forest-portrait.png",
|
||||
"mengsan/assets/portraits/shrinker-beetle-original.png",
|
||||
"mengsan/assets/portraits/slithering-strangler-forest-portrait.png",
|
||||
"mengsan/assets/portraits/slithering-strangler-original.png",
|
||||
"mengsan/assets/portraits/snapping-jaxfruit-forest-portrait.png",
|
||||
"mengsan/assets/portraits/snapping-jaxfruit-original.png",
|
||||
"mengsan/assets/portraits/sushuang-zhangshiping.png",
|
||||
"mengsan/assets/portraits/twig-slime-m-forest-portrait.png",
|
||||
"mengsan/assets/portraits/twig-slime-m-original.png",
|
||||
"mengsan/assets/portraits/twig-slime-s-forest-portrait.png",
|
||||
"mengsan/assets/portraits/twig-slime-s-original.png",
|
||||
"mengsan/assets/portraits/vantom-forest-portrait.png",
|
||||
"mengsan/assets/portraits/vantom-original.png",
|
||||
"mengsan/assets/portraits/vine-shambler-forest-portrait.png",
|
||||
"mengsan/assets/portraits/vine-shambler-original-thumbnail.webp",
|
||||
"mengsan/assets/portraits/wriggler-forest-portrait.png",
|
||||
"mengsan/assets/portraits/wriggler-original.webp",
|
||||
"mengsan/assets/portraits/zhangfei-portrait.jpg",
|
||||
"mengsan/assets/sushuang-zhangshiping.png",
|
||||
"mengsan/battle/battle-director.js",
|
||||
"mengsan/battle/battle-flow.js",
|
||||
"mengsan/battle/battle-loop.js",
|
||||
"mengsan/battle/battle-resources.js",
|
||||
"mengsan/battle/battle-session.js",
|
||||
"mengsan/battle/battle-settlement.js",
|
||||
"mengsan/battle/combat-rules.js",
|
||||
"mengsan/battle/death-blow.js",
|
||||
"mengsan/battle/engine-session.js",
|
||||
"mengsan/battle/intent-damage.js",
|
||||
"mengsan/battle/intent-effects.js",
|
||||
"mengsan/battle/skill-teardown.js",
|
||||
"mengsan/battle/stun-intent.js",
|
||||
"mengsan/bonds/battle.js",
|
||||
"mengsan/bonds/definitions.js",
|
||||
"mengsan/bonds/intents.js",
|
||||
"mengsan/bonds/state.js",
|
||||
"mengsan/cards/affixes.js",
|
||||
"mengsan/cards/battle-card-copy.js",
|
||||
"mengsan/cards/battle-card-reclaim.js",
|
||||
"mengsan/cards/battle-energy.js",
|
||||
"mengsan/cards/block-draw.js",
|
||||
"mengsan/cards/card-data.js",
|
||||
"mengsan/cards/card-definitions.js",
|
||||
"mengsan/cards/card-pools.js",
|
||||
"mengsan/cards/classification-types.js",
|
||||
"mengsan/cards/description.js",
|
||||
"mengsan/cards/hand-exhaust.js",
|
||||
"mengsan/cards/hand-upgrade.js",
|
||||
"mengsan/cards/havoc-play.js",
|
||||
"mengsan/cards/infection-card.js",
|
||||
"mengsan/cards/intrinsic-affixes.js",
|
||||
"mengsan/cards/ironclad-advanced-data.js",
|
||||
"mengsan/cards/ironclad-data.js",
|
||||
"mengsan/cards/ironclad-hooks.js",
|
||||
"mengsan/cards/ironclad.js",
|
||||
"mengsan/cards/life-loss-block.js",
|
||||
"mengsan/cards/mode-cards.js",
|
||||
"mengsan/cards/packs/colorless/data.js",
|
||||
"mengsan/cards/packs/colorless/index.js",
|
||||
"mengsan/cards/packs/colorless/rewards.js",
|
||||
"mengsan/cards/packs/curse/data.js",
|
||||
"mengsan/cards/packs/data.js",
|
||||
"mengsan/cards/packs/event/data.js",
|
||||
"mengsan/cards/packs/index.js",
|
||||
"mengsan/cards/packs/liubei/advanced-data.js",
|
||||
"mengsan/cards/packs/liubei/advanced.js",
|
||||
"mengsan/cards/packs/liubei/data.js",
|
||||
"mengsan/cards/packs/liubei/index.js",
|
||||
"mengsan/cards/packs/liubei/legacy.js",
|
||||
"mengsan/cards/packs/liubei/metadata.js",
|
||||
"mengsan/cards/packs/liubei/names.js",
|
||||
"mengsan/cards/packs/liubei/rewards.js",
|
||||
"mengsan/cards/packs/liubei/runtime.js",
|
||||
"mengsan/cards/packs/liubei/traits.js",
|
||||
"mengsan/cards/packs/rewards.js",
|
||||
"mengsan/cards/packs/shared/data.js",
|
||||
"mengsan/cards/packs/shared/runtime.js",
|
||||
"mengsan/cards/packs/status/data.js",
|
||||
"mengsan/cards/personal-piles.js",
|
||||
"mengsan/cards/rampage.js",
|
||||
"mengsan/cards/random-hand-exhaust.js",
|
||||
"mengsan/cards/rarity-data.js",
|
||||
"mengsan/cards/rarity.js",
|
||||
"mengsan/cards/retired-cards.js",
|
||||
"mengsan/cards/shared-battle-end.js",
|
||||
"mengsan/cards/shared-hooks.js",
|
||||
"mengsan/cards/slimed-card.js",
|
||||
"mengsan/cards/spite.js",
|
||||
"mengsan/cards/starting-deck.js",
|
||||
"mengsan/cards/status-cards.js",
|
||||
"mengsan/cards/strike-counter.js",
|
||||
"mengsan/cards/temporary-strength.js",
|
||||
"mengsan/cards/upgrades.js",
|
||||
"mengsan/cards/whirlwind.js",
|
||||
"mengsan/cards/wither-card.js",
|
||||
"mengsan/cards/wound-card.js",
|
||||
"mengsan/config.js",
|
||||
"mengsan/content/acts/act1/encounters.js",
|
||||
"mengsan/content/acts/act1/index.js",
|
||||
"mengsan/content/acts/act1/inklet-group.js",
|
||||
"mengsan/content/acts/act1/kin-group.js",
|
||||
"mengsan/content/acts/act1/map.js",
|
||||
"mengsan/content/acts/act1/nibbit-pair.js",
|
||||
"mengsan/content/acts/act1/raider-trio.js",
|
||||
"mengsan/content/acts/act1/rewards.js",
|
||||
"mengsan/content/acts/act1/stories/forest-ambush.js",
|
||||
"mengsan/content/acts/act1/stories/liubei-opening.js",
|
||||
"mengsan/content/acts/act2/index.js",
|
||||
"mengsan/content/acts/act2/map.js",
|
||||
"mengsan/content/acts/act3/index.js",
|
||||
"mengsan/content/acts/act3/map.js",
|
||||
"mengsan/content/affixes.js",
|
||||
"mengsan/content/card-definitions.js",
|
||||
"mengsan/content/card-library.js",
|
||||
"mengsan/content/encounters.js",
|
||||
"mengsan/content/mode-cards.js",
|
||||
"mengsan/content/registry.js",
|
||||
"mengsan/content/scenario-characters.js",
|
||||
"mengsan/content/shared/index.js",
|
||||
"mengsan/content/shared/rewards.js",
|
||||
"mengsan/docs/battle-config.md",
|
||||
"mengsan/docs/combat-rules.md",
|
||||
"mengsan/docs/liubei-opening.md",
|
||||
"mengsan/map/index.js",
|
||||
"mengsan/map/renderer.js",
|
||||
"mengsan/mode.js",
|
||||
"mengsan/monsters/actions.js",
|
||||
"mengsan/monsters/artifact-status.js",
|
||||
"mengsan/monsters/beast-intent.js",
|
||||
"mengsan/monsters/byrdonis-intent.js",
|
||||
"mengsan/monsters/crawler-intent.js",
|
||||
"mengsan/monsters/cubex-intent.js",
|
||||
"mengsan/monsters/effigy-intent.js",
|
||||
"mengsan/monsters/effigy-slow.js",
|
||||
"mengsan/monsters/flyconid-intent.js",
|
||||
"mengsan/monsters/fogmog-battle.js",
|
||||
"mengsan/monsters/fogmog-intent.js",
|
||||
"mengsan/monsters/inklet-intent.js",
|
||||
"mengsan/monsters/jaxfruit-intent.js",
|
||||
"mengsan/monsters/kin-intent.js",
|
||||
"mengsan/monsters/leafmedium-intent.js",
|
||||
"mengsan/monsters/leafslime-goop.js",
|
||||
"mengsan/monsters/leafslime-intent.js",
|
||||
"mengsan/monsters/mawler-intent.js",
|
||||
"mengsan/monsters/monster.js",
|
||||
"mengsan/monsters/nibbit-intent.js",
|
||||
"mengsan/monsters/phrog-battle.js",
|
||||
"mengsan/monsters/phrog-intent.js",
|
||||
"mengsan/monsters/raider-intent.js",
|
||||
"mengsan/monsters/shrinker-intent.js",
|
||||
"mengsan/monsters/shrinker-status.js",
|
||||
"mengsan/monsters/strangler-constrict.js",
|
||||
"mengsan/monsters/strangler-intent.js",
|
||||
"mengsan/monsters/twigmedium-intent.js",
|
||||
"mengsan/monsters/twigslime-intent.js",
|
||||
"mengsan/monsters/vantom-intent.js",
|
||||
"mengsan/monsters/vine-intent.js",
|
||||
"mengsan/monsters/vine-tangled.js",
|
||||
"mengsan/progression/dialogue-choice.js",
|
||||
"mengsan/progression/encounter-progress.js",
|
||||
"mengsan/progression/map-checkpoint.js",
|
||||
"mengsan/progression/mode-storage.js",
|
||||
"mengsan/progression/reward-package.js",
|
||||
"mengsan/progression/reward.js",
|
||||
"mengsan/progression/state.js",
|
||||
"mengsan/progression/story.js",
|
||||
"mengsan/register.js",
|
||||
"mengsan/relics/battle.js",
|
||||
"mengsan/relics/combat.js",
|
||||
"mengsan/relics/definitions.js",
|
||||
"mengsan/relics/rooms.js",
|
||||
"mengsan/runtime/battle-director.js",
|
||||
"mengsan/runtime/battle-flow.js",
|
||||
"mengsan/runtime/battle-loop.js",
|
||||
"mengsan/runtime/battle-resources.js",
|
||||
"mengsan/runtime/battle-session.js",
|
||||
"mengsan/runtime/battle-settlement.js",
|
||||
"mengsan/runtime/card-data.js",
|
||||
"mengsan/runtime/card-library.js",
|
||||
"mengsan/runtime/combat-rules.js",
|
||||
"mengsan/runtime/dialogue-choice.js",
|
||||
"mengsan/runtime/dialogue.js",
|
||||
"mengsan/runtime/engine-session.js",
|
||||
"mengsan/runtime/flow-ui.js",
|
||||
"mengsan/runtime/flyconid-intent.js",
|
||||
"mengsan/runtime/gm-manager.js",
|
||||
"mengsan/runtime/intent-display.js",
|
||||
"mengsan/runtime/mode-storage.js",
|
||||
"mengsan/runtime/monster.js",
|
||||
"mengsan/runtime/navigation.js",
|
||||
"mengsan/runtime/personal-piles.js",
|
||||
"mengsan/runtime/reward-ui.js",
|
||||
"mengsan/runtime/reward.js",
|
||||
"mengsan/runtime/skill-teardown.js",
|
||||
"mengsan/runtime/story.js",
|
||||
"mengsan/state.js",
|
||||
"mengsan/style.css",
|
||||
"mengsan/ui/bonds.js",
|
||||
"mengsan/ui/card-library.js",
|
||||
"mengsan/ui/dialogue.js",
|
||||
"mengsan/ui/energy-display.js",
|
||||
"mengsan/ui/flow-ui.js",
|
||||
"mengsan/ui/gm-manager.js",
|
||||
"mengsan/ui/hand/adapter.js",
|
||||
"mengsan/ui/hand/diagnostics.js",
|
||||
"mengsan/ui/hand/fan.js",
|
||||
"mengsan/ui/hand/index.js",
|
||||
"mengsan/ui/hand/input.js",
|
||||
"mengsan/ui/hand/overlays.js",
|
||||
"mengsan/ui/hand/style.css",
|
||||
"mengsan/ui/intent-display.js",
|
||||
"mengsan/ui/map/index.js",
|
||||
"mengsan/ui/map/renderer.js",
|
||||
"mengsan/ui/navigation.js",
|
||||
"mengsan/ui/relics.js",
|
||||
"mengsan/ui/reward-package.js",
|
||||
"mengsan/ui/reward-ui.js",
|
||||
"mengsan/ui/style.css",
|
||||
"mengsan/ui/virtual-card-grid.js"
|
||||
]
|
||||
}
|
||||
@@ -251,11 +251,14 @@ shuYing.precontent = async () => {
|
||||
shuYing.initFunction();
|
||||
shuYing.initConfig();
|
||||
const mengsanState = lib.config.shuYing_mengsan_installed_version;
|
||||
let hasMengsan = !!mengsanState && mengsanState != "disabled";
|
||||
if (!mengsanState && typeof game.checkFile != "function") {
|
||||
const mengsanInstallation = lib.config.shuYing_mengsan_installation;
|
||||
let hasMengsan = mengsanInstallation
|
||||
? mengsanInstallation.status == "installed"
|
||||
: !!mengsanState && mengsanState != "disabled";
|
||||
if (!mengsanInstallation && !mengsanState && typeof game.checkFile != "function") {
|
||||
hasMengsan = true;
|
||||
}
|
||||
else if (!mengsanState && typeof game.checkFile == "function") {
|
||||
else if (!mengsanInstallation && !mengsanState && typeof game.checkFile == "function") {
|
||||
hasMengsan = await new Promise(resolve => {
|
||||
game.checkFile("extension/术樱包/mengsan/register.js",
|
||||
result => resolve(result == 1), () => resolve(false));
|
||||
|
||||
|
After Width: | Height: | Size: 661 KiB |
@@ -1,11 +1,13 @@
|
||||
# 梦三卡牌立绘规范
|
||||
|
||||
2026-10-03:铁甲战士94张已全部接入:新增67、沿用27、暂缓0;另有衍生巨石。68张新增完整5:7水墨立绘使用 `mengsan_ic_*.png`。刘备专属牌组与空无色牌组已分目录和牌组类,详情见 [制作清单](../../../../../sts2-card-capture-20261003/generation/铁甲战士制作清单.md)、[全部立绘预览](../../../../../sts2-card-capture-20261003/generation/铁甲战士立绘预览.md) 及 [牌组结构](../../cards/packs/README.md)。尚未进行实机验收。
|
||||
|
||||
用户于 2026-10-02 指定以截图 `C:\Users\Diuse\Downloads\Ai\49.png` 中“防御”为同系列基准。
|
||||
|
||||
- 后续新增及转换的梦三卡牌使用约 5:7 的完整竖幅立绘;手牌常规尺寸 112×156,窄屏 82×114。禁止直接使用横向拆包图作为运行时卡面,也不要拉伸横图。
|
||||
- 画风:泛黄宣纸、黑褐水墨、飞白与淡赭色、中国古代人物或兵器;根据卡牌效果独立安排竖幅构图。拆包图只作题材参考,不修改拆包原件。
|
||||
- 立绘不绘制名称、费用、花色、强化角标或边框。左上花色点数、左侧中段费用、右下名称由游戏原生节点和梦三样式叠加;左侧信息栏和右下名称需留空间。
|
||||
- 卡牌定义使用 `fullimage: true` 与明确的 `image` 路径,不使用横图 `fullskin`。新增卡名须加入 `ui/hand/style.css` 的本地完整卡面选择器;长牌名同时加入长名称窄屏规则。保持 `cover`,不使用 `100% 100%` 拉伸。
|
||||
- 卡牌定义使用 `fullimage: true` 与明确的 `image` 路径,不使用横图 `fullskin`。`mengsan_ic_`、`mengsan_colorless_`、`mengsan_event_`、`mengsan_status_`、`mengsan_curse_` 已按前缀接入 `ui/hand/style.css` 的本地完整卡面选择器;其他命名的新增卡牌须单独接入,长牌名同时加入长名称窄屏规则。保持 `cover`,不使用 `100% 100%` 拉伸。
|
||||
- 费用和强化角标继续使用现有 `data-*` 与伪元素,避免向卡牌子节点写入额外文字而触发十周年 UI 扫描。
|
||||
- 不改变卡牌费用、效果、强化、奖励与存档数据;不修改全局标准/军争牌或十周年 UI。
|
||||
- 接入后检查完整立绘、花色/费用/名称、扇形叠牌、悬停放大和窄屏。文件检查、隔离行为测试及预览不代表实机验收。
|
||||
@@ -39,3 +41,15 @@
|
||||
破灭:对应 HAVOC/havoc.png 的宽刃旋斩与黑披风主题;完整5:7竖幅宣纸水墨立绘。普通1费,当前另一状态0费;免费使用自己的抽牌堆顶部实体牌,再仅消耗该原牌。费用豁免绑定原生选择/使用父链和实体身份,不改卡牌费用或词缀,愤怒生成的副本正常进入自己的弃牌堆,不跟随原牌消耗(对应Wiki0.104.0修复)。原生可用性和目标规则保持有效,无法使用的堆顶牌仍消耗;目标由原生使用流程选择。空抽牌堆不洗牌、不触发抽牌不足失败。保留当前数值、ID、花色、词缀和永久牌组,防止换场/死亡期间陈旧使用。描述只显示当前费用和效果。
|
||||
|
||||
耸肩无视:对应 SHRUG_IT_OFF/shrug_it_off.png 的耸肩摊手、厚重肩甲弹开攻击主题;完整5:7竖幅宣纸水墨立绘。1费,先通过原生 changeHujia 获得8点格挡,再通过原生 draw 抽1张牌;当前牌直接显示其实际格挡值。沿用脆弱对格挡的衰减与个人牌堆抽牌/洗牌/不足失败流程;等待格挡完全结算,战斗结束、死亡、换场或个人牌堆被替换后不再抽牌,不触碰公共和其他角色牌堆,不修改永久牌组;无消耗关键词。描述只显示当前费用与效果。
|
||||
|
||||
武装:对应 ARMAMENTS/armaments.png 的系紧金属护臂、加固防护主题;完整5:7竖幅宣纸水墨立绘。1费,先获得5点格挡,再选择强化一张当时的手牌;当前全体状态强化所有当时的手牌。仅对现有强化规则允许的牌生效,已满级、状态牌、永恒词缀、消耗牌及本次使用的实体牌不参与;没有符合条件的手牌仍获得格挡。等待原生格挡及选牌事件,战斗结束、换场、死亡、牌堆替换或选择期间失去该牌后不提交陈旧选择。复制真实牌元数据,保留ID、花色、点数、词缀并刷新费用与+X角标;不写永久牌组,退出战斗恢复临时强化。描述只显示当前费用和效果。运行时PNG缩小并量化,拆包原件保留。
|
||||
|
||||
战栗:对应 TREMBLE/tremble.png 的蜷缩颤抖、恐惧易伤主题;完整5:7竖幅黑褐宣纸水墨立绘,不使用横向裁切,不烘焙文字或边框。1费,对一名存活敌人施加3层易伤;当前强化状态施加4层。沿用人工制品抵消、攻击伤害增加50%向上取整与自身回合末减少1层规则;技能牌不造成直接伤害,不承受缠结的攻击牌额外费用。使用后原生消耗,仅退出本场战斗;未使用而弃置仍进入弃牌堆,永久牌组保留。战斗结束、自己或目标死亡及非敌方目标不施加。描述只显示当前费用及当前效果,无强化资格或未来变化说明。运行时PNG保持比例缩小至480×672并量化压缩,拆包参考原件不改动。
|
||||
|
||||
血墙:对应 BLOOD_WALL/blood_wall.png 的赤红屏障抵挡攻击主题;完整5:7竖幅黑褐宣纸水墨与暗朱红立绘,不裁切横图,不烘焙文字或边框。2费,先失去2点生命,再获得16点格挡;当前强化状态获得20点。等待原生loseHp及濒死救援结算;存活且仍在同一场战斗和同一会话中的使用者才继续获得格挡。战斗结束、死亡、换场、会话替换或角色离场后不继续。生命流失不是攻击伤害,不被护甲抵消,也不受力量、虚弱或易伤修正;格挡沿用原生changeHujia及脆弱规则,无护甲上限。技能牌不承受缠结攻击牌额外费用,无固有消耗,不改永久牌组。描述只显示当前费用和效果,不列强化资格或预告。运行时PNG保持比例缩小至480×672并量化压缩,拆包参考原件不改动。
|
||||
|
||||
欺凌:对应 BULLY/bully.png 的强者压制、乘虚进攻主题;完整5:7黑褐宣纸水墨竖幅,不裁切横图,不烘焙名称费用边框。0费,对一名存活敌人造成4点基础伤害,目标每有1层当前易伤额外增加2点;当前强化状态每层增加3点。每次结算读取实际目标的当前层数,仅发起一次原生攻击,不消耗易伤、不读取使用者或其他目标层数,不使用回合剩余数量代替层数。基础数值进入既有力量、临时力量、易伤50%及其他攻击修正链,易伤增幅不由牌效果重复乘算。非法负数、非整数、非有限层数或伤害溢出拒绝发起伤害。战斗结束、角色死亡、自身或友方目标不结算;不限制距离,次数不限,无固有消耗。作为攻击牌,缠结时按既有规则增加1费用并显示当前费用,响应仍免费。当前描述不列强化资格或未来效果。运行时PNG保持比例缩小至480×672并量化压缩,拆包参考原件不改动。
|
||||
|
||||
旋风斩:WHIRLWIND/whirlwind.png 的环形刀风连击主题,完整5:7宣纸水墨竖幅,无烘焙文字费用边框。X费,对全部敌人造成5点伤害X次,当前强化状态为8点。原生useCard支付时消耗剩余费用并固定X,一条用牌只支付、提取一次,次数不随后续加费变化;0费可使用但没有伤害。缠结先扣1附加费用再以剩余费用作X;不足附加费用不可用。破灭授权免费使用时固定现有费用作X但不扣费;响应不收费。次数仅绑定最近原生用牌、使用者、原战斗和原会话,嵌套其他牌不得借用X。逐轮重新取存活敌人,死亡或离场目标跳过,新生成敌人从下一轮参与;死亡、结束、换场、会话替换或使用者离场停止。每次等待原生伤害并沿用力量、临时力量、易伤等,不合并伤害。图鉴新增X费筛选,手牌用空文本data叠层显示X。永久牌数据不写次数,不固有消耗。描述仅当前效果,运行时480×672量化压缩,拆包原件保留。
|
||||
怨恨:SPITE/spite.png 的金甲头盔、含毒巨刃与负伤反击主题;完整5:7宣纸水墨竖幅,无烘焙名称费用边框。0费,对一名存活敌人造成5点伤害;本回合失去过生命时攻击2次,当前强化状态攻击3次,每次仍为5点。读取引擎当前完整回合的changeHp历史,仅实际changedHp<0且属于本场根事件、本人时触发,护甲完全抵消或回复不触发,流失生命后再回复仍有效,不读取伤害请求量或永久状态。使用开始时固定次数,攻击期间新失血影响下一次用牌;逐次等待原生伤害并沿用力量、临时力量、易伤等修正。原战斗/会话/根事件及角色成员和存活敌对关系每次复核,死亡、结束、换场、离场后停止。无固有消耗,不写永久牌组;攻击牌沿用缠结增加1费用,响应免费。当前描述不列强化资格或预告。运行时480×672量化压缩,拆包参考原件保留。
|
||||
暴走:RAMPAGE/rampage.png 的碧甲狂兽、猩红螺旋眼与逐击增强主题;完整5:7黑褐宣纸水墨竖幅,无烘焙费用名称边框。按网页正式主表1费/9伤害/每次本场加5,当前强化状态每次加9;不采用带未正式发布标记的10伤害更新。先发起一次原生攻击,结算后仅增加原实体牌的下一次基础伤害,普通连续9/14/19;力量、临时力量、易伤等沿原生链修正,不把最终伤害当作累积量。累积以实体对象绑定战斗/会话,独立暴走及同ID的另一个实体不共享,弃牌、回收、重抽和本场强化保留;永久牌组和实体牌元数据不写累积。战斗牌堆快照只携带当前会话的纯数字展示数据,详情显示当前实际伤害;退出会话清除,延迟旧清理不覆盖新会话。绑定最近原生useCard及唯一同名原牌,一次用牌只结算一次,陈旧场次/会话/根事件、非敌方目标、死亡或原牌离开本人的牌堆后不继续。伤害前检查安全整数溢出,无固有消耗;沿用缠结增加1费用,响应免费。当前描述不列强化资格或未来变化。运行时480×672量化压缩,拆包参考原件保留。
|
||||
|
||||
|
After Width: | Height: | Size: 282 KiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 3.2 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.2 MiB |
|
After Width: | Height: | Size: 3.2 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 2.8 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.3 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.2 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.2 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.2 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 2.8 MiB |
|
After Width: | Height: | Size: 3.2 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.2 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.2 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 3.2 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
Before Width: | Height: | Size: 3.1 MiB After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 3.2 MiB |
|
After Width: | Height: | Size: 3.2 MiB |