-- Seed data: Storm King's Thunder campaign with 10 sessions of transcript data
-- Players:
--   DM: zackpollard (185097470215192579)
--   Theron (human paladin): akeboshiwind / Oliver (228227391007227904)
--   Bramble (halfling rogue): jellybain / JellyBain (99270555361902592)
--   Elara (elf wizard): alice.mary / alice (758311077204459571)
--   Grimnir (dwarf fighter): happy.moose / HappyMoose (794021028254187530)
--   Lyra (half-elf bard): rorymcdihroy / Gelfip (299691308010831874)

BEGIN;

-- Create campaign
INSERT INTO campaigns (guild_id, name, is_active, dm_user_id)
VALUES ('573985236828946443', 'Storm Kings Thunder', false, '185097470215192579')
RETURNING id;

-- We'll use currval to reference the campaign
-- Character mappings
INSERT INTO character_mappings (user_id, guild_id, campaign_id, character_name) VALUES
('228227391007227904', '573985236828946443', currval('campaigns_id_seq'), 'Theron Brightblade'),
('99270555361902592', '573985236828946443', currval('campaigns_id_seq'), 'Bramble Thornwick'),
('758311077204459571', '573985236828946443', currval('campaigns_id_seq'), 'Elara Moonwhisper'),
('794021028254187530', '573985236828946443', currval('campaigns_id_seq'), 'Grimnir Stonefist'),
('299691308010831874', '573985236828946443', currval('campaigns_id_seq'), 'Lyra Stormwind');

-- ============================================================
-- SESSION 1: A Giant Problem (Nightstone under attack)
-- ============================================================
INSERT INTO sessions (guild_id, channel_id, status, started_at, ended_at, summary, campaign_id, audio_dir)
VALUES ('573985236828946443', '578288492275302400', 'complete',
  '2026-01-05 19:00:00+00', '2026-01-05 22:30:00+00', NULL, currval('campaigns_id_seq'), '')
RETURNING id;

INSERT INTO transcript_segments (session_id, user_id, start_time, end_time, text) VALUES
(currval('sessions_id_seq'), '185097470215192579', 0, 15, 'Alright everyone, welcome to Storm Kings Thunder. So you have all been traveling along the High Road heading north toward the small settlement of Nightstone. You were each given different reasons to visit this town, but your paths have converged on the same dusty road.'),
(currval('sessions_id_seq'), '185097470215192579', 16, 28, 'As you crest a hill, you can see the village in the distance. But something is wrong. Even from here you can see large boulders scattered around the town, some buildings have been crushed. A wooden drawbridge over the moat hangs open, and you can hear a bell ringing continuously from the church.'),
(currval('sessions_id_seq'), '228227391007227904', 29, 35, 'I draw my longsword and pick up the pace. Something terrible has happened here. Tyr demands we investigate.'),
(currval('sessions_id_seq'), '758311077204459571', 36, 42, 'Wait, hold on Theron. We should be cautious. I cast Detect Magic as we approach to see if there are any magical signatures in the area.'),
(currval('sessions_id_seq'), '99270555361902592', 43, 48, 'While she does that I want to stealth ahead and scout the drawbridge. Can I see anything moving in the town?'),
(currval('sessions_id_seq'), '185097470215192579', 49, 58, 'Bramble, give me a stealth check. And Elara, your Detect Magic picks up a faint abjuration aura coming from somewhere near the center of town, but its hard to pinpoint from this distance.'),
(currval('sessions_id_seq'), '99270555361902592', 59, 62, 'That is a nineteen for stealth.'),
(currval('sessions_id_seq'), '185097470215192579', 63, 78, 'Nice. Bramble, you creep forward across the drawbridge. The chains are intact, it looks like it was just left open. Inside the town you can see massive boulders, some ten feet across, have crashed through rooftops and into the square. The church bell is ringing on its own, swinging wildly. You spot two worgs gnawing on something near the town square, and you can hear goblin voices coming from several of the buildings.'),
(currval('sessions_id_seq'), '99270555361902592', 79, 85, 'I sneak back to the group. Guys, the town has been bombarded by giant boulders. There are worgs and goblins looting the place. No sign of any townspeople.'),
(currval('sessions_id_seq'), '794021028254187530', 86, 92, 'Goblins! I knew it. I ready my battleaxe and my shield. Grimnir is ready to crack some goblin skulls. How many are we talking about?'),
(currval('sessions_id_seq'), '299691308010831874', 93, 100, 'Before we charge in, maybe I should try to figure out what happened. The boulders, were they thrown? Dropped from above? I want to examine one of the impact craters from here with my spyglass.'),
(currval('sessions_id_seq'), '185097470215192579', 101, 112, 'Good thinking Lyra. Looking through your spyglass at the craters, the boulders came from above, almost straight down. These werent catapulted, they were dropped from something flying overhead. You also notice that in the center of town, where the village square should be, theres a large hole in the ground. The Nightstone, the obsidian monolith the town was named after, is missing.'),
(currval('sessions_id_seq'), '758311077204459571', 113, 120, 'Cloud giants. It has to be. They can create cloud castles that fly. They must have bombarded the town from above and stolen the Nightstone. But why would cloud giants want an obsidian monolith?'),
(currval('sessions_id_seq'), '228227391007227904', 121, 128, 'We can figure that out later. Right now there are people who might need help and goblins in the town. I say we clear out the goblins first. Bramble, how many worgs did you see?'),
(currval('sessions_id_seq'), '99270555361902592', 129, 133, 'Two worgs in the square, and I could hear goblins in at least three or four buildings. Maybe a dozen total?'),
(currval('sessions_id_seq'), '794021028254187530', 134, 139, 'A dozen goblins is nothing for us. Lets go. I want to charge straight into the square and engage those worgs before they notice us.'),
(currval('sessions_id_seq'), '185097470215192579', 140, 148, 'Alright, everyone roll initiative. The worgs spot Grimnir charging across the drawbridge and snarl, baring their teeth. From the trading post to your left, three goblins come tumbling out the door, shortbows at the ready.'),
(currval('sessions_id_seq'), '794021028254187530', 149, 152, 'Fourteen for initiative.'),
(currval('sessions_id_seq'), '228227391007227904', 153, 155, 'Seventeen.'),
(currval('sessions_id_seq'), '99270555361902592', 156, 158, 'Twenty two.'),
(currval('sessions_id_seq'), '758311077204459571', 159, 161, 'Eleven.'),
(currval('sessions_id_seq'), '299691308010831874', 162, 164, 'Fifteen.'),
(currval('sessions_id_seq'), '185097470215192579', 165, 182, 'Bramble, you are up first. The two worgs are about forty feet ahead in the square, the three goblins are thirty feet to the left by the trading post. There are two more goblins emerging from the inn to your right at about twenty five feet.'),
(currval('sessions_id_seq'), '99270555361902592', 183, 192, 'I want to use my bonus action to hide behind the well in the center, then throw a dagger at the nearest goblin by the trading post. Sneak attack since I am hidden. That is a twenty one to hit, and damage is, oh nice, twenty two damage with sneak attack.'),
(currval('sessions_id_seq'), '185097470215192579', 193, 198, 'The dagger catches the goblin right in the throat and it drops immediately. The other two goblins by the trading post shriek in alarm. Theron, you are next.'),
(currval('sessions_id_seq'), '228227391007227904', 199, 210, 'I charge the nearest worg and attack with my longsword. Using Divine Smite as well. That is a nineteen to hit. And for damage that is eight slashing plus nine radiant from the smite. Seventeen total.'),
(currval('sessions_id_seq'), '185097470215192579', 211, 218, 'Your blade erupts with golden light as it bites into the worg. It yelps and staggers but its still standing, blood matting its fur. The radiant energy seems to have really hurt it. Lyra, you are up.'),
(currval('sessions_id_seq'), '299691308010831874', 219, 228, 'I pull out my lute and cast Dissonant Whispers on the second worg. It needs to make a Wisdom save.'),
(currval('sessions_id_seq'), '185097470215192579', 229, 232, 'That is a seven, it fails.'),
(currval('sessions_id_seq'), '299691308010831874', 233, 238, 'Twelve psychic damage and it has to use its reaction to run away from me.'),
(currval('sessions_id_seq'), '185097470215192579', 239, 248, 'The worg howls in pain, clutching its head, and bolts away from Lyra, provoking opportunity attacks from Grimnir as it passes. The goblins are looking nervous now, seeing their worg companions getting torn apart.'),
(currval('sessions_id_seq'), '794021028254187530', 249, 260, 'I take that opportunity attack! That hits, sixteen to hit, nine damage with my battleaxe. Then on my actual turn I want to charge the goblins coming out of the inn. I use Action Surge and attack twice. First attack is twenty to hit, twelve damage. Second attack, fourteen to hit.'),
(currval('sessions_id_seq'), '185097470215192579', 261, 268, 'The fleeing worg takes Grimnirs axe to the flank and collapses. Both attacks on the goblins hit, the first one is cleaved nearly in two and the second takes a nasty gash across the chest but stays up.'),
(currval('sessions_id_seq'), '758311077204459571', 269, 280, 'My turn? I cast Thunderwave centered to catch the two remaining goblins by the trading post. They need to make Constitution saves. The spell DC is fifteen.'),
(currval('sessions_id_seq'), '185097470215192579', 281, 290, 'Six and eight, both fail. Roll damage.'),
(currval('sessions_id_seq'), '758311077204459571', 291, 296, 'Fourteen thunder damage each and they are pushed ten feet back.'),
(currval('sessions_id_seq'), '185097470215192579', 297, 310, 'The thunderous boom echoes through the ruined town. Both goblins are blasted backward into the wall of the trading post and crumple to the ground. The remaining goblins, hearing the commotion, start fleeing north through the town. You can see four or five of them scrambling over rubble and heading for the north gate.'),
(currval('sessions_id_seq'), '228227391007227904', 311, 316, 'Let them run. We need to search for survivors. Is anyone in these buildings?'),
(currval('sessions_id_seq'), '185097470215192579', 317, 335, 'You spend the next hour searching the town. Most of the buildings have taken some damage from the boulders but many are still standing. You find the body of the towns leader, Lady Velrosa Nandar, crushed under a boulder in her manor. In the church, the bell is still ringing, swinging from the impact of a boulder that hit the steeple. You find no living townspeople. They seem to have fled.'),
(currval('sessions_id_seq'), '299691308010831874', 337, 345, 'I want to search Lady Nandars manor more carefully. Maybe there are documents or journals that tell us more about the Nightstone and why the giants might want it.'),
(currval('sessions_id_seq'), '185097470215192579', 346, 360, 'Investigation check. You find a journal in her study. It describes the Nightstone as having been in the village for generations, long before the town was built around it. The last entry mentions strange cloud formations that had been appearing over the past few days. She was worried but thought nothing would come of it.'),
(currval('sessions_id_seq'), '758311077204459571', 361, 370, 'Cloud formations. So the cloud giants were scouting before they attacked. This was planned. They specifically wanted the Nightstone. We need to find out what it is and why they wanted it.'),
(currval('sessions_id_seq'), '794021028254187530', 371, 378, 'Where did the townspeople go though? We should track them. Maybe some guards at the north gate know something.'),
(currval('sessions_id_seq'), '185097470215192579', 379, 395, 'At the north gate you find tracks, many sets of footprints heading northeast into the hills. Mixed in with the human tracks are more goblin and worg tracks. It looks like the goblins followed the fleeing townspeople. Bramble, with your experience, you can tell the goblin tracks lead toward some caves in the hills about two miles north.'),
(currval('sessions_id_seq'), '99270555361902592', 396, 405, 'They have probably taken the villagers prisoner. Goblins love easy targets, and a bunch of scared fleeing townspeople would be perfect. We need to rescue them.'),
(currval('sessions_id_seq'), '228227391007227904', 410, 418, 'Agreed. We rest briefly, then head for those caves at first light. Tyr will not let innocent people suffer at the hands of goblins.'),
(currval('sessions_id_seq'), '185097470215192579', 419, 430, 'You take a short rest in the Nightstone Inn, barricading the doors. During the night, you hear the distant rumble of something massive moving through the clouds above, but nothing attacks. Dawn comes grey and cold. And that is where we will pick up next session. Great job everyone, you handled that goblin fight really well.');

