Inside the dark castle, a shadow slipped silently from one hallway to the next. It moved without a sound, almost like it wasn’t even real. It crept through walls, pillars, and empty corridors, deeper and deeper into the heart of the fifth demon king’s castle.
It was Xulgorath—the sixth demon king.
He was using his unique skill, Shadow Steps, allowing him to move through shadows without being seen or sensed. It made him like a ghost, impossible to track.
Not that anyone was watching. The entire castle… was dead quiet.
Every guard, servant, or creature that should’ve been there was missing.
“Just what happened here?” Xulgorath whispered to himself as he glided forward. “Who killed everyone… and so fast?”
As he neared the throne room, he heard a loud, crashing sound—like mountains smashing together, or boulders falling from the sky.
Each sound made the stone beneath his feet shake slightly.
Carefully, Xulgorath slipped into the throne room using his skill, keeping low and hidden behind a pillar. When he peeked out—
His eyes flew wide open in shock.
The noise was from Scarlett’s fists, slamming again and again into Noir’s body, breaking him apart like he was made of clay. Flesh, blood, and broken pieces of the floor were scattered all around. But every time she smashed him, his body regenerated, healing itself instantly.
Still, she didn’t stop. Her punches were fast, powerful, and unending.
Sitting to the side were Aoto and Chiyoko, relaxed and chatting while sitting on smaller thrones meant for subordinates. They didn’t even seem bothered by the destruction around them.
“Noir... defeated?” Xulgorath whispered, stunned. “Am I dreaming…?”
He stayed completely hidden, not daring to make a sound. His demon heart pounded in his chest as he stared at the scene.
“So that’s Scarlett Nova…” he murmured, his voice dry. “She’s even more beautiful than the rumors say. And I… I clearly underestimated her.”
As a demon king himself, he knew just how powerful someone like Noir was. Yet here he was—being beaten like a helpless child. Scarlett’s strength was far beyond what Xulgorath had imagined.
But even in his shock… he smiled.
“A human… no, a being that strong… could she have broken the Creator’s will?” he wondered silently. ɴᴇᴡ ɴᴏᴠᴇʟ ᴄʜᴀᴘᴛᴇʀs ᴀʀᴇ ᴘᴜʙʟɪsʜᴇᴅ ᴏɴ NovelHub(.)net
Curious, he raised one hand and used an appraisal spell to check her status.
As expected—the spell failed instantly.
“I knew it…” he muttered with a small laugh. “If it had worked, I’d be more surprised.”
He then prepared to try something stronger—his unique skill: Analyzer.
Xulgorath opened his eyes wide and stared at Scarlett with intense focus. He pushed all of his energy into it.
“Gah!” He almost collapsed, stumbling forward and nearly exposing himself. After taking a few deep breaths, he managed to steady his body.
“Damn… why is her resistance so high?” he whispered, wiping sweat from his brow.
He clenched his fists and looked at Scarlett again, determination burning in his eyes.
“I’m not giving up. She’s the last hope…”
He triggered the skill again. This time, he pushed it even further. He poured in his mana, and even used a bit of his own life force. His entire body shook with the strain.
“Come on… come on! Just show me something!” he screamed in his mind. His right eye burned with pain, begging to shut, but he forced it open.
Blood dripped from his eyes. The veins bulged. His eyeballs felt like they were about to burst.
And then—finally—something appeared.
But it was not normal. What he saw wasn’t what Scarlett herself would have seen.
Scarlett Nova (Avatar Body)
Demonic Angel, Lady of Black Thorn, Granter of Mortality, Anti-Narrative, The Destined One, The Destroyer, Chaos Bringer</p><p><Being> ???</p><p><Age> Not Applicable</p><p><Gender> Not Applicable</p><p><Believers> ???</p><p><Strength> 4.8M <Endurance> 6.9M <Agility> 3.8M <Luck> 20 <Intelligence> 75 <Mana> 10.8M</p><p>Skills:</p><p>Ultimate Skill: ??? <Locked></p><p>Ultimate Skill: ???</p><p>Ultimate Skill: ???</p><p>Ultimate Skill: ???</p><p>Unique Skill: Ultimate Regeneration</p><p>Unique Skill: Infinite Soul Regeneration</p><p>Rare Skill: Bloodlust</p><p>Spear Mastery Lv.1</p><p>Sword Mastery Lv.3</p><p>Hand-to-Hand Combat Lv.Max</p><p>Archery Lv.1</p><p>...</p><p>Pa!</p><p>Xulgorath’s eyes burst.</p><p>Blood sprayed out like a fountain.</p><p>He dropped down and curled behind the pillar, holding himself tightly, trying not to scream. Not because of the pain—his body had already started to regenerate—but because of what he had just seen.</p><p>His entire body trembled.</p><p>Four ultimate skills.</p><p>He had only seen the screen for a split second, but it was enough to burn it into his mind.</p><p>“Four ultimate skills?” he whispered in disbelief. “How… How is that even possible?”</p><p>He almost wanted to shout and alert the whole world—but he kept it in.</p><p>His thoughts were spinning. “Her status screen was blue. That means she hasn’t broken the Creator’s Will. But then how? How can she have this kind of power? Am I going insane?”</p><p>His heart raced so fast, it felt like it might explode.</p><p>He took a deep breath. Then another. Slowly, he calmed himself down. He stood up straight, a wide grin forming on his face.</p><p>“No matter what she is… If I can get even a single piece of her, even one hair strand, I could create a being with four ultimate skills. Actually prime version her.”</p><p>He chuckled quietly to himself, not taking any action.</p><p>“Let’s just wait and observe for now. I can’t take risks. I’ll make my move only when I’m sure… when I can win without fail.”</p><p>----------------</p><p>Scarlett threw another heavy punch into Noir's stomach, and this time, it left a deep hole through his abdomen.</p><p>“Damn it! Someone with regeneration is so annoying to kill!” she growled, frustrated. “Just die already!” she shouted, slamming her fist into him again.</p><p>She couldn't use her nuclear magic because Aoto and Chiyoko were still nearby. And this kind of hand-to-hand beating was taking way too long.</p><p>Each time Scarlett landed a blow, Noir's body would fix itself. His muscles, his bones, even his heart—everything regenerated again and again. It was like trying to kill something that refused to stay dead.</p><p>Noir, still being punched around, was lost in his thoughts.</p><p>"I'm forgetting something… but what is it? It's right there... so close, but I just can’t remember!"</p><p>His head throbbed as he tried harder. He couldn’t remember his offensive unique skills no matter how much he tried. It was like that part of his mind had been erased.</p><p>But then, something else came to him. Something that could save him.</p><p>His eyes widened as a spark of hope lit up inside him. "Yes! That thing… I still have it!"</p><p>Without wasting a second, Noir began crawling—dragging his half-broken body slowly toward his throne.</p><p>“Haha! The great demon king is crawling like a baby!” Aoto shouted from behind, mocking him.</p><p>“Where do you think you're going?” Scarlett asked, smirking as she lifted her leg and kicked him hard, sending him tumbling forward.</p><p>But instead of stopping him, the kick actually pushed him closer to his throne.</p><p>Still crawling, Noir moved with all the strength he had left. Everyone else was laughing, not taking him seriously anymore.</p><p>But then, Scarlett noticed something strange. Noir was reaching behind the throne with his hand.</p><p>Her smile faded. “What are you doing back there? Trying something sneaky?”</p><p>Before he could grab whatever it was, she kicked him again—this time sending him flying across the room and crashing into the back wall.</p><p>BAM!</p><p>The sound echoed loudly through the hall.</p><p>But Noir didn’t groan in pain. Instead… he started laughing.</p><p>“Too late!” he shouted, holding up something in his hand—a small, round, folded paper that looked plain and harmless.</p><p>But it wasn’t.</p><p>It was something only Noir and a few others knew about.</p><p>A secret contract given to him by the third demon king, Asmodeus.</p><p>Back when Noir was still rising in power, Asmodeus had given him that paper with a strange offer:</p><p>“When you’ll bs beaten to death, just tear this. I’ll land one punch on your enemy.”</p><p>It was given to him as a joke… even as an insult. But deep down, he’d kept it as motivation—to become strong enough that he’d never need anyone’s help.</p><p>And now, when everything was falling apart… it was his last chance.</p><p>“I can’t believe this insult might actually save me!” Noir laughed.</p><p>Then, without a second thought—</p><p>Rip!</p><p>He tore the paper in half.</p><p>Crumble...</p><p>Suddenly, the castle began shaking. The ground trembled. The walls cracked. Stones fell from the ceiling.</p><p>The sky outside turned black. Dark clouds formed instantly, and bolts of lightning flashed across them.</p><p>It all happened so fast, even Xulgorath—who was hiding—stared in shock.</p><p>Aoto and Chiyoko jumped from their seats and rushed to the window.</p><p>Their hearts pounded.</p><p>“What’s happening?” Chiyoko said, a chill running down his spine. “What was in that paper?”</p><p>“I don’t know… but it feels like… like a true demon king is descending!” Aoto replied, his voice shaking.</p><p>Then—</p><p>Swirl...</p><p>A black vortex formed in the thorn room. Like a spinning hole of darkness, sucking the surroundings around it.</p><p>Noir stood up slowly, stretching his body. The pain was gone now. He cracked his neck and looked at the vortex.</p><p>“This is my chance,” he said under his breath. “I need to get out of here… now.”</p><p>"Teleport!" Noir whispered, and with the little mana he had left, he disappeared from the room in a flash of light. He reappeared somewhere far away—maybe a few hundred kilometers—barely standing on his feet, but alive.</p><p>Back in the castle, only Scarlett, Aoto, and Chiyoko were left.</p><p>The swirling black vortex above the castle began to change. It started to look clearer—more like a glowing portal than a storm.</p><p>Then, from the other side of the portal, three figures slowly came into view.</p><p>The first figure to step out was the smallest—a child, around ten years old, with black hair and black eyes. He had a plain, average-looking face.</p><p>But behind her blindfold, Scarlett’s eyes widened in shock as she saw the other two standing behind the boy.</p><p>The first one was tall, with white hair showing signs of old age. His sharp eyes were full of malice and cruelty, and he wore a white scientist's coat.</p><p>The second one was shorter and round, with a chubby body and a creepy-looking face. He had the face of an old pervert and wore the same white scientist’s uniform.</p><p>They were none other than Dr. Raki and Dr. Magi.</p><p>And the boy—wasn’t really a boy. He was the third demon king, Asmodeus, possessing the body of a child.</p><p>Asmodeus slowly walked out of the portal while the two scientists stayed behind with smirks on their faces, clearly enjoying the moment.</p><p>He looked around for just a second and instantly understood what had happened.</p><p>"Ohh… so this is the situation," Asmodeus said to himself, like it was nothing special.</p><p>Then his eyes turned directly to Scarlett.</p><p>A wide, twisted grin appeared on his face.</p><p>"It seems this is our first time meeting, Subject 'Demonic Angel,'" he said with a casual tone.</p><p>Snap!</p><p>That one sentence was enough to make Scarlett lose all control.</p><p>"ASMODEUS, YOU MOTHERFUCKERRRRRRR!" she roared, her voice shaking the air, her rage bursting like an explosion.</p><p>She clenched her fists so tightly that her nails dug into her palms. She was ready to destroy him on the spot. Her feet moved forward without a second thought.</p><p>But before she could even take her next step—</p><p>Wooshhh...</p><p>Asmodeus suddenly appeared right in front of her.</p><p>He had moved so fast that even Scarlett, with all her speed, didn’t see it happen.</p><p>He looked at her calmly, his face still wearing that same annoying grin.</p><p>"Cosmic Punch," he said softly.</p><p>There was no sound. No shockwave. No light.</p><p>Nothing at all.</p><p>And in the very next moment…</p><p>Scarlett was gone.</p><p>She didn’t feel pain.</p><p>She didn’t even have time to react.</p><p>One second she was in front of Asmodeus—</p><p>The next, she was floating somewhere deep in outer space.</p><p>Outside the galaxy itself.</p>
</article>
<nav class="chapter-nav">
<div class="keyboard-hint" x-show="showKeyboardHint" x-transition.opacity>
<svg class="hint-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
</svg>
<span class="hint-text">
Use <span class="kbd">←</span> and <span class="kbd">→</span> arrow keys to navigate between chapters
</span>
<button @click="dismissKeyboardHint()" class="dismiss-hint" title="Close">×</button>
</div>
<div class="nav-row">
<a href="https://novelhub.net/novel/that-time-i-got-turned-into-a-dragonoid/chapter-178" class="nav-link">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"/>
</svg>
<div class="text">
<div class="label">Previous</div>
<div class="title">Chapter 178</div>
</div>
</a>
<a href="https://novelhub.net/novel/that-time-i-got-turned-into-a-dragonoid/chapter-180" class="nav-link next">
<div class="text">
<div class="label">Next</div>
<div class="title">Chapter 180</div>
</div>
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
</svg>
</a>
</div>
<a href="https://novelhub.net/novel/that-time-i-got-turned-into-a-dragonoid" class="novel-link">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 19l-7-7m0 0l7-7m-7 7h18"/>
</svg>
Back to That Time I Got Turned In...
</a>
</nav>
<section class="comments-section">
<div x-data="commentSystem(4769, 2646319, [], 'false')">
<h2 class="py-2 mb-4 text-lg font-bold text-blue-600 dark:text-blue-400">Comments</h2>
<div class="mb-6">
<div class="p-4 text-center text-gray-500 dark:text-dark-600 bg-gray-50 dark:bg-dark-50 rounded-lg border border-gray-200 dark:border-dark-300">
<svg class="mx-auto mb-3 w-12 h-12 text-gray-300 dark:text-dark-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path>
</svg>
<p class="mb-3 text-sm dark:text-dark-700">Join the discussion! Login to share your thoughts and connect with other readers.</p>
<div class="flex gap-3 justify-center">
<button @click="$dispatch('open-modal', { type: 'auth', mode: 'login' })" class="px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-md transition-colors hover:bg-blue-700">
Login
</button>
<button @click="$dispatch('open-modal', { type: 'auth', mode: 'register' })" class="px-4 py-2 text-sm font-medium text-gray-700 dark:text-dark-800 bg-gray-200 dark:bg-dark-200 rounded-md transition-colors hover:bg-gray-300 dark:hover:bg-dark-300">
Register
</button>
</div>
</div>
</div>
<div id="comments-list" class="space-y-4" x-show="replyingTo === null && !hasInteractions">
<div class="p-6 text-center text-gray-500 dark:text-dark-600 bg-white dark:bg-dark-50 rounded-lg border border-gray-200 dark:border-dark-300">
<svg class="mx-auto mb-3 w-12 h-12 text-gray-300 dark:text-dark-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path>
</svg>
<p class="text-sm dark:text-dark-700">No comments yet. Be the first to comment!</p>
</div>
</div>
<div x-show="hasInteractions" x-cloak class="space-y-4">
<template x-for="comment in comments" :key="comment.id">
<div :data-comment-id="comment.id" class="p-2 bg-white dark:bg-dark-50 rounded-lg border border-gray-200 dark:border-dark-300 transition-all duration-200">
<div class="flex gap-3">
<div class="flex-shrink-0">
<div class="inline-block relative">
<img :src="comment.user.avatar && comment.user.avatar !== 'images/default-avatar.svg' ? `/storage/${comment.user.avatar}` : '/images/default-avatar.svg'"
alt=""
class="object-cover w-12 h-12 rounded-full"
loading="lazy">
</div>
</div>
<div class="flex-1">
<div class="flex justify-between items-center mb-2">
<div class="flex gap-2 items-center">
<span class="font-semibold text-gray-800 dark:text-dark-900" x-text="comment.user.name"></span>
<span class="username-level-badge"
:class="`lv_${comment.user.level || 1}`">
<span x-text="`Lv${comment.user.level || 1}`"></span>
</span>
<template x-if="comment.chapter_id">
<span class="inline-flex items-center px-2 py-1 text-xs font-medium text-blue-700 dark:text-blue-300 bg-blue-100 dark:bg-blue-900/30 rounded-full">
Chapter <span x-text="comment.chapter_number"></span>
</span>
</template>
</div>
<span class="text-xs text-gray-500 dark:text-dark-600" x-text="formatDate(comment.created_at)"></span>
</div>
<div class="leading-relaxed text-gray-700 dark:text-dark-800" x-html="parseCommentBody(comment.content)"></div>
<div class="flex gap-4 items-center mt-3 text-xs text-gray-600 dark:text-dark-600">
<button x-on:click="toggleLike(comment.id)"
class="flex gap-1 items-center px-2 py-1 rounded transition-colors duration-200 hover:text-blue-600 dark:hover:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/30">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path d="M7.493 18.75c-.425 0-.82-.236-.975-.632A7.48 7.48 0 016 15.375c0-1.75.599-3.358 1.602-4.634.151-.192.373-.309.6-.397.473-.183.89-.514 1.212-.924a9.042 9.042 0 012.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 00.322-1.672V3a.75.75 0 01.75-.75 2.25 2.25 0 012.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558-.107 1.282.725 1.282h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 01-2.649 7.521c-.388.482-.987.729-1.605.729H14.23c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 00-1.423-.23h-.777zM2.331 10.977a11.969 11.969 0 00-.831 4.398 12 12 0 00.52 3.507c.26.85 1.084 1.368 1.973 1.368H4.9c.445 0 .72-.498.523-.898a8.963 8.963 0 01-.924-3.977c0-1.708.476-3.305 1.302-4.666.245-.403-.028-.959-.5-.959H4.25c-.832 0-1.612.453-1.918 1.227z" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/>
</svg>
<span x-text="comment.likes_count > 0 ? comment.likes_count : ''"></span>
</button>
<button x-on:click="toggleReply(comment.id)"
class="flex gap-1 items-center px-2 py-1 rounded transition-colors duration-200 hover:text-blue-600 dark:hover:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/30">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path d="M4.5 12L9.5 17M4.5 12L9.5 7M4.5 12L14.5 12C16.1667 12 19.5 11 19.5 7" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/>
</svg>
<span>Reply</span>
</button>
</div>
</div>
</div>
<div x-show="replyingTo === comment.id" x-transition class="mt-4 ml-0 md:ml-4">
<div :id="`replyPlaceholder${comment.id}`" class="reply-placeholder"></div>
</div>
<div x-show="comment.replies && comment.replies.length > 0" class="mt-4 ml-4 space-y-4">
<template x-for="reply in comment.replies" :key="reply.id">
<div class="flex gap-3">
<div class="flex-shrink-0">
<div class="inline-block relative">
<img :src="reply.user.avatar && reply.user.avatar !== 'images/default-avatar.svg' ? `/storage/${reply.user.avatar}` : '/images/default-avatar.svg'"
alt=""
class="object-cover w-8 h-8 rounded-full"
loading="lazy">
</div>
</div>
<div class="flex-1">
<div class="flex justify-between items-center mb-2">
<div class="flex gap-2 items-center">
<span class="font-semibold text-gray-800 dark:text-dark-900" x-text="reply.user.name"></span>
<span class="username-level-badge"
:class="`lv_${reply.user.level || 1}`">
<span x-text="`Lv${reply.user.level || 1}`"></span>
</span>
</div>
<span class="text-xs text-gray-500 dark:text-dark-600" x-text="formatDate(reply.created_at)"></span>
</div>
<div class="leading-relaxed text-gray-700 dark:text-dark-800" x-html="parseCommentBody(reply.content)"></div>
<div class="flex gap-4 items-center mt-3 text-xs text-gray-600 dark:text-dark-600">
<button x-on:click="toggleLike(reply.id)"
class="flex gap-1 items-center px-2 py-1 rounded transition-colors duration-200 hover:text-blue-600 dark:hover:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/30">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path d="M7.493 18.75c-.425 0-.82-.236-.975-.632A7.48 7.48 0 016 15.375c0-1.75.599-3.358 1.602-4.634.151-.192.373-.309.6-.397.473-.183.89-.514 1.212-.924a9.042 9.042 0 012.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 00.322-1.672V3a.75.75 0 01.75-.75 2.25 2.25 0 012.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558-.107 1.282.725 1.282h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 01-2.649 7.521c-.388.482-.987.729-1.605.729H14.23c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 00-1.423-.23h-.777zM2.331 10.977a11.969 11.969 0 00-.831 4.398 12 12 0 00.52 3.507c.26.85 1.084 1.368 1.973 1.368H4.9c.445 0 .72-.498.523-.898a8.963 8.963 0 01-.924-3.977c0-1.708.476-3.305 1.302-4.666.245-.403-.028-.959-.5-.959H4.25c-.832 0-1.612.453-1.918 1.227z" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/>
</svg>
<span x-text="reply.likes_count > 0 ? reply.likes_count : ''"></span>
</button>
<button x-on:click="toggleReply(reply.id)"
class="flex gap-1 items-center px-2 py-1 rounded transition-colors duration-200 hover:text-blue-600 dark:hover:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/30">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path d="M4.5 12L9.5 17M4.5 12L9.5 7M4.5 12L14.5 12C16.1667 12 19.5 11 19.5 7" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/>
</svg>
<span>Reply</span>
</button>
</div>
<div x-show="replyingTo === reply.id" x-transition class="mt-4 -ml-4 md:ml-0">
<div :id="`replyPlaceholder${reply.id}`" class="reply-placeholder"></div>
</div>
</div>
</div>
</template>
</div>
</div>
</template>
</div>
<div x-show="hasMorePages" x-cloak class="mt-6 text-center">
<button x-on:click="loadMoreComments" :disabled="loadingMore"
class="px-6 py-3 text-sm font-medium text-white bg-gray-600 rounded-lg transition-colors duration-200 hover:bg-gray-700 disabled:opacity-50 disabled:cursor-not-allowed">
<span x-show="!loadingMore">Load More Comments</span>
<span x-show="loadingMore" class="flex justify-center items-center">
<svg class="mr-2 w-4 h-4 animate-spin" fill="none" viewBox="0 0 24 24">
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
</svg>
Loading...
</span>
</button>
</div>
<div id="mobileReplyForm" x-show="replyingTo !== null" x-cloak class="hidden">
<form x-on:submit.prevent="postReply()" class="ml-0 space-y-4 md:ml-0">
<div class="bg-white dark:bg-dark-50 rounded-lg border border-gray-200 dark:border-dark-300 focus-within:ring-2 focus-within:ring-blue-500 focus-within:border-blue-500">
<div class="px-2 py-2 border-b border-gray-200 dark:border-dark-300">
<div class="flex justify-end items-center mb-1">
<button type="button" x-on:click="activeReplyStickerSet = null" x-show="activeReplyStickerSet"
class="text-xs text-gray-500 dark:text-dark-600 hover:text-gray-700 dark:hover:text-dark-800">
Close
</button>
</div>
<nav class="flex overflow-x-auto pb-1 space-x-3" aria-label="Reply Sticker Sets">
<template x-for="(set, setName) in stickerSets" :key="setName">
<button type="button"
x-on:click="activeReplyStickerSet = (activeReplyStickerSet === setName ? null : setName)"
:class="activeReplyStickerSet === setName ? 'ring-2 ring-blue-500 bg-blue-50 dark:bg-blue-900/30' : 'hover:bg-gray-200 dark:hover:bg-dark-200'"
class="flex-shrink-0 p-2 rounded-md transition-all duration-200 focus:outline-none">
<img :src="getRepresentative(setName)" :alt="set.name"
class="object-contain w-8 h-8" :title="set.name">
</button>
</template>
</nav>
<div x-show="activeReplyStickerSet" x-transition class="pt-2 mt-2 border-t border-gray-200 dark:border-dark-300">
<div class="grid overflow-y-auto grid-cols-6 gap-3 max-h-48 md:grid-cols-8 lg:grid-cols-10">
<template x-for="file in stickerSets[activeReplyStickerSet]?.files || []" :key="file">
<button type="button"
x-on:click="insertReplySticker(activeReplyStickerSet, file, replyingTo)"
class="p-2 rounded-md transition-transform sticker-button hover:bg-gray-200 dark:hover:bg-dark-200 focus:outline-none focus:ring-2 focus:ring-blue-500">
<img :src="stickerSets[activeReplyStickerSet].path + file"
:alt="file" class="object-contain w-12 h-12 md:w-16 md:h-16">
</button>
</template>
</div>
</div>
</div>
<div class="relative px-2 py-2">
<input type="hidden" name="reply_content" x-model="newReply">
<div id="mobileReplyEditor"
x-on:input="syncMobileReplyEditorState()"
contenteditable="true"
role="textbox"
class="block p-3 pr-20 w-full border-0 resize-none reply-editor focus:ring-0"
style="word-break: break-word; min-height: 60px;"
data-placeholder="Write your reply...">
</div>
<div class="absolute right-2 bottom-2">
<button type="submit" :disabled="loading"
class="inline-flex items-center px-3 py-1.5 text-sm font-medium text-white bg-blue-600 rounded-md border border-transparent shadow-sm transition-all duration-200 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 disabled:cursor-not-allowed">
<svg x-show="!loading" class="mr-1 w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path d="M4.5 12L9.5 17M4.5 12L9.5 7M4.5 12L14.5 12C16.1667 12 19.5 11 19.5 7" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/>
</svg>
<svg x-show="loading" class="mr-1 w-4 h-4 animate-spin" fill="none" viewBox="0 0 24 24">
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
</svg>
<span x-text="loading ? 'Replying...' : 'Reply'"></span>
</button>
</div>
</div>
</div>
</form>
</div>
</div>
</section>
</main>
<div class="side-panel" @click.stop>
<button class="side-btn" :class="{ 'active': showSettings }" @click="toggleSettings()" title="Settings">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"/>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/>
</svg>
</button>
<a href="https://novelhub.net/novel/that-time-i-got-turned-into-a-dragonoid/chapters" class="side-btn" title="Chapters">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 10h16M4 14h16M4 18h16"/>
</svg>
</a>
<button class="side-btn" @click="$dispatch('open-report')" title="Report">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/>
</svg>
</button>
</div>
<div class="swipe-hint" :class="{ 'show': showHint }">↑ Swipe up for menu</div>
<nav class="mobile-bar" :class="{ 'show': toolbarVisible }" @click.stop>
<div class="mobile-bar-inner">
<a href="https://novelhub.net/novel/that-time-i-got-turned-into-a-dragonoid/chapter-178" class="mobile-btn">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"/></svg>
<span>Prev</span>
</a>
<a href="https://novelhub.net/novel/that-time-i-got-turned-into-a-dragonoid/chapters" class="mobile-btn">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 10h16M4 14h16M4 18h16"/></svg>
<span>List</span>
</a>
<button class="mobile-btn" :class="{ 'active': showSettings }" @click="toggleSettings()">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"/><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/></svg>
<span>Settings</span>
</button>
<a href="https://novelhub.net/novel/that-time-i-got-turned-into-a-dragonoid/chapter-180" class="mobile-btn">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/></svg>
<span>Next</span>
</a>
</div>
</nav>
<div class="overlay" :class="{ 'show': showSettings }" @click="closeAll()"></div>
<div class="settings" :class="{ 'show': showSettings }" @click.stop>
<div class="settings-header">
<span class="settings-title">Reading Settings</span>
<button class="settings-close" @click="closeAll()">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/></svg>
</button>
</div>
<div class="settings-body">
<div class="theme-row">
<button class="theme-box white" :class="{ 'active': theme === 'auto' }" @click="setTheme('auto')"></button>
<button class="theme-box gray" :class="{ 'active': theme === 'gray' }" @click="setTheme('gray')"></button>
<button class="theme-box cream" :class="{ 'active': theme === 'sepia' }" @click="setTheme('sepia')"></button>
<button class="theme-box pink" :class="{ 'active': theme === 'pink' }" @click="setTheme('pink')"></button>
<button class="theme-box green" :class="{ 'active': theme === 'green' }" @click="setTheme('green')"></button>
<button class="theme-box dark" :class="{ 'active': theme === 'dark' }" @click="setTheme('dark')">
<svg fill="currentColor" viewBox="0 0 24 24"><path d="M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z"/></svg>
</button>
</div>
<div class="control-row">
<button class="control-btn" @click="decreaseFontSize()" :disabled="fontSize <= 14">-</button>
<span class="control-value" x-text="fontSize + 'px'"></span>
<button class="control-btn" @click="increaseFontSize()" :disabled="fontSize >= 28">+</button>
<span class="control-divider"></span>
<button class="control-btn" @click="decreaseLineHeight()" :disabled="lineHeight <= 1.4">-</button>
<span class="control-value" x-text="lineHeight.toFixed(1) + 'x'"></span>
<button class="control-btn" @click="increaseLineHeight()" :disabled="lineHeight >= 2.4">+</button>
</div>
<div class="settings-actions">
<button class="report-btn" @click="$dispatch('open-report'); closeAll();">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/></svg>
Report Issue
</button>
</div>
</div>
</div>
</div>
<div x-data="{ show: false }" @open-report.window="show = true" @close-report.window="show = false" x-show="show" x-cloak class="modal">
<div class="modal-bg" @click="show = false"></div>
<div class="modal-box" @click.stop x-show="show" x-transition>
<div class="modal-head">
<h3>Report Issue</h3>
<button class="modal-close" @click="show = false">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/></svg>
</button>
</div>
<div class="modal-body">
<form action="https://novelhub.net/novel/that-time-i-got-turned-into-a-dragonoid/chapter-179/report" method="POST" x-data="reportForm()" @submit.prevent="submit($event)">
<input type="hidden" name="chapter_id" value="2646319">
<input type="hidden" name="novel_id" value="4769">
<div x-show="success" class="mb-4 p-3 bg-green-100 text-green-700 rounded-lg text-sm">Report submitted!</div>
<div x-show="error" x-text="error" class="mb-4 p-3 bg-red-100 text-red-700 rounded-lg text-sm"></div>
<div class="mb-4" x-show="!success">
<label class="block text-sm font-medium mb-2">Issue Type</label>
<select name="report_type" required class="w-full px-4 py-3 rounded-lg border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800">
<option value="">Select...</option>
<option value="missing_content">Missing Content</option>
<option value="wrong_chapter">Wrong Chapter</option>
<option value="formatting_issue">Formatting Issue</option>
<option value="duplicate_content">Duplicate Content</option>
<option value="other">Other</option>
</select>
</div>
<div class="mb-4" x-show="!success">
<label class="block text-sm font-medium mb-2">Description</label>
<textarea name="description" required rows="3" maxlength="500" placeholder="Describe the issue..." class="w-full px-4 py-3 rounded-lg border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800 resize-none"></textarea>
</div>
<div class="flex gap-3" x-show="!success">
<button type="button" @click="show = false" class="flex-1 py-3 px-4 rounded-lg bg-gray-100 dark:bg-gray-800 font-medium">Cancel</button>
<button type="submit" :disabled="submitting" class="flex-1 py-3 px-4 rounded-lg bg-blue-600 text-white font-medium disabled:opacity-50">
<span x-show="!submitting">Submit</span>
<span x-show="submitting">Sending...</span>
</button>
</div>
</form>
</div>
</div>
</div>
<link rel="modulepreload" href="https://novelhub.net/build/assets/reader-3ZEI6_A9.js" /><link rel="modulepreload" href="https://novelhub.net/build/assets/comments-LdW9pvaX.js" /><script type="module" src="https://novelhub.net/build/assets/reader-3ZEI6_A9.js" data-navigate-track="reload"></script>
<link rel="modulepreload" href="https://novelhub.net/build/assets/common-4CfY8fbP.js" /><script type="module" src="https://novelhub.net/build/assets/common-4CfY8fbP.js" data-navigate-track="reload"></script></body>
</html>
<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'9c76ba8b8d7d5fa8',t:'MTc3MDAwNDI3MQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>