Teach the boss cautions two silencers beyond the card killers
The Water removes every discard at blind start (blind.lua:208, returned only after the fight), idling discard granters and payoffs alike; The Eye blocks a repeated hand type outright (blind.lua:189/577), giving a one-hand build exactly one shot. BOSS_KILLS entries now carry a tag SET and their own factual phrase, since "debuffs X" stopped being the only true sentence. The Arm and The Ox were chased and rejected -- level drain does not touch the planet jokers, and The Ox fires on the player's own hand choice, the same reasoning that rejected the Card Sharp/Obelisk clash -- recorded in the BOSS_KILLS comment so nobody re-adds them. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -504,18 +504,41 @@ eq(deck_total, 0, 'no deck (menus, tests) reads as an empty deck')
|
||||
section('Engine: boss-blind cautions know who the boss silences')
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
-- The five class-killer bosses, verbatim from game.lua's P_BLINDS debuff
|
||||
-- configs. Every tag they reference must exist in the database, or the
|
||||
-- caution can never fire.
|
||||
-- The class-killer bosses, verbatim from game.lua's P_BLINDS configs and the
|
||||
-- blind.lua effects. Every tag they reference must exist in the database,
|
||||
-- or the caution can never fire.
|
||||
for boss, kill in pairs(JCA.boss_kills) do
|
||||
ok(JCA.tag_label[kill.tag], ('boss %s kills a real catalog tag (%s)'):format(boss, kill.tag))
|
||||
local n = 0
|
||||
for tag in pairs(kill.tags) do
|
||||
n = n + 1
|
||||
ok(JCA.tag_label[tag], ('boss %s kills a real catalog tag (%s)'):format(boss, tag))
|
||||
end
|
||||
ok(n > 0, ('boss %s kills at least one tag'):format(boss))
|
||||
ok(type(kill.what) == 'string' and #kill.what > 0,
|
||||
('boss %s carries its tooltip phrase'):format(boss))
|
||||
end
|
||||
|
||||
-- The Plant debuffs faces: it must catch both the payoff (Business Card
|
||||
-- wants faces) and the enabler (Pareidolia turns every card into one).
|
||||
local plant = JCA.boss_kills.bl_plant
|
||||
ok(JCA.db.j_business.wants[plant.tag], 'The Plant caution catches face payoffs')
|
||||
ok(JCA.db.j_pareidolia.gives[plant.tag], 'and face enablers, whose conversion kills the deck')
|
||||
ok(JCA.db.j_business.wants.faces and plant.tags.faces,
|
||||
'The Plant caution catches face payoffs')
|
||||
ok(JCA.db.j_pareidolia.gives.faces, 'and face enablers, whose conversion kills the deck')
|
||||
|
||||
-- The Water removes every discard for the fight (blind.lua:208): both the
|
||||
-- granters (Drunkard) and the payoffs (Hit the Road) must be caught.
|
||||
local water = JCA.boss_kills.bl_water
|
||||
ok(water.tags.discards_up and JCA.db.j_drunkard.gives.discards_up,
|
||||
'The Water caution catches discard granters')
|
||||
ok(JCA.db.j_hit_the_road.wants.discards_up, 'and discard payoffs')
|
||||
|
||||
-- The Eye blocks repeat hand types (blind.lua:577): every hand-type cluster
|
||||
-- tag must be covered, so a one-hand build always hears about it.
|
||||
local eye = JCA.boss_kills.bl_eye
|
||||
for _, t in ipairs({'pair', 'two_pair', 'three_kind', 'four_kind', 'straight', 'flush'}) do
|
||||
ok(eye.tags[t], ('The Eye covers the %s cluster'):format(t))
|
||||
end
|
||||
ok(not eye.tags.hearts, 'but The Eye does not touch suit tags (suits repeat fine)')
|
||||
|
||||
-- Upcoming-boss reading: warn while the boss is ahead, stay quiet once it
|
||||
-- is dealt with.
|
||||
|
||||
Reference in New Issue
Block a user