-- ============================================================
-- SESSION 2: The Dripping Caves
-- ============================================================
INSERT INTO sessions (guild_id, channel_id, status, started_at, ended_at, summary, campaign_id, audio_dir)
VALUES ('573985236828946443', '578288492275302400', 'complete',
  '2026-01-12 19:00:00+00', '2026-01-12 22:15:00+00', NULL, currval('campaigns_id_seq'), '')
RETURNING id;

INSERT INTO transcript_segments (session_id, user_id, start_time, end_time, text) VALUES
(currval('sessions_id_seq'), '185097470215192579', 0, 12, 'Welcome back everyone. Last session you cleared goblins out of Nightstone and discovered the townspeople fled northeast. You found tracks leading to some caves. Its dawn and you are heading out.'),
(currval('sessions_id_seq'), '99270555361902592', 13, 20, 'I want to take point and follow the tracks. Survival check? I got a sixteen.'),
(currval('sessions_id_seq'), '185097470215192579', 21, 35, 'The tracks are easy to follow, the townspeople were panicked and didnt try to hide their trail. After about two hours of hiking through hilly terrain, you come to a rocky hillside with a large cave entrance. Water is dripping from the rocks above, and you can smell something foul from within. This is the Dripping Caves.'),
(currval('sessions_id_seq'), '758311077204459571', 37, 44, 'Can I use Arcana to determine if there are any magical wards or traps at the entrance?'),
(currval('sessions_id_seq'), '185097470215192579', 45, 50, 'Roll Arcana. With a fifteen, no magical wards that you can detect. This seems to be a natural cave system.'),
(currval('sessions_id_seq'), '794021028254187530', 51, 58, 'I have darkvision. I will go in first with my shield up. Bramble can sneak behind me.'),
(currval('sessions_id_seq'), '99270555361902592', 59, 65, 'Good plan. I will stay in Grimnirs shadow. Stealth is twenty.'),
(currval('sessions_id_seq'), '185097470215192579', 66, 82, 'You enter the caves. The floor is slick with water and bat guano. The passage opens into a large chamber about forty feet across. In the dim light Grimnir can see a crude pen made of logs and rope on the far side. Behind it are about fifteen townspeople, huddled together. Two goblins are standing guard near the pen, and sitting on a raised rock like a throne is a large fat goblin boss wearing a crude crown.'),
(currval('sessions_id_seq'), '299691308010831874', 83, 92, 'I whisper to the group. We need to be smart about this. The hostages are right there, if we start a fight the goblins might hurt them. I want to try to parley first. I step out and speak in Goblin. Hey boss, we want to make a deal for those humans.'),
(currval('sessions_id_seq'), '185097470215192579', 93, 110, 'The goblin boss, whose name is Hark, peers at you with beady eyes. He seems surprised anyone bothered to talk. In broken Common he says, Hark is boss now. Giants smash town, Hark take people. They worth much gold to Hark. You want them? You pay. Or you fight Hark and his warriors. Hark has many warriors in these caves.'),
(currval('sessions_id_seq'), '299691308010831874', 111, 120, 'I roll Persuasion to negotiate. I want to convince him that a bigger threat is coming and he should take a payoff and leave. Natural twenty! Plus seven thats a twenty seven.'),
(currval('sessions_id_seq'), '185097470215192579', 121, 138, 'Incredible. Hark listens to your impassioned speech about the giants returning and how his little cave will be the first thing they crush. His eyes go wide. He says, Smart elf-thing speaks true. Giants very big, very scary. Hark will take gold and go. One hundred gold for all the humans. Hark is generous.'),
(currval('sessions_id_seq'), '228227391007227904', 139, 145, 'I quietly pass Lyra my coin purse. We have about eighty gold between us all. Can she haggle?'),
(currval('sessions_id_seq'), '299691308010831874', 146, 155, 'I counter offer. Eighty gold and this shiny silver dagger. I pull out one of our spare daggers and polish it on my sleeve. Another Persuasion? Eighteen.'),
(currval('sessions_id_seq'), '185097470215192579', 156, 168, 'Hark snatches the dagger and examines it greedily. Hark accepts! Take the stinky humans. They eat too much anyway. He barks orders and the goblins unlock the pen. The townspeople stumble out, frightened but mostly unharmed. A woman named Morak Urgray steps forward. He is the innkeeper from Nightstone.'),
(currval('sessions_id_seq'), '794021028254187530', 170, 178, 'Morak, are you alright? We cleared the goblins from Nightstone but the town took heavy damage. What happened?'),
(currval('sessions_id_seq'), '185097470215192579', 179, 198, 'Morak tells you the story. Three days ago, a cloud giant castle appeared above the town. They bombarded Nightstone with boulders from above, then lowered giants on ropes who ripped the Nightstone monolith right out of the ground and carried it up to their castle. The townspeople fled during the bombardment. The goblins moved in after the giants left.'),
(currval('sessions_id_seq'), '758311077204459571', 199, 210, 'Morak, do you know anything about the Nightstone itself? Why would cloud giants want an obsidian monolith?'),
(currval('sessions_id_seq'), '185097470215192579', 211, 228, 'He shakes his head. Its been there since before anyone can remember. Some said it fell from the sky long ago. Lady Nandar might have known more but... he trails off when you tell him shes dead. He looks devastated. After a moment he says, Theres someone who might know. A friend of Lady Nandars in Bryn Shander, far to the north. A woman named Markham Southwell. Shes the sheriff there.'),
(currval('sessions_id_seq'), '228227391007227904', 229, 238, 'Bryn Shander. Thats in Icewind Dale, far north. Thats going to be a long journey. But if the sheriff knows about the Nightstone and the giants, we need to go.'),
(currval('sessions_id_seq'), '99270555361902592', 240, 250, 'Before we commit to a weeks travel, should we check if there are any other leads here? Morak, has anything else strange been happening?'),
(currval('sessions_id_seq'), '185097470215192579', 251, 270, 'Morak thinks for a moment. He says, Now that you mention it, travelers on the road have been talking about giant sightings all over the Sword Coast. Hill giants raiding farms near Goldenfields. Frost giants spotted near the northern towns. Even fire giants were seen near Triboar. Its like all the giants have gone mad at once. Something has broken in their world.'),
(currval('sessions_id_seq'), '758311077204459571', 271, 282, 'The Ordning. The giants social hierarchy, their caste system. If somethings happened to the Ordning, it would explain why all types of giants are acting up simultaneously. This is bigger than one stolen rock.'),
(currval('sessions_id_seq'), '299691308010831874', 283, 290, 'So we have giants going crazy all over the Sword Coast and we are five adventurers who just paid our last gold to some goblins. Great. Bryn Shander it is then.'),
(currval('sessions_id_seq'), '185097470215192579', 291, 305, 'You escort the townspeople back to Nightstone and help them begin repairs. Morak provides you with supplies for the journey and a letter of introduction to Sheriff Southwell. As you leave, he warns you that the road north is dangerous, especially with giants roaming. We will end there for tonight. Next session you will be traveling north toward Bryn Shander.');

-- ============================================================
-- SESSION 3: The Road North
-- ============================================================
INSERT INTO sessions (guild_id, channel_id, status, started_at, ended_at, summary, campaign_id, audio_dir)
VALUES ('573985236828946443', '578288492275302400', 'complete',
  '2026-01-19 19:00:00+00', '2026-01-19 22:00:00+00', NULL, currval('campaigns_id_seq'), '')
RETURNING id;

INSERT INTO transcript_segments (session_id, user_id, start_time, end_time, text) VALUES
(currval('sessions_id_seq'), '185097470215192579', 0, 15, 'When we left off, you had rescued the Nightstone villagers and were heading north toward Bryn Shander. Its been three days on the road. You have left the warm lowlands behind and the air is getting colder as you travel through the Dessarin Valley toward the Spine of the World mountains.'),
(currval('sessions_id_seq'), '794021028254187530', 16, 22, 'Am I comfortable in the cold? As a dwarf from the north I should be used to this.'),
(currval('sessions_id_seq'), '185097470215192579', 23, 30, 'Absolutely, Grimnir feels right at home. The rest of you however are pulling your cloaks tighter. Its only going to get colder.'),
(currval('sessions_id_seq'), '299691308010831874', 31, 40, 'I start playing a marching song on my lute to keep spirits up. Something about brave heroes heading north. Can I give everyone a sort of morale boost?'),
(currval('sessions_id_seq'), '185097470215192579', 41, 48, 'Sure, your Song of Rest will give everyone an extra d6 on their next short rest. The music echoes across the empty hills. A little too loudly perhaps.'),
(currval('sessions_id_seq'), '99270555361902592', 49, 56, 'I was going to say, maybe dont broadcast our position. I want to be watching for trouble. Perception check, seventeen.'),
(currval('sessions_id_seq'), '185097470215192579', 57, 75, 'Good instinct Bramble. About an hour after Lyras concert, you spot something on the road ahead. An overturned wagon, cargo scattered everywhere. And standing among the wreckage are two enormous figures, each about twenty feet tall with bluish grey skin and white hair. Frost giants. They appear to be sorting through the wagons contents, tossing aside anything they dont want.'),
(currval('sessions_id_seq'), '758311077204459571', 78, 88, 'Frost giants this far south? That confirms what Morak said about the Ordning breaking down. They shouldnt be raiding merchant wagons on the trade road. Can I recall anything about frost giant society? History check, twenty one.'),
(currval('sessions_id_seq'), '185097470215192579', 89, 105, 'Frost giants serve Jarl Storvald and live in the frozen north. They value strength and conquest above all. In the normal Ordning, frost giants rank below cloud and storm giants but above hill and fire giants. If the Ordning has truly collapsed, frost giants would be trying to prove their dominance to rise in the new hierarchy. Raiding and collecting trophies would be exactly how they do it.'),
(currval('sessions_id_seq'), '228227391007227904', 106, 115, 'Are there any survivors from the wagon? Can I see if anyone is trapped?'),
(currval('sessions_id_seq'), '185097470215192579', 116, 125, 'You can see a figure hiding behind one of the overturned wheels. A halfling merchant, trembling with fear. The frost giants havent noticed him yet, theyre focused on a locked chest they found in the wagon.'),
(currval('sessions_id_seq'), '99270555361902592', 126, 135, 'Can I sneak around to the halfling and get him out of there while they are distracted? I dont think we can fight two frost giants at our level.'),
(currval('sessions_id_seq'), '185097470215192579', 136, 142, 'Give me a stealth check. The giants are focused on the chest but they have keen senses.'),
(currval('sessions_id_seq'), '99270555361902592', 143, 146, 'Nineteen stealth.'),
(currval('sessions_id_seq'), '185097470215192579', 147, 160, 'You slip through the tall grass off the road and reach the halfling. He is terrified, eyes wide. His name is Felgolos and he whispers that the giants attacked his wagon out of nowhere, demanding something called the Ring of Winter. He doesnt have it and told them so, but they didnt believe him and started tearing the wagon apart.'),
(currval('sessions_id_seq'), '299691308010831874', 161, 170, 'The Ring of Winter. Thats a legendary artifact. Its supposed to grant power over cold and ice. If frost giants are searching for it, that could be their play to dominate the new Ordning. I whisper this to the group.'),
(currval('sessions_id_seq'), '794021028254187530', 171, 180, 'So we just let them tear up this poor halflings wagon? There has to be something we can do without getting squashed.'),
(currval('sessions_id_seq'), '228227391007227904', 182, 192, 'What if we create a distraction? Elara could use an illusion to draw them away while Bramble gets the halfling to safety. Then we just avoid the fight entirely.'),
(currval('sessions_id_seq'), '758311077204459571', 193, 205, 'I can do that. I cast Major Image to create the sound and appearance of a large caravan approaching from the south, complete with horses and wagon sounds. The giants should investigate that instead.'),
(currval('sessions_id_seq'), '185097470215192579', 206, 222, 'The illusion shimmers into existence down the road. The frost giants look up, one grunts to the other in Giant. They drop the chest and lumber toward the illusory caravan. Bramble, you have maybe two minutes before they figure out its not real.'),
(currval('sessions_id_seq'), '99270555361902592', 223, 232, 'I grab the halfling and we book it. Come on little guy, time to go. I lead him back to the group and we get off the road immediately.'),
(currval('sessions_id_seq'), '185097470215192579', 233, 248, 'You hear a roar of frustration from behind you as the giants realize the caravan was fake. But by then you are well hidden in the tree line. Felgolos is grateful. He gives you a potion of healing each and tells you that if you are heading to Bryn Shander, you should seek out a frost giant named Harshnag who has been seen in the area. Unlike other frost giants, Harshnag is said to be friendly to small folk and opposes the giants rampage.'),
(currval('sessions_id_seq'), '758311077204459571', 249, 258, 'A friendly frost giant? Thats unusual. But if the Ordning really has collapsed, it makes sense that not all giants would agree with whats happening. Harshnag could be a valuable ally.'),
(currval('sessions_id_seq'), '185097470215192579', 259, 280, 'You continue north for several more days, the temperature dropping steadily. The landscape changes from rolling hills to snow-covered tundra. On the seventh day of travel, you crest a ridge and see Bryn Shander in the distance. Its a walled town perched on a hill, smoke rising from hundreds of chimneys. The town looks intact but there are extra guards on the walls and you can see large wooden barricades being constructed outside the gates. They are preparing for something.'),
(currval('sessions_id_seq'), '228227391007227904', 281, 288, 'They know the giants are coming. Lets get inside and find Sheriff Southwell before whatever they are preparing for arrives.'),
(currval('sessions_id_seq'), '185097470215192579', 289, 300, 'The guards at the gate are suspicious but Moraks letter gets you through. And that is where we will end tonight. Next session you will be in Bryn Shander dealing with the frost giant threat.');

