Files
TaikoZhongandClaude Opus 5.5 f239bc156c background: cabinet backdrops for the collab presets
Collab songs (#SCENEPRESET) now get their own cabinet backdrop, replayed by
the same objects as the default backdrop instead of the parent's collab art:

  miku, toho, gumi, ia, lovelive, i7 (id7 / tri / rev / natsu), imas
  (765 / cg / ml / sidem), yo-kai (base / matsuri / hatsukoi / tokoroten /
  yougota), mario, a3

Each preset is a pack in bg_data/collab_packs.lua naming its parts: donbg
band (1P and 2P), normal and clear backdrops, troupe, stand under the
troupe, drumroll effect and soul-max crowd.  Shared parts (the i7, imas
and yo-kai families) are shared the way the cabinet shares them.  A pack is
used only when every part it names is present, otherwise the preset falls
back to the collab script as before.  Packs also apply in 2P (donbg bands).

The objects take a part name where they took a random index:
DonBG.create_named, BGNormal.create_named, BGFever.create_named,
ArcadeDancerGroup.new("<name>"), Fever.Anim.new("<name>").  New:
renda_clip.lua (each hit replays one of the effect's parts along its own
path), and a beat-synced BGAnim for the whole-troupe dancer movies (i7,
a3).  Collab troupes stand in fixed positions (lead in the centre) and
grow from 1 to the full troupe with the gauge.

Exported placements may now mirror: bg_anim, donbg and dancer data carry a
mirror flag (drawn with mirror = horizontal and the origin moved to the
other side of the png).  Existing data has no flag and draws as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 15:55:05 +08:00

60 lines
4.1 KiB
Lua

-- Cabinet collab backdrops, by #SCENEPRESET. Every entry names the exported parts the
-- standard backdrop objects replay instead of the default pack:
-- donbg {1P band, 2P band} bg_data/donbg_anim/<name>.lua, donbga_<name>/
-- normal normal backdrop bg_data/bg_anim/<name>.lua, bga_<name>/
-- fever clear (gogo) backdrop bg_data/bg_anim/<name>.lua, bga_<name>/
-- dancer troupe dancer_data/<name>.lua, dancer/<name>/
-- dancer_movie instead of `dancer`: a whole-troupe movie on the beat (bg_anim)
-- dai stand under the troupe: a bg_anim name, "footer0" (the default band), or nil
-- renda drumroll effect bg_data/renda_anim/<name>.lua, rendaa_<name>/
-- crowd soul-max crowd bg_data/fever_anim/f_<name>.lua, fevera_<name>/
-- Parts shared between collabs (the i7 / imas / yo-kai families) are the cabinet's own
-- choices.
local YOKAI = { donbg = { "b_014_1p", "b_014_1p" }, normal = "b_014_n", fever = "b_014_f",
dai = "footer0", renda = "b_014", crowd = "b_014" }
local function with(base, t)
local out = {}
for k, v in pairs(base) do out[k] = v end
for k, v in pairs(t) do out[k] = v end
return out
end
return {
MIKU = { donbg = { "b_001_1p", "b_001_1p" }, normal = "b_001_n", fever = "b_001_f", dancer = "b_001",
dai = "b_001_dai", renda = "b_001", crowd = "b_001" },
TOHO = { donbg = { "b_002_1p", "b_002_1p" }, normal = "b_002_n", fever = "b_002_f", dancer = "b_002",
renda = "b_002", crowd = "b_002" },
GUMI = { donbg = { "b_003_1p", "b_003_1p" }, normal = "b_003_n", fever = "b_003_f", dancer = "b_003",
dai = "b_003_dai", renda = "b_003", crowd = "b_003" },
IA = { donbg = { "b_004_1p", "b_004_1p" }, normal = "b_004_n", fever = "b_004_f", dancer = "b_004",
renda = "b_004", crowd = "b_004" },
LOVELIVE = { donbg = { "b_005_1p", "b_005_1p" }, normal = "b_005_n", fever = "b_005_f", dancer = "b_005",
renda = "b_005", crowd = "b_005" },
I7ID7 = { donbg = { "b_006_1p", "b_006_1p" }, normal = "b_006_n", fever = "b_006_f", dancer_movie = "b_006_d",
renda = "b_006", crowd = "0" },
I7TRI = { donbg = { "b_007_1p", "b_007_1p" }, normal = "b_007_n", fever = "b_007_f", dancer_movie = "b_007_d",
renda = "b_006", crowd = "0" },
I7REV = { donbg = { "b_008_1p", "b_008_1p" }, normal = "b_008_n", fever = "b_008_f", dancer_movie = "b_008_d",
renda = "b_006", crowd = "0" },
I7NATSU = { donbg = { "b_009_1p", "b_009_1p" }, normal = "b_009_n", fever = "b_009_f", dancer_movie = "b_009_d",
renda = "b_006", crowd = "0" },
IMAS = { donbg = { "b_010_1p", "b_010_2p" }, normal = "b_010_n", fever = "b_010_f", dancer = "b_010",
dai = "b_010_dai", renda = "b_010", crowd = "b_010" },
IMAS_CG = { donbg = { "b_011_1p", "b_011_2p" }, normal = "b_010_n", fever = "b_010_f", dancer = "b_011",
dai = "b_010_dai", renda = "b_010", crowd = "b_011" },
IMAS_ML = { donbg = { "b_012_1p", "b_012_2p" }, normal = "b_010_n", fever = "b_010_f", dancer = "b_012",
dai = "b_010_dai", renda = "b_010", crowd = "b_012" },
IMAS_SIDEM = { donbg = { "b_013_1p", "b_013_1p" }, normal = "b_013_n", fever = "b_013_f", dancer = "b_013",
dai = "b_013_dai", renda = "b_013", crowd = "b_013" },
YOKAI = with(YOKAI, { dancer = "b_014" }),
YOKAI_MATSURI = with(YOKAI, { dancer = "b_015" }),
YOKAI_HATSUKOI = with(YOKAI, { dancer = "b_016" }),
YOKAI_TOKOROTEN = with(YOKAI, { dancer = "b_017" }),
YOKAI_YOUGOTA = with(YOKAI, { dancer = "b_018" }),
MARIO = { donbg = { "b_019_1p", "b_019_2p" }, normal = "b_019_n", fever = "b_019_f", dancer = "b_019",
renda = "b_019", crowd = "b_019" },
A3 = { donbg = { "b_020_1p", "b_020_1p" }, normal = "b_020_n", fever = "b_020_f", dancer_movie = "b_020_d",
renda = "b_020", crowd = "0" },
}