NOVEL Reincarnated To Evolve My Bee Empire Chapter 29: Commando Bees in training

Reincarnated To Evolve My Bee Empire

Chapter 29: Commando Bees in training
  • Prev Chapter
  • Background
    Font family
    Font size
    Line hieght
    Full frame
    No line breaks
    Text to Speech
  • Next Chapter

Chapter 29: Commando Bees in training

Ambrosia narrowed her eyes at me, then suddenly smiled.

"You decided to warn me this time, Nectus. Good. No, I won't be mad, but I will worry. What is it? How much risk is there, and how necessary is this all?"

"Very!"

I briefly explained to her about the destructive wonders of fire and how they can be applied to hornet nests, then reached the core weakness of the plan.

"But we don't have enough information about these hornets. So I want to stealthily search for them and their nest. If I can see them with my own eyes, I'd be able to say a lot about their capabilities and weaknesses. Because of the system thing, you know?" I tapped my temple meaningfully.

Ambrosia tilted her head slightly.

"Searching for the hornet nest is still incredibly risky. They can kill you—or even find our hive. And as you warned me already, this will be deadly."

My shoulders slumped.

"As if I *want* to go there myself! But on their own, our daughters won't know what to look out for, and how to hide better! Don't worry," I winked at Ambrosia and showed four thumbs up, "I know a few tricks to keep us stay unnoticed! And I will take guards with me, too."

If I convinced her enough, maybe I will convince myself too that my knees didn't shake at the thought of going to the Danger Zone.

Ambrosia hummed.

"I've noticed that your face scrunches and your eyes tear up when you are about to say something stupid half of the time. But now... you just look too confident, Nectus. This can't be good. No one should look this confident when suggesting something so risky."

Ambrosia shook her head.

I gaped at her.

Was she joking? Seriously. I couldn't tell. Did she develop a sense of humor and an incredible deadpan delivery, or was she serious?

"Are you joking?"

"What's a joke?"

I narrowed my eyes.

"Is *that* a joke, too?"

Ambrosia stared at me blankly.

Fuck. There went my thumbs.

"Just—just trust me, Amby, this is a good plan, and I'm the last person who wants to die here!"

"Of course. Please, avoid dying."

I puckered my lips.

"What about a kiss for good luck, too?"

Ambrosia smiled and briefly kissed me.

"Here."

I grinned.

Now I was going to keep this kiss in mind instead of the size of hornet bites for the entirety of my self-appointed mission.

***

It took about two days for a single team of Craftsmen Bees to make a full set of bone armor. One day for two teams. Most of that time went to make all the strings and spikes.

It would take three days for all the bone armor and candles to be complete.

Before that, I picked 20 Cleaning Bees from the OP generation and gathered them together.

But not in the usual spot near the hive's exit—we went outside!

We stood in the forest at the foot of our pillar mountain—a relatively safe place, but still innately rife with danger. At least I was wearing bone armor.

There, I turned to my daughters and hid the heaviness in my heart.

"From now on, you will prepare to be our stealthiest, our sneakiest, our most ready to kill, and our most heroic bees. Like Warrior Bees, but even more heroic. You will be... Commando Bees!"