-- ============================================================
-- SESSION 4: The Siege of Bryn Shander
-- ============================================================
INSERT INTO sessions (guild_id, channel_id, status, started_at, ended_at, summary, campaign_id, audio_dir)
VALUES ('573985236828946443', '578288492275302400', 'complete',
  '2026-01-26 19:00:00+00', '2026-01-26 22:45:00+00', NULL, currval('campaigns_id_seq'), '')
RETURNING id;

INSERT INTO transcript_segments (session_id, user_id, start_time, end_time, text) VALUES
(currval('sessions_id_seq'), '185097470215192579', 0, 18, 'Last time you arrived at Bryn Shander and saw the town was fortifying. You are now inside the walls meeting with Sheriff Markham Southwell. Shes a no-nonsense woman in her fifties with a scar across her jaw. She reads Moraks letter and looks at you grimly.'),
(currval('sessions_id_seq'), '185097470215192579', 19, 38, 'She says, So the cloud giants hit Nightstone too. We have been getting reports from all over. Hill giants at Goldenfields, fire giants near Ironslag, and now frost giants are heading straight for us. Our scouts say a warband of at least twelve frost giants and their winter wolves are two days march south. They are looking for the Ring of Winter, same as the ones you encountered on the road.'),
(currval('sessions_id_seq'), '228227391007227904', 40, 50, 'Twelve frost giants against a town this size. What are the defenses like? How many guards do you have?'),
(currval('sessions_id_seq'), '185097470215192579', 51, 65, 'Southwell sighs. We have about forty town guards and maybe twenty militia volunteers. The walls are strong but they were built to keep out barbarian raiders, not giants. A single frost giant can lob a boulder over those walls. If they decide to assault us directly, we will hold for maybe an hour.'),
(currval('sessions_id_seq'), '758311077204459571', 66, 78, 'We need to think strategically then. We cant fight them head on. Whats the terrain like around the town? Any natural chokepoints we could use?'),
(currval('sessions_id_seq'), '185097470215192579', 79, 92, 'The town sits on a hill, which helps. There are two gates, north and south. The southern approach has a narrow path between rock outcroppings, thats where they will likely come from since its the road from the south. Good thinking, that could be a chokepoint.'),
(currval('sessions_id_seq'), '299691308010831874', 93, 105, 'What if we dont have to fight them at all? They want the Ring of Winter, right? What if we can convince them its not here? Or better yet, give them a lead on where it actually is? Does anyone in town know anything about the Ring?'),
(currval('sessions_id_seq'), '185097470215192579', 106, 120, 'Southwell thinks and says, Theres an old sage here named Beldora who studies giant lore. She might know something. Let me send for her. A while later a tiny elderly gnome woman arrives, carrying an armload of scrolls.'),
(currval('sessions_id_seq'), '758311077204459571', 121, 135, 'Beldora, we need to know everything you can tell us about the Ring of Winter and why the frost giants want it so badly.'),
(currval('sessions_id_seq'), '185097470215192579', 136, 158, 'Beldora adjusts her spectacles and launches into a lecture. The Ring of Winter was last held by an explorer named Artus Cimber, who disappeared into the jungles of Chult decades ago. The ring grants mastery over ice and cold, it could make a frost giant jarl nearly unstoppable. With the Ordning shattered by the disappearance of the storm giant king Hekaton, every giant type is scrambling for an edge. Jarl Storvald believes the Ring will prove frost giant supremacy.'),
(currval('sessions_id_seq'), '794021028254187530', 159, 168, 'Wait, the storm giant king disappeared? What happened to him?'),
(currval('sessions_id_seq'), '185097470215192579', 169, 185, 'Beldora shakes her head. Nobody knows for certain. King Hekaton ruled from his court in the Maelstrom, deep beneath the sea. His queen, Neri, was murdered some time ago, and then Hekaton himself vanished. Without a storm giant king to enforce the Ordning, the hierarchy collapsed. Thats why every type of giant is fighting for dominance.'),
(currval('sessions_id_seq'), '228227391007227904', 186, 195, 'So the real problem isnt any one group of giants. Its that their king is missing. If we could find Hekaton and restore the Ordning, all of this chaos would stop.'),
(currval('sessions_id_seq'), '758311077204459571', 196, 206, 'That is a long term goal though. Right now we have twelve frost giants bearing down on this town. We need a plan for the next two days. Beldora, is there any way to redirect them?'),
(currval('sessions_id_seq'), '185097470215192579', 207, 220, 'Beldora says she has a sending scroll and could try to contact Artus Cimber to confirm he has the ring and is nowhere near here. If the frost giants could be told the ring is in Chult, they might leave. But someone would need to negotiate with them.'),
(currval('sessions_id_seq'), '299691308010831874', 221, 230, 'I volunteer to negotiate. I speak Giant from my college studies. And my Charisma is our best shot at talking down a frost giant warband.'),
(currval('sessions_id_seq'), '185097470215192579', 231, 245, 'Alright lets fast forward two days. The frost giants arrive as predicted. Their leader is a massive jarl named Drufi, covered in war paint and wearing a necklace of frozen skulls. She approaches the south gate with four frost giants flanking her, the rest hanging back. She bellows in Giant, demanding the town surrender the Ring of Winter or be destroyed.'),
(currval('sessions_id_seq'), '299691308010831874', 246, 262, 'I climb the wall so I am at eye level with her and respond in Giant. Mighty Drufi, the Ring of Winter is not here. It is in the jungles of Chult, held by the human Artus Cimber. We have proof. I hold up the sending scroll response that Beldora got. Persuasion check, thats a twenty with guidance.'),
(currval('sessions_id_seq'), '185097470215192579', 263, 280, 'Drufi snatches the scroll from you, which is terrifying given her hand is bigger than your entire torso. She reads it, nostrils flaring. She confers with her lieutenants in hushed Giant. Then she turns back. You speak true, small thing. Jarl Storvald will hear of this. But Drufi did not march all this way for nothing. She hurls a boulder at the wall next to you.'),
(currval('sessions_id_seq'), '794021028254187530', 281, 288, 'Is Lyra okay? I ready an action to catch her if the wall crumbles.'),
(currval('sessions_id_seq'), '185097470215192579', 289, 305, 'Lyra, make a Dexterity save. You got a fourteen, you manage to leap aside as the section of wall explodes. Grimnir catches you on the stairs. Drufi laughs and the frost giant warband turns and marches north, leaving a trail of frozen ground in their wake. Bryn Shander is saved, though that section of wall will need repairs.'),
(currval('sessions_id_seq'), '228227391007227904', 306, 318, 'So the real quest is finding King Hekaton. Beldora, do you know where we should start looking? You mentioned the Maelstrom, his court beneath the sea.'),
(currval('sessions_id_seq'), '185097470215192579', 319, 340, 'Beldora says you would need to find the Eye of the All-Father first, an ancient giant temple in the Spine of the World mountains. The oracle there could tell you where Hekaton is. But the temple has been sealed for centuries. She suggests finding Harshnag, the friendly frost giant you heard about from Felgolos. He is said to know the location and how to enter. Sheriff Southwell rewards you each with two hundred gold for saving the town and gives you cold weather gear.'),
(currval('sessions_id_seq'), '99270555361902592', 341, 348, 'Two hundred gold each? Nice. I immediately buy a new set of thieves tools and some caltrops. You never know when youll need caltrops.'),
(currval('sessions_id_seq'), '185097470215192579', 349, 360, 'Great session everyone. So you have a clear goal now, find Harshnag and get to the Eye of the All-Father. Next session will pick up as you head into the Spine of the World.');

-- ============================================================
-- SESSION 5: Finding Harshnag
-- ============================================================
INSERT INTO sessions (guild_id, channel_id, status, started_at, ended_at, summary, campaign_id, audio_dir)
VALUES ('573985236828946443', '578288492275302400', 'complete',
  '2026-02-02 19:00:00+00', '2026-02-02 22:00:00+00', NULL, currval('campaigns_id_seq'), '')
RETURNING id;

