Pleasure Index ~ Gay Erotic Fiction

Pleasure Index ~ Gay Erotic Fiction

Thirst

The Thunder ~ Thirst

A Short Erotic Story from Rowan Thornwell

Dec 10, 2025
∙ Paid

Three old friends take shelter under a tarp in a violent storm, only to discover the tension between them has been building longer than the weather. With two power tops, one trembling bottom, and nowhere to run, the night becomes a slow, relentless lesson in surrender that lasts until the sky clears.


The rain came harder than they expected.

It slammed against the tarp in waves, each drop a bullet, a warning, a drumbeat against nylon stretched taut between two ancient firs. The sound was deafening, a roar of water and wind, and yet, beneath it, their breath could still be heard, slow, deep, shared.

They had barely made it back to camp in time. The hike had been long, longer than it should have been, and when the sky cracked open, they were still a mile from shelter. Their clothes clung to them now, soaked and useless, tossed in a heap at the edge of the tarp where a low lantern burned.

The air smelled of pine needles, wet ash, and something more intimate. Sweat still drying. Steam rising from skin.

Three cots. Three men. No tent. Just the tarp and the storm and the heat.

Dane sat with his legs wide, arms draped over his knees, eyes half closed like a beast who knew the rain would not touch him. His chest was bare, hewn muscle darkened by water, veins running like roots beneath the skin. When the lightning flashed, it lit the deep line of his collarbone, the sharp cut of his jaw.

Mason leaned against one of the tree trunks, a cigarette tucked between his lips, smoke curling toward the tarp’s sagging roof. He was leaner, wiry, a little too smug for the wilderness. His smirk was permanent, like he knew things you were not ready to hear.

Julian sat cross legged between them, shivering slightly. A blanket was wrapped around his shoulders, but it did nothing to hide the way his nipples peaked against his damp undershirt. His curls clung to his cheeks, and his lips were parted just slightly, pink from cold or something else.

He tried not to look at them. He failed.

It was not the first trip they had done like this. The three of them. Old friends. Sort of. Newer bonds, less defined. They had shared meals, shared trails, shared tents. But not this.

Not what the air felt like now.

The storm had stripped the forest bare, soaked it in noise and pressure, pressed them all closer beneath the sagging tarp. Dane had not said much all evening, but his eyes lingered. Mason, more brazen, let his gaze drag up and down Julian’s body like he was reading him aloud.

A gust of wind snapped the edge of the tarp, sent droplets scattering over their shoulders. Julian gasped, pulled the blanket tighter. Mason chuckled.

“You cold, Jules?”

Julian nodded. His voice would not come.

Dane opened his eyes.

The tarp dipped lower, the weight of water threatening to collapse it. But no one moved to fix it. No one wanted to step out into the storm.

Julian licked his lips. Noticed the way Mason’s fingers drummed slowly on his thigh. Noticed the way Dane’s gaze did not waver.

Something in the air had shifted.

The storm had pulled more than trees down.

It had pulled the line taut. The line they had danced around for months. Glances too long. Hands lingering. Shared silences that felt heavy with unsaid things.

Now there was no place to go.

Now they had to sit in it.

Dane leaned forward, his forearms braced on his knees. His voice, when it came, was low enough to shake through Julian’s chest.

“Take off the blanket.”

The rain outside answered before Julian could.

A roll of thunder, long and slow. The kind that sounded like it would never stop.

Julian’s fingers trembled.

And still, he reached for the edge of the wool. He hesitated. Just for a breath.

Then pulled it from his shoulders.

Julian had never been looked at like that before.

Not like prey. Not like sin. Not like something two men might devour because the storm had made them wild enough to forget restraint.

The blanket puddled at his waist, leaving his soaked shirt clinging to the soft lines of his torso. Mason’s gaze dropped, unapologetic. He exhaled smoke slowly, like tasting something new.

Dane did not blink.

Julian could feel the heat rising in his throat, but it was not from shame. It was from knowing. Knowing that something had shifted. That whatever they were out here to escape from, emails, alarms, expectations, had been washed away by the rain.

Here, under this tarp, they were raw. Just heat and breath and hunger.

“You always get that quiet,” Mason murmured, “when you want something.”

Julian did not answer.

He did not need to.

Mason pushed off the tree with lazy grace, flicking the last of his cigarette out into the rain. Sparks hissed, vanished. He sauntered closer, steps slow, deliberate. Dane did not move, just sat with his legs wide, his chest rising steady beneath the weight of the storm.

Julian’s eyes flitted from one to the other. Caught in the space between them. Mason circled behind him.

