NOVEL Ascension of the Sylvan Cosmos Chapter 233. Forest Ruler and Cerulean Bloodsap. Lost In New Sensations.

Ascension of the Sylvan Cosmos

Chapter 233. Forest Ruler and Cerulean Bloodsap. Lost In New Sensations.
  • Prev Chapter
  • Background
    Font family
    Font size
    Line hieght
    Full frame
    No line breaks
    Text to Speech
  • Next Chapter

Chapter 233 - 233. Forest Ruler and Cerulean Bloodsap. Lost In New Sensations.

Author note: Happy Thanksgiving~! <3

*******

Thalia passed her hand through her red hair and sighed. "Liu Shu, look, I like you quite a lot. However, you need to understand that each of the Empires has a central World Tree that is tied to them deeply. The reason that our powers have the leisure to give you the ability to expand here as long as you don't touch our territory is simply because the continent we are in doesn't have a 'main' World Tree."

Liu Shu listened to her words and asked. "So, this continent is quite wild in that sense. What is stopping those World Trees from expanding here?"

Thalia rolled her eyes. "Do you think I know about the secrets of the possibly most ancient beings in our world? I don't know. I just know that this continent, even when mostly controlled by the , is relatively one of the freest. Of the other six continents, four of them are completely dominated by a 'main' World Tree, while the last two have powerful non-Arborarchy governments."

Kael added. "One of those four continents is entirely controlled by the Nexus, by the way."

Flor blinked. "Wasn't their ideology something like human supremacy? Even then, they have a World Tree themselves?"

Kael shrugged. "The intricacies of the higher echelons are a mystery for most, Flor. We are just subordinates following orders."

Flor sighed and leaned back, looking at both of them with a complicated expression. "If we don't accept, will you stop supporting us?"

Kael and Thalia smiled, and Thalia answered. "We won't really stop supporting you. However, instead of complete support, only our branches will help you."

Flor blinked. "Huh?"

Kael grinned. "What? Did you expect us to be so heartless? As Thalia said, we like Liu Shu quite a lot, so we will not stand on the sidelines while you get overrun." Kael sighed. "However, the support we can give you is extremely limited. At most, five people, us included, together with 500 more troops with a Level 20 average. That's the maximum aid we can give you if you don't accept."

Thalia added, seeing Flor's pleasant surprise. "If you accept, the numbers can become five or six times higher."

Flor paused and hummed. "Each of your powers has around 25 powerhouses laying around ready for battle?"

Thalia smiled proudly. "Being part of the main Empires opens the doors to many resources."

Flor laughed faintly. "I see." Then, she stayed silent for a few moments. She smiled a bit sadly and said. "I guess that we won't be able to have as deep of a cooperation as I anticipated. I appreciate that you will keep part of your forces around even then."

Kael crossed his muscular arms and commented. "I admire that from you, Flor. Sticking to your beliefs with courage and determination. Although they might be a straight path toward a cliff, no one will really become successful unless they take the risk."

Flor shook her head. "It's not courage that pushes me; it's Liu Shu." Flor sighed. "That pretty World Tree is my race's home and the source of everything we've achieved in the last years. If she burns down, we will burn down with her."

Liu Shu listened, but she didn't change her opinion on the matter. She could compromise on anything except constricting her innate freedom as a World Tree.

[Congratulations on completely assimilating the ! It has become your domain and your influence in the land will bring it several benefits.]

Out of nowhere, this System message popped into her sight, surprising Liu Shu. 'Oh?'