INSERT INTO transcript_segments (session_id, user_id, start_time, end_time, text) VALUES
(currval('sessions_id_seq'), '185097470215192579', 0, 15, 'Alright so you have left Bryn Shander heading east into the Spine of the World mountains, looking for the frost giant Harshnag. Beldora gave you a rough idea of where he was last spotted, near a place called the Valley of Khedrun. The terrain is brutal, deep snow, howling winds, and temperatures well below freezing.'),
(currval('sessions_id_seq'), '794021028254187530', 16, 24, 'I am right at home. I want to take the lead navigating since dwarves have a natural affinity for stonework and mountains. Survival check, fifteen.'),
(currval('sessions_id_seq'), '185097470215192579', 25, 38, 'Grimnir, your dwarven instincts serve you well. You find a mountain pass that shaves a day off the journey. But on the second day of travel, as you are navigating a narrow ridge, everyone make Perception checks.'),
(currval('sessions_id_seq'), '228227391007227904', 39, 41, 'Twelve.'),
(currval('sessions_id_seq'), '99270555361902592', 42, 44, 'Nineteen.'),
(currval('sessions_id_seq'), '758311077204459571', 45, 47, 'Eight. I am not great at seeing things.'),
(currval('sessions_id_seq'), '299691308010831874', 48, 50, 'Fourteen.'),
(currval('sessions_id_seq'), '794021028254187530', 51, 53, 'Sixteen.'),
(currval('sessions_id_seq'), '185097470215192579', 54, 72, 'Bramble and Grimnir, you hear it first, a deep rhythmic crunching in the snow coming from ahead, around a bend in the pass. Its getting louder. Whatever is making it is big. Really big. And then a massive figure rounds the corner. A frost giant, easily twenty five feet tall, wearing a horned helm and carrying a greataxe the size of a barn door. He stops when he sees you.'),
(currval('sessions_id_seq'), '794021028254187530', 73, 78, 'I step forward with my hands up. We are not looking for a fight. Are you Harshnag?'),
(currval('sessions_id_seq'), '185097470215192579', 79, 98, 'The giant looks down at you and lets out a deep rumbling laugh that echoes off the mountains. He says in accented Common, Ha! A dwarf with courage. I have not seen one of your kind stand before a frost giant without reaching for a weapon in a long time. Yes, little warrior, I am Harshnag. And you must be the adventurers Beldora told me about. She sent me a message.'),
(currval('sessions_id_seq'), '228227391007227904', 99, 108, 'You know Beldora? She told us you could help us find the Eye of the All-Father. We need to reach the oracle to find King Hekaton.'),
(currval('sessions_id_seq'), '185097470215192579', 109, 130, 'Harshnag sits down on a boulder, which puts his head roughly level with yours. He says, I know the way to the Eye. I have been there before, long ago. But the temple is sealed and guarded by ancient magic. To enter, we will need the approval of the giant gods, specifically Annam the All-Father. I have spent decades trying to protect the small folk from my kin. Perhaps Annam will look favorably on our cause.'),
(currval('sessions_id_seq'), '758311077204459571', 131, 142, 'Harshnag, can you tell us more about what happened to the Ordning? Why did it shatter?'),
(currval('sessions_id_seq'), '185097470215192579', 143, 170, 'He grows somber. Annam the All-Father was disappointed in his children. The giants had become complacent, content to sit in their places in the hierarchy without striving for greatness. When Queen Neri was murdered and Hekaton disappeared, Annam dissolved the Ordning as punishment. Now every giant must prove their worth anew. The strongest, the most cunning, the most powerful will rise. It is survival of the fittest on a divine scale. And the small folk are caught in the middle.'),
(currval('sessions_id_seq'), '299691308010831874', 171, 182, 'So the whole giant hierarchy is up for grabs. No wonder theyre all going crazy. Each type of giant is trying to prove theyre the best. The frost giants want the Ring of Winter, what are the others after?'),
(currval('sessions_id_seq'), '185097470215192579', 183, 205, 'Harshnag counts on his enormous fingers. The hill giants under Chief Guh are hoarding food and growing as large as possible. The fire giants under Duke Zalto are rebuilding the Vonindod, an ancient giant war construct. The stone giants under Thane Kayalithica are trying to reshape the surface world. The cloud giants, well, they are the most cunning. They scheme and collect relics of power. And the frost giants as you know want the Ring of Winter.'),
(currval('sessions_id_seq'), '794021028254187530', 206, 215, 'So basically every type of giant has their own evil plan going on simultaneously. This is a nightmare. At least we have a giant on our side now. Harshnag, how far is the Eye of the All-Father?'),
(currval('sessions_id_seq'), '185097470215192579', 216, 232, 'Five days march north from here, deeper into the mountains. I know a path. But we will need to be careful, the way passes through territory claimed by a white dragon named Cryovain. She is young but vicious and territorial. Harshnag stands and readies his axe. Come, little friends. We have much ground to cover.'),
(currval('sessions_id_seq'), '99270555361902592', 233, 242, 'I love that we have a twenty five foot tall bodyguard now. I want to ride on his shoulder. Can I ride on his shoulder?'),
(currval('sessions_id_seq'), '185097470215192579', 243, 250, 'Harshnag chuckles and offers his palm. The halfling is welcome to ride if he can hold on. Give me an Athletics check to stay balanced as he walks.'),
(currval('sessions_id_seq'), '99270555361902592', 251, 255, 'Twelve. I grab onto one of his horn decorations.'),
(currval('sessions_id_seq'), '185097470215192579', 256, 275, 'You travel with Harshnag for three days without incident. He tells you stories of the ancient giant empires and the small folk heroes he has fought alongside over the centuries. On the fourth day, as you are passing through a frozen valley, Bramble from your vantage point on Harshnag you spot something. A glint of white scales among white snow. Its Cryovain, the white dragon, perched on a cliff above you.'),
(currval('sessions_id_seq'), '99270555361902592', 276, 283, 'Dragon! Above us on the cliff to the right! I yell down to the group.'),
(currval('sessions_id_seq'), '185097470215192579', 284, 300, 'Cryovain unfurls her wings and roars. She is young but still about fifteen feet long, and her breath is so cold it crystallizes the air around her. Harshnag bellows a challenge and raises his axe. Roll initiative everyone.'),
(currval('sessions_id_seq'), '228227391007227904', 301, 303, 'Eighteen.'),
(currval('sessions_id_seq'), '99270555361902592', 304, 306, 'Twenty.'),
(currval('sessions_id_seq'), '794021028254187530', 307, 309, 'Eleven.'),
(currval('sessions_id_seq'), '758311077204459571', 310, 312, 'Sixteen.'),
(currval('sessions_id_seq'), '299691308010831874', 313, 315, 'Thirteen.'),
(currval('sessions_id_seq'), '185097470215192579', 316, 335, 'Bramble youre first. Cryovain is about sixty feet up on the cliff. She is spreading her wings about to take flight. Harshnag will act on initiative ten.'),
(currval('sessions_id_seq'), '99270555361902592', 336, 348, 'I jump off Harshnags shoulder and use my bow. Firing two shots. First is nineteen to hit, second is thirteen to hit. Seven damage on the first.'),
(currval('sessions_id_seq'), '185097470215192579', 349, 356, 'First arrow hits, pinging off her scales but finding a gap. The second goes wide. Theron.'),
(currval('sessions_id_seq'), '228227391007227904', 357, 368, 'Shes too far for melee. I throw a javelin and use my Vow of Enmity on her. Advantage on attacks. Twenty three to hit, eleven damage.'),
(currval('sessions_id_seq'), '185097470215192579', 369, 382, 'The javelin strikes true. Cryovain shrieks and takes flight, diving down toward the party. She uses her Cold Breath. Everyone in a thirty foot cone needs to make a Constitution save. DC fourteen.'),
(currval('sessions_id_seq'), '228227391007227904', 383, 385, 'Seventeen, I pass.'),
(currval('sessions_id_seq'), '99270555361902592', 386, 389, 'Nine, oh no.'),
(currval('sessions_id_seq'), '758311077204459571', 390, 392, 'Fifteen, just made it.'),
(currval('sessions_id_seq'), '299691308010831874', 393, 395, 'Eleven, fail.'),
(currval('sessions_id_seq'), '794021028254187530', 396, 398, 'Natural twenty.'),
(currval('sessions_id_seq'), '185097470215192579', 399, 415, 'Forty five cold damage, half on a save. So Bramble and Lyra take the full forty five, everyone else takes twenty two. The freezing blast coats the valley in ice. Bramble youre looking rough.'),
(currval('sessions_id_seq'), '299691308010831874', 416, 425, 'I use Healing Word on Bramble as a bonus action, eight hit points back. Then I cast Heat Metal on the dragons... wait, dragons arent wearing metal. Never mind. I use Vicious Mockery instead. Wisdom save DC fifteen.'),
(currval('sessions_id_seq'), '185097470215192579', 426, 438, 'She rolls a twelve, fails. Take your damage and she has disadvantage on her next attack. Harshnag now charges in and swings his greataxe. He hits for thirty two damage and the dragon screams. Shes bloodied.'),
(currval('sessions_id_seq'), '758311077204459571', 439, 450, 'I hit her with Scorching Ray. Three beams. Seventeen, twenty one, and fourteen to hit. Twenty eight fire damage total.'),
(currval('sessions_id_seq'), '185097470215192579', 451, 468, 'All three rays hit. The fire magic is devastating against the white dragon. Cryovain thrashes and tries to take flight to escape. Harshnag gets an opportunity attack, another twenty four damage. The dragon barely makes it into the air, trailing blood, and flees north screeching. Harshnag roars after her but lets her go.'),
(currval('sessions_id_seq'), '794021028254187530', 470, 478, 'We survived a dragon fight! Barely. I use Second Wind to heal up. Is everyone okay?'),
(currval('sessions_id_seq'), '185097470215192579', 479, 495, 'After healing up and resting briefly, Harshnag points to a mountain peak in the distance. There, he says. The Eye of the All-Father. You can see an enormous stone face carved into the mountainside, its mouth forming a dark cave entrance. Even from here it is imposing. We will pick up next session at the entrance to the temple.');

-- ============================================================
-- SESSION 6: The Eye of the All-Father
-- ============================================================
INSERT INTO sessions (guild_id, channel_id, status, started_at, ended_at, summary, campaign_id, audio_dir)
VALUES ('573985236828946443', '578288492275302400', 'complete',
  '2026-02-09 19:00:00+00', '2026-02-09 22:30:00+00', NULL, currval('campaigns_id_seq'), '')
RETURNING id;

INSERT INTO transcript_segments (session_id, user_id, start_time, end_time, text) VALUES
(currval('sessions_id_seq'), '185097470215192579', 0, 18, 'You stand before the Eye of the All-Father, an enormous stone face carved into the mountain. The mouth of the face forms an entrance sixty feet high. Ancient giant runes are carved around the opening, glowing faintly with blue light. Harshnag places his hand on the stone and speaks in an ancient dialect of Giant.'),
(currval('sessions_id_seq'), '185097470215192579', 19, 32, 'The runes flare and the massive stone doors within the mouth slowly grind open. Inside is a grand hallway stretching deep into the mountain, lined with statues of the six giant types. Hill, stone, frost, fire, cloud, and storm, each one fifty feet tall. At the far end you can see an archway glowing with pale light.'),
(currval('sessions_id_seq'), '758311077204459571', 33, 42, 'This place is incredible. The magical resonance here is unlike anything I have ever felt. I want to study the runes as we walk through. Arcana check, twenty three.'),
(currval('sessions_id_seq'), '185097470215192579', 43, 60, 'The runes are prayers to Annam the All-Father in a script that predates modern Giant by thousands of years. They speak of a time when all giants were united under one empire and Annam walked among his children. This temple was built as a place where giants could commune with their creator. The magic here is divine in nature, incredibly old and incredibly powerful.'),
(currval('sessions_id_seq'), '99270555361902592', 61, 70, 'I am checking for traps as we go. Investigation, seventeen. This place feels like it would be trapped to keep non-giants out.'),
(currval('sessions_id_seq'), '185097470215192579', 71, 85, 'Smart. You find pressure plates between the statues, sized for giant feet but easily avoided by smaller creatures if you know they are there. Harshnag steps over them carefully and guides you through. Beyond the statue hall you enter the main chamber of the Eye.'),
(currval('sessions_id_seq'), '185097470215192579', 86, 110, 'The chamber is enormous, two hundred feet across and a hundred feet high. In the center is a raised platform with six pedestals arranged in a circle, each bearing the symbol of a giant type. In the center of the circle is a seventh pedestal, taller than the rest, bearing the rune of Annam. Above it all floats an enormous crystal, slowly rotating, pulsing with light. This is the oracle.'),
(currval('sessions_id_seq'), '228227391007227904', 111, 120, 'How do we activate it? Is there some kind of ritual?'),
(currval('sessions_id_seq'), '185097470215192579', 121, 138, 'Harshnag approaches and examines the pedestals. Each one has a slot that seems designed to hold something. He says, We need giant relics. One for each type of giant, placed on their respective pedestal. I have this. He pulls a frost giant battle horn from his pack and places it on the frost giant pedestal. It glows blue. Five more to go.'),
(currval('sessions_id_seq'), '299691308010831874', 140, 150, 'We dont have relics from the other five giant types. Where would we even find those?'),
(currval('sessions_id_seq'), '185097470215192579', 151, 168, 'Harshnag says the relics do not need to be ancient. Any weapon or significant item from each giant type will work. He suggests that since you have been encountering giants across the Sword Coast, you may need to collect trophies from each. But there is another way. He points to an alcove off the main chamber where a smaller crystal sits.'),
(currval('sessions_id_seq'), '185097470215192579', 169, 188, 'He explains that is a lesser oracle. It cannot answer the great questions, but it can provide guidance. It requires only one relic to activate for a limited time. He places his hand on the frost crystal and it activates. The lesser oracle glows and a deep voice fills the chamber. It speaks in Giant but Harshnag translates.'),
(currval('sessions_id_seq'), '185097470215192579', 189, 210, 'The voice says, Children of Annam, the All-Father weeps. His greatest son, Hekaton of the Storm, is held in chains by those who would see giantkind tear itself apart. Seek the Maelstrom, the court of the storm giants beneath the Trackless Sea. There you will find Hekatons daughter Serissa, who holds the throne but cannot hold the peace. She alone knows the path to her fathers prison.'),
(currval('sessions_id_seq'), '758311077204459571', 211, 222, 'So Hekaton is not just missing, he is imprisoned. Someone captured the storm giant king deliberately to cause the Ordning to collapse. This was planned. Who would benefit from giant chaos?'),
(currval('sessions_id_seq'), '185097470215192579', 223, 240, 'The oracle continues. Beware the serpent who whispers in the courts of giants. Beware the dragon who wears a crown of sand. The true enemy hides behind a mask of scales. Then the crystal dims and goes silent.'),
(currval('sessions_id_seq'), '299691308010831874', 242, 252, 'A serpent who whispers and a dragon with a crown of sand? That sounds like it could be a specific creature. Does anyone recognize that description? I roll History, eighteen.'),
(currval('sessions_id_seq'), '185097470215192579', 253, 268, 'With that roll, the phrase crown of sand triggers a memory from your bardic studies. There are legends of an ancient blue dragon named Iymrith who once posed as a storm giant advisor. Blue dragons lair in the desert, hence crown of sand. If Iymrith has returned and infiltrated the storm giant court, she could be behind everything.'),
(currval('sessions_id_seq'), '228227391007227904', 269, 280, 'An ancient blue dragon manipulating the giants into chaos. That is a terrifying enemy. But first we need to get to the Maelstrom and reach Princess Serissa. Harshnag, can you get us there?'),
(currval('sessions_id_seq'), '185097470215192579', 281, 300, 'Harshnag shakes his head. The Maelstrom is beneath the ocean, in a pocket of air held by storm giant magic. Only storm giants and those they invite can enter safely. But there is a way. On the coast near the city of Maelstrom there is a storm giant outpost. If we can convince the guards there that we are allies of Serissa, they may grant us passage. I have old contacts among the storm giants.'),
(currval('sessions_id_seq'), '794021028254187530', 301, 310, 'Then we head for the coast. But that means traveling back through dragon territory. Cryovain might be waiting for a rematch.'),
(currval('sessions_id_seq'), '185097470215192579', 311, 325, 'As you prepare to leave the temple, the ground shakes. Dust falls from the ceiling. Harshnag looks up alarmed. Something is wrong. The mountain itself is trembling. He says, We need to leave. Now. Someone or something has triggered the temples defenses from outside.'),
(currval('sessions_id_seq'), '99270555361902592', 326, 332, 'We run for the exit. I am sprinting as fast as my little halfling legs can carry me.'),
(currval('sessions_id_seq'), '185097470215192579', 333, 355, 'As you reach the statue hallway, the ceiling begins to collapse. Boulders crash down around you. Everyone make Dexterity saves. DC fifteen. Harshnag is behind you, holding up a section of ceiling. He shouts, Go! I will hold it! I am right behind you! But you can see more cracks spreading above him. The mountain is coming down.'),
(currval('sessions_id_seq'), '228227391007227904', 356, 360, 'Nineteen for my save. I want to go back for him.'),
(currval('sessions_id_seq'), '99270555361902592', 361, 363, 'Sixteen.'),
(currval('sessions_id_seq'), '758311077204459571', 364, 366, 'Fourteen, just under.'),
(currval('sessions_id_seq'), '299691308010831874', 367, 369, 'Twelve.'),
(currval('sessions_id_seq'), '794021028254187530', 370, 372, 'Seventeen.'),
(currval('sessions_id_seq'), '185097470215192579', 373, 395, 'Elara and Lyra, you each take twenty two bludgeoning damage from falling rocks. The rest of you dodge through. Theron, you turn back but Harshnag catches your eye and shakes his head. Go, little paladin. Find Serissa. Save Hekaton. I will survive this. I am a frost giant. He grins and then the ceiling comes down between you. You barely make it out of the mouth of the temple as the entire entrance collapses in a thunderous avalanche of stone.'),
(currval('sessions_id_seq'), '228227391007227904', 396, 405, 'No! Harshnag! I start trying to dig through the rubble.'),
(currval('sessions_id_seq'), '185097470215192579', 406, 420, 'The rubble is hundreds of tons of stone. Even with all of you working together, it would take weeks to clear. But through the dust, you hear a faint but unmistakable laugh echo from deep within the mountain. Harshnag is alive. Trapped, but alive. He is a frost giant, he is tough enough to survive. But you cannot reach him now.'),
(currval('sessions_id_seq'), '758311077204459571', 421, 430, 'The oracle said to beware the serpent. Someone collapsed that temple deliberately. Iymrith knows we are looking for Hekaton. She is trying to stop us.'),
(currval('sessions_id_seq'), '185097470215192579', 431, 445, 'You stand in the snow outside the ruined temple. You have the knowledge you need, Serissa in the Maelstrom, Hekaton imprisoned, Iymrith pulling strings. But you have lost your greatest ally. The road ahead just got much harder. We will end there tonight. Incredible session everyone.');

