feat(art): seal purple batch -- flag color C63D22 -> 7C3AA8 (hue 267, ban-band safe); code 8-way split (seal items -> purple, attack/warn reds -> danger family, boss border -> boss purple) + docs 5 files + sample script sync + ledger 185

This commit is contained in:
DKChan committed 2026-09-27 02:12:12 +08:00
1 parent 5e36eb3c0d
commit 20c131c1a7
14 files changed
+37 -32

No files matched your search

+5 -5
View File
@@ -57,7 +57,7 @@ INK_COLD = (19, 46, 54) # 青墨 1-3 #132E36
INK_OCHRE = (60, 37, 12) # 赭墨 4-5 #3C250C
INK_RUST = (74, 30, 20) # 锈墨 6-8 #4A1E14
PLATE = (245, 234, 211) # 数字色牌 #F5EAD3
FLAG_RED = (198, 61, 34) # 旗朱 #C63D22
SEAL_PURPLE = (124, 58, 168) # 封印紫 #7C3AA8(旗朱退役 2026-09-26)
DANGER_RED = (168, 50, 31) # 危险红 #A8321F
REWARD_GOLD = (240, 168, 40) # 奖励金 #F0A828
HERO_BLUE = (46, 134, 222) # 小人蓝 #2E86DE(候选,样张批冻结——对照表 §5.1)
@@ -72,7 +72,7 @@ GLOW_FAMILY = {"attack": "通用增益", "defense": "通用增益", "weaken": "
"action": "通用增益", "gp": "通用增益", "heal": "治疗",
"pierce": "穿刺", "magic": "魔法", "blast": "群伤"}
# 游戏 UiKit 常量(A4 混排对表——ui_kit.gd 实测值)
UIKIT = {"INK": INK, "FLAG_RED": FLAG_RED, "GOLD": REWARD_GOLD, "RED_MINE": RED_MINE,
UIKIT = {"INK": INK, "FLAG_RED": SEAL_PURPLE, "GOLD": REWARD_GOLD, "RED_MINE": RED_MINE,
"PANEL_STAGE": (216, 200, 172), "PANEL_HERO": (232, 220, 196),
"PANEL_DATA": (226, 210, 182), "PANEL_BORDER": (120, 106, 88),
"BRICK": (201, 175, 131), "FLOOR": (179, 154, 120)}
@@ -448,7 +448,7 @@ def render_main_board():
d = ImageDraw.Draw(board)
px, py = fx0 + cell // 2 - 2, fy0 + 8
d.line([(px, py), (px, fy0 + cell - 10)], fill=(222, 210, 186), width=3)
d.polygon([(px, py), (px + 18, py + 6), (px, py + 12)], fill=FLAG_RED) # 旗面恒画右
d.polygon([(px, py), (px + 18, py + 6), (px, py + 12)], fill=SEAL_PURPLE) # 旗面恒画右
d.ellipse([px - 3, fy0 + cell - 12, px + 3, fy0 + cell - 6], fill=INK)
# 雷格巢穴(已开,程序占位——素材缺口,画面内标注)
@@ -671,7 +671,7 @@ def run_checks(board, placement, records, band, gmap, canvas_img=None):
"违例格 %s" % viol if viol else "五格中心区全净")
# A1 色板对表 + 禁入带扫描
frozen = {"INK": INK, "青墨": INK_COLD, "赭墨": INK_OCHRE, "锈墨": INK_RUST, "PLATE": PLATE,
"旗朱": FLAG_RED, "危险红": DANGER_RED, "奖励金": REWARD_GOLD}
"旗朱": SEAL_PURPLE, "危险红": DANGER_RED, "奖励金": REWARD_GOLD}
check("A1a", "色板对表圣经 §4.1 冻结值", True, "%s" % {k: "#%02X%02X%02X" % v for k, v in frozen.items()})
band_hit = scan_banned_hue(board)
check("A1b", "禁入带 HSV300°-345° 零命中", band_hit == 0, "命中 %d 像素(抽样)" % band_hit)
@@ -818,7 +818,7 @@ def main():
# S4 图例
oy4 = oy3 + s3.size[1] + 30
x = 20
for name, rgb in [("旗朱", FLAG_RED), ("危险红", DANGER_RED), ("奖励金", REWARD_GOLD),
for name, rgb in [("封印紫", SEAL_PURPLE), ("危险红", DANGER_RED), ("奖励金", REWARD_GOLD),
("小人蓝(候选)", HERO_BLUE), ("接触带微光(候选)", CONTACT_GLOW)]:
d.rectangle([x, oy4, x + 34, oy4 + 34], fill=rgb, outline=(90, 80, 66))
d.text((x - 4, oy4 + 38), name, col=(225, 215, 195), font=F_LBL2) if False else d.text((x - 4, oy4 + 38), name, font=F_LBL2, fill=(225, 215, 195))