This commit is contained in:
libccy 2017-11-24 00:33:36 +08:00
parent 79e546af36
commit e7e3a26228
7 changed files with 551 additions and 24 deletions

View File

@ -48,7 +48,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ns_wangyue:['male','qun',4,['nsjianshu','nscangjian']],
ns_yuji:['male','qun',3,['nsyaowang','nshuanhuo']],
ns_xinxianying:['female','wei',3,['nsdongcha','nscaijian','nsgongjian']],
// ns_guanlu:['male','wei',3,[]],
ns_guanlu:['male','wei',3,['nsbugua','nstuiyan','nstianji']],
ns_simazhao:['male','wei',3,['nszhaoxin','nsxiuxin','nsshijun']],
ns_sunjian:['male','wu',4,['nswulie','nshunyou','nscangxi']],
},
@ -86,13 +86,221 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yuji:['zuoci']
},
skill:{
nstianji:{
trigger:{global:'dying'},
priority:6,
unique:true,
skillAnimation:true,
animationColor:'water',
filter:function(event,player){
return event.player.hp<=0&&event.player!=player;
},
logTarget:'player',
check:function(event,player){
return get.attitude(player,event.player)>1;
},
content:function(){
'step 0'
player.loseMaxHp();
'step 1'
trigger.player.recover(1-trigger.player.hp);
'step 2'
trigger.player.gainMaxHp();
}
},
nsbugua:{
group:'nsbugua_use',
ai:{
threaten:1.4,
order:9.5,
result:{
player:1
}
},
subSkill:{
use:{
enable:'phaseUse',
usable:2,
filterCard:true,
check:function(card){
return 9-get.value(card);
},
filter:function(event,player){
if(!player.getCards('h')) return false;
if(player.getStat().skill.nsbugua_use){
return player.hasSkill('nsbugua_twice');
}
return true;
},
content:function(){
'step 0'
player.throwDice();
'step 1'
var cards=get.cards(6);
var cards2=cards.slice(0);
var card=(cards2.splice(event.num-1,1))[0];
player.showCards(get.translation(player)+'亮出了'+get.translation(card),cards).set('hiddencards',cards2);
card.discard();
var name=null;
switch(get.suit(card)){
case 'club':{
if(card.number%2==0){
name='guohe';
}
else{
name='jiedao';
}
break;
}
case 'spade':{
if(card.number%2==0){
name='nanman';
}
else{
name='juedou';
}
break;
}
case 'diamond':{
if(card.number%2==0){
name='shunshou';
}
else{
name='huogong';
}
break;
}
case 'heart':{
if(card.number%2==0){
name='wuzhong';
}
else{
name='wanjian';
}
break;
}
}
var togain=get.cardPile(name,'cardPile');
if(togain){
player.gain(togain,'gain2');
}
else{
player.draw();
}
event.list=cards2;
'step 2'
player.chooseCardButton(event.list,true,'按顺序将牌置于牌堆顶(先选择的在上)',event.list.length);
'step 3'
var list=result.links.slice(0);
while(list.length){
ui.cardPile.insertBefore(list.pop(),ui.cardPile.firstChild);
}
},
},
twice:{}
}
},
nstuiyan:{
trigger:{player:'useCard'},
filter:function(event,player){
return _status.currentPhase==player&&event.getParent('phaseUse',true)&&!player.hasSkill('nstuiyan_fail')&&
typeof player.storage.nstuiyan=='number'&&event.card.number>player.storage.nstuiyan;
},
forced:true,
content:function(){
player.draw();
},
onremove:function(player){
delete player.storage.nstuiyan;
delete player.storage.nstuiyan2;
},
intro:{
mark:function(dialog,content,player){
dialog.addText('上一张点数:'+player.storage.nstuiyan);
dialog.addText('总点数:'+player.storage.nstuiyan2);
},
content:function(storage,player){
return '上一张牌点数:'+storage+';总点数:'+player.storage.nstuiyan2;
}
},
group:['nstuiyan_use','nstuiyan_clear','nstuiyan_disable'],
subSkill:{
use:{
trigger:{player:'useCard'},
silent:true,
priority:-1,
filter:function(event,player){
return _status.currentPhase==player&&event.getParent('phaseUse',true)&&typeof event.card.number=='number';
},
content:function(){
if(typeof player.storage.nstuiyan!='number'){
player.storage.nstuiyan=0;
}
if(typeof player.storage.nstuiyan2!='number'){
player.storage.nstuiyan2=0;
}
player.storage.nstuiyan=trigger.card.number;
player.storage.nstuiyan2+=trigger.card.number;
player.markSkill('nstuiyan');
if(player.storage.nstuiyan2%8==0){
player.addTempSkill('nsbugua_twice');
}
}
},
clear:{
trigger:{player:['phaseUseAfter','phaseAfter']},
silent:true,
content:function(){
delete player.storage.nstuiyan;
delete player.storage.nstuiyan2;
player.unmarkSkill('nstuiyan');
}
},
disable:{
trigger:{player:'useCard'},
filter:function(event,player){
return _status.currentPhase==player&&event.getParent('phaseUse',true)&&!player.hasSkill('nstuiyan_fail')&&
(event.card.number<=player.storage.nstuiyan||typeof event.card.number!='number');
},
silent:true,
content:function(){
player.addTempSkill('nstuiyan_fail');
},
},
fail:{}
},
ai:{
threaten:1.4
}
},
nsshijun:{
trigger:{source:'damageBegin'},
forced:true,
content:function(){
trigger.num++;
trigger.nsshijun=true;
},
subSkill:{
hp:{
trigger:{source:'damageAfter'},
silent:true,
filter:function(event){
return event.nsshijun;
},
content:function(){
player.loseHp();
}
}
},
group:'nsshijun_hp'
},
nszhaoxin:{
mark:true,
intro:{
mark:function(dialog,content,player){
var hs=player.getCards('h');
if(hs.length){
dialog.addSmall();
dialog.addSmall(hs);
}
else{
dialog.addText('无手牌');
@ -1452,7 +1660,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
forced:true,
nosub:true,
unique:true,
group:['nshuanxian_left','nshuanxian_right','nshuanxian_damage','nshuanxian_swap'],
group:['nshuanxian_left','nshuanxian_right','nshuanxian_damage','nshuanxian_swap','nshuanxian_draw'],
content:function(){
player.storage.nshuanxian_right=player.addSubPlayer({
name:'ns_nanhua_right',
@ -3304,12 +3512,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ns_simazhao:'司马昭',
ns_guanlu:'管辂',
nsbugua:'卜卦',
nsbugua_use_info:'弃置一张手牌,并将牌堆顶的六张牌反面朝上逐张按先后顺序排放,然后抛骰子,展示牌序号与骰子显示的点数一致的牌,然后你根据这张牌的花色、点数随机获得牌堆中相应的一张牌',
nsbugua_info:'出牌阶段限一次,你可以弃置一张手牌,并将牌堆顶的六张牌反面朝上逐张按先后顺序排放,然后抛骰子,展示牌序号与骰子显示的点数一致的牌,然后你根据这张牌的花色、点数按以下规则随机获得牌堆中相应的一张牌:乾(红桃偶数):无中生有;坤(黑桃奇数):决斗;震(黑桃偶数):南蛮入侵;巽(红桃奇数):万箭齐发;坎(梅花偶数):过河拆桥、兑(梅花奇数):借刀杀人、艮(方片偶数):顺手牵羊、离(方片奇数):火攻。若牌堆中无此牌则摸一张牌,然后你观看未展示的另外五张牌并按任意顺序将其置于牌堆顶。',
nstuiyan:'推演',
nstuiyan_info:'锁定技出牌阶段若你使用的牌点数比上一张使用的牌点数大你摸一张牌否则你本回合不能再以此法摸牌若你使用的牌点数之和刚好等于8的倍数此回合你可发动【卜卦】的上限次数改为两次。',
nstianji:'天机',
nstianji_info:'限定技当一名其他角色进入濒死状态你可自减一点体力上限令其回复体力至1并增加一点体力上限',
nszhaoxin:'昭心',
nszhaoxin_info:'锁定技,你始终展示手牌',
nsxiuxin:'修心',
nsxiuxin_info:'锁定技,若你没有某种花色的手牌,你不能成为这种花色的牌的目标',
nsshijun:'弑君',
nsshijun_info:'锁定技,你造成伤害后,你失去一点体力,令此伤害+1',
nsshijun_info:'锁定技,你造成伤害时,你令此伤害+1并在结算后失去一点体力',
nshunyou:'魂佑',
nshunyou_info:'出阶段限一次你可以弃置一张基本牌获得弃牌堆底的一张装备牌和一张锦囊牌然后你可以将那张装备牌装备给一名角色允许替换。如果弃牌堆没有装备以及锦囊牌则改为摸X张牌X为损失的体力加一最多3张',
nswulie:'武烈',
@ -3363,7 +3578,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
nscongjun:'从军',
nscongjun_info:'锁定技游戏开始时你变身为一名随机男性角色当一名敌方角色使用无懈可击时你有小概率亮出此武将并变回花木兰然后对该角色造成2点伤害',
nshuanxian:'幻仙',
nshuanxian_info:'锁定技游戏开始时你获得随从“幻身·右”当你首次受到伤害时你获得随从“幻身·左”体力上限2初始手牌2,摸牌阶段少摸一张牌);在你的回合中(如果有对应幻身),你以【幻身·左-本体-幻身·右】的顺序进行3个连续回合',
nshuanxian_info:'锁定技游戏开始时你获得随从“幻身·右”当你首次受到伤害时你获得随从“幻身·左”体力上限2初始手牌2);你与幻身在摸牌阶段均少摸一张牌;在你的回合中(如果有对应幻身),你以【幻身·左-本体-幻身·右】的顺序进行3个连续回合',
nstaiping:'太平',
nstaiping_info:'当你受到一点伤害后(首次伤害除外),你可以选择一项: ①令一个“幻身”增加一点体力上限。②令一个“幻身”回复一点体力。',
nsshoudao:'授道',

View File

@ -632,7 +632,7 @@ window.noname_asset_list=[
'image/character/ns_yuji.jpg',
'image/character/ns_xinxianying.jpg',
'image/character/ns_guanlu.jpg',
// 'image/character/ns_simazhao.jpg',
'image/character/ns_simazhao.jpg',
'image/character/ns_sunjian.jpg',
'image/character/old_caoxiu.jpg',
'image/character/old_caozhen.jpg',

View File

@ -10972,7 +10972,11 @@
"step 0"
if(event.controls.length==0){
if(event.sortcard){
for(var i=0;i<event.sortcard.length+2;i++){
var sortnum=2;
if(event.sorttop){
sortnum=1;
}
for(var i=0;i<event.sortcard.length+sortnum;i++){
event.controls.push(get.cnNumber(i,true));
}
}
@ -11002,7 +11006,11 @@
event.dialog=ui.create.dialog(prompt,'hidden');
event.dialog.addSmall(event.sortcard);
var buttons=event.dialog.content.lastChild;
for(var i=0;i<event.dialog.buttons.length+2;i++){
var sortnum=2;
if(event.sorttop){
sortnum=1;
}
for(var i=0;i<event.dialog.buttons.length+sortnum;i++){
var item=ui.create.div('.button.card.pointerdiv.mebg');
item.style.width='50px';
buttons.insertBefore(item,event.dialog.buttons[i]);
@ -11576,10 +11584,37 @@
event.dialog=ui.create.dialog(event.str,cards);
event.dialogid=lib.status.videoId++;
event.dialog.videoId=event.dialogid;
game.broadcast(function(str,cards,id){
ui.create.dialog(str,cards).videoId=id;
},event.str,cards,event.dialogid);
game.log(player,'展示了',cards);
if(event.hiddencards){
for(var i=0;i<event.dialog.buttons.length;i++){
if(event.hiddencards.contains(event.dialog.buttons[i].link)){
event.dialog.buttons[i].className='button card';
event.dialog.buttons[i].innerHTML='';
}
}
}
game.broadcast(function(str,cards,cards2,id){
var dialog=ui.create.dialog(str,cards);
dialog.videoId=id;
if(cards2){
for(var i=0;i<dialog.buttons.length;i++){
if(cards2.contains(dialog.buttons[i].link)){
dialog.buttons[i].className='button card';
dialog.buttons[i].innerHTML='';
}
}
}
},event.str,cards,event.hiddencards,event.dialogid);
if(event.hiddencards){
var cards2=cards.slice(0);
for(var i=0;i<event.hiddencards.length;i++){
cards2.remove(event.hiddencards[i]);
}
game.log(player,'展示了',cards2);
}
else{
game.log(player,'展示了',cards);
}
game.delayx(2);
game.addVideo('showCards',player,[event.str,get.cardsInfo(cards)]);
"step 1"
@ -15480,6 +15515,7 @@
else _status.event.next.remove(next);
next.setContent('showCards');
next._args=Array.from(arguments);
return next;
},
viewCards:function(str,cards){
var next=game.createEvent('viewCards');
@ -18875,6 +18911,100 @@
lib.listenEnd(node);
return node;
},
throwDice:function(num){
if(typeof num!='number'){
num=get.rand(6)+1;
_status.event.num=num;
}
if(!game.online){
game.pause();
}
game.broadcastAll(function(num){
var diceContainer=ui.create.div('.fullsize.dice-container',ui.window);
ui.window.classList.add('dicepaused');
var dice=ui.create.div('.dice');
dice.style.opacity=0;
dice.style.transform='scale(0.5)';
var side;
side=ui.create.div('.side.front',dice);
ui.create.div('.dot.center',side);
ui.create.div('.side.front.inner',dice);
side=ui.create.div('.side.top',dice);
ui.create.div('.dot.dtop.dleft',side);
ui.create.div('.dot.dbottom.dright',side);
ui.create.div('.side.top.inner',dice);
side=ui.create.div('.side.right',dice);
ui.create.div('.dot.dtop.dleft',side);
ui.create.div('.dot.center',side);
ui.create.div('.dot.dbottom.dright',side);
ui.create.div('.side.right.inner',dice);
side=ui.create.div('.side.left',dice);
ui.create.div('.dot.dtop.dleft',side);
ui.create.div('.dot.dtop.dright',side);
ui.create.div('.dot.dbottom.dleft',side);
ui.create.div('.dot.dbottom.dright',side);
ui.create.div('.side.left.inner',dice);
side=ui.create.div('.side.bottom',dice);
ui.create.div('.dot.center',side);
ui.create.div('.dot.dtop.dleft',side);
ui.create.div('.dot.dtop.dright',side);
ui.create.div('.dot.dbottom.dleft',side);
ui.create.div('.dot.dbottom.dright',side);
ui.create.div('.side.bottom.inner',dice);
side=ui.create.div('.side.back',dice);
ui.create.div('.dot.dtop.dleft',side);
ui.create.div('.dot.dtop.dright',side);
ui.create.div('.dot.dbottom.dleft',side);
ui.create.div('.dot.dbottom.dright',side);
ui.create.div('.dot.center dleft',side);
ui.create.div('.dot.center dright',side);
ui.create.div('.side.back.inner',dice);
ui.create.div('.side.cover.x',dice);
ui.create.div('.side.cover.y',dice);
ui.create.div('.side.cover.z',dice);
diceContainer.appendChild(dice);
ui.refresh(dice);
dice.style.transform='';
dice.style.opacity='';
var seq=[1,2,3,4,5,6];
seq.remove(num);
dice.dataset.side=seq.randomRemove();
var numed=1;
dice.addEventListener('webkitTransitionEnd',function(){
if(seq.length){
dice.dataset.side=seq.randomRemove();
}
else if(numed==1){
dice.dataset.side=num;
numed=2;
}
else if(numed==2){
numed=0;
dice.style.transitionDuration='0.8s';
dice.classList.add('up-front');
}
else{
setTimeout(function(){
diceContainer.delete();
ui.window.classList.remove('dicepaused');
},500);
if(!game.online){
setTimeout(function(){
game.resume();
},1000);
}
}
});
},num);
},
$giveAuto:function(card,player){
if(Array.isArray(card)&&card.length==0) return;
var args=Array.from(arguments);
@ -20077,7 +20207,7 @@
delete this._targetChoice;
delete this._skillChoice;
},
getParent:function(level){
getParent:function(level,forced){
var parent;
if(this._modparent&&game.online){
parent=this._modparent;
@ -20085,21 +20215,28 @@
else{
parent=this.parent;
}
if(!parent) return {};
var toreturn={};
if(typeof level=='string'&&forced==true){
toreturn=null;
}
if(!parent) return toreturn;
if(typeof level=='number'){
for(var i=1;i<level;i++){
if(!parent) return {};
if(!parent) return toreturn;
parent=parent.parent;
}
}
else if(typeof level=='string'){
for(var i=0;i<20;i++){
if(!parent) return {};
if(!parent) return toreturn;
if(parent.name==level) return parent;
parent=parent.parent;
}
if(!parent) return {};
if(!parent) return toreturn;
}
if(toreturn===null){
return null;
}
return parent;
},
getTrigger:function(){
@ -28925,11 +29062,30 @@
var ul=document.createElement('ul');
ul.style.textAlign='left';
var caption;
var players=null,cards=null;
if(lib.version!=lib.config.version){
for(var i=0;i<lib.changeLog.length;i++){
var li=document.createElement('li');
li.innerHTML=lib.changeLog[i];
ul.appendChild(li);
if(lib.changeLog[i].indexOf('players:')==0){
try{
players=JSON.parse(lib.changeLog[i].slice(8));
}
catch(e){
players=null;
}
}
else if(lib.changeLog[i].indexOf('cards:')==0){
try{
cards=JSON.parse(lib.changeLog[i].slice(6));
}
catch(e){
cards=null;
}
}
else{
var li=document.createElement('li');
li.innerHTML=lib.changeLog[i];
ul.appendChild(li);
}
}
caption=lib.version+'更新内容';
}
@ -28944,6 +29100,15 @@
}
var dialog=ui.create.dialog(caption,'hidden');
dialog.content.appendChild(ul);
if(players){
dialog.addSmall([players,'character']);
}
if(cards){
for(var i=0;i<cards.length;i++){
cards[i]=[get.translation(get.type(cards[i])),'',cards[i]]
}
dialog.addSmall([cards,'vcard']);
}
dialog.open();
var hidden=false;
if(!ui.auto.classList.contains('hidden')){
@ -35447,7 +35612,7 @@
var span6_br=ui.create.node('br');
li2.lastChild.appendChild(span6_br);
var span5=ui.create.div('','图片素材(精简,24MB');
var span5=ui.create.div('','图片素材(精简,35MB');
span5.style.fontSize='small';
span5.style.lineHeight='16px';
var span5_check=document.createElement('input');
@ -35517,7 +35682,7 @@
li2.lastChild.appendChild(span5_check);
li2.lastChild.appendChild(span2_br);
var span6=ui.create.div('','图片素材(完整,64MB');
var span6=ui.create.div('','图片素材(完整,96MB');
span6.style.fontSize='small';
span6.style.lineHeight='16px';
li2.lastChild.appendChild(span6);

View File

@ -1,9 +1,10 @@
window.noname_update={
version:'1.9.44.1',
version:'1.9.45',
update:'1.9.44.1',
changeLog:[
'bug修复',
'部分DIY比赛武将'
'部分DIY比赛武将',
'players:["ns_caocao","ns_caocaosp","ns_zhugeliang","ns_wangyue","ns_yuji","ns_xinxianying","ns_guanlu","ns_simazhao","ns_sunjian","hs_aiqinvyao"]',
],
files:[
'game/game.js',

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 393 KiB

After

Width:  |  Height:  |  Size: 110 KiB

View File

@ -4158,6 +4158,152 @@ div:hover>.wunature {
min-height: 200px;
}
.dice-container{
background: rgba(0,0,0,0.3);
z-index: 50;
perspective: 1000px;
}
.dice{
position: absolute;
width: 200px;
height: 200px;
transform-style: preserve-3d;
left: calc(50% - 100px);
top: calc(50% - 100px);
transition: transform 0.3s linear;
}
.dice[data-side="1"] {
transform: rotateX(75deg) rotateY(0deg) rotateZ(45deg)
}
.dice[data-side="1"].up-front {
transform: rotateX(0deg) rotateY(0deg) rotateZ(45deg)
}
.dice[data-side="2"] {
transform: rotateX(-15deg) rotateY(45deg);
}
.dice[data-side="2"].up-front {
transform: rotateX(-90deg) rotateY(45deg);
}
.dice[data-side="3"] {
transform: rotateX(-15deg) rotateY(-45deg) rotateZ(-90deg)
}
.dice[data-side="3"].up-front {
transform: rotateX(-90deg) rotateY(-45deg) rotateZ(-90deg)
}
.dice[data-side="4"] {
transform: rotateX(-15deg) rotateY(45deg) rotateZ(90deg)
}
.dice[data-side="4"].up-front {
transform: rotateX(-90deg) rotateY(45deg) rotateZ(90deg)
}
.dice[data-side="5"] {
transform: rotateX(165deg) rotateY(45deg) rotateZ(0deg)
}
.dice[data-side="5"].up-front {
transform: rotateX(90deg) rotateY(45deg) rotateZ(0deg)
}
.dice[data-side="6"] {
transform: rotateX(75deg) rotateY(180deg) rotateZ(45deg)
}
.dice[data-side="6"].up-front {
transform: rotateX(0deg) rotateY(180deg) rotateZ(45deg)
}
.dice>div{
position: absolute;
width: 200px;
height: 200px;
background: #fff;
box-shadow:inset 0 0 40px #ccc;
border-radius: 40px;
}
.dice .cover, .dice .inner {
background: #e0e0e0;
box-shadow: none;
}
.dice .cover {
border-radius: 0;
transform: translateZ(0px);
}
.dice .cover.x {
transform: rotateY(90deg);
}
.dice .cover.z {
transform: rotateX(90deg);
}
.dice .front {
transform: translateZ(100px);
}
.dice .front.inner {
transform: translateZ(98px);
}
.dice .back {
transform: rotateX(-180deg) translateZ(100px);
}
.dice .back.inner {
transform: rotateX(-180deg) translateZ(98px);
}
.dice .right {
transform: rotateY(90deg) translateZ(100px);
}
.dice .right.inner {
transform: rotateY(90deg) translateZ(98px);
}
.dice .left {
transform: rotateY(-90deg) translateZ(100px);
}
.dice .left.inner {
transform: rotateY(-90deg) translateZ(98px);
}
.dice .top {
transform: rotateX(90deg) translateZ(100px);
}
.dice .top.inner {
transform: rotateX(90deg) translateZ(98px);
}
.dice .bottom {
transform: rotateX(-90deg) translateZ(100px);
}
.dice .bottom.inner {
transform: rotateX(-90deg) translateZ(98px);
}
.dice .dot {
position:absolute;
width:46px;
height:46px;
border-radius:23px;
background:#444;
box-shadow:inset 5px 0 10px #000;
}
.dice .dot.center {
margin:77px 0 0 77px;
}
.dice .dot.dtop {
margin-top:20px;
}
.dice .dot.dleft {
margin-left:134px;
}
.dice .dot.dright {
margin-left:20px;
}
.dice .dot.dbottom {
margin-top:134px;
}
.dice .dot.center.dleft {
margin:77px 0 0 20px;
}
.dice .dot.center.dright {
margin:77px 0 0 134px;
}
#window.dicepaused>#arena,
#window.dicepaused>#system,
#window.dicepaused>#historybar {
opacity: 0.3 !important;
}
#window[data-radius_size='reduce'] .dialog.scroll1,
#window[data-radius_size='reduce'] .dialog.scroll2,
#window[data-radius_size='reduce'] .dialog.withbg {