| Bản 2012 Tên Võ Tướng: Tôn Quyền Kỹ năng: »Chế Hành« Giai đoạn ra bài 1 lần, bạn có thể bỏ nhiều nhất X lá bài (X là giới hạn sinh lực của bạn), sau đó rút số bài tương đương. Nhận hiệu quả từ [Định Lan Dạ Minh Châu] »Chế Hành« Giai đoạn ra bài 1 lần, bạn có thể bỏ tùy ý lá bài, sau đó rút số bài tương đương. *** Chỉ có bản ONL có Châu Liên Bích Hợp với Gia Cát Cẩn Bản 2017 Tên Võ Tướng: Quân - Tôn Quyền Kỹ năng: »Gia Hòa« Quân chủ kỹ. chỉ cần võ tướng này lật mặt, bạn có được [Duyên Giang Phong Hỏa Đồ]. »Liễm Tư« Giai đoạn ra bài 1 lần, bạn có thể bỏ1 lá bài trên tay, sau đó mở X lá bên trên chồng bài (X là tổng số lượng trang bị trong khu trang bị của các võ tướng Ngô cộng với số lượng Phong Hỏa). bạn thu được toàn bộ bài cùng loại với lá bạn đã bỏ. nếu lần này bạn thu được nhiều hơn 3 lá bài, bạn mất đi »Liễm Tư« và nhận được »Chế Hành«. »Tụ Bảo« Tỏa định kỹ. Bảo vật trong khu trang bị của bạn không thể bị người khác thu lấy. Giai đoạn kết thúc, nếu trên bàn đấu hoặc trong đống bài bỏ có [Định Lan Dạ Minh Châu], bạn rút 1 lá bài, sau đó thu lấy 1 lá bài trong khu trang bị của người chơi sở hữu [Định Lan Dạ Minh Châu]. Duyên Giang Phong Hỏa Đồ 1. Giai đoạn ra bài của người chơi Ngô 1 lần, có thể đặt 1 lá bài lên trên [Duyên Giang Phong Hỏa Đồ] gọi là Phong Hỏa. 2. Dựa vào số lượng Phong Hỏa, tại giai đoạn chuẩn bị, người chơi Ngô có thể lựa chọn nhận được 1 kỹ năng cho đến hết lượt: Ít nhất 1 lá: »Anh Tư« Ít nhất 2 lá: »Hảo Thi« Ít nhất 3 lá: »Thiệp Liệp« Ít nhất 4 lá: »Độ Thế« Ít nhất 5 lá: nhận được thêm 1 kỹ năng 3. Tỏa định kỹ. Mỗi khi bạn nhận sát thương từ [Sát] hoặc Cẩm nang, bỏ 1 lá Phong Hỏa. »Anh Tư« (2012) Giai đoạn rút bài, bạn có thể rút thêm 1 lá bài. »Anh Tư« (2018) Tỏa định kỹ. Giai đoạn rút bài, bạn rút thêm 1 lá bài. Giới hạn bài trên tay bạn bằng với giới hạn sinh lực. »Hảo Thi« Giai đoạn rút bài, bạn có thể rút thêm 2 lá bài. Kết thúc giai đoạn rút bài, nếu bài trên tay bạn lớn hơn 5, bạn đem 1 nửa số bài trên tay (làm tròn xuống) giao cho 1 người chơi khác có ít bài trên tay nhất. »Thiệp Liệp« Giai đoạn rút bài, bạn có thể đổi thành mở ra 5 lá bài trên chồng bài. Sau đó bạn thu lấy mỗi hoa văn 1 lá bài. »Độ Thế« (2013) Giai đoạn ra bài 4 lần, bạn có thể dùng 1 lá đỏ trên tay như [Dĩ Dật Đãi Lao]. »Độ Thế« (2024) Đầu giai đoạn ra bài 4 lần, bạn có thể coi như dùng 1 lá [Dĩ Dật Đãi Lao]. *** Trên lý thuyết chưa viết ra Diễn sinh kỹ nên tìm võ tướng có kỹ năng tương ứng. Nhưng mà Quốc Chiến hiện tại chưa có võ tướng nào có kỹ năng »Thiệp Liệp«, bởi vậy chỉ có thể dựa theo Quân - Tôn Quyền sử dụng phiên bản Thần - Lữ Mông để xác định Diễn sinh kỹ. |
/*Make sure your page contains a valid doctype at the top*/
#simplegallery1{ //CSS for Simple Gallery Example 1
position: relative; /*keep this intact*/
visibility: hidden; /*keep this intact*/
border: 1px solid #666;
}
#simplegallery1 .gallerydesctext{ //CSS for description DIV of Example 1 (if defined)
text-align: left;
padding: 2px 5px;
font: 10px normal verdana, arial;
}
var simpleGallery_navpanel={
loadinggif: 'http://thanthoaimua.com/wp-content/uploads/2026/07/ajaxload-namkna-blogspot-com.png', //full path or URL to loading gif image
panel: {height:'45px', opacity:0.5, paddingTop:'5px', fontStyle:'bold 11px Verdana'}, //customize nav panel container
images: [ 'http://thanthoaimua.com/wp-content/uploads/2026/07/left-namkna-blogspot-com.png', 'http://thanthoaimua.com/wp-content/uploads/2026/07/play-namkna-blogspot-com.png', 'http://thanthoaimua.com/wp-content/uploads/2026/07/right-namkna-blogspot-com.png', 'http://thanthoaimua.com/wp-content/uploads/2026/07/pause-namklna-blogspot-com.png'], //nav panel images (in that order)
imageSpacing: {offsetTop:[-4, 0, -4], spacing:10}, //top offset of left, play, and right images, PLUS spacing between the 3 images
slideduration: 500 //duration of slide up animation to reveal panel
}
function simpleGallery(settingarg){
this.setting=settingarg
settingarg=null
var setting=this.setting
setting.panelheight=(parseInt(setting.navpanelheight)>5)? parseInt(setting.navpanelheight) : parseInt(simpleGallery_navpanel.panel.height)
setting.fadeduration=parseInt(setting.fadeduration)
setting.curimage=(setting.persist)? simpleGallery.routines.getCookie("gallery-"+setting.wrapperid) : 0
setting.curimage=setting.curimage || 0 //account for curimage being null if cookie is empty
setting.preloadfirst=(!jQuery.Deferred)? false : (typeof setting.preloadfirst!="undefined")? setting.preloadfirst : true //Boolean on whether to preload all images before showing gallery
setting.ispaused=!setting.autoplay[0] //ispaused reflects current state of gallery, autoplay[0] indicates whether gallery is set to auto play
setting.currentstep=0 //keep track of # of slides slideshow has gone through
setting.totalsteps=setting.imagearray.length*setting.autoplay[2] //Total steps limit: # of images x # of user specified cycles
setting.fglayer=0, setting.bglayer=1 //index of active and background layer (switches after each change of slide)
setting.oninit=setting.oninit || function(){}
setting.onslide=setting.onslide || function(){}
var preloadimages=[], longestdesc=null, loadedimages=0
var dfd = (setting.preloadfirst)? jQuery.Deferred() : {resolve:function(){}, done:function(f){f()}} //create real deferred object unless preloadfirst setting is false or browser doesn't support it
setting.longestdesc="" //get longest description of all slides. If no desciptions defined, variable contains ""
setting.$loadinggif=(function(){ //preload and ref ajax loading gif
var loadgif=new Image()
loadgif.src=simpleGallery_navpanel.loadinggif
return jQuery(loadgif).css({verticalAlign:'middle'}).wrap('').parent()
})()
for (var i=0; isetting.longestdesc.length)
setting.longestdesc=setting.imagearray[i][3]
jQuery(preloadimages[i]).bind('load error', function(){
loadedimages++
if (loadedimages==setting.imagearray.length){
dfd.resolve() //indicate all images have been loaded
}
})
}
var slideshow=this
jQuery(document).ready(function($){
var setting=slideshow.setting
setting.$wrapperdiv=$('#'+setting.wrapperid).css({position:'relative', visibility:'visible', background:'black', overflow:'hidden', width:setting.dimensions[0], height:setting.dimensions[1]}).empty() //main gallery DIV
if (setting.$wrapperdiv.length==0){ //if no wrapper DIV found
alert("Error: DIV with ID ""+setting.wrapperid+"" not found on page.")
return
}
setting.$gallerylayers=$('') //two stacked DIVs to display the actual slide
.css({position:'absolute', left:0, top:0})
.appendTo(setting.$wrapperdiv)
setting.$loadinggif.css({top:setting.dimensions[1]/2-30}).appendTo(setting.$wrapperdiv) //30 is assumed height of ajax loading gif
setting.gallerylayers=setting.$gallerylayers.get() //cache stacked DIVs as DOM objects
setting.navbuttons=simpleGallery.routines.addnavpanel(setting) //get 4 nav buttons DIVs as DOM objects
if (setting.longestdesc!="") //if at least one slide contains a description (feature is enabled)
setting.descdiv=simpleGallery.routines.adddescpanel(setting)
$(setting.navbuttons).filter('img.navimages').css({opacity:0.8})
.bind('mouseover mouseout', function(e){
$(this).css({opacity:(e.type=="mouseover")? 1 : 0.8})
})
.bind('click', function(e){
var keyword=e.target.title.toLowerCase()
slideshow.navigate(keyword) //assign behavior to nav images
})
dfd.done(function(){ //execute when all images have loaded
setting.$loadinggif.remove()
setting.$wrapperdiv.bind('mouseenter', function(){slideshow.showhidenavpanel('show')})
setting.$wrapperdiv.bind('mouseleave', function(){slideshow.showhidenavpanel('hide')})
slideshow.showslide(setting.curimage) //show initial slide
setting.oninit.call(slideshow) //trigger oninit() event
$(window).bind('unload', function(){ //clean up and persist
$(slideshow.setting.navbuttons).unbind()
if (slideshow.setting.persist) //remember last shown image's index
simpleGallery.routines.setCookie("gallery-"+setting.wrapperid, setting.curimage)
jQuery.each(slideshow.setting, function(k){
if (slideshow.setting[k] instanceof Array){
for (var i=0; i<slideshow.setting[k].length; i++){
if (slideshow.setting[k][i].tagName=="DIV") //catches 2 gallerylayer divs, gallerystatus div
slideshow.setting[k][i].innerHTML=null
slideshow.setting[k][i]=null
}
}
if (slideshow.setting[k].innerHTML) //catch gallerydesctext div
slideshow.setting[k].innerHTML=null
slideshow.setting[k]=null
})
slideshow=slideshow.setting=null
})
}) //end deferred code
}) //end jQuery domload
}
simpleGallery.prototype={
navigate:function(keyword){
clearTimeout(this.setting.playtimer)
this.setting.totalsteps=100000 //if any of the nav buttons are clicked on, set totalsteps limit to an "unreachable" number
if (!isNaN(parseInt(keyword))){
this.showslide(parseInt(keyword))
}
else if (/(prev)|(next)/i.test(keyword)){
this.showslide(keyword.toLowerCase())
}
else{ //if play|pause button
var slideshow=this
var $playbutton=$(this.setting.navbuttons).eq(1)
if (!this.setting.ispaused){ //if pause Gallery
this.setting.autoplay[0]=false
$playbutton.attr({title:'Play', src:simpleGallery_navpanel.images[1]})
}
else if (this.setting.ispaused){ //if play Gallery
this.setting.autoplay[0]=true
this.setting.playtimer=setTimeout(function(){slideshow.showslide('next')}, this.setting.autoplay[1])
$playbutton.attr({title:'Pause', src:simpleGallery_navpanel.images[3]})
}
slideshow.setting.ispaused=!slideshow.setting.ispaused
}
},
showslide:function(keyword){
var slideshow=this
var setting=slideshow.setting
var totalimages=setting.imagearray.length
var imgindex=(keyword=="next")? (setting.curimage0? setting.curimage-1 : totalimages-1)
: Math.min(keyword, totalimages-1)
setting.gallerylayers[setting.bglayer].innerHTML=simpleGallery.routines.getSlideHTML(setting.imagearray[imgindex])
setting.$gallerylayers.eq(setting.bglayer).css({zIndex:1000, opacity:0}) //background layer becomes foreground
.stop().css({opacity:0}).animate({opacity:1}, setting.fadeduration, function(){ //Callback function after fade animation is complete:
clearTimeout(setting.playtimer)
setting.gallerylayers[setting.bglayer].innerHTML=null //empty bglayer (previously fglayer before setting.fglayer=setting.bglayer was set below)
try{
setting.onslide.call(slideshow, setting.gallerylayers[setting.fglayer], setting.curimage)
}catch(e){
alert("Simple Controls Gallery: An error has occured somwhere in your code attached to the "onslide" event: "+e)
}
setting.currentstep+=1
if (setting.autoplay[0]){
if (setting.currentstep<=setting.totalsteps)
setting.playtimer=setTimeout(function(){slideshow.showslide('next')}, setting.autoplay[1])
else
slideshow.navigate("play/pause")
}
}) //end callback function
setting.gallerylayers[setting.fglayer].style.zIndex=999 //foreground layer becomes background
setting.fglayer=setting.bglayer
setting.bglayer=(setting.bglayer==0)? 1 : 0
setting.curimage=imgindex
setting.navbuttons[3].innerHTML=(setting.curimage+1) + '/' + setting.imagearray.length
if (setting.imagearray[imgindex][3]){ //if this slide contains a description
setting.$descpanel.css({visibility:'visible'})
setting.descdiv.innerHTML=setting.imagearray[imgindex][3]
}
else if (setting.longestdesc!=""){ //if at least one slide contains a description (feature is enabled)
setting.descdiv.innerHTML=null
setting.$descpanel.css({visibility:'hidden'})
}
},
showhidenavpanel:function(state){
var setting=this.setting
var endpoint=(state=="show")? setting.dimensions[1]-setting.panelheight : this.setting.dimensions[1]
setting.$navpanel.stop().animate({top:endpoint}, simpleGallery_navpanel.slideduration)
if (setting.longestdesc!="") //if at least one slide contains a description (feature is enabled)
this.showhidedescpanel(state)
},
showhidedescpanel:function(state){
var setting=this.setting
var endpoint=(state=="show")? 0 : -setting.descpanelheight
setting.$descpanel.stop().animate({top:endpoint}, simpleGallery_navpanel.slideduration)
}
}
simpleGallery.routines={
getSlideHTML:function(imgelement){
var layerHTML=(imgelement[1])? 'n' : '' //hyperlink slide?
layerHTML+=' ' + (setting.curimage+1) + '/' + setting.imagearray.length + ' '
setting.$navpanel=$('')
.css({position:'absolute', width:'100%', height:setting.panelheight, left:0, top:setting.dimensions[1], font:simpleGallery_navpanel.panel.fontStyle, zIndex:'1001'})
.appendTo(setting.$wrapperdiv)
$('') //create inner nav panel DIVs
.css({position:'absolute', left:0, top:0, width:'100%', height:'100%'})
.eq(0).css({background:'black', opacity:simpleGallery_navpanel.panel.opacity}).end() //"navpanelbg" div
.eq(1).css({paddingTop:simpleGallery_navpanel.panel.paddingTop, textAlign:'center', color:'white'}).html(interfaceHTML).end() //"navpanelfg" div
.appendTo(setting.$navpanel)
return setting.$navpanel.find('img.navimages, div.gallerystatus').get() //return 4 nav related images and DIVs as DOM objects
},
adddescpanel:function(setting){
setting.$descpanel=$(' |
