NOVEL Reincarnated To Evolve My Bee Empire Chapter 17: Warrior Bees

Reincarnated To Evolve My Bee Empire

Chapter 17: Warrior Bees
  • Prev Chapter
  • Background
    Font family
    Font size
    Line hieght
    Full frame
    No line breaks
    Text to Speech
  • Next Chapter

Chapter 17: Warrior Bees

We didn't have a map of the territory, but I knew Foragers didn't fly farther than half an hour away from the hive.

With their speed roughly estimated at 60 kilometers/per hour, it meant that the hive's "territory" was a circle around 30 kilometers in radius.

Good thing I still could remember the formula to calculate the circumference of a circle.

2*3,14*30=188. 188 kilometers or 3 hours of flight.

6 hours if the flight was slow enough to look out for ants and other threats, as well as take rest stops.

For every part of the territory border to be patrolled at least every 10 minutes during daytime, we'd need 35 patrols. 40 to be sure.

Each patrol could have just 10 bees—enough to deal with wasps and ants. Which meant I needed 200 Warrior Bees in total. Plus spares, so might make it 300.

'This is more doable than I thought. I feared I would take more bees from other duties and our food production would tank even more.'

〔Border Patrols〕

Brainpower requirement: 13

Allows establishing your territory.

Increases chances of noticing outside threats to the colony beforehand.

Allows opening and closing borders.

〔〕〔〕〔〕

I was a bit bummed that a technology had no stat bonuses.

'As long as we have food, it won't matter!'

I went to organize everything.

Despite the earlier incident with irreverent Builder Bees, my authority inside the hive has really grown in the past month. The Foremen Bees I taught have taught respect toward themselves and me to their peers. Smarter bees liked to talk and spread rumors about how smart I was.

That was what I chose to believe they were talking about behind my back.

They *definitely* loved me. And no bees *whatsoever* thought I was "ill in the head".

But I still asked for Ambrosia's help to get 300 recruits among younger (and not just smarter, but more long-living) bees. Then I temporarily removed 30 Foremen Bees from their duties and told them to train these recruits how to swing their hammers. Just that, nothing more.

They didn't *have* hammers, so they trained with sticks. Meanwhile, I urgently went to my Sergeant Craftsmen and told them to pause the training of new Craftsmen Bees so they could make 300 hammers.

Three days of rushed work later, 300 hammers were made, and the future border guards could swing them the right side toward the enemy.

But by that day, despite Foremen Bees' efforts, the hive lost 7 more units of food!

〔Resources〕:

> Food: 64 units

> Building materials: 9 units

In a grim but determined mood, I gathered all these bees together on the hive cave floor and arranged them into rows of ten.

They stood and watched me with curiosity. With how similar they all looked, and with hammers in their hands, they looked like some general's ideal of soldiers.

"First, from now on, each of you will be not just whatever worker you were before, but a Warrior Bee above all!" I declared.

</p><p> 〔Warrior Bee〕: +10% to base strength, agility, and endurance. </p><p> The title immediately appeared in their stats. It was a small boost, but a boost nonetheless. </p><p> 〔Nurse Bee〕 〔Ally〕 〔Progeny〕 </p><p> 〔Name〕: B1001 </p><p> 〔Active title〕: Warrior Bee </p><p> 〔Health〕: 11 / 11 </p><p> 〔Stamina〕: 11 / 11 </p><p> 〔Species〕: Common Honey Bee </p><p> 〔Age〕: 30 d </p><p> 〔Remaining lifespan〕: 122 d </p><p> 〔Attributes〕 </p><p> > Strength: 9 </p><p> > Agility: 44 </p><p> > Endurance: 10 </p><p> > Defense: 9 </p><p> > Intelligence: 100 </p><p> > Perception: 43 </p><p> 〔Special abilities〕 </p><p> Flight, Barbed Stinger, Royal Jelly Production </p><p> 〔Genes〕 </p><p> Enhanced Intelligence X, Increased Lifespan I </p><p> 〔〕〔〕〔〕 </p><p> The bees nodded silently. I paused. </p><p> "You won't cheer? That's supposed to be a cheer-worthy thing. You will be brave heroes protecting your hive from the enemy!" </p><p> "Aren't we always?" B1002 asked. "But you know better, Father. Cheer! We are heroes now!" </p><p> "Cheer!" </p><p> "Cheer!" </p><p> The cheers were subdued, but genuine. </p><p> 'Actually, their chances of dying now are much higher than before. Maybe they *shouldn't* cheer...' I thought. </p><p> But too late. </p><p> When Warrior Bees stopped cheering, I picked one out of every dozen and gave them the rank of Sergeants. </p> <p> This meant explaining ranks first. Then I explained to them what their job was. All together, it took me another day, but this wasn't the hardest part. </p><p> They had to learn their patrol route! </p><p> Bees had great spatial coordination and decent memory, especially considering their naturally low intelligence. If they saw their patrol route once, they could repeat it later easily. </p><p> But... someone had to show them. </p><p> Someone smart, someone who wanted to draw a map of surroundings, anyway. The only person who knew how to draw (stickmen and stick-bees). </p><p> *** </p><p> Early the next morning, a great swarm of 31 bees—me and all my Sergeant Warriors—flew out of the hive, led by me. </p><p> The clouds were so thick and gray in the sky that I could barely see the sun. As if the sky itself reflected my mood. </p><p> But I couldn't be scared back into the hive! Not by the sky, and not by all the big and hungry things that lived outside. I had to do this, for everybody's sake! </p><p> I pointed in the sun's direction, and the swarm flew there at full speed, staying just below the fern treetops.</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-16" 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-18" 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="17"><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: '17' }, 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 = '3213871'; $.ajax({ type: "post", url: '/api/sub.php', data: { articleid:articleid, chapterid:chapterid, chapterorder:'17', uri:'/nov/reincarnated-to-evolve-my-bee-empire/chapter-17', }, 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>