feat:添加了神秘合成下界之星小彩蛋
Some checks failed
Axolotl desktop CI / guardrails (push) Has been cancelled
Axolotl desktop CI / desktop (macos-latest) (push) Has been cancelled
Axolotl desktop CI / desktop (ubuntu-latest) (push) Has been cancelled
Axolotl desktop CI / desktop (windows-latest) (push) Has been cancelled
Axolotl desktop CI / website (push) Has been cancelled
Repository checks / typos (push) Has been cancelled
Repository checks / tombi (push) Has been cancelled
Rust checks / shear (push) Has been cancelled
Sync source to CNB / Sync Git ref (push) Has been cancelled

This commit is contained in:
2026-09-13 14:27:35 +08:00
parent 5b2cc3f94e
commit 6fa9461d2d
18 changed files with 2197 additions and 44 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 918 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 890 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 962 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1000 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

File diff suppressed because it is too large Load Diff

View File

@ -79,7 +79,7 @@ const gameModal = ref<InstanceType<typeof EasterEggGameModal> | null>(null)
const contributorsModal = ref<InstanceType<typeof EasterEggContributorsModal> | null>(null)
let typedBuffer = ''
const secretCodes = ['cyf112233', 'cxkcxkckx']
const secretCodes = ['starlight']
const konamiSequence = [
'ArrowUp',

View File

@ -9,7 +9,7 @@ export type AboutMemberExperience = {
}
// 长按「关于」页成员名字触发的彩蛋体验。
// 原 'axolotl-merge' 彩蛋已移除,改为通用占位组件 AboutEasterEgg.vue
// 下界之星合成彩蛋AboutEasterEgg.vue由长按成员名 / 暗号 / Konami 秘技触发
// 若要为特定成员挂载自定义彩蛋,在这里新增条目即可。
const memberExperiences: Record<string, AboutMemberExperience> = {
'easter-egg': {

View File

@ -0,0 +1,7 @@
t = open(r"D:\Project\Starlight_Lancher\apps\app-frontend\src\components\ui\AboutEasterEgg.vue", encoding="utf-8").read()
print("含 </script>:", "</script>" in t)
print("含 drawAxolotl:", "drawAxolotl" in t)
print("含 axolotl-balls import:", "axolotl-balls" in t)
print("行数:", len(t.split("\n")))
print("末 120 字:", repr(t[-120:]))

View File

@ -0,0 +1,19 @@
# 1) 游戏文件:改内部标识符
p = r"D:\Project\Starlight_Lancher\apps\app-frontend\src\components\ui\AboutEasterEgg.vue"
t = open(p, encoding="utf-8").read()
t = t.replace("AXOLOTL_MERGE_BEST_STORAGE_KEY", "MERGE_BEST_STORAGE_KEY")
t = t.replace("drawAxolotl", "drawMergePiece")
open(p, "w", encoding="utf-8", newline="\n").write(t)
print("游戏文件: AXOLOTL_MERGE_BEST_STORAGE_KEY -> MERGE_BEST_STORAGE_KEY, drawAxolotl -> drawMergePiece")
print(" 残留 axolotl:", "axolotl" in t.lower())
# 2) about-member-experiences.ts更新过时注释
p2 = r"D:\Project\Starlight_Lancher\apps\app-frontend\src\components\ui\settings\about-member-experiences.ts"
t2 = open(p2, encoding="utf-8").read()
old = "// 原 'axolotl-merge' 彩蛋已移除,改为通用占位组件 AboutEasterEgg.vue。"
new = "// 下界之星合成彩蛋AboutEasterEgg.vue由长按成员名 / 暗号 / Konami 秘技触发。"
assert old in t2, "注释找不到"
t2 = t2.replace(old, new, 1)
open(p2, "w", encoding="utf-8", newline="\n").write(t2)
print("注释已更新")

View File

@ -0,0 +1,55 @@
p = r"D:\Project\Starlight_Lancher\apps\app-frontend\src\components\ui\AboutEasterEgg.vue"
t = open(p, encoding="utf-8").read()
# 1) import 6 张星图
old_imports = """import blueBall from '@/assets/axolotl-balls/blueball.png'
import cyanBall from '@/assets/axolotl-balls/cyanball.png'
import pinkBall from '@/assets/axolotl-balls/pinkball.png'
import redBall from '@/assets/axolotl-balls/redball.png'
import superBall from '@/assets/axolotl-balls/superball.png'
import yellowBall from '@/assets/axolotl-balls/yellowball.png'"""
new_imports = """import blueStar from '@/assets/stars/blue.png'
import greenStar from '@/assets/stars/green.png'
import pinkStar from '@/assets/stars/pink.png'
import redStar from '@/assets/stars/red.png'
import yellowStar from '@/assets/stars/yellow.png'
import superStar from '@/assets/stars/super.png'"""
assert old_imports in t, "import 块找不到"
t = t.replace(old_imports, new_imports, 1)
# 2) 配置数组(保持 6颜色换星色
old_cfg = """const colors = ['#ff8fb3', '#ffd866', '#54c9c4', '#e5484d', '#5c8ee8', '#f05ed2']
const rainbowColors = ['#ff8fb3', '#ffd866', '#54c9c4', '#5c8ee8', '#f05ed2', '#ffffff']
const radiusRatios = [0.055, 0.075, 0.098, 0.128, 0.164, 0.21]
const points = [10, 25, 60, 120, 250, 1200]"""
new_cfg = """const colors = ['#4f9cff', '#1bd96a', '#ff8fb3', '#e5484d', '#ffd866', '#e0e0ff']
const rainbowColors = ['#4f9cff', '#1bd96a', '#ff8fb3', '#e5484d', '#ffd866', '#ffffff']
const radiusRatios = [0.055, 0.075, 0.098, 0.128, 0.164, 0.21]
const points = [10, 25, 60, 120, 250, 1200]"""
assert old_cfg in t, "配置数组找不到"
t = t.replace(old_cfg, new_cfg, 1)
# 3) 球图数组blue->green->pink->red->yellow->super
old_balls = "const ballImages = [pinkBall, yellowBall, cyanBall, redBall, blueBall, superBall]"
new_balls = "const ballImages = [blueStar, greenStar, pinkStar, redStar, yellowStar, superStar]"
assert old_balls in t, "ballImages 找不到"
t = t.replace(old_balls, new_balls, 1)
# 4) 存储 key
t = t.replace("const AXOLOTL_MERGE_BEST_STORAGE_KEY = 'axolotl-merge-best-score'",
"const AXOLOTL_MERGE_BEST_STORAGE_KEY = 'starlight-merge-best-score'", 1)
# 5) 文案
text_map = {
"defaultMessage: 'The axolotls got stranded!'": "defaultMessage: 'The stars fell down!'",
"defaultMessage: 'Rainbow axolotl!'": "defaultMessage: 'Nether star!'",
"defaultMessage: 'The tide is falling — keep your axolotls underwater!'": "defaultMessage: 'The sky is falling — keep merging!'",
"defaultMessage: 'Click to drop a pink axolotl'": "defaultMessage: 'Click to drop a star'",
}
for o, n in text_map.items():
assert o in t, f"文案找不到: {o}"
t = t.replace(o, n, 1)
open(p, "w", encoding="utf-8", newline="\n").write(t)
print("done")

View File

@ -0,0 +1,54 @@
p = r"D:\Project\Starlight_Lancher\apps\app-frontend\src\components\ui\AboutEasterEgg.vue"
t = open(p, encoding="utf-8").read()
# 1) import 换 5 张星图
old_imports = """import blueBall from '@/assets/axolotl-balls/blueball.png'
import cyanBall from '@/assets/axolotl-balls/cyanball.png'
import pinkBall from '@/assets/axolotl-balls/pinkball.png'
import redBall from '@/assets/axolotl-balls/redball.png'
import superBall from '@/assets/axolotl-balls/superball.png'
import yellowBall from '@/assets/axolotl-balls/yellowball.png'"""
new_imports = """import blueStar from '@/assets/stars/blue.png'
import greenStar from '@/assets/stars/green.png'
import pinkStar from '@/assets/stars/pink.png'
import redStar from '@/assets/stars/red.png'
import superStar from '@/assets/stars/super.png'"""
assert old_imports in t, "import 块找不到"
t = t.replace(old_imports, new_imports, 1)
# 2) 颜色 / 半径 / 分数 / 球图数组6→5
old_cfg = """const colors = ['#ff8fb3', '#ffd866', '#54c9c4', '#e5484d', '#5c8ee8', '#f05ed2']
const rainbowColors = ['#ff8fb3', '#ffd866', '#54c9c4', '#5c8ee8', '#f05ed2', '#ffffff']
const radiusRatios = [0.055, 0.075, 0.098, 0.128, 0.164, 0.21]
const points = [10, 25, 60, 120, 250, 1200]"""
new_cfg = """const colors = ['#4f9cff', '#1bd96a', '#ff8fb3', '#e5484d', '#ffd866']
const rainbowColors = ['#4f9cff', '#1bd96a', '#ff8fb3', '#e5484d', '#ffd866']
const radiusRatios = [0.055, 0.078, 0.105, 0.14, 0.185]
const points = [10, 25, 60, 130, 300]"""
assert old_cfg in t, "配置数组找不到"
t = t.replace(old_cfg, new_cfg, 1)
# 3) 球图数组(顺序 blue->green->pink->red->super
old_balls = "const ballImages = [pinkBall, yellowBall, cyanBall, redBall, blueBall, superBall]"
new_balls = "const ballImages = [blueStar, greenStar, pinkStar, redStar, superStar]"
assert old_balls in t, "ballImages 找不到"
t = t.replace(old_balls, new_balls, 1)
# 4) 存储 key
t = t.replace("const AXOLOTL_MERGE_BEST_STORAGE_KEY = 'axolotl-merge-best-score'",
"const AXOLOTL_MERGE_BEST_STORAGE_KEY = 'starlight-merge-best-score'", 1)
# 5) 文案messages
text_map = {
"defaultMessage: 'The axolotls got stranded!'": "defaultMessage: 'The stars fell down!'",
"defaultMessage: 'Rainbow axolotl!'": "defaultMessage: 'Nether star!'",
"defaultMessage: 'The tide is falling — keep your axolotls underwater!'": "defaultMessage: 'The sky is falling — keep merging!'",
"defaultMessage: 'Click to drop a pink axolotl'": "defaultMessage: 'Click to drop a star'",
}
for o, n in text_map.items():
assert o in t, f"文案找不到: {o}"
t = t.replace(o, n, 1)
open(p, "w", encoding="utf-8", newline="\n").write(t)
print("done")

View File

@ -0,0 +1,10 @@
p = r"D:\Project\Starlight_Lancher\apps\app-frontend\src\components\ui\settings\AboutSettings.vue"
t = open(p, encoding="utf-8").read()
old = "const secretCodes = ['cyf112233', 'cxkcxkckx']"
new = "const secretCodes = ['starlight']"
assert old in t, "找不到 secretCodes"
t = t.replace(old, new, 1)
open(p, "w", encoding="utf-8", newline="\n").write(t)
print("done")
print("新:", new)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,9 @@
t = open(r"D:\Project\Starlight_Lancher\tools\icon_work\old_merge_game.vue", encoding="utf-8").read()
lines = t.split("\n")
print("总行数:", len(lines))
print("\n=== 含 ball/color/radius/point/axolotl/import 的行 ===")
for i, line in enumerate(lines):
low = line.lower()
if any(k in low for k in ("ball", "color", "radius", "point", "axolotl", "import ", "level", "tier")):
print(f"{i+1}: {line.rstrip()[:140]}")

View File

@ -0,0 +1,9 @@
t = open(r"D:\Project\Starlight_Lancher\tools\icon_work\old_merge_game.vue", encoding="utf-8").read()
lines = t.split("\n")
print("=== messages 全貌 (221-253) ===")
for i in range(220, 254):
print(f"{i+1}: {lines[i]}")
print("\n=== drawAxolotl 绘制 (689-757) ===")
for i in range(688, 757):
print(f"{i+1}: {lines[i]}")

View File

@ -0,0 +1,9 @@
t = open(r"D:\Project\Starlight_Lancher\apps\app-frontend\src\components\ui\AboutEasterEgg.vue", encoding="utf-8").read()
for i, line in enumerate(t.split("\n")):
if any(k in line for k in ("import blueStar", "import greenStar", "import pinkStar", "import redStar", "import yellowStar", "import superStar",
"const colors =", "const ballImages =", "starlight-merge-best-score",
"stars fell down", "Nether star", "sky is falling", "drop a star")):
print(f"{i+1}: {line.strip()}")
print("\n残留 axolotl-balls:", "axolotl-balls" in t)
print("残留 axolotl 文案:", "axolotl" in t.lower())