-- ============================================================
-- SESSION 7: Journey to the Coast
-- ============================================================
INSERT INTO sessions (guild_id, channel_id, status, started_at, ended_at, summary, campaign_id, audio_dir)
VALUES ('573985236828946443', '578288492275302400', 'complete',
  '2026-02-16 19:00:00+00', '2026-02-16 22:00:00+00', NULL, currval('campaigns_id_seq'), '')
RETURNING id;

INSERT INTO transcript_segments (session_id, user_id, start_time, end_time, text) VALUES
(currval('sessions_id_seq'), '185097470215192579', 0, 15, 'When we left off, the Eye of the All-Father had collapsed with Harshnag inside. You are heading west toward the Sword Coast, aiming for the storm giant outpost near Maelstrom. Its about a two week journey through harsh winter terrain. I am going to handle this as a montage with some key encounters along the way.'),
(currval('sessions_id_seq'), '228227391007227904', 16, 25, 'Before we set off, I want to say something to the group. Harshnag sacrificed himself so we could escape. We owe it to him to see this through. We find Serissa, we find Hekaton, and we end this giant crisis. For Harshnag.'),
(currval('sessions_id_seq'), '794021028254187530', 26, 30, 'For Harshnag! Grimnir pounds his chest.'),
(currval('sessions_id_seq'), '299691308010831874', 31, 38, 'For Harshnag. I compose a ballad about him as we travel. The Frost Giant Who Stood Alone. It is very moving.'),
(currval('sessions_id_seq'), '185097470215192579', 39, 58, 'Four days into the journey, you descend from the mountains into forested foothills. The temperature has warmed slightly but snow still covers the ground. As you make camp for the night, Bramble, your passive Perception picks up sounds in the forest. Heavy footsteps, cracking branches. Something large is approaching the camp.'),
(currval('sessions_id_seq'), '99270555361902592', 59, 68, 'I signal the group silently and climb the nearest tree. Stealth twenty one. What do I see from up there?'),
(currval('sessions_id_seq'), '185097470215192579', 69, 88, 'From the tree you can see three hill giants lumbering through the forest. They are enormous, about sixteen feet tall, massively fat, and incredibly stupid looking. They are carrying huge sacks over their shoulders that are squirming. Something alive is in those sacks. They havent noticed your camp yet but are heading straight for it.'),
(currval('sessions_id_seq'), '99270555361902592', 89, 95, 'Hill giants with prisoners in sacks. There are people in those bags. I signal down three giants, coming from the north.'),
(currval('sessions_id_seq'), '758311077204459571', 96, 108, 'Hill giants are the weakest giant type but three at once is still dangerous. They should be dumb enough to trick though. I have an idea. What if I use Hypnotic Pattern to incapacitate at least two of them while we free the captives?'),
(currval('sessions_id_seq'), '228227391007227904', 109, 118, 'Good plan. Elara hits them with Hypnotic Pattern, I engage whichever one saves, Grimnir and Bramble free the captives. Lyra can support wherever needed.'),
(currval('sessions_id_seq'), '185097470215192579', 119, 128, 'Alright the hill giants stumble into your camp clearing. One of them spots the campfire and grunts excitedly, pointing. They start moving toward the fire. Elara, now or never.'),
(currval('sessions_id_seq'), '758311077204459571', 129, 138, 'I cast Hypnotic Pattern centered right between the three of them. DC sixteen Wisdom save for each.'),
(currval('sessions_id_seq'), '185097470215192579', 139, 150, 'Six, nine, and fifteen. All three fail! The swirling pattern of light mesmerizes them. They stand slack jawed, their sacks dropping to the ground, swaying gently as they stare at the pretty lights.'),
(currval('sessions_id_seq'), '99270555361902592', 152, 160, 'I jump down from the tree and start cutting open the sacks. What is inside?'),
(currval('sessions_id_seq'), '185097470215192579', 161, 178, 'Each sack contains two or three terrified farmers from a nearby homestead. They are bruised but alive. They whisper frantically that the hill giants have been raiding farms for weeks, taking people and livestock. Their leader, a monstrously fat hill giant named Chief Guh, is hoarding food and captives at Grudd Haug, a hill giant steadhall to the south.'),
(currval('sessions_id_seq'), '794021028254187530', 179, 188, 'We should put these three giants down while we have the chance. They are still charmed right?'),
(currval('sessions_id_seq'), '185097470215192579', 189, 195, 'They are incapacitated by the pattern, yes. Any damage would break the effect on the one you hit.'),
(currval('sessions_id_seq'), '228227391007227904', 196, 208, 'As much as I hate to attack a helpless enemy, these creatures have been kidnapping innocent people. I use Stealth to position behind the nearest one and attack with advantage. Two attacks. Twenty two and nineteen to hit. Fourteen and twelve damage, plus nine radiant from Divine Smite on the first.'),
(currval('sessions_id_seq'), '185097470215192579', 209, 220, 'The first giant howls as your blade cuts deep, breaking him free of the pattern. He is wounded and confused. The other two are still mesmerized. Roll initiative for the rest of combat.'),
(currval('sessions_id_seq'), '185097470215192579', 221, 248, 'Ill fast forward through the fight. Between Therons smites, Grimnirs reckless attacks, and Elaras Firebolt barrage, you take down all three hill giants. The hardest part is that each time you hit one, it breaks out of the pattern, but with only one active at a time you manage the fight well. Bramble gets two sneak attacks in for massive damage and Lyra keeps everyone healed.'),
(currval('sessions_id_seq'), '299691308010831874', 249, 260, 'I talk to the freed farmers. Do they know anything useful? Specifically about where Chief Guh is or about any other giant activity?'),
(currval('sessions_id_seq'), '185097470215192579', 261, 280, 'The eldest farmer, a weathered man named Harlan, thanks you profusely. He says Chief Guh is at Grudd Haug, about three days south of here. She has been eating everything, livestock, stored grain, even furniture. She has become so enormous she can barely move. He also mentions that fire giant raiders have been seen to the east, near an old dwarven mine called Ironslag.'),
(currval('sessions_id_seq'), '794021028254187530', 282, 292, 'Ironslag? I know of that place. It was an ancient dwarven forge complex, abandoned centuries ago. If the fire giants have taken it over, they could be using the forges to build something terrible.'),
(currval('sessions_id_seq'), '185097470215192579', 293, 305, 'Harshnag did mention that the fire giants under Duke Zalto are rebuilding the Vonindod, an ancient giant construct. Ironslag would be the perfect place to forge it.'),
(currval('sessions_id_seq'), '758311077204459571', 306, 318, 'All these side quests. Hill giants kidnapping farmers, fire giants building a war machine, frost giants hunting the Ring of Winter. Every type of giant has their own crisis. But we need to stay focused on the main goal. Get to the Maelstrom, find Serissa, rescue Hekaton.'),
(currval('sessions_id_seq'), '228227391007227904', 319, 328, 'Elara is right. We note the intelligence about Grudd Haug and Ironslag for later, but our priority is the storm giant court. We send the farmers south toward safety and continue west.'),
(currval('sessions_id_seq'), '185097470215192579', 329, 350, 'The rest of the journey is relatively uneventful. After two weeks of travel, you reach the Sword Coast. The air smells of salt and you can hear the crash of waves. Following Harshnags directions, you find a hidden cove with standing stones arranged in a circle, covered in storm giant runes. This is the outpost, the gateway to the Maelstrom.'),
(currval('sessions_id_seq'), '185097470215192579', 351, 370, 'Standing among the stones is a storm giant, thirty feet tall, with purple-grey skin and crackling lightning playing across her shoulders. She holds a trident and regards you coldly. She speaks in a voice like thunder. Small creatures. This is not a place for your kind. State your business or leave.'),
(currval('sessions_id_seq'), '228227391007227904', 371, 382, 'I step forward and bow respectfully. We are friends of Harshnag the Grim. The oracle at the Eye of the All-Father told us to seek Princess Serissa in the Maelstrom. We know King Hekaton is imprisoned and we want to help.'),
(currval('sessions_id_seq'), '185097470215192579', 383, 400, 'The storm giant narrows her eyes. Harshnag sent you? Where is he? She seems genuinely concerned.'),
(currval('sessions_id_seq'), '228227391007227904', 401, 410, 'He was trapped when the Eye of the All-Father collapsed. We believe he survived but we could not dig him out. He told us to find Serissa.'),
(currval('sessions_id_seq'), '185097470215192579', 411, 430, 'She is quiet for a long moment, then nods. Harshnag is an old friend. If he trusted you, that carries weight. I am Mirran, guardian of this outpost. I will take you to the Maelstrom. But I warn you, the court is in turmoil. Serissa faces opposition from her own sisters. And there is an advisor, Iymrith, who whispers poison. Be careful whom you trust. She raises her trident and the standing stones glow. We will continue from here next time.');