[Assimilation of a is the first step in the journey of a World Tree. Having assimilated the will give you a special and </p><p> !] </p><p> [Congratulations, you've gained <Golden Sap (C- Rank)> passive skill!... Innate constitution detected, <Golden Sap (C- Rank)> will evolve into <Cerulean Bloodsap (B- Rank)>] </p><p> <Cerulean Bloodsap (B- Rank Level 1 [0/248900])>: Your sap has now become a panacea. It can cure most poisons and ailments that don't outrank you while also serving as a naturally purifying and healing substance. This effect influences you as well. The world around you will now be deeply affected by your essence, and all flora will receive several growth boosts. </p><p> [<Cerulean Bloodsap> will influence the <Golden Sap Forest>, greatly increasing the effects of the <Golden Sap> over time.] </p><p> Liu Shu read the message with interest. 'Ohh! This is great. But... Bloodsap? Why not just... Sap? Hm... Wisdom! System!' </p><p> [System Hint: World Trees can develop Bloodsap when their sap's vitality increases.] </p><p> Liu Shu looked at that message and sighed. 'You said a whole bunch of nothing... Wisdom?' </p><p> [Wisdom: World Trees can develop a unique essence that transcends ordinary sap. When a World Tree's sap evolves to a level of potency capable of directly influencing life forms, purifying energies, or catalyzing growth, it is often referred to as "Bloodsap." The name is attributed to the deepened connection to life.] </p><p> 'Ohhh!' Liu Shu grumbled. 'See, System Hint? That's how you give an explanation! Not something like...' Liu Shu imitated the indifferent voice of the system mockingly. 'Yes. "Bloodsap" is better than sap. I am super clever.' </p><p> [...] </p><p> Liu Shu humphed, ignoring the system. Then, she focused on herself and pondered. 'I don't feel any change in my sap, though. Am I missing something? Or is it a gradual change?' </p><p> Looking around her own body, she reached her Core and saw that the sap that circulated into it was somewhat different when it came out. The color didn't change much, maintaining that neon blue color. However, the density was different. It was slightly thicker and carried a deeper essence. </p><p> 'Hm~. Nice!' Liu Shu giggled and asked. 'So, which one is my title? There was a skill and a title, right?' </p><p> [Congratulations! You've gained the title <Forest Ruler>!] </p><p> <Forest Ruler: You are the overlord of the forest. All trees that form part of the forest are like a small extension of yourself without losing their individuality. Your senses will become much sharper, and your ability to process information inside your domain will be enhanced. Additionally, all beings in the forest will recognize your presence as the overlord and avoid confronting creatures coated in your aura. </p><p> 'Another good news~! Now, Flor and the others can walk around the forest without fearing monster attacks!' Looking around her domain, Liu Shu couldn't help but be impressed. 'It is quite interesting to see so many of the monsters Leveling Up so quickly, but they are actually becoming somewhat of a threat... Look, there is a Level 21 </p><p> over there... Oh, the snake is swallowing an Explorer, poor woman. What about her friends?' </p><p> Liu Shu checked the surroundings and saw a bloody man running for his life with a tearful and snot-smeared face. 'Tsk, tsk. Level 11 and roaming this area? They are truly fearless.' </p><p> Not caring much about them, she looked away and relaxed her senses, allowing the entire forest to communicate with her. </p><p> Her mind seemed to expand as her senses got lost in the new feeling that surged into her when she relaxed. It was as if everything was part of her. 'Woah... This feels nice.' </p><p> She could feel life. The sounds of a baby born in the Golden Sap City harmonized with the soft cries of a monster wolf born in the forest. </p><p> She could feel death. The python swallowed the female explorer while another group hunted down a deer-like monster. </p><p> She could feel development. People moving the House Trees while they prepared to open their shops, crafters creating all kinds of items, and farmers taking care of the farmland and animals. </p><p> The cycle of life evolving in everything that was considered part of herself felt relaxing and like it had always been part of herself. Time slipped by as she felt the world and her core gradually change her regular sap for bloodsap. </p><p> Suddenly, she heard someone call her. </p><p> "Liu Shu!" </p><p> The World Tree snapped out of her daze and looked around. She saw Cinderielle looking at her with a worried face while standing at the base of her body. "Tiantian, are you okay? What happened?" </p><p> "Hm? What do you mean?" </p><p> Cinderielle blinked and frowned. "You've been out of sorts for a few days already. The war is about to start, so Flor is calling you so that you can give us the gathered intelligence of our domain. However, you weren't answering, so she sent me here!" </p><p> "Huh?" Liu Shu looked at the messages about her Energy-gathering skills. </p><p> [<Basic World Energy Gathering> has absorbed 42 Experience Points!] x13 </p><p> [A <Rose Fairy Queen Level 21> has used <Royal Pollination> on you. You've gained 42 Experience points!] x13 </p><p> <Rose Fairy Queen> was still Flor's Rose Fairy species. She didn't "devolve." However, losing the title was like leaving her race as nothing but a husk of her former self. </p><p> Incredulity filled Liu Shu's body, and she muttered. "Thirteen days? Such a fleeting moment was almost two weeks?" Liu Shu couldn't help but reflect. </p><p> Cinderielle asked, somewhat nervous. "Tiantian, is everything okay? If there is something wrong, you can tell me!" </p><p> Liu Shu looked at the anxious Sylvan woman and felt a current of warmth. She answered softly. "There is nothing to worry about, Cinderielle. Thank you. Return to Flor's room." </p><p> Cinderielle hesitated for a second, and she ran forward, hugging one of the roots of the massive tree. "Take care of yourself, okay?" </p><p> Compared to Liu Shu's body, which was almost 200 meters tall, Cinderielle was very small. However, Liu Shu felt her body warm up when she touched her. "I will. Thank you, Cinderielle." </p><p> Cinderielle nodded and ran toward Flor's meeting room. </p><p> Liu Shu looked into the room and saw around 20 people gathered there, 15 of them being <Second Energy Cycle> beings. She spoke softly. "Hello." </p><p> Flor's worried expression instantly eased, and she smiled widely. "Liu Shu! Is everything alright?" </p> <p> Liu Shu spoke softly. "It is, don't worry. What's wrong?" </p><p> One of the <Second Energy Cycles> spoke with a raised eyebrow. "I thought you were listening to everything in your domain, don't you know, World Tree?" </p><p> Delia frowned and looked at him. "Eltheris Velorn, you don't need to be disrespectful to Lady World Tree." </p><p> Eltheris was a deerkin, the leader of a family staying in Mareful City. Since Delia was allied with Liu Shu, this man came as part of the alliance. Of course, his personal strength caused him to be somewhat arrogant. </p><p> Liu Shu looked at Eltheris and asked. "Why the snarky tone? Did you hit the door with your horns, and now mister is grumpy?" </p><p> Delia's stern face cracked with a smile, barely holding out an audible laugh from escaping her throat when she heard Liu Shu. Many others were in a similar situation, turning their heads to avoid laughing. </p><p> Liu Shu had not seen it, but he had indeed hit the corner of a door when entering because of his long antlers. </p><p> The deerkin frowned profoundly and spoke to Liu Shu. "Lady World Tree, you should act formal and presentable in the face of the people who are going to fight to protect you." </p><p> Liu Shu didn't answer; she couldn't bother. She spoke to Flor. "Give me a second. I'll do a comprehensive scan of my territory to see if anything is wrong." </p><p> Flor nodded. "Go ahead."</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/ascension-of-the-sylvan-cosmos/chapter-232" 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/ascension-of-the-sylvan-cosmos/chapter-234" 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="6075" data-chapterid="233"><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 = 6075; 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: '6075', acode: 'ascension-of-the-sylvan-cosmos', cid: '233' }, 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/ascension-of-the-sylvan-cosmos'; } </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 = '6075'; let chapterid = '3241504'; $.ajax({ type: "post", url: '/api/sub.php', data: { articleid:articleid, chapterid:chapterid, chapterorder:'233', uri:'/nov/ascension-of-the-sylvan-cosmos/chapter-233', }, 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>