Adv 2.0 D&D Phase 11 D7: !zone taunt / !zone compliment

Wires the prewritten flavor.TauntResponses and flavor.ComplimentResponses
pools to the existing MoodEventTaunt (-10) / MoodEventCompliment (+5)
mood deltas. Both subcommands require an active run and report the new
mood band after applying the delta. Deterministic line selection per
(runID, roomIdx) so repeated taunts in the same room are stable.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
prosolis
2026-05-08 14:17:33 -07:00
parent ebce89b6c6
commit 71594a0d89
3 changed files with 167 additions and 1 deletions

View File

@@ -360,6 +360,27 @@ func twinBeeLine(zoneID ZoneID, kind GMNarrationType, runID string, roomIdx int)
return "🎭 **TwinBee:** " + line
}
// tauntResponseLine renders a deterministic TwinBee reply to !zone taunt
// from the prewritten flavor.TauntResponses pool. roomIdx is folded so
// repeated taunts in the same room are stable but cross-room taunts vary.
func tauntResponseLine(runID string, roomIdx int) string {
line := pickLineDeterministic(flavor.TauntResponses, runID, roomIdx^0x4A8D9F25)
if line == "" {
return ""
}
return "🎭 **TwinBee:** " + line
}
// complimentResponseLine renders a deterministic TwinBee reply to
// !zone compliment from the prewritten flavor.ComplimentResponses pool.
func complimentResponseLine(runID string, roomIdx int) string {
line := pickLineDeterministic(flavor.ComplimentResponses, runID, roomIdx^0x3E172B6C)
if line == "" {
return ""
}
return "🎭 **TwinBee:** " + line
}
// ── Mood event table & application ───────────────────────────────────────────
// GMMoodEvent enumerates the mood-modifier triggers from design doc §3.2.