-- ============================================================
-- SESSION 8: The Maelstrom
-- ============================================================
INSERT INTO sessions (guild_id, channel_id, status, started_at, ended_at, summary, campaign_id, audio_dir)
VALUES ('573985236828946443', '578288492275302400', 'complete',
  '2026-02-23 19:00:00+00', '2026-02-23 22:30:00+00', NULL, currval('campaigns_id_seq'), '')
RETURNING id;

INSERT INTO transcript_segments (session_id, user_id, start_time, end_time, text) VALUES
(currval('sessions_id_seq'), '185097470215192579', 0, 20, 'Mirran activates the standing stones and a portal of swirling water opens before you. She steps through and you follow. The sensation is like being pulled through a waterfall that goes sideways. You emerge in the Maelstrom, the storm giant court. The sight takes your breath away. An enormous cavern beneath the ocean, held dry by ancient magic. The ceiling is the sea itself, held back by a shimmering dome. You can see fish swimming above you.'),
(currval('sessions_id_seq'), '185097470215192579', 21, 42, 'The court is built on a massive scale. The throne room alone is five hundred feet across, with pillars carved from living coral reaching up to the ocean dome. Storm giant guards stand at every entrance, each one thirty feet tall and crackling with lightning. At the far end of the hall, on an enormous throne of blue crystal, sits a young storm giant woman with flowing silver hair. Princess Serissa.'),
(currval('sessions_id_seq'), '758311077204459571', 43, 55, 'I am utterly awestruck by the magic holding this place together. The power required to keep an ocean at bay permanently is beyond anything I have studied. I want to take everything in as we approach the throne.'),
(currval('sessions_id_seq'), '185097470215192579', 56, 75, 'As you walk the length of the throne room, you notice two other storm giants flanking the throne. To Serissas left is a fierce-looking giant woman with a jagged scar across her face, thats Nym, her older sister. To Serissas right is another sister, Mirran you notice has taken a position nearby looking tense. And behind the throne, partially hidden in shadow, is a hooded figure. Large, but not as large as a storm giant.'),
(currval('sessions_id_seq'), '299691308010831874', 78, 88, 'The hooded figure. I try to get a better look. Perception, twenty. Is that Iymrith?'),
(currval('sessions_id_seq'), '185097470215192579', 89, 105, 'With a twenty, you catch a glimpse of blue-tinged skin beneath the hood and eyes that gleam with an inner light. The figure notices you looking and pulls her hood lower. She appears to be a storm giant but something is off. She is slightly wrong in proportions, as if wearing a shape that doesnt quite fit.'),
(currval('sessions_id_seq'), '99270555361902592', 106, 115, 'I whisper to the group. Behind the throne, blue skin, bad vibes. Thats got to be Iymrith in disguise. The oracle warned us about her. We need to be careful.'),
(currval('sessions_id_seq'), '185097470215192579', 116, 135, 'Serissa speaks, her voice resonating through the chamber. Small folk. Mirran tells me Harshnag sent you and you seek to help find my father. Her eyes are red. She has been crying. These are dark times. My mother was murdered, my father has vanished, and my court is divided. Nym, her sister, scoffs loudly. We do not need the help of insects, Serissa. This is a matter for giants.'),
(currval('sessions_id_seq'), '228227391007227904', 136, 150, 'Princess Serissa, we come with information from the Eye of the All-Father. The oracle told us your father is imprisoned, not missing. And we believe we know who is responsible. But I pause and glance meaningfully at the hooded figure. Perhaps we should speak privately.'),
(currval('sessions_id_seq'), '185097470215192579', 151, 168, 'The hooded figure steps forward. There is no need for secrecy in this court. I am Iymrith, advisor to the throne. I have served the Maelstrom for many years. If you have information, share it openly. Her voice is smooth and commanding. Serissa looks between you and Iymrith uncertainly.'),
(currval('sessions_id_seq'), '299691308010831874', 169, 182, 'I want to use Insight on Iymrith. Is she nervous that we might expose her? Twenty two insight.'),
(currval('sessions_id_seq'), '185097470215192579', 183, 198, 'With a twenty two, you can see micro-expressions of tension around her eyes. She is composed on the surface but watching you very carefully, like a predator assessing whether prey is a threat. She is absolutely hiding something. But she is also incredibly dangerous. You sense that confronting her directly here, in front of the court, could go very badly.'),
(currval('sessions_id_seq'), '758311077204459571', 200, 215, 'I have an idea. Princess Serissa, we would be honored to share everything we know. The oracle at the Eye of the All-Father spoke of your fathers imprisonment and named the forces behind it. I share everything the oracle said but carefully avoid mentioning the serpent and dragon references that point to Iymrith. I focus on Hekaton being chained and that we need to find him.'),
(currval('sessions_id_seq'), '185097470215192579', 216, 235, 'Smart play. Serissa listens intently. When you finish, she says, If my father is truly imprisoned and not dead, there is hope. I have a clue. Before he disappeared, he was investigating my mothers murder. He traced it to a group called the Kraken Society, a secret organization that operates from an island fortress called the Morkoth. The last message I received from him mentioned going to confront them.'),
(currval('sessions_id_seq'), '794021028254187530', 236, 245, 'The Kraken Society. I have heard of them. Shadowy group, worshippers of a kraken named Slarkrethel. If they have Hekaton, he is being held somewhere very well guarded.'),
(currval('sessions_id_seq'), '185097470215192579', 246, 265, 'Nym slams her fist on the arm of her seat. This is foolishness. Father is dead. Accepting help from small folk is weakness. She storms out of the chamber. Iymrith watches her go with what might be a satisfied expression, then turns back to you.'),
(currval('sessions_id_seq'), '185097470215192579', 266, 280, 'Iymrith says, Perhaps these small folk could be useful. If they are willing to infiltrate the Morkoth, they could go where storm giants cannot. Small and sneaky. She smiles at Bramble and it does not reach her eyes.'),
(currval('sessions_id_seq'), '99270555361902592', 281, 290, 'Oh I do not like her at all. But she is right that we can infiltrate better than a thirty foot giant. I smile back just as fakely. We would be happy to help.'),
(currval('sessions_id_seq'), '185097470215192579', 291, 310, 'Serissa provides you with a conch of teleportation that can bring you back to the Maelstrom and a golden trident pendant that identifies you as agents of her court. She also gives you the location of the Morkoth, an island in the Trackless Sea. She says, Bring my father home. Please. She gives you a ship and crew of storm giant loyalists to take you there.'),
(currval('sessions_id_seq'), '299691308010831874', 312, 322, 'Before we leave, I want to subtly warn Serissa about Iymrith. I find a moment when Iymrith is not nearby and whisper, Princess, the oracle also spoke of a serpent who whispers in the courts of giants and a dragon wearing a crown of sand. Be wary of your advisors. Not all of them serve your interests.'),
(currval('sessions_id_seq'), '185097470215192579', 323, 340, 'Serissas eyes widen slightly. She looks at you for a long moment, then gives the tiniest nod. She whispers back, I have had my suspicions. But Iymrith is powerful and my sister Nym trusts her. I cannot move against her without proof. Find my father. He will know what to do.'),
(currval('sessions_id_seq'), '185097470215192579', 341, 360, 'Your ship sails from the Maelstrom through an underwater tunnel that surfaces in the open ocean. The storm giant crew navigates expertly through rough seas. After three days of sailing, you spot the Morkoth on the horizon. Its a dark volcanic island shrouded in perpetual fog, with a massive fortress carved into the cliff face. Lightning arcs between metal towers on the roof. This is where the Kraken Society makes their home.'),
(currval('sessions_id_seq'), '228227391007227904', 361, 370, 'We need a plan. We cant just knock on the front door of an evil fortress.'),
(currval('sessions_id_seq'), '99270555361902592', 371, 380, 'Actually, thats exactly what I do. I study the fortress for entry points. Any sewers, caves, underwater entrances? Perception nineteen.'),
(currval('sessions_id_seq'), '185097470215192579', 381, 398, 'You spot a drainage pipe on the east side of the island, partially submerged at high tide but exposed now at low tide. Big enough for medium creatures to crawl through. There are also docks on the south side with some small boats, and the main gate faces west. The drainage pipe looks like your best bet for a covert entry.'),
(currval('sessions_id_seq'), '185097470215192579', 399, 410, 'We will pick up next session with the infiltration of the Morkoth. Start thinking about your approach because this is going to be a stealth and puzzle heavy session. Great roleplaying tonight everyone, the court scene was fantastic.');

-- ============================================================
-- SESSION 9: The Morkoth - Rescuing Hekaton
-- ============================================================
INSERT INTO sessions (guild_id, channel_id, status, started_at, ended_at, summary, campaign_id, audio_dir)
VALUES ('573985236828946443', '578288492275302400', 'complete',
  '2026-03-02 19:00:00+00', '2026-03-02 23:00:00+00', NULL, currval('campaigns_id_seq'), '')
RETURNING id;