The tarp flapped again, thunder shaking the sky. But inside, it was quiet. The kind of quiet where breath gets louder. Where every movement feels like a promise.

Mason’s hand came to rest on Julian’s shoulder.

Warm. Heavy. Grounding.

“You know what this is, do you not?” he whispered close to his ear. “You feel it too.”

Julian shivered beneath his touch.

Dane finally moved. A single shift. He reached forward, slow, and hooked one finger into the collar of Julian’s shirt. Pulled, just enough to expose the curve of a shoulder. His skin broke into goosebumps at the sudden cool.

“Say something,” Dane said.

Julian swallowed.

His mouth opened, then closed. Then,

“I,” he faltered, voice thinner than he wanted, “I do.”

Mason’s chuckle was breathless and almost sweet. “Yeah. Thought so.”

He trailed his fingers down Julian’s arm, following the tremble. Let them rest at his elbow, like a leash not yet pulled tight.

“Eyes on me,” Dane murmured.

Julian obeyed.

That gaze was merciless. Not cruel, but exacting. Dane’s eyes did not wander. They pinned. Held. Devoured.

Julian’s heart beat harder.

“Do you want this?” Mason asked from behind him, voice low and steady. “Tell us now.”

Julian nodded.

“No,” Dane said. “Use your voice.”

The rain was a curtain, hiding the world. The lantern cast everything in gold. It felt like a cathedral. Like something sacred was about to happen.

“I want it,” Julian said, and this time his voice did not shake.

There was a pause.

Then Mason bent, lips brushing the edge of Julian’s jaw.

And Dane smiled.

It was slight, just the barest tilt of his mouth. But it made Julian’s spine straighten.

They had him now.

And he was ready to be taken.

Mason’s breath was fire against Julian’s neck.

The tarp trembled above them, every gust of wind sending cold mist in under the edges, but Julian did not feel it anymore. His skin was too hot. His chest too tight. Mason’s lips had not even touched him yet, but his presence was thick, like smoke, curling around him, creeping into his lungs.

Dane was the anchor.

Still on the cot, legs spread wide, eyes never leaving Julian’s face. His hand slid down to his own thigh, fingers flexing once, then settling. Like he was deciding just how far this was going to go tonight. Like he already knew.

“Come here,” he said.

Julian moved before he could think, knees creaking on the tarp’s floor, blanket long forgotten. His shirt stuck to his back, his curls still dripping. He crawled the space between them, and Dane did not help, he just watched, like a king waiting for tribute.

When Julian knelt between Dane’s legs, he could feel Mason still behind him, close enough to graze. The tension was unbearable. The air charged with wanting.

“Take it off,” Dane said, voice low.

Julian’s hands went to the hem of his shirt. Paused.

He looked up.

“You sure?” he asked softly.

That smile again. Just a breath of it.

“I have been sure since we pitched the tarp,” Dane said.

Julian pulled the shirt over his head.

The rain roared louder for a moment, like the forest itself had noticed. His bare chest glowed amber in the lantern light. Damp. Flushed. Waiting.

Mason made a sound behind him, low and appreciative. Then one hand slid down Julian’s spine. Slow. Possessive.

Dane leaned forward, just slightly, and cupped Julian’s jaw.

The first touch.

Not soft. Not cruel. His thumb traced Julian’s bottom lip, dragged it down just enough to see the wet glint of tongue. His eyes were darker now, hunger heating them from inside.

“You have no idea what you are in for,” Dane said.

Julian shivered.

“I want to,” he breathed.

Mason’s hand moved lower. Across the curve of his hip. Up to his ribs. Mapping him like a man taking inventory of what is about to be used.

Dane leaned in further, their foreheads nearly touching. “Say it again.”

“I want to.”

“Louder.”

Julian’s pulse beat against his skin. “I want to.”

Mason’s fingers dug in, just enough to claim. “Good boy,” he murmured.

Julian’s breath caught.

There it was. The ache. The drop. The moment his knees sank deeper into the floor.

Dane’s hand slid into his hair, not yanking yet, just holding.

“Then do not move,” he said.

And Julian, trembling under hands that had not even undressed him yet, obeyed.

Julian did not know who touched him first.

It might have been Mason’s mouth, brushing soft and sudden at the base of his neck. Or it might have been Dane’s hand, spreading warm and wide over his chest. Both were there at once, flanking him, circling him, claiming space against his skin like they had practiced this choreography in secret.

The tarp sagged lower above them, rain spilling in heavy sheets just inches from their heads, but beneath it, time had thickened. Slowed. Every second stretched long with promise.

Julian’s breath trembled out of him.