</p><p> 〔Commando Bee〕: +10% to base agility, endurance, and perception. </p><p> For now, my future Commando Bees didn't fit the title requirements, but they stood straighter. </p><p> "Like Warrior Bees... Warrior Bees get hammers!" </p><p> "Is that for the hive?" one asked. </p><p> I nodded eagerly. </p><p> "Yes! Everything is." </p><p> Now everybody looked interested. </p><p> "I'm ready to learn!" </p><p> "Me, too, Father!" </p><p> I beamed. It looked like, thanks to the endless bee gossip, my authority had finally spread even to the youngest generations of my daughters. They even called me "Father" without being told to! </p><p> "Great. You will learn how to be sneaky... and to walk a lot. First, you must learn how to hide your bright coloring." </p><p> Black and yellow looked nice, but could be seen for miles away. </p><p> As my students watched, I walked up to a patch of mud nearby and dipped my hands in it. Then I smeared the dirt over my face. </p><p> Not enough. </p><p> With some swearing, I took off my bone armor and began rolling in the mud like a pig! I didn't stop until I felt like the mud was literally everywhere, even under my leaf skirt. </p><p> 〔A temporary special ability gained: 'Camouflage II'.〕 </p><p> 〔Camouflage II: reduces chances of being spotted by sight and smell.〕 <sub> 𝓃𝓸𝓋𝓹𝓾𝓫.𝒸ℴ𝓶</sub></p><p> I looked and smelled like a mud demon, and my wings itched badly from the dirt on it. I beat them to shake some off, and turned to my audience. </p><p> "Behold. The camouflage! Now do the same thing—get that mud all over yourself." </p><p> "Yes, Father!" </p> <p> "We got it, Father!" </p><p> "Our mud will be just like yours, Father!" </p><p> The bees went right to the mud and began rolling in it. </p><p> A couple minutes later, I became a leader of an entire squad of mud demons. With grass sticking out of their gray and brown mud covering, they really blended with their surroundings infinitely better than before. </p><p> The mud also hid our smells. Now we more resembled ants or even wood lice, not bees. </p><p> But that wasn't enough if my bees were going to fly loudly around, beat their wings for no reason, and whisper among each other all the time. </p><p> "Time to get *really* stealthy, girls. We are going silent. No one in this forest should hear us move." </p><p> This was much harder to teach my bees than the dirt-rolling. Especially since I was bad at sneaking myself! </p><p> But for two days, we learned together. On the third day, I quickly taught them the basics of swinging hammers at the enemies of the bee state. </p><p> And on the fourth day, when all the bone armor was ready and my Craftsmen Bees were back to making string, I deemed us ready to sneak into the Danger Zone.</p> </div> <!--<div style="margin-top: 0px; margin-bottom: 10px;">--> <!--<div id="pf-6777-1"><script>window.pubfuturetag = window.pubfuturetag || [];window.pubfuturetag.push({unit: "6571a4a2256794003ccac48b", id: "pf-6777-1"})</script></div>--> <!--</div>--> </div> <div class="chapter-end"></div> <ul class="ul-list7"> <li> <a href="/nov/reincarnated-to-evolve-my-bee-empire/chapter-28" id="prev_url" title="Read Privious Chapter"><span class="glyphicon glyphicon-chevron-left"></span>Prev Chapter</a> </li> <li> <a href="javascript:;" class="a1"><span class="glyphicon glyphicon-list-alt"></span></a> <div class="catalog"> <select onchange="location.href=options[selectedIndex].value"> </select> </div> </li> <li> <a href="/nov/reincarnated-to-evolve-my-bee-empire/chapter-30" id="next_url" title="Read Next chapter">Next Chapter<span class="glyphicon glyphicon-chevron-right"></span></a> </li> </ul> <div class="text-center" style="text-align:center"> <a href="javascript:;" class="library set-case" data-articleid="5907" data-chapterid="29"><span class="glyphicon glyphicon-plus"></span> Add to Library</a> <a href="javascript:;" class="showcomment"><span class="glyphicon glyphicon-comment"></span> <span id="total-tomm2">0</span> Comments</a> </div> <p class="tips">Use arrow keys (or A / D) to PREV/NEXT chapter</p> <div id="e-comments" class="m-newest3" style="display: none;margin-bottom: 1em"> <style> .comment-vip-level-image { width: 45px; height: 15px; vertical-align: middle; } .comment-child-vip-level-image { width: 45px; height: 15px; vertical-align: middle; } </style> <div class="m-newest3"> <div class="g-tit"> <h3 class="tit" style="text-align:left;margin: 0;"><span class="text-align: left; glyphicon glyphicon-comment"></span> Comments</h3> </div> <div class="flex-col" style="gap: 8px;padding: 1em"> <div class="flex-col comment-box" style="align-items: end;gap: 8px;"> <!-- Edit box --> <textarea placeholder="Share your thoughts." class="e-edit comm-inp" id = 'comm-text' rows="5"></textarea> <!-- Submit Button --> <button type="button" class="e-show-more comm-btn comment-submit"> <span class="glyphicon glyphicon-circle-arrow-up"></span> Submit </button> </div> <!-- Best and Newest --> <div class="flex-row justify-end color2" style="gap: 8px;align-items: stretch;"> <div class="flex-row f16" style="flex-grow: 1;font-weight: bold;align-items: center;"> <span><span id="total-tomm">0</span> Comments</span> </div> <div class="flex-row e-label order-box" data-sort="best" style="align-items: center;">Best</div> <div class="flex-row e-label order-box selected" data-sort="newest" style="align-items: center;">Newest</div> </div> <div class="flex-col e-comment-list align-center" style="gap: 1em"> <div class="comment-list w100"> </div> <button type="button" class="e-show-more f14 pointer load-comment"> <span class="glyphicon glyphicon-plus-sign load-icon"></span> <span class="btn-text">Load More Comments</span> </button> </div> </div> </div> <script> let page = 1; let articleid = 5907; let chapterid = 0; $(function(){ $('body').on("click",".reply-btn",function(){ if($(this).parent().parent().find(".flex-col").is(":visible")){ $(this).parent().parent().find(".flex-col").hide(200) }else{ $(this).parent().parent().find(".flex-col").show(200) } }) if(localStorage.comment_cache){ $('#comm-text').val(localStorage.comment_cache); } let defContent = '<span class="glyphicon glyphicon-circle-arrow-up"></span> Submit'; let comment_submit = false; $('body').on('click','.comment-submit',function(){ if(comment_submit){ return } $(this).html('<span class="glyphicon glyphicon-refresh spin"></span> Sending...'); let that = $(this); comment_submit = true; submitComm(this,function(){ comment_submit = false; that.html(defContent); }); }) function submitComm(e,after){ var pid = 0; var ppid = 0; let content = ''; let pUserUid = 0; if($(e).is('.child')){ pid = $(e).attr('data-pid')*1; if(pid == 0) { alert('pid is empty!') if(after != null) { after() } return } ppid = $(e).attr('data-ppid')*1; if(ppid == 0) { alert('ppid is empty!') if(after != null) { after() } return } content = $(e).parent().find('.comm-text').val(); }else{ content = $('#comm-text').val(); } pUserUid = $(e).attr('data-puserid')*1; if(pUserUid == 0) { alert('puserId is empty!') if(after != null) { after() } return } if(content == '') { alert('comment is empty!') if(after != null) { after() } return } localStorage.comment_cache = content; let that = $(e); $.ajax({ type: "post", url: '/api/comments.php', async:true, data: { pid:pid, ppid:ppid, p_user_uid:pUserUid, action:'add', articleid:articleid, chapterid:chapterid, content:content }, xhrFields: { withCredentials: true }, crossDomain: true, dataType: "json", success: function(res) { if(res.code == 403) { window.location.replace('/login'); return } if (res.code == 0) { $('#comm-text').val(''); getList(true); }else{ alert(res.msg) } if(after != null) { after() } localStorage.comment_cache = ''; }, error: function(){ if(after != null) { after() } localStorage.comment_cache = ''; } }) } let agree_ing = false; $('.comment-list').on('click','.agree-click',function(){ if(agree_ing){ return } agree_ing = true; let commid = $(this).attr('data-commid'); if(commid <= 0) { alert('commid is empty!') agree_ing = false; return } let articleid = $(this).attr('data-articleid'); if(articleid <= 0) { alert('articleid is empty!') agree_ing = false; return } let isOn = true; let action = 'addArgee'; if($(this).find('.glyphicon').is('.glyphicon-heart')) { isOn = false; action = 'delArgee'; } let that = $(this); $.ajax({ type: "post", url: '/api/comments.php', data: { action:action, commid:commid, articleid:articleid }, xhrFields: { withCredentials: true }, crossDomain: true, dataType: "json", success: function(res) { if(res.code == 403) { window.location.replace('/login'); return } if (res.code == 0) { if(isOn){ that.find('.glyphicon').addClass('glyphicon-heart') that.find('.glyphicon').removeClass('glyphicon-thumbs-up') that.find('.argee_num').html(that.find('.argee_num').html()*1 + 1) }else{ that.find('.glyphicon').addClass('glyphicon-thumbs-up') that.find('.glyphicon').removeClass('glyphicon-heart') that.find('.argee_num').html(that.find('.argee_num').html()*1 - 1) } }else{ alert(res.msg) } agree_ing = false; }, error: function(){ agree_ing = false; } }) }) $('.comment-list').on('click','#delbut',function(){ var res = confirm('Do you want to remove this comment?'); if (!res) { return } if($(this).is('.run_ing')){ return } $(this).addClass('run_ing'); let commid = $(this).attr('data-commid'); if(commid <= 0) { alert('commid is empty!') return } let articleid = $(this).attr('data-articleid'); if(articleid <= 0) { alert('articleid is empty!') return } let that = $(this); $.ajax({ type: "post", url: '/api/comments.php', data: { action:'del', commid:commid, articleid:articleid }, xhrFields: { withCredentials: true }, crossDomain: true, dataType: "json", success: function(res) { that.removeClass('run_ing'); if(res.code == 403) { window.location.replace('/login'); return } if (res.code == 0) { getList(true); }else{ alert(res.msg) } }, error: function(){ that.removeClass('run_ing'); } }) }) let orderIng = false; $('.order-box').click(function(){ if(orderIng){ return } orderIng = true let boxs = document.querySelectorAll('.order-box') for(const box of boxs) { if (box === this) { box.classList.add('selected') }else { box.classList.remove('selected') } } let od = $(this).attr('data-sort'); this.classList.add('selected'); getList(true,od); orderIng = false; }) $('.vcode').click(function(){ $('.vcode').attr('src',"/api/vcode.php?t="+Math.random()); }) $('.load-comment').click(function(){ if($(this).hasClass('btn-loading') || $(this).hasClass('loaded-all')) { return; } getList(); }) let firstLoad = false; $('.showcomment').click(function(){ let container = document.querySelector('#e-comments') if(!container)return; if (container.style.display === "none") { if(!firstLoad) { firstLoad = true getList(); } container.style.display = ""; } else { container.style.display = "none"; } }) getcount(); }) function getcount() { $.ajax({ type: "post", url: '/api/comments.php', data: { action:'count', articleid:articleid, chapterid:chapterid, }, xhrFields: { withCredentials: true }, crossDomain: true, dataType: "json", success: function(res) { if(res.code == 403) { window.location.replace('/login'); return; } if (res.code == 0) { $('#total-tomm').html(res.data.total); $('#total-tomm2').html(res.data.total); } else { alert(res.msg); $btnText.text('Load More Comments'); } }, error: function(){ } }); } function getList(reLoad, order) { var $btn = $('.load-comment'); var $btnText = $btn.find('.btn-text'); if(reLoad !== true) { $btn.addClass('btn-loading').prop('disabled', true); $btn.find('.load-icon').removeClass('glyphicon-plus-sign').addClass('glyphicon-refresh spin'); $btnText.text('Loading...'); } if(reLoad === true){ page = 1; } $.ajax({ type: "post", url: '/api/comments.php', data: { action:'list', articleid:articleid, chapterid:chapterid, order:order, page:page }, xhrFields: { withCredentials: true }, crossDomain: true, dataType: "json", success: function(res) { $btn.removeClass('btn-loading').prop('disabled', false); $btn.find('.load-icon').removeClass('glyphicon-refresh spin').addClass('glyphicon-plus-sign'); if(res.code == 403) { window.location.replace('/login'); return; } if (res.code == 0) { page++; if(reLoad === true){ $('.comment-list').html(''); } res.data.data_list.forEach(function(v,i){ let con = getCommLi({ uid:v.user_info.uid, userName:v.user_info.nickname, headPic:v.user_info.picture, level:v.user_info.level, adv_exp:v.user_info.adv_exp, content:v.content, addTime:v.created_at, agree:v.agree, myAagree:v.my_agree, atricleid:v.article_id, commid:v.id, child:v.child, }); $('.comment-list').append(con); }); // 新增判断:如果总评论数不超过一页数量,或者已经加载完且只有一页 if(res.data.total <= res.data.data_list.length || (res.data.is_end && page <= 2)) { $btn.hide(); // 直接隐藏整个按钮 } else if(res.data.is_end) { $btn.show() .find('.load-icon').removeClass('glyphicon-plus-sign').addClass('glyphicon-ok'); $btnText.text('All Comments Loaded'); $btn.addClass('loaded-all'); } else { $btn.show() .find('.load-icon').removeClass('glyphicon-ok').addClass('glyphicon-plus-sign'); $btnText.text('Load More Comments'); $btn.removeClass('loaded-all'); } $('#total-tomm').html(res.data.total); $('#total-tomm2').html(res.data.total); } else { alert(res.msg); $btnText.text('Load More Comments'); } }, error: function(){ $btn.removeClass('btn-loading').prop('disabled', false) .find('.load-icon').removeClass('glyphicon-refresh spin').addClass('glyphicon-plus-sign'); $btn.find('.btn-text').text('Load More Comments'); alert('Failed to load comments. Please try again.'); } }); } function getCommLi(opt){ let uid = opt['uid']; let child = opt['child']; let userName = opt['userName']; let headPic = opt['headPic']; let level = opt['level']; let advExp = opt['adv_exp']*1; let content = opt['content']; let addTime = opt['addTime']; let agree = opt['agree']; let myAagree = opt['myAagree']; let articleId = opt['atricleid']; let commId = opt['commid']; let nowUid = 0; let agOn = ' <span class="glyphicon glyphicon-thumbs-up"></span>'; if(myAagree){ agOn = '<span class="glyphicon glyphicon-heart"></span>'; } let del = `<button class="e-reply flex-center color3 delate" id="delbut" data-articleid="`+articleId+`" data-commid="`+commId+`"><span class="glyphicon glyphicon-trash" style="top: 0"></span></button>`; if(uid != nowUid) { del = ''; } let showAll = `<button class="e-show-more-re" id="showButton" onclick="showMoreReplies(this)"><span class="glyphicon glyphicon-eye-open"></span> Show More Replies</button> <button class="e-show-more-re" style="display:none;" id="showButton" onclick="showMoreReplies(this)"><span class="glyphicon glyphicon-eye-close"></span> Close Replies</button>` if(child == null || child.length <= 1) { showAll = ''; } let childHtml = ''; if (child != null && child.length >0) { child.forEach(function(v,i){ var childAgOn = ' <span class="glyphicon glyphicon-thumbs-up"></span>'; if(v.my_agree){ childAgOn = '<span class="glyphicon glyphicon-heart"></span>'; } var attr = 'id="reply-item" style="display: none;"'; if (i == 0) { attr = ''; } let childDel = `<button class="e-reply flex-center color3 delate" id="delbut" data-articleid="`+v.article_id+`" data-commid="`+v.id+`"> <span class="glyphicon glyphicon-trash" style="top: 0"></span> </button>`; if(v.user_info.uid != nowUid) { childDel = ''; } let vipLogColor = ''; if((new Date()).getSeconds() > v.user_info.adv_exp) { vipLogColor = 'style="filter: grayscale(100%);"'; } let vipLog = ` <img `+vipLogColor+` class="comment-child-vip-level-image" src="/static/novpub/images/vip`+v.user_info.level+`.webp">`; if(v.user_info.level == 0) { vipLog = ''; } let pvipLogColor = ''; if((new Date()).getSeconds() > v.p_user_info.adv_exp) { pvipLogColor = 'style="filter: grayscale(100%);"'; } let pvipLog = ` <img `+pvipLogColor+` class="comment-child-vip-level-image" src="/static/novpub/images/vip`+v.p_user_info.level+`.webp">`; if(v.p_user_info.level == 0) { pvipLog = ''; } childHtml += ` <div class="flex-row e-comment-item" `+attr+`> <img class="e-avatar" src="`+v.user_info.picture+`" alt=""> <div class="flex-col" style="flex-grow: 1;gap: 8px;"> <div class="flex-row justify-between e-username"> <span class="color1" style="flex-shrink: 1;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;"> <span style="flex-shrink: 1">`+v.user_info.nickname+vipLog+`</span> <span style="flex-shrink: 1" class="color3 glyphicon glyphicon-share-alt"></span> <span style="flex-shrink: 1" class="color3">`+v.p_user_info.nickname+pvipLog+`</span> </span> <div class="color2 f14 main-color-hs agree-click" data-articleid="`+v.article_id+`" data-commid="`+v.id+`"> `+childAgOn+` <span class="argee_num">`+v.agree+`</span> </div> </div> <div class="e-comment">`+v.content+`</div> <div class="flex-row justify-between"> <div class="color3 f14">`+v.created_at+`</div> `+childDel+` <div style="flex-grow: 1"></div> <button class="e-reply reply-btn" onclick="if (!window.__cfRLUnblockHandlers) return false; switchDisplayNone(this)"> <span class="glyphicon glyphicon-comment"></span> Reply </button> </div> <div class="flex-col" style="align-items: end; gap: 8px; display: none;"> <textarea placeholder="Share your thoughts." class="e-edit comm-text" rows="5"></textarea> <button class="e-show-more comment-submit child" data-puserid="`+v.user_info.uid +`" data-pid="`+v.id +`" data-ppid="`+v.ppid +`"><span class="glyphicon glyphicon-circle-arrow-up"></span> Submit</button> </div> </div> </div>`; }) } if(childHtml != '') { childHtml += showAll; } let vipLogColor = ''; if((new Date()).getSeconds() > advExp) { vipLogColor = 'style="filter: grayscale(100%);"'; } let vipLog = ` <img `+vipLogColor+` class="comment-vip-level-image" src="/static/novpub/images/vip`+level+`.webp">`; if(level == 0) { vipLog = ''; } let commHtml = `<div class="flex-col e-border-bottom w100"> <div class="flex-row e-comment-item w100"> <img class="e-avatar" src="`+headPic+`" alt=""> <div class="flex-col" style="flex-grow: 1;gap: 8px;width:calc(100% - 48px"> <!-- 用户名 and 点赞 --> <div class="flex-row justify-between e-username"> <div class="color1"> <span style="display: inline-block;">`+userName+vipLog+`</span> </div> <div class="color2 f14 main-color-hs agree-click" data-articleid="`+articleId+`" data-commid="`+commId+`"> `+agOn+` <span class="argee_num">`+agree+`</span> </div> </div> <div class="e-comment w100">`+content+`</div> <div class="flex-row justify-between"> <div class="color3 f14">`+addTime+`</div> `+del+` <div style="flex-grow: 1"></div> <button class="e-reply reply-btn" onclick="if (!window.__cfRLUnblockHandlers) return false; switchDisplayNone(this)"> <span class="glyphicon glyphicon-comment"></span> Reply </button> </div> <!-- textarea --> <div class="flex-col" style="align-items: end; gap: 8px; display: none;"> <textarea placeholder="Share your thoughts." class="e-edit comm-text" rows="5"></textarea> <button class="e-show-more comment-submit child" data-puserid="`+uid +`" data-pid="`+commId +`" data-ppid="`+commId +`"><span class="glyphicon glyphicon-circle-arrow-up"></span> Submit</button> </div> </div> </div> <div class="flex-col" style="padding-left: 1em;"> `+childHtml +` </div> </div>`; return commHtml; } function showMoreReplies(element) { let parent = element.parentElement; if (!parent) return; parent.querySelectorAll("& > #reply-item").forEach((item, index) => { if (item.style.display === "none") { item.style.display = ""; } else { item.style.display = "none"; } }); parent.querySelectorAll("& > #showButton").forEach((item, index) => { if (item.style.display === "none") { item.style.display = ""; } else { item.style.display = "none"; } }); } </script> </div> </div> </div> <!-- Floating Button --> <div class="float-container flex-row align-center speak-float-btn" style="display:none;"> <button class="control-btn flex-center glyphicon glyphicon-play speak-switch-fl" style="top: 0;vertical-align: baseline;"> </button> <button class="control-btn flex-center glyphicon glyphicon-stop speak-close-fl" style="top: 0;vertical-align: baseline;"> </button> </div> <a href="javascript:;" id="goTop"> <span class="glyphicon glyphicon-circle-arrow-up"></span> </a> </div> <script src="/static/novpub/js/reader.js?v=1.14"></script> <script src="/static/novpub/js/jquery.cookie.min.js"></script> <script src="/static/novpub/js/speak.js?v=1.0.70"></script> <script src="/static/novpub/js/bookcase.js?v=1.1.3"></script> <script> $('.ul-list7 li .a1').click(function() { $(this).stop().hide().siblings('.catalog').stop().show(); $.ajax({ type: "post", url: "/api/chapterlist.php", data: { aid: '5907', acode: 'reincarnated-to-evolve-my-bee-empire', cid: '29' }, success: function(data) { $('.catalog > select').html(data.html) }, dataType: "json" }) }); </script> <script> $(function() { // Define a configuration object const bookCaseConf = { attrArticleid:'data-articleid', attrChapterid:'data-chapterid', parentSelecter:'body', selecter:'.set-case', selectedClass:'.on', delUrl:'/api/delbookcase.php', addUrl:'/api/addbookcase.php', delCallback: function(e,res) { if(res.code == 0) { let htmlContent = `<span class="glyphicon glyphicon-plus"></span> Add to Library`; e.removeClass('on'); e.html(htmlContent); }else{ let htmlContent = `<span class="glyphicon glyphicon-ok"></span> In Library`; e.addClass('on'); e.html(htmlContent); alert(res.msg); } }, addCallback: function(e,res){ if(res.code == 0) { let htmlContent = `<span class="glyphicon glyphicon-ok"></span> In Library`; e.addClass('on'); e.html(htmlContent); }else{ let htmlContent = `<span class="glyphicon glyphicon-plus"></span> Add to Library`; e.removeClass('on'); e.html(htmlContent); alert(res.msg); } }, selecterBef: function(e){ let loadcontent = '<span class="glyphicon glyphicon-refresh spin"></span> Loading...'; // 设置加载状态 $(e).addClass('btn-loading').prop('disabled', true); $(e).html(loadcontent); }, selecterAft: function(e){ $(e).removeClass('btn-loading').prop('disabled', false); }, } let bookCase = new BookCase(bookCaseConf) }) </script> <script> document.onkeydown = (event) => { // input or textarea if (event.target.nodeName === 'TEXTAREA' || event.target.nodeName === 'INPUT') return; if (event.keyCode == 65 || event.keyCode==37) window.location = document.querySelector('#prev_url').attributes.href.value; if (event.keyCode == 68 || event.keyCode==39) window.location = document.querySelector('#next_url').attributes.href.value; if (event.keyCode == 13) window.location = '/nov/reincarnated-to-evolve-my-bee-empire'; } </script> <script> const btnBuyChapter = document.getElementById('btn-buy-chapter'); if (btnBuyChapter) { btnBuyChapter.addEventListener('click', async function () { document.querySelector('#btn-buy-chapter').innerText = 'Unlocking...'; let articleid = '5907'; let chapterid = '3213883'; $.ajax({ type: "post", url: '/api/sub.php', data: { articleid:articleid, chapterid:chapterid, chapterorder:'29', uri:'/nov/reincarnated-to-evolve-my-bee-empire/chapter-29', }, dataType: "json", success: function(res) { console.log(res) if(res.code == 403) { window.location.replace('/login'); return; } if (res.code == 0) { document.querySelector('#article').innerHTML = res.data; var unlockButtons = document.querySelector('.unlock-buttons'); if (unlockButtons) { unlockButtons.remove(); } return; } if(res.code = 400) { // window.location.href = '/goods'; }else{ alert(result.message || 'Something went wrong. Please try again.'); } }, error: function(){ alert('An error occurred while unlocking the chapter. Please try again later.'); } }); }); } </script> <div class="footer"> <div class="wp"> <div class="ll"> <a href="/" title="NOVPUB">NovPub.Com</a><br>Read Books Online Free & Free Web Novel Online </div> <div class="rr"> <a href="/contact" title="Contact us">Contact</a> - <a href="/sitemap.xml" title="Sitemap" target="_blank">Sitemap</a> <br><a href="/privacypolicy" title="Privacy Policy"> Privacy Policy</a> & <a href="/termsofuse" title="Terms of use"> Terms of use</a> </div> </div> </div> <!-- log in --> <div id="login" class="e-login-wrapper flex-row justify-center align-center" style="z-index: 1000;position: fixed;left: 0;top: 0;right: 0;bottom: 0;display: none"> <div class="flex-col e-login-container"> <div onclick="loginPopups()" class="flex-row color1 justify-end" style="position: absolute;top: 5%;right: 5%"> <span class="glyphicon glyphicon-remove" style="cursor: pointer;"></span> </div> <div class="flex-row color1 f24">Welcome to NovPub</div> <div class="color2" style="text-align: center;font-size: 16px;">Create or log into your account to access terrific novels and protect your data.</div> <div class="e-login-button" style="position:relative;"> <img style="position: absolute" src="/static/novpub/images/Google.png" alt=""> <a href="/login"><div>Log in with Google</div></a> </div> <div style="text-align: center;"> <span class="color2">Don’t Have an account? Click above to create an account.</span> <!--<a href="#" style="color: var(--main-color)">Sign up with your email address.</a>--> </div> <div> <a href="/termsofuse" style="color: var(--main-color)">Terms of Service</a> <span>/</span> <a href="/privacypolicy" style="color: var(--main-color)">Privacy Policy</a> </div> </div> </div> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-2P3TQ9PYTY"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-2P3TQ9PYTY'); </script><script> // Login pop-up window function loginPopups() { let login = document.querySelector('#login') if (login.style.display !== 'none') login.style.display = 'none' else login.style.display = '' } </script> </body></html>