INSERT INTO transcript_segments (session_id, user_id, start_time, end_time, text) VALUES
(currval('sessions_id_seq'), '185097470215192579', 0, 15, 'You are at the Morkoth, the Kraken Society fortress island. Last session you identified a drainage pipe as an entry point. Its low tide and the pipe is exposed. Your storm giant ship is anchored behind a rocky outcropping out of sight. What is the plan?'),
(currval('sessions_id_seq'), '99270555361902592', 16, 28, 'I take point through the drainage pipe. I want to move as silently as possible and check for traps every ten feet. Stealth twenty three. Investigation for traps, sixteen.'),
(currval('sessions_id_seq'), '185097470215192579', 29, 45, 'Bramble, you crawl through the pipe for about fifty feet. Its slimy and smells terrible but there are no traps. You emerge in a large cistern beneath the fortress. Stone walkways circle a pool of dark water. You can hear the drip of water echoing and distant sounds of activity above. There are two exits, stairs going up to the north and a corridor heading east.'),
(currval('sessions_id_seq'), '99270555361902592', 46, 52, 'I signal the all clear and wait for everyone to come through.'),
(currval('sessions_id_seq'), '758311077204459571', 53, 62, 'As we come through, I cast Detect Magic to see if there are any magical wards or alarm spells in this area.'),
(currval('sessions_id_seq'), '185097470215192579', 63, 75, 'Good call. You detect a faint abjuration aura on the north stairway. There is an alarm spell on the third step. The eastern corridor appears clear.'),
(currval('sessions_id_seq'), '758311077204459571', 76, 82, 'I use Dispel Magic on the alarm. That is a fifteen on my arcana check.'),
(currval('sessions_id_seq'), '185097470215192579', 83, 90, 'The alarm fizzles out. Both paths are now safe. Which way?'),
(currval('sessions_id_seq'), '228227391007227904', 91, 100, 'If Hekaton is imprisoned here, he would be in the deepest dungeon. They would need massive chains to hold a storm giant. The eastern corridor goes deeper, lets try that first.'),
(currval('sessions_id_seq'), '185097470215192579', 101, 122, 'The eastern corridor descends gradually. The walls change from worked stone to natural cave rock. After about two hundred feet you come to a heavy iron door. Bramble, you check it for traps and find a poison needle mechanism in the lock. You disarm it with your thieves tools. Beyond the door is a natural cavern that opens up enormously. And there, in the center of the cavern, is King Hekaton.'),
(currval('sessions_id_seq'), '185097470215192579', 123, 148, 'He is a storm giant of immense size, easily forty feet tall, chained to the cave floor by adamantine shackles on his wrists, ankles, and neck. His royal armor has been stripped away and he is covered in wounds, some fresh. His eyes are open but glazed, and a dark metal circlet on his head pulses with purple energy. He seems to be in some kind of magical stupor, awake but unaware.'),
(currval('sessions_id_seq'), '758311077204459571', 149, 160, 'The circlet is some kind of domination or stupefying enchantment. I examine it with Arcana, twenty four. Can I identify the magic and figure out how to remove it?'),
(currval('sessions_id_seq'), '185097470215192579', 161, 180, 'It is a Circlet of Domination, a rare and cruel device that keeps the wearer in a suggestible trance. Removing it by force would trigger a psychic backlash that could kill him in his weakened state. You need to either dispel it, which would require a very powerful Dispel Magic, or find the control amulet that the circlets master uses.'),
(currval('sessions_id_seq'), '299691308010831874', 181, 192, 'The control amulet. Whoever runs this place would have it. We need to find the leader of the Kraken Society here and take it from them. Do we know who that is?'),
(currval('sessions_id_seq'), '185097470215192579', 193, 208, 'From your research and Serissas briefing, the Morkoth is commanded by a woman named Tholtz Daggerdark, a powerful wizard and high priestess of Slarkrethel the kraken. She would be in the upper levels of the fortress.'),
(currval('sessions_id_seq'), '794021028254187530', 209, 218, 'So we need to fight our way up to the wizard in charge, steal her control amulet, come back down here and free Hekaton. All without the entire fortress coming down on us.'),
(currval('sessions_id_seq'), '99270555361902592', 219, 230, 'Or, hear me out, I go alone. I am the sneakiest one here. I can get in, steal the amulet, and get out without anyone knowing. The rest of you stay here and protect Hekaton.'),
(currval('sessions_id_seq'), '228227391007227904', 231, 238, 'Thats incredibly risky. If you get caught alone up there, we cannot help you.'),
(currval('sessions_id_seq'), '99270555361902592', 239, 245, 'Trust me. This is literally what I do. Give me thirty minutes.'),
(currval('sessions_id_seq'), '185097470215192579', 246, 268, 'Bramble heads back up through the fortress alone. I will narrate this as a skill challenge. You need five successes before three failures to find Tholtz and steal the amulet. Give me your first check.'),
(currval('sessions_id_seq'), '99270555361902592', 269, 275, 'Stealth to move through the upper corridors. Twenty four.'),
(currval('sessions_id_seq'), '185097470215192579', 276, 290, 'Success one. You ghost through the fortress like a shadow. Guards patrol in pairs but they are looking outward not inward. You find stairs leading to the upper levels. The fortress is busy with cultists going about their business.'),
(currval('sessions_id_seq'), '99270555361902592', 291, 298, 'Perception to find which room Tholtz is in. I listen at doors. Seventeen.'),
(currval('sessions_id_seq'), '185097470215192579', 299, 310, 'Success two. You hear a woman giving orders behind a large ornate door on the top floor. Commanding voice, talking about feeding schedules for the prisoner below. That is Tholtz.'),
(currval('sessions_id_seq'), '99270555361902592', 311, 320, 'I wait for her to leave the room. Patience. Can I use Stealth again to set up an ambush point? Twenty one.'),
(currval('sessions_id_seq'), '185097470215192579', 321, 335, 'Success three. You hide in an alcove across the hall. After about ten minutes, Tholtz emerges and heads down the corridor with two guards. You can see a glowing purple amulet around her neck. She enters another room, leaving the guards outside.'),
(currval('sessions_id_seq'), '99270555361902592', 336, 345, 'I need to get that amulet. Sleight of Hand to pickpocket it as she walks past on her way back. Actually no, that is too risky. Can I sneak into her quarters while she is in the other room and look for a way to swap the amulet? Investigation fourteen.'),
(currval('sessions_id_seq'), '185097470215192579', 346, 355, 'Failure one. Her quarters are warded with a Glyph of Warding that you almost trigger. You back out just in time but you didnt find anything useful inside.'),
(currval('sessions_id_seq'), '99270555361902592', 356, 365, 'Okay, Plan B. I wait for her to come back and use Sleight of Hand to cut the amulet chain as she passes my hiding spot. Sleight of Hand, eighteen.'),
(currval('sessions_id_seq'), '185097470215192579', 366, 378, 'Success four. Your blade slices through the chain silently. The amulet drops and you catch it before it hits the floor. Tholtz keeps walking, not noticing. But one of the guards following her glances in your direction. Give me one more check.'),
(currval('sessions_id_seq'), '99270555361902592', 379, 386, 'Deception to play it cool? Actually no, Stealth to stay hidden. Come on come on. Seventeen.'),
(currval('sessions_id_seq'), '185097470215192579', 387, 400, 'Success five! The guard squints into the dark alcove but sees nothing. He shrugs and follows Tholtz. You have the amulet. Now get out of there.'),
(currval('sessions_id_seq'), '99270555361902592', 401, 408, 'I book it back down to the cavern. Full sprint, not even trying to be quiet anymore. Speed is more important now.'),
(currval('sessions_id_seq'), '185097470215192579', 409, 425, 'You burst back into the cavern where the others are waiting. Meanwhile, upstairs, you hear a shriek of rage echo through the fortress. Tholtz has discovered the amulet is missing. You probably have minutes before the whole place is on alert.'),
(currval('sessions_id_seq'), '758311077204459571', 426, 435, 'Give me the amulet! I use it on the circlet. How does it work?'),
(currval('sessions_id_seq'), '185097470215192579', 436, 450, 'You hold the amulet near the circlet and it responds immediately. The purple energy fades and the circlet loosens. Hekatons eyes suddenly focus. He blinks, looks around, and lets out a roar that shakes the entire cavern. He rips the circlet off his head and crushes it in his fist.'),
(currval('sessions_id_seq'), '185097470215192579', 451, 470, 'In a voice like rolling thunder he says, WHO DARES CHAIN HEKATON? Then he looks down at you tiny creatures and pauses. You are... not what I expected. Where is Serissa? Where is my daughter?'),
(currval('sessions_id_seq'), '228227391007227904', 471, 482, 'Your Majesty, Serissa sent us. She is holding your court together but barely. The Ordning has shattered without you. We need to get you out of here. Can you break those chains?'),
(currval('sessions_id_seq'), '185097470215192579', 483, 498, 'Hekaton flexes and the adamantine chains groan. He is still weak from captivity but he is a storm giant king. With a tremendous effort he snaps the chains on his wrists, then his ankles, then his neck. He stands to his full height, forty feet tall, and lightning crackles across his body. I am diminished, he says, but I am not broken.'),
(currval('sessions_id_seq'), '185097470215192579', 499, 520, 'The sounds of alarm bells and running feet echo from above. Kraken Society cultists are coming. But Hekaton raises his hand and conjures a bolt of lightning that blasts through the ceiling, opening a path straight up through the fortress and out the top. Daylight pours in. He picks all five of you up in his arms and leaps through the hole, landing on the roof of the fortress.'),
(currval('sessions_id_seq'), '794021028254187530', 521, 528, 'That was the most terrifying and awesome thing that has ever happened to me. Is our ship still there?'),
(currval('sessions_id_seq'), '185097470215192579', 529, 548, 'Your storm giant ship rounds the island, the crew having seen the lightning. Hekaton leaps from the fortress roof to the ship with you in his arms. As you sail away, the Morkoth fortress is in chaos behind you, but then the sea churns. Something enormous moves beneath the surface. Tentacles the size of towers break the water.'),
(currval('sessions_id_seq'), '758311077204459571', 549, 555, 'The kraken. Slarkrethel itself.'),
(currval('sessions_id_seq'), '185097470215192579', 556, 575, 'Hekaton turns to face the ocean and calls lightning from the sky. A massive bolt strikes the tentacles and the kraken recoils. He hurls bolt after bolt, each one brighter than the last. The storm giant crew adds their own lightning. The kraken retreats back into the depths, wounded and furious. Hekaton sags against the mast, exhausted. That creature will return. But not today.'),
(currval('sessions_id_seq'), '299691308010831874', 576, 588, 'Your Majesty, there is more you need to know. We believe a dragon named Iymrith has infiltrated your court, disguised as a storm giant advisor. She may be behind your wifes murder and your imprisonment.'),
(currval('sessions_id_seq'), '185097470215192579', 589, 610, 'Hekatons expression goes from tired to absolutely furious. Lightning crackles around him so intensely you have to step back. Iymrith, he whispers. I trusted her. My wife trusted her. If what you say is true, that dragon will answer for her crimes. He stands tall despite his exhaustion. Take me to the Maelstrom. Take me to my daughter. And then we hunt a dragon.'),
(currval('sessions_id_seq'), '185097470215192579', 611, 625, 'And on that epic note, we end the session. One more session to go, the finale. Next week we take on Iymrith. Level up everyone, you are going to need it.');

-- ============================================================
-- SESSION 10: The Final Battle - Iymrith
-- ============================================================
INSERT INTO sessions (guild_id, channel_id, status, started_at, ended_at, summary, campaign_id, audio_dir)
VALUES ('573985236828946443', '578288492275302400', 'complete',
  '2026-03-09 19:00:00+00', '2026-03-09 23:30:00+00', NULL, currval('campaigns_id_seq'), '')
RETURNING id;