Mason was behind again, always behind, always close. His hands slid around Julian’s waist, teasing the waistband of his damp shorts. He did not pull them down, just let his thumbs rest there, a warning. His lips grazed Julian’s shoulder blade, then up, trailing heat.

Dane stayed in front, steady as stone, eyes locked on Julian’s every flinch. He was still half seated, but his hand moved lower, tracing the slope of Julian’s chest, the dip between his ribs. He stopped just above the waistband.

Then pressed down.

Julian’s hips jerked, breath sharp.

“You feel everything, do you not,” Dane said.

Julian nodded, dazed.

Mason chuckled behind him. “He is shaking already.”

Dane leaned in. “Good.”

His mouth touched Julian’s throat.

One kiss.

One searing, open mouthed promise at the pulse point, and Julian nearly melted forward. But Mason caught him, his hands flattening against Julian’s stomach, holding him upright like a brace.

“Let him fall,” Mason murmured against Julian’s ear.

“Not yet,” Dane said.

Julian moaned, a sound so soft it barely escaped.

He did not know where to focus, on the mouth sucking heat into his neck, or the fingers ghosting his waistband, or the hand gripping his hip from behind. His body felt stretched, pulled taut between them.

“I like the way you breathe,” Mason whispered. “Like every inhale is a question.”

“And every exhale,” Dane said, lips brushing Julian’s collarbone, “is surrender.”

The lantern swayed gently. Rain kept drumming.

Julian reached for Dane without thinking, hands sliding over the broad heat of his thighs, up toward the line of his abs. Dane let him. Let him touch. But did not give anything back yet.

“You want to serve?” Dane asked.

Julian nodded, eyes wide. “Yes.”

“You want to be used?”

“Yes.”

Mason kissed the back of his neck. “Then be still, baby.”

Julian stilled.

Every muscle tight. Every nerve alive.

And when Dane’s hand finally slipped beneath the waistband of his shorts...

He gasped.

Julian could barely breathe.

Dane’s hand was firm, sliding lower with ruthless precision, but he did not move fast. He lingered in the tension. Let Julian feel each inch of descent. Let the air thicken between them until all that remained was heat and heartbeat and the sound of water pounding above.

Mason’s hands did not stray. One stayed locked at Julian’s hip, the other tracing slow lines along his side, teasing at skin that twitched beneath every pass. His breath was right behind Julian’s ear.

“Still,” he reminded him.

Julian obeyed.

But it was getting harder to stay upright. Dane’s fingers teased just beneath the hem now, knuckles brushing against the ache he had not dared touch himself since the hike started. The ache that had bloomed hour by hour while watching Dane strip his shirt in the woods, while Mason bit the rim of a water bottle like a promise.

Dane looked up at him. Not smiling now. Something deeper. Something more solemn. A kind of reverence that felt heavier than want.

“This,” he said quietly, “is not about release.”

Julian nodded.

“This is about surrender.”

Another nod. Barely a breath.

“And when we take you,” Dane said, fingers ghosting over the hard heat beneath damp fabric, “we do not give you back.”

Julian moaned, soft and broken.

Mason’s lips brushed his temple. “That is what you want, is it not?” His voice was cruel and kind at once. “To be ruined in the dark where no one can hear you but us.”

Julian turned his head, seeking that mouth, needing to kiss something, to ground himself, but Mason denied him. Pulled back just out of reach.

“Not yet.”

Dane gripped harder.

Julian’s hips bucked instinctively, and Mason was instantly there, holding him down, body flush against his back, one strong arm wrapping around his ribs.

“You move when we move you,” Mason growled, low against his ear. “Understand?”

“Yes,” Julian gasped. “Please...”

Dane pulled his hand free. Slowly.

Julian whimpered.

The tarp creaked above. The storm surged again, another wave of thunder and wind and water. But all of it felt far away. This was a different kind of storm. Heat wrapped in command, a shiver trapped in muscle.

Mason’s fingers tangled in his curls now, tilting his head back. “Open.”

Julian parted his lips.

Dane leaned in close. His mouth almost touched. Almost.

“You have said yes,” Dane murmured. “Now show us.”

Julian’s eyes fluttered shut.

Mason’s fingers curled tight in his hair...

Dane waited.

Read Thirst Here at the Pleasure Index or at

Get even more at The Vault

User's avatar

Continue reading this post for free, courtesy of Rowan Thornwell.

Or purchase a paid subscription.
© 2025 The Pleasure Index · Publisher Privacy ∙ Publisher Terms
Substack · Privacy ∙ Terms ∙ Collection notice
Start your SubstackGet the app
Substack is the home for great culture