mirror of
https://github.com/prosolis/gogobee.git
synced 2026-07-15 00:32:40 +00:00
news: Pete stops repeating what TwinBee just said in the room
Priority tier is the only thing that makes Pete post a live Matrix beat, and the only two priority facts gogobee filed - zone_first and death - are both moments TwinBee narrates in-room as they happen. Every live beat was an echo. File them as bulletins: still on the site, still in the daily digest, no second telling to the people who were there.
This commit is contained in:
@@ -579,9 +579,14 @@ func markAdventureDead(userID id.UserID, source, location string) {
|
|||||||
emitDeathNews(userID, location)
|
emitDeathNews(userID, location)
|
||||||
}
|
}
|
||||||
|
|
||||||
// emitDeathNews files a PRIORITY death dispatch to Pete's adventure news. No-op
|
// emitDeathNews files a BULLETIN death dispatch to Pete's adventure news. No-op
|
||||||
// unless the seam is enabled. Uses the character name (never the Matrix handle);
|
// unless the seam is enabled. Uses the character name (never the Matrix handle);
|
||||||
// skips silently if the name is unknown.
|
// skips silently if the name is unknown.
|
||||||
|
//
|
||||||
|
// Bulletin, not priority: the room watched the character go down in TwinBee's
|
||||||
|
// narration, and a priority fact is what makes Pete post a live beat — he'd be
|
||||||
|
// breaking the news to the people who were there. The site row and the digest
|
||||||
|
// still carry it.
|
||||||
func emitDeathNews(userID id.UserID, location string) {
|
func emitDeathNews(userID id.UserID, location string) {
|
||||||
// Gate before the char lookups: markAdventureDead fires per-member on a
|
// Gate before the char lookups: markAdventureDead fires per-member on a
|
||||||
// party wipe and in the sim harness, so skip the DB reads when disabled.
|
// party wipe and in the sim harness, so skip the DB reads when disabled.
|
||||||
@@ -597,7 +602,7 @@ func emitDeathNews(userID id.UserID, location string) {
|
|||||||
emitFact(peteclient.Fact{
|
emitFact(peteclient.Fact{
|
||||||
GUID: fmt.Sprintf("death:%s:%d", eventToken(userID, fmt.Sprintf("%d", ts)), ts),
|
GUID: fmt.Sprintf("death:%s:%d", eventToken(userID, fmt.Sprintf("%d", ts)), ts),
|
||||||
EventType: "death",
|
EventType: "death",
|
||||||
Tier: "priority",
|
Tier: "bulletin",
|
||||||
Subject: name,
|
Subject: name,
|
||||||
Zone: location,
|
Zone: location,
|
||||||
Level: lvl,
|
Level: lvl,
|
||||||
|
|||||||
@@ -258,10 +258,16 @@ func claimRealmFirst(kind, target string) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// emitZoneClearNews files a zone-clear dispatch (boss down = zone cleared). The
|
// emitZoneClearNews files a zone-clear dispatch (boss down = zone cleared). The
|
||||||
// realm's first clear of a zone is a PRIORITY "zone_first"; later clears are a
|
// realm's first clear of a zone is a "zone_first"; later clears are a
|
||||||
// BULLETIN "zone_clear". The event_type and the GUID prefix track the tier so
|
// "zone_clear". The event_type and the GUID prefix track which, so Pete
|
||||||
// Pete templates and labels a repeat as a repeat, not a first-ever. Character
|
// templates and labels a repeat as a repeat, not a first-ever. Character name
|
||||||
// name only; no-op unless the seam is enabled.
|
// only; no-op unless the seam is enabled.
|
||||||
|
//
|
||||||
|
// BULLETIN either way: TwinBee announces the clear in the room as it happens,
|
||||||
|
// and priority tier is what makes Pete post a live beat — so a priority
|
||||||
|
// zone_first would just echo TwinBee back at the same people. Bulletin still
|
||||||
|
// gets the story onto the site and into the daily digest, where it reads as a
|
||||||
|
// roundup rather than a repeat.
|
||||||
func emitZoneClearNews(userID id.UserID, exp *Expedition) {
|
func emitZoneClearNews(userID id.UserID, exp *Expedition) {
|
||||||
if !peteclient.Enabled() || !newsEmissionOn() {
|
if !peteclient.Enabled() || !newsEmissionOn() {
|
||||||
return
|
return
|
||||||
@@ -270,9 +276,9 @@ func emitZoneClearNews(userID id.UserID, exp *Expedition) {
|
|||||||
// genuine first clear still seeds news_realm_firsts. Otherwise the next
|
// genuine first clear still seeds news_realm_firsts. Otherwise the next
|
||||||
// named clearer would claim it and be mis-announced as the first-ever.
|
// named clearer would claim it and be mis-announced as the first-ever.
|
||||||
// Mirrors backfillZoneFirsts, which claims before its own name check.
|
// Mirrors backfillZoneFirsts, which claims before its own name check.
|
||||||
eventType, tier := "zone_clear", "bulletin"
|
eventType := "zone_clear"
|
||||||
if claimRealmFirst("zone", string(exp.ZoneID)) {
|
if claimRealmFirst("zone", string(exp.ZoneID)) {
|
||||||
eventType, tier = "zone_first", "priority"
|
eventType = "zone_first"
|
||||||
}
|
}
|
||||||
name := charName(userID)
|
name := charName(userID)
|
||||||
if name == "" {
|
if name == "" {
|
||||||
@@ -291,7 +297,7 @@ func emitZoneClearNews(userID id.UserID, exp *Expedition) {
|
|||||||
emitFact(peteclient.Fact{
|
emitFact(peteclient.Fact{
|
||||||
GUID: fmt.Sprintf("%s:%s:%s:%d", eventType, eventToken(userID, disc), exp.ZoneID, ts),
|
GUID: fmt.Sprintf("%s:%s:%s:%d", eventType, eventToken(userID, disc), exp.ZoneID, ts),
|
||||||
EventType: eventType,
|
EventType: eventType,
|
||||||
Tier: tier,
|
Tier: "bulletin",
|
||||||
Subject: name,
|
Subject: name,
|
||||||
Zone: zone.Display,
|
Zone: zone.Display,
|
||||||
Region: region,
|
Region: region,
|
||||||
|
|||||||
Reference in New Issue
Block a user