INSERT INTO transcript_segments (session_id, user_id, start_time, end_time, text) VALUES
(currval('sessions_id_seq'), '185097470215192579', 0, 22, 'Welcome to the finale of Storm Kings Thunder. When we left off, you had rescued King Hekaton from the Kraken Society and were sailing back to the Maelstrom. Hekaton is weak but determined. He has learned that Iymrith, the ancient blue dragon posing as his advisor, is behind his wifes murder and his imprisonment. Hekaton returned to the Maelstrom and reunited with Serissa. It was an emotional reunion. He has begun restoring the Ordning.'),
(currval('sessions_id_seq'), '185097470215192579', 23, 45, 'But Iymrith fled the court when she realized Hekaton had returned. She has retreated to her lair in the Anauroch desert, a ruined amphitheatre buried in the sand. Hekaton is still too weak to fight her himself, but he has called in allies. Three loyal storm giants have volunteered to join you. And he has given you each a gift.'),
(currval('sessions_id_seq'), '185097470215192579', 46, 65, 'Theron, you receive a Javelin of Lightning. Bramble, Boots of Elvenkind. Elara, a Wand of the War Mage. Grimnir, a Dwarven Thrower battleaxe. And Lyra, an Instrument of the Bards, specifically a Canaith Mandolin.'),
(currval('sessions_id_seq'), '794021028254187530', 66, 74, 'A Dwarven Thrower! I have always wanted one of these. It comes back to my hand after I throw it right?'),
(currval('sessions_id_seq'), '185097470215192579', 75, 82, 'It does. Plus extra damage against giants, which is fitting. And it has a plus three bonus.'),
(currval('sessions_id_seq'), '299691308010831874', 83, 92, 'The Canaith Mandolin is incredible. I can cast Cure Wounds, Dispel Magic, and Protection from Energy with it once per day each. This will be huge for the dragon fight.'),
(currval('sessions_id_seq'), '185097470215192579', 93, 115, 'Serissa uses her magic to teleport you and the three storm giant allies to the edge of the Anauroch desert. The heat hits you like a wall after the cold of the northern seas. Before you stretches an endless expanse of sand dunes under a merciless sun. In the distance you can see the ruins of an ancient amphitheatre, half buried in sand. Lightning flickers around it despite the clear sky.'),
(currval('sessions_id_seq'), '758311077204459571', 116, 128, 'Before we approach, I want to cast some buffs. Ill put Stoneskin on Theron and Grimnir since they will be in melee range of the dragon. And I use my Wand to cast Mage Armor on myself.'),
(currval('sessions_id_seq'), '228227391007227904', 129, 140, 'I cast Aura of Protection so everyone within ten feet of me gets plus four to saves. And I use Bless on myself, Grimnir, and Bramble for extra attack rolls and saves.'),
(currval('sessions_id_seq'), '299691308010831874', 141, 150, 'I cast Protection from Energy on Theron, choosing lightning damage since blue dragons breathe lightning. And Ill use Bardic Inspiration on Grimnir.'),
(currval('sessions_id_seq'), '185097470215192579', 151, 170, 'Good preparations. You approach the amphitheatre with the storm giants flanking you. The ruins are massive, clearly built by giants in ages past. Sand has filled the arena floor. As you enter through a crumbling archway, you see her. Iymrith in her true form. She is enormous, easily a hundred feet from snout to tail, with brilliant blue scales that crackle with electricity. She is coiled in the center of the amphitheatre, waiting for you.'),
(currval('sessions_id_seq'), '185097470215192579', 171, 190, 'She laughs, a sound like rolling thunder. So the little heroes come to die. And they bring playmates. She eyes the storm giants. It does not matter. I have toppled the Ordning. I have murdered queens and imprisoned kings. What hope do you have against Iymrith the Doom of the Desert? Roll initiative.'),
(currval('sessions_id_seq'), '228227391007227904', 191, 193, 'Nineteen.'),
(currval('sessions_id_seq'), '99270555361902592', 194, 196, 'Sixteen.'),
(currval('sessions_id_seq'), '758311077204459571', 197, 199, 'Twenty one.'),
(currval('sessions_id_seq'), '299691308010831874', 200, 202, 'Fourteen.'),
(currval('sessions_id_seq'), '794021028254187530', 203, 205, 'Twelve.'),
(currval('sessions_id_seq'), '185097470215192579', 206, 218, 'Iymrith rolls a twenty three so she goes first. She unfurls her wings and beats them once, kicking up a sandstorm in the amphitheatre. Everyone needs to make a Strength save DC twenty or be knocked prone and blinded until the end of your next turn by the sand.'),
(currval('sessions_id_seq'), '228227391007227904', 219, 223, 'Twenty two with my aura bonus. I stand firm.'),
(currval('sessions_id_seq'), '99270555361902592', 224, 226, 'Thirteen. I am eating sand.'),
(currval('sessions_id_seq'), '758311077204459571', 228, 230, 'Sixteen. I go down too.'),
(currval('sessions_id_seq'), '299691308010831874', 231, 233, 'Nineteen with the aura. Just barely.'),
(currval('sessions_id_seq'), '794021028254187530', 234, 237, 'Twenty one. Dwarves dont fall down easy.'),
(currval('sessions_id_seq'), '185097470215192579', 238, 252, 'Bramble and Elara are knocked prone and blinded. Two of the storm giants hold but one goes down. Iymrith then uses her Lightning Breath on the prone storm giant. One hundred and two lightning damage. The storm giant fails the save and takes the full amount. Its badly hurt.'),
(currval('sessions_id_seq'), '758311077204459571', 253, 265, 'On my turn I stand up, clear the sand from my eyes, and Im going all out. I cast Fireball at fifth level centered on Iymrith. DC seventeen Dex save. Thirty eight fire damage on a fail.'),
(currval('sessions_id_seq'), '185097470215192579', 266, 275, 'She rolls a fourteen and fails. Thirty eight fire damage. Her scales blacken and she snarls. Your turn Theron.'),
(currval('sessions_id_seq'), '228227391007227904', 276, 292, 'I charge her with everything Ive got. Two attacks with Divine Smite on both. First attack, twenty four to hit, twenty six damage with the smite. Second attack, twenty one to hit, twenty two damage. I burn my highest slots. This is it.'),
(currval('sessions_id_seq'), '185097470215192579', 293, 305, 'Forty eight radiant-infused damage. Golden light erupts from your sword with each strike. Iymrith roars in pain and rakes at you with her claws. Twenty six to hit, thirty five slashing damage. But the Stoneskin halves it to seventeen.'),
(currval('sessions_id_seq'), '99270555361902592', 306, 316, 'My turn. I stand up, shake off the sand. I am going for the eyes. Twin daggers with sneak attack since Theron is in melee with her. Twenty to hit. Thirty one damage total sneak attack.'),
(currval('sessions_id_seq'), '185097470215192579', 317, 328, 'One dagger catches her in the eye and she thrashes wildly. Blood streams down her face. The storm giants press their attack, landing several hits with their greatswords. Shes taking damage from all sides.'),
(currval('sessions_id_seq'), '299691308010831874', 329, 340, 'I use my Canaith Mandolin to cast Dispel Magic on any magical protections she might have. Then Vicious Mockery as a bonus. You are just a lizard with delusions of grandeur!'),
(currval('sessions_id_seq'), '185097470215192579', 341, 355, 'Your Dispel Magic strips away her Shield spell and Mage Armor. Her armor class drops. The Vicious Mockery hits, she takes the damage and has disadvantage on her next attack. Grimnir, you are up.'),
(currval('sessions_id_seq'), '794021028254187530', 356, 370, 'I throw my Dwarven Thrower at her face. Twenty three to hit. That is sixteen damage plus the axe bonus. Then it returns and I throw it again. Nineteen to hit. Fourteen more damage. Thirty total.'),
(currval('sessions_id_seq'), '185097470215192579', 371, 395, 'The enchanted axe slams into her twice and returns to your hand each time. Iymrith is looking battered but she is an ancient dragon and she is far from done. On her turn, she burrows into the sand. The entire floor of the amphitheatre shifts as she moves beneath it. Then she erupts from the ground right in the middle of the party. Frightful Presence. Everyone make a Wisdom save DC twenty one.'),
(currval('sessions_id_seq'), '228227391007227904', 396, 400, 'Twenty four with aura and Bless. Im not scared of a dragon.'),
(currval('sessions_id_seq'), '99270555361902592', 401, 404, 'Fourteen. Oh no.'),
(currval('sessions_id_seq'), '758311077204459571', 405, 408, 'Twenty. One short.'),
(currval('sessions_id_seq'), '299691308010831874', 409, 412, 'Twenty two. I inspire myself out of fear.'),
(currval('sessions_id_seq'), '794021028254187530', 413, 416, 'Eighteen with aura. Failed.'),
(currval('sessions_id_seq'), '185097470215192579', 417, 430, 'Bramble, Elara, and Grimnir are frightened. Disadvantage on attacks and you cant willingly move closer to her. She then uses her Lightning Breath again in a line through Theron and Lyra. Eighty eight lightning damage, Dex save DC twenty three.'),
(currval('sessions_id_seq'), '228227391007227904', 431, 436, 'Twenty with aura. Failed. But I have Protection from Energy from Lyra! I resist the lightning. So forty four damage.'),
(currval('sessions_id_seq'), '299691308010831874', 437, 442, 'Seventeen. Full eighty eight. I am going down. Wait, Bless. Twenty. Still a fail. Eighty eight damage. I am at two hit points.'),
(currval('sessions_id_seq'), '758311077204459571', 443, 452, 'Lyra is almost down! On my turn, even though I am frightened, I can still cast at range. I hit Iymrith with Cone of Cold. Fifth level. DC seventeen Con save. Forty two cold damage.'),
(currval('sessions_id_seq'), '185097470215192579', 453, 460, 'She rolls fifteen. Fails. Forty two cold damage. Ice crystallizes on her scales.'),
(currval('sessions_id_seq'), '228227391007227904', 461, 475, 'I need to finish this. I use my Javelin of Lightning. It turns into a lightning bolt when I throw it. Iymrith makes a Dex save DC seventeen. Then I catch it and attack twice in melee. Javelin first.'),
(currval('sessions_id_seq'), '185097470215192579', 476, 484, 'She actually fails the javelin save. Roll the lightning damage.'),
(currval('sessions_id_seq'), '228227391007227904', 485, 492, 'Twenty eight lightning damage from the javelin bolt. Then two melee attacks with smites. Twenty two to hit, twenty damage. Eighteen to hit, sixteen damage. Thats sixty four total this turn.'),
(currval('sessions_id_seq'), '185097470215192579', 493, 508, 'Iymrith staggers. One of the storm giants sees an opening and drives a greatsword through her wing membrane. She cannot fly. The other two storm giants pile on. She is bleeding from a dozen wounds, one eye ruined by Brambles dagger, scales shattered by Grimnirs axe.'),
(currval('sessions_id_seq'), '794021028254187530', 509, 520, 'Even though I am frightened, I grit my teeth and throw my Dwarven Thrower again. At disadvantage because of the fear. Twelve and seventeen. The seventeen hits right? Eleven damage.'),
(currval('sessions_id_seq'), '185097470215192579', 521, 530, 'It hits. The axe buries itself in her neck. She tries to rear up for one final attack.'),
(currval('sessions_id_seq'), '99270555361902592', 531, 542, 'I shake off the fear. Actually can I use my turn to make the save again? Seventeen. Does that beat it?'),
(currval('sessions_id_seq'), '185097470215192579', 543, 548, 'The DC was twenty one. You are still frightened.'),
(currval('sessions_id_seq'), '99270555361902592', 549, 558, 'Ugh. Fine. I throw a dagger from maximum range since I cant move closer. Even at disadvantage. Fourteen and eighteen. Does eighteen hit with her reduced AC?'),
(currval('sessions_id_seq'), '185097470215192579', 559, 565, 'Eighteen hits! Roll damage with sneak attack since Theron is adjacent.'),
(currval('sessions_id_seq'), '99270555361902592', 566, 572, 'Twenty seven damage with sneak attack!'),
(currval('sessions_id_seq'), '185097470215192579', 573, 600, 'The dagger spins through the air and buries itself in Iymriths other eye. She screams, blind now, thrashing wildly. Theron, she is right in front of you, blinded and reeling. You have one more attack.'),
(currval('sessions_id_seq'), '228227391007227904', 601, 612, 'I raise my sword with both hands. For Harshnag. For Queen Neri. For all the people who suffered because of you. I bring it down with everything I have. Twenty six to hit. And I burn my last spell slot on Divine Smite. Twenty four damage, half of it radiant.'),
(currval('sessions_id_seq'), '185097470215192579', 613, 645, 'Your blade, blazing with golden radiant light, cleaves through Iymriths neck. The ancient blue dragon crashes to the ground, her body cracking the stone floor of the amphitheatre. Lightning arcs from her body one final time and then goes still. Sand settles around her enormous corpse. There is a moment of absolute silence. Then the storm giants raise their swords and roar in triumph. Iymrith, the Doom of the Desert, the puppet master behind the shattering of the Ordning, is dead.'),
(currval('sessions_id_seq'), '794021028254187530', 646, 650, 'We did it. We actually did it.'),
(currval('sessions_id_seq'), '299691308010831874', 651, 660, 'I immediately start writing a song. This is going to be the greatest ballad of our generation. The Fall of Iymrith. I have tears in my eyes.'),
(currval('sessions_id_seq'), '99270555361902592', 662, 670, 'I go retrieve my daggers from the dragon corpse. And maybe a scale or two as a souvenir. A very large souvenir.'),
(currval('sessions_id_seq'), '758311077204459571', 671, 682, 'This has been the most incredible journey. From a ruined town to slaying an ancient dragon. I cannot believe we survived. Is Harshnag okay? Can someone check on the Eye of the All-Father now?'),
(currval('sessions_id_seq'), '185097470215192579', 683, 720, 'As the dust settles, a shimmer in the air resolves into a sending from Serissa. She says, My father senses the Ordning beginning to restore. You have done what we could not. All of giantkind owes you a debt. And I have news, the rubble at the Eye of the All-Father has been cleared. Harshnag lives. He is battered but already asking about the little heroes. Hekaton and Serissa invite you to a feast at the Maelstrom in your honor.'),
(currval('sessions_id_seq'), '228227391007227904', 721, 730, 'Harshnag is alive! I actually cheer out loud. Tell Serissa we would be honored to attend.'),
(currval('sessions_id_seq'), '185097470215192579', 731, 770, 'And so our story comes to a close. The heroes of Nightstone, who began their journey investigating a bombed village, have saved the world from the chaos of the shattered Ordning. King Hekaton is restored to his throne. Iymrith is slain. The Kraken Society is scattered. Harshnag lives. The storm giant court holds a feast that lasts seven days in your honor. Each of you is given the title Friend of Giants, a rank that holds weight in all giant courts. The Ordning slowly restores, and the giant raids across the Sword Coast come to an end. Theron continues his service to Tyr, now with a reputation that spans the Sword Coast. Bramble retires from adventuring exactly long enough to spend his treasure before getting bored. Elara returns to her studies with knowledge of giant magic that no wizard has possessed in centuries. Grimnir is welcomed as a hero in every dwarven hold in the North. And Lyra, well, Lyras ballad The Fall of Iymrith becomes the most requested song in every tavern from Waterdeep to Icewind Dale. Thank you all for an amazing campaign. Storm Kings Thunder is complete.');

COMMIT;
