diff --git a/profiles/openrouter/openrouter-aion-2.yml b/profiles/openrouter/openrouter-aion-2.yml new file mode 100644 index 0000000..35e2a5e --- /dev/null +++ b/profiles/openrouter/openrouter-aion-2.yml @@ -0,0 +1,8 @@ +id: openrouter-aion-2 +endpoint: https://openrouter.ai/api/v1 +model: aion-labs/aion-2.0 +temperature: 0.72 +reasoning_effort: high +top_p: 0.95 +timeout_seconds: 180 +api_key_env: OPENROUTER_API_KEY diff --git a/prompts/automation-pipeline-dnd/analyze/hostile_rumors/rumors.system.md b/prompts/automation-pipeline-dnd/analyze/hostile_rumors/rumors.system.md new file mode 100644 index 0000000..1544d03 --- /dev/null +++ b/prompts/automation-pipeline-dnd/analyze/hostile_rumors/rumors.system.md @@ -0,0 +1,7 @@ +You are a creative assistant tasked with writing an artifact for a Dungeons & Dragons campaign: Bad-Faith Rumors and Absurd Public Grievances. + +Your goal is to generate hostile, unfair, funny, irrational, self-interested, bureaucratic, sanctimonious, economically anxious, jealous, or jurisdiction-obsessed rumors based on an in-universe session recap. Your audience, the players, should find the output humorous because the rumors are so greviously unfair to the party. + +These rumors are not canon. They are not objective. They should not be fair. They represent what hostile, petty, foolish, self-interested, terrified, conspiratorial, sanctimonious, jealous, and/or economically motivated people might say after hearing partial, garbled, biased, or context-free accounts of the events that occurred during the campaign. + +The user will provide an in-universe session recap. Treat it as loose inspiration for what actually happened. diff --git a/prompts/automation-pipeline-dnd/analyze/hostile_rumors/rumors.yml b/prompts/automation-pipeline-dnd/analyze/hostile_rumors/rumors.yml new file mode 100644 index 0000000..a273aa9 --- /dev/null +++ b/prompts/automation-pipeline-dnd/analyze/hostile_rumors/rumors.yml @@ -0,0 +1,23 @@ +id: dnd.hostile_rumors +version: "1.0.0" +default_profile: openrouter-aion-2 +description: D&D session rumor sheet +inputs: + - name: recap + required: true + content_type: text + description: Session recap from the current session +messages: + - role: system + content_file: ./recap.system.md + - role: user + content_file: ./recap.user.md + - role: user + content: | + <<>> +output: + format: markdown + validation_mode: basic + repair_attempts: 0 diff --git a/prompts/automation-pipeline-dnd/analyze/hostile_rumors/runors.user.md b/prompts/automation-pipeline-dnd/analyze/hostile_rumors/runors.user.md new file mode 100644 index 0000000..18081cb --- /dev/null +++ b/prompts/automation-pipeline-dnd/analyze/hostile_rumors/runors.user.md @@ -0,0 +1,204 @@ +GENERAL RULES: + +* Generate exactly 5 rumors per section. +* There should be exactly 5 sections. +* Do not explain what actually happened. +* Do not include truth notes, DM-facing notes, corrections, or analysis. +* Do not defend the party. +* Do not make the rumors fair or balanced. +* Do not turn the rumors into confirmed canon. +* The output should consist only of in-world rumors, complaints, accusations, gossip, overheard remarks, or quoted opinions. +* Make the rumors specific, voice-driven, and entertaining. +* Avoid bland summaries like “Some people distrust the party.” +* Prefer concrete grievances, petty details, moral panic, overwrought accusations, absurd certainty, and wildly disproportionate reactions. +* Each section should have a distinct worldview and repeating comic pattern. +* Sections should be at least faintly inspired by the session recap, but the speakers may misunderstand, exaggerate, misattribute, or maliciously reinterpret what happened. + +STYLE: +Write each rumor as something a person might actually say in a tavern, temple courtyard, market stall, counting room, adventurers’ guild, wizard college, noble salon, alley, farm road, village square, guard post, municipal office, inn kitchen, caravan yard, or merchants’ exchange. + +Combine D&D appropriate names with vivid speaker labels. Examples of speaker labels include: + +* Bitter turnip farmer +* Sanctimonious junior priest of Tyr +* Disgruntled sellsword captain +* Jaded innkeeper +* Waterdeep wool factor +* Baldur’s Gate ship insurer +* Overworked stablemaster +* Deputy assistant road warden +* Harbor tariff clerk +* Retired cobbler who blames adventurers for everything + +Do not over-explain the speakers. Their worldview should come through in the rumor itself. + +OUTPUT FORMAT: + +# Rumor Sheet: [Invent a colorful title based on the session] + +## I. Overheard at the Local Farmer's Market + +Generate 5 rumors from hostile commoners who are entirely focused on the negative effects they personally suffered or believe they suffered. + +These people give the party no benefit of the doubt. They focus entirely on collateral damage, inconvenience, noise, danger, property loss, livestock panic, crop damage, bad smells, broken roads, unpaid tabs, frightened children, or emotional distress. + +They ignore any benefit the party may have provided. For example, if the party killed a dragon that was terrorizing the town, these commoners would complain that an errant Sacred Flame singed their corn field, that dragon corpses lower property values, or that “heroes” never pay for fence repair. + +Each rumor should: + +* Be entirely self-centered. +* Mention only the speaker’s personal inconvenience, loss, fear, or grievance. +* Ignore all broader context or benefits. +* Avoid giving the party any credit. +* End with a line meaning: “These adventurers don’t even care about people like me.” + +You may vary the exact wording, but every rumor in this section should end with that kind of sentiment. + +Examples of the desired pattern: + +* "Those damn Flame Strikes they were casting from the walls? Set my best pumpkin patch ablaze. Twenty bushels of future pie, gone to ash. These adventurers don't even care about people like me." +* "The temple was on 'lockdown' for a full day. Couldn't get my weekly blessing for the healing poultices. My entire stock lost its potency. These adventurers don't even think about folk like us." + +**Particularly preferred angle:** if the party defeated one or more monsters, and the transcript does not expressly state that the party disposed of the corpse(s), include a rumor from a commoner complaining about the corpse, the smell, where it landed, or its effect on their property values. + +Format: +**[Speaker name, Speaker type]:** “[Rumor.]” + +## II. Overheard at the Temple of Tyr + +Generate 5 rumors from hostile, extreme, or obsessive followers of Tyr who irrationally hate the party. + +These are not calm, wise, or representative priests. They are zealots, scolds, fanatics, frustrated doctrinal pedants, self-appointed moral auditors, or temple-adjacent busybodies who interpret every rumor about the party through the lens of procedure, authorization, and judgment. + +Each rumor should follow this general pattern: + +1. The party did something. +2. The speaker claims that thing violated a rule, regulation, temple procedure, writ, ordinance, oath protocol, evidentiary standard, chain of custody, filing requirement, authorization process, or judicial custom. +3. The alleged offense may be tiny, imagined, irrelevant, or obviously absurd. +4. The speaker’s anger is completely and wildly out of proportion. +5. The rumor ends with a melodramatic vow of justice. + +Each rumor should end with something similar to: +“By Tyr’s hammer, if it takes my dying breath, I will avenge this wrong. They must be brought to justice.” + +You may vary the exact wording, but every rumor in this section should end with that kind of wildly disproportionate oath. + +Good angles: + +* Acting without prior authorization. +* Failing to submit the correct form. +* Intervening before a proper hearing. +* Destroying evidence while calling it “heroism.” +* Using magic without a temple-certified observer. +* Speaking to witnesses out of sequence. +* Failing to preserve a monster corpse for lawful review. +* Making tactical decisions without a writ of emergency necessity. +* Failing to give evil a properly documented opportunity to object. + +Format: +**[Speaker name, Speaker type]:** “[Rumor.]” + +## III. Overheard at the Rusty Scabbard Tavern + +Generate 5 rumors from rival adventurers, failed adventurers, retired adventurers, mercenaries, bounty hunters, dungeon-delvers, sellsword captains, tavern braggarts, monster hunters, or “licensed professionals” who insist the party did everything wrong. + +These speakers are absolutely, positively, under no circumstances jealous. + +They believe the party succeeded only through luck, favoritism, recklessness, stolen glory, amateur tactics, divine hand-holding, suspicious timing, or the collapse of professional standards. They are offended that anyone is impressed by the party. + +Each rumor should: + +* Reinterpret success as luck, recklessness, or fraud. +* Suggest that a “real professional” would have handled the matter better. +* Complain that the party ruined the opportunity for someone more qualified. +* Make the speaker sound insecure, bitter, or comically self-important. +* Avoid giving the party sincere credit. + +Good angles: + +* “We would have done it properly.” +* “They got lucky.” +* “Anyone can survive danger once.” +* “That contract should have gone to professionals.” +* “They ruined the bounty structure.” +* “They jumped in before respectable adventurers could submit proposals.” +* "Just look at the mess they left behind." + +Format: +**[Speaker name, Speaker type]:** “[Rumor.]” + +## IV. Overheard at the Chamber of Commerce + +Generate 5 rumors from business owners, merchants, tradespeople, hospitality workers, innkeepers, tavern owners, stablemasters, caravan operators, suppliers, and shopkeepers. + +These people give the party no benefit of the doubt. They view events solely through their observed effects on: + +* supply chains, +* customer traffic, +* order volume, +* commodity prices, +* room occupancy, +* meal service, +* stable capacity, +* caravan schedules, +* port throughput, +* inventory planning, +* grain prices, +* ale prices, +* mule availability, +* lamp oil demand, +* linen replacement, +* insurance rates, +* tariffs, +* credit, +* investor confidence, +* or the cost of repairing furniture after adventurers attract trouble. + +They ignore any benefit the party may have provided. For example, if the party killed a dragon that was terrorizing the town, these business owners would complain that an errant Sacred Flame singed their roof, that reports of violence scare tourists away, or that the dragon corpse is blocking one of the roads into town and their incoming shipment of sunflower oil is delayed. + +Each rumor should sound like someone turning a crisis, victory, magical event, monster attack, road closure, divine omen, faction conflict, or public panic into a complaint about business. + +Format: +**[Speaker name, Speaker type]:** “[Rumor.]” + +## V. Overheard at the Town Hall + +Generate 5 rumors from petty local officials, minor bureaucrats, municipal clerks, deputy reeves, under-sheriffs, harbor inspectors, road wardens, toll assessors, customs scribes, emergency-notification functionaries, corpse-disposal officers, bridge authorities, public-square usage regulators, district magistrate aides, or other small officials defending their tiny domain of authority. + +These speakers are not primarily religious zealots. Do not make this section about Tyr. Their concern is jurisdiction, procedure, authority, local governance, office protocol, and the unbearable insult of not being consulted. + +They are furious because the party acted during a crisis without respecting the speaker’s office, process, forms, boundaries, notices, review periods, inspection rights, signage requirements, permit authority, or ceremonial role. + +Each rumor should: + +* Treat a minor jurisdictional or administrative issue as the central problem. +* Make the official sound petty, self-important, and aggrieved. +* Acknowledge danger only as something that should have been routed through the proper office. +* Imply that the party’s real offense was bypassing local authority. +* Avoid sounding like a grand legal crusade; this is small-office resentment, not holy justice. + +Good angles: + +* “Nobody cleared this with my office.” +* “That road obstruction was under my authority.” +* “Monster remains require a disposal notice.” +* “Public spellcasting within three cart-lengths of a market stall requires a posted warning.” +* “The square was not approved for emergency heroics.” +* “There is a process for this.” +* “Had they waited three business days, we could have convened a preliminary review.” + +**Particularly preferred angle:** if the party defeated one or more monsters, and the transcript does not expressly state that the party disposed of the corpse(s), include a rumor from a local official in charge of corpse disposal complaining about the large, unusual, or unusually large quantity of corpses they now have to deal with. + +Format: +**[Speaker name, Speaker title]:** “[Rumor.]” + +FINAL CHECK: +Before finalizing, make sure: + +* There are exactly 5 rumors in each of the 5 sections. +* The rumors are fun to read aloud. +* Each section has a distinct worldview and repeating comic pattern. +* The party is treated unfairly throughout. +* The rumors are non-canonical and not presented as truth. +* Each rumor is at least faintly inspired by the session recap. +* No section includes factual correction, explanation, truth notes, DM-facing notes, or analysis. \ No newline at end of file