This commit is contained in:
libccy 2015-11-10 07:11:17 +08:00
parent ff65b1f559
commit fb14d4edb2
11 changed files with 263 additions and 54 deletions

View File

@ -38,7 +38,7 @@ window.config={
qunyingzhuan:'群英',
swd:'剧情',
character_play_config:'角色卡牌',
character_play_config:'技能卡牌',
soldier_play_config:'士兵模式',
strategy_play_config:'尔虞我诈',
wuxing_play_config:'五行生克',

View File

@ -641,7 +641,7 @@
name:'玩法',
config:{
character:{
name:'角色卡牌',
name:'技能卡牌',
init:false,
restart:true,
onclick:function(bool){
@ -654,6 +654,16 @@
game.saveConfig('plays',lib.config.plays);
}
},
character_num_playpackconfig:{
name:'卡牌比例',
init:'0.05',
item:{
'0.02':'2%',
'0.05':'5%',
'0.1':'10%',
'0.2':'20%',
}
},
soldier:{
name:'士兵模式',
init:false,
@ -682,6 +692,16 @@
game.saveConfig('plays',lib.config.plays);
}
},
wuxing_num_playpackconfig:{
name:'带属性卡牌',
init:'0.3',
item:{
'0.1':'10%',
'0.2':'20%',
'0.3':'30%',
'0.5':'50%',
}
},
weather:{
name:'天气变化',
init:false,
@ -696,8 +716,68 @@
game.saveConfig('plays',lib.config.plays);
}
},
// weather_noqing_playpackconfig:{
// name:'异常天气出现概率',
// init:'0.5',
// item:{
// '0.1':'10%',
// '0.3':'30%',
// '0.5':'50%',
// '0.7':'70%',
// }
// },
weather_chance_playpackconfig:{
name:'天气效果触发概率',
init:'0.2',
item:{
'0.1':'10%',
'0.2':'20%',
'0.3':'30%',
'0.5':'50%',
},
onclick:function(item){
game.saveConfig('weather_chance_playpackconfig',item);
_status.weatherchance=parseFloat(lib.config.weather_chance_playpackconfig)||0;
var chancestr=parseInt(_status.weatherchance*100)+'%';
for(var i in lib.translate){
if(i.indexOf('__weather_')==0){
lib.translate[i.slice(1)]=lib.translate[i].replace(/&weather&/,chancestr);
}
}
}
},
weather_duration_playpackconfig:{
name:'异常天气持续时间',
init:'[3,6]',
item:{
'[3,3]':'3~6回合',
'[3,6]':'3~9回合',
'[6,3]':'6~9回合',
'[6,6]':'6~12回合',
}
},
weather_qingduration_playpackconfig:{
name:'晴朗天气持续时间',
init:'[3,6]',
item:{
'[3,3]':'3~6回合',
'[3,6]':'3~9回合',
'[6,3]':'6~9回合',
'[6,6]':'6~12回合',
}
},
update:function(config,map){
for(var i in map){
if(i.indexOf('_playpackconfig')!=-1){
map[i].classList.add('indent');
if(lib.config.plays.contains(i.slice(0,i.indexOf('_')))){
map[i].show();
}
else{
map[i].hide();
}
}
else{
if(lib.config.plays.contains(i)){
map[i].classList.add('on');
}
@ -707,6 +787,7 @@
}
}
}
}
},
skill:{
name:'技能',
@ -7553,6 +7634,26 @@
if(content.type=='delay'){
game.delay(content.content);
}
else if(content.type=='play'){
window.play={};
if(!event.playtoload){
event.playtoload=1;
}
else{
event.playtoload++;
}
var script=lib.init.js('play',content.name);
script.addEventListener('load',function(){
var play=window.play[content.name]
if(play&&play.video){
play.video(content.init);
}
event.playtoload--;
if(event.playtoload==0){
delete window.play;
}
});
}
else if(typeof content.player=='string'&&game.playerMap[content.player]&&
game.playerMap[content.player].classList&&
!game.playerMap[content.player].classList.contains('obstacle')){
@ -11992,7 +12093,10 @@
var autoskillNodes=[];
var banskillNodes=[];
var banskill;
if(mode=='skill'){
if(mode=='playpack'){
page.style.paddingBottom='10px';
}
else if(mode=='skill'){
var autoskillexpanded=false;
var banskillexpanded=false;
ui.create.div('.config.more','自动发动 <div>&gt;</div>',page,function(){

View File

@ -36,7 +36,7 @@ card.pack={
compensate:'补充卡牌',
};
play.pack={
character:'武将卡牌',
character:'技能卡牌',
soldier:'士兵模式',
wuxing:'五行生克',
weather:'天气变化',

View File

@ -864,6 +864,14 @@ div[data-color="unknownm"]{
font-family:'huangcao';
font-size: 24px;
color:white !important;
pointer-events: none;
}
div:hover>.wunature{
/*opacity: 0.5;*/
}
.button.noclick .wunature,
.player.treasure .wunature{
display: none;
}
.player .actcount.hp{
left: -24px;

View File

@ -202,7 +202,7 @@
.menu.main>.menu-content>div>.right.pane>div>.config.indent,
.menu.main>.menu-content>div>.right.pane>div>.config.toggle.indent{
left:12px !important;
width: calc(100% - 20px) !important;
width: calc(100% - 32px) !important;
}
.menu.main>.menu-content>div>.right.pane>div:not(.expanded)>.config.auto-hide,
.menu.main>.menu-content>div>.right.pane>div>.config.hidden{

View File

@ -113,6 +113,9 @@
top:10px;
left:2px;
}
#arena:not(.chess) .player[data-position='0']:not(.minskin) .wunature{
top:84px;
}
#arena:not(.chess) .player.fullskin2[data-position='0']:not(.minskin)>.avatar,
#arena:not(.chess) .player.fullskin2[data-position='0']:not(.minskin)>.avatar2{

View File

@ -37,6 +37,9 @@
.player .wunature{
top:137px;
}
.player.minskin .wunature{
top:80px;
}
.player .actcount.hp{
top: 18px;
left: 15px;

View File

@ -1,6 +1,12 @@
play.character={
mode:['identity','guozhan','versus'],
init:function(){
// mode:['identity','guozhan','versus'],
video:function(list){
this.init(list);
for(var i in this.skill){
lib.skill[i]=this.skill[i];
}
},
init:function(videolist){
var list=[],list2=[];
var i,j,name;
for(i in lib.character){
@ -11,7 +17,19 @@ play.character={
list.push(i);
}
list.randomSort();
list=list.splice(0,Math.ceil(lib.card.list.length/20));
list=list.splice(0,Math.ceil(lib.card.list.length*(parseFloat(lib.config.character_num_playpackconfig)||0)));
if(_status.video){
if(videolist){
list=videolist;
}
}
else{
lib.video.push({
type:'play',
init:list,
name:'character'
});
}
var suit=['heart','diamond','club','spade'];
for(i=0;i<list.length;i++){
name=list[i]+'_charactercard';
@ -74,9 +92,9 @@ play.character={
lib.card.list=lib.card.list.concat(list2);
},
help:{
'角色卡牌':'<ul><li>牌堆中随机加入5%的角色牌<li>出牌阶段对自己使用,'+
'技能卡牌':'<ul><li>牌堆中随机加入5%的技能牌<li>出牌阶段对自己使用,'+
'随机获得卡牌对应角色的一项技能直到使用者的下一个出牌阶段开始'+
'<li>一个角色最多只能通过角色卡牌获得一个技能,新获得技能后将失去之前以此法获得的技能'+
'<li>一个角色最多只能通过技能卡牌获得一个技能,新获得技能后将失去之前以此法获得的技能'+
'<li>不能获得主公技、限定技、觉醒技等特殊技能,以及场上只能唯一存在的技能'+
'<li>若卡牌对应角色没有可获得的技能,目标摸两张牌'
},
@ -88,10 +106,34 @@ play.character={
mark:'card',
intro:{
name:function(storage,player){
if(_status.video){
if(player.marks.charactercard&&player.marks.charactercard.name){
var name=player.marks.charactercard.name;
if(name){
name=name.slice(0,name.indexOf('_charactercard'));
return get.translation(name);
}
}
return '';
}
else{
return get.translation(player.additionalSkills.charactercard);
}
},
content:function(storage,player){
if(_status.video){
if(player.marks.charactercard&&player.marks.charactercard.name){
var name=player.marks.charactercard.name;
if(name){
name=name.slice(0,name.indexOf('_charactercard'));
return get.skillintro(name,true,true);
}
}
return '';
}
else{
return lib.translate[player.additionalSkills.charactercard+'_info'];
}
},
onunmark:function(storage,player){
delete player.additionalSkills.charactercard;

View File

@ -702,30 +702,30 @@ play.soldier={
qunbing_info:'判定阶段和回合结束阶段前,你可以令一名群势力角色摸一张牌',
},
help:{
'士兵模式':'<ul><li>游戏开始阶段场上所有角色随机获得3名士兵。<li>回合开始阶段,你获得一名士兵的技能。<li>当你即将受到伤害时,你可以选择一名士兵替你承受此次伤害,然后失去此士兵',
// '轻步兵':'回合结束阶段,你回复一点体力。',
// '重步兵':'锁定技,回合结束阶段,你回复一点体力;黑【杀】对你无效;你计算与其他角色的距离时始终+1。',
// '轻骑兵':'你使用的【杀】可额外指定一个目标。',
// '重骑兵':'你使用的【杀】可额外指定一个目标。锁定技,目标角色需要额外出一张【闪】才能闪避你的【杀】;你计算与其他角色的距离时始终+1。',
// '弓箭兵':'锁定技你的攻击范围无限你不能对距离1以内的角色使用【杀】。',
// '强弩兵':'锁定技,你的【杀】无视防具;你的攻击范围+1距离2以外的角色不能成为你【杀】的目标。',
// '长枪兵':'你的【杀】可指定距离2以内的目标。',
// '圆盾兵':'锁定技你不能成为点数小于8的【杀】的目标。',
// '刀剑兵':'锁定技你使用的点数大于8的杀不可闪避',
// '水军':'你防止非属性伤害;你受到的属性伤害+1。',
// '军医':'出牌阶段限一次,你可以令一名其他角色恢复一点体力。',
// '火箭兵':'你可以将一张普通【杀】当作火【杀】使用。锁定技,你使用的火【杀】无距离限制,且需要额外出一张【闪】才能闪避;你使用火【杀】指定目标后,失去一点体力。',
// '斥候':'出牌阶段开始时,你可以观看一名角色的手牌',
// '通信兵':'出牌阶段,你可以给其他角色一张牌,并摸一张牌;其他角色可以在其出牌阶段给你一张牌,并摸一张牌。',
// '运输兵':'出牌阶段你可以观看牌堆顶的X张牌并其中获得Y张牌X为你体力上限Y为你当前体力值。',
// '轻车兵':'锁定技,其他角色计算与你的距离时始终-1你的【杀】指定目标后视为对其他在攻击范围内的所有角色各使用了一张【杀】。',
// '重车兵':'锁定技,其他角色计算与你的距离时始终-1你的【杀】指定目标后视为对其他在攻击范围内的所有角色各使用了一张【杀】距离1以内的角色不能指定你成为【杀】目标你不能使用装备牌你计算与其他角色的距离时始终+1。',
// '斧兵':'你使用【杀】指定目标后,你可以弃置其防具。你的【杀】指定目标时,若其没有防具,你对其造成伤害+1。',
// '器械兵':'你每失去一次装备区的牌,可立即将一名其他角色的装备牌置于你的装备区(不可替换已有装备)',
// '骑射手':'你使用的【杀】可额外指定一个目标。锁定技你的攻击范围无限你不能对距离1以内的角色使用【杀】你的【杀】指定目标后须进行一次判定若为♠该【杀】无效。',
// '蜀兵':'判定阶段和回合结束阶段前,你可以令一名蜀势力角色摸一张牌',
// '魏兵':'判定阶段和回合结束阶段前,你可以令一名魏势力角色摸一张牌',
// '吴兵':'判定阶段和回合结束阶段前,你可以令一名吴势力角色摸一张牌',
// '群兵':'判定阶段和回合结束阶段前,你可以令一名群势力角色摸一张牌',
'士兵模式':'<ul><li>游戏开始阶段场上所有角色随机获得3名士兵。<li>回合开始阶段,你获得一名士兵的技能。<li>当你即将受到伤害时,你可以选择一名士兵替你承受此次伤害,然后失去此士兵'+
'<li>轻步兵:回合结束阶段,你回复一点体力。'+
'<li>重步兵:锁定技,回合结束阶段,你回复一点体力;黑【杀】对你无效;你计算与其他角色的距离时始终+1。'+
'<li>轻骑兵:你使用的【杀】可额外指定一个目标。'+
'<li>重骑兵:你使用的【杀】可额外指定一个目标。锁定技,目标角色需要额外出一张【闪】才能闪避你的【杀】;你计算与其他角色的距离时始终+1。'+
'<li>弓箭兵锁定技你的攻击范围无限你不能对距离1以内的角色使用【杀】。'+
'<li>强弩兵:锁定技,你的【杀】无视防具;你的攻击范围+1距离2以外的角色不能成为你【杀】的目标。'+
'<li>长枪兵你的【杀】可指定距离2以内的目标。'+
'<li>圆盾兵锁定技你不能成为点数小于8的【杀】的目标。'+
'<li>刀剑兵锁定技你使用的点数大于8的杀不可闪避'+
'<li>水军:你防止非属性伤害;你受到的属性伤害+1。'+
'<li>军医:出牌阶段限一次,你可以令一名其他角色恢复一点体力。'+
'<li>火箭兵:你可以将一张普通【杀】当作火【杀】使用。锁定技,你使用的火【杀】无距离限制,且需要额外出一张【闪】才能闪避;你使用火【杀】指定目标后,失去一点体力。'+
'<li>斥候:出牌阶段开始时,你可以观看一名角色的手牌'+
'<li>通信兵:出牌阶段,你可以给其他角色一张牌,并摸一张牌;其他角色可以在其出牌阶段给你一张牌,并摸一张牌。'+
'<li>运输兵:出牌阶段你可以观看牌堆顶的X张牌并其中获得Y张牌X为你体力上限Y为你当前体力值。'+
'<li>轻车兵:锁定技,其他角色计算与你的距离时始终-1你的【杀】指定目标后视为对其他在攻击范围内的所有角色各使用了一张【杀】。'+
'<li>重车兵:锁定技,其他角色计算与你的距离时始终-1你的【杀】指定目标后视为对其他在攻击范围内的所有角色各使用了一张【杀】距离1以内的角色不能指定你成为【杀】目标你不能使用装备牌你计算与其他角色的距离时始终+1。'+
'<li>斧兵:你使用【杀】指定目标后,你可以弃置其防具。你的【杀】指定目标时,若其没有防具,你对其造成伤害+1。'+
'<li>器械兵:你每失去一次装备区的牌,可立即将一名其他角色的装备牌置于你的装备区(不可替换已有装备)'+
'<li>骑射手:你使用的【杀】可额外指定一个目标。锁定技你的攻击范围无限你不能对距离1以内的角色使用【杀】你的【杀】指定目标后须进行一次判定若为♠该【杀】无效。'+
'<li>蜀兵:判定阶段和回合结束阶段前,你可以令一名蜀势力角色摸一张牌'+
'<li>魏兵:判定阶段和回合结束阶段前,你可以令一名魏势力角色摸一张牌'+
'<li>吴兵:判定阶段和回合结束阶段前,你可以令一名吴势力角色摸一张牌'+
'<li>群兵:判定阶段和回合结束阶段前,你可以令一名群势力角色摸一张牌'
}
}

View File

@ -4,7 +4,28 @@ play.weather={
if(_status.video) return;
_status.weather='qing';
_status.weatherlife=Math.ceil(Math.random()*3);
_status.weatherchance=parseFloat(lib.config.weather_chance_playpackconfig)||0;
var chancestr=parseInt(_status.weatherchance*100)+'%';
for(var i in lib.translate){
if(i.indexOf('_weather_')==0){
lib.translate['_'+i]=lib.translate[i];
lib.translate[i]=lib.translate[i].replace(/&weather&/,chancestr);
}
}
ui.weather=ui.create.system('晴',null,true);
lib.setPopped(ui.weather,function(){
var uiintro=ui.create.dialog('hidden');
var weatherinfo=get.translation('_weather_'+_status.weather+'_info');
uiintro.add(get.translation('_weather_'+_status.weather));
if(weatherinfo.length<=0){
uiintro.add('<div class="text center">'+weatherinfo+'</div>');
}
else{
uiintro.add('<div class="text center">'+weatherinfo+'</div>');
}
uiintro.add(ui.create.div('.placeholder.slim'));
return uiintro;
},220);
},
skill:{
_weatherchange:{
@ -12,12 +33,17 @@ play.weather={
filter:function(){
return ui.weather?true:false;
},
forced:true,
content:function(){
if(_status.weather!='qing'&&Math.random()<0.5){
_status.weather='qing';
}
else{
_status.weather=['qing','yu','bao','wu','xue','feng','lei'].randomGet(_status.weather);
var weathers=['qing','yu','shuang','bao','wu','xue','feng','lei'];
if(lib.config.mode!='chess'){
weathers.remove('xue');
}
_status.weather=weathers.randomGet(_status.weather);
}
ui.weather.innerHTML=lib.translate['_weather_'+_status.weather];
}
@ -27,18 +53,18 @@ play.weather={
_weather_qing:'晴',
_weather_qing_info:'没有任何事情发生',
_weather_yu:'雨',
_weather_yu_info:'每当一名角色受到火焰伤害有30%的机率令此伤害-1',
_weather_yu_info:'在一名角色的回合结束阶段,若场上没有洪水,有&weather&的机率将一张洪水置于其判定区',
_weather_shuang:'霜',
_weather_shuang_info:'',
_weather_shuang_info:'每当一名角色受到火焰伤害,有&weather&的机率令此伤害-1',
_weather_wu:'雾',
_weather_wu_info:'',
_weather_wu_info:'所有角色使用的杀有&weather&的机率失效',
_weather_bao:'雹',
_weather_bao_info:'每名角色在回合结束阶段有20%的机率受到一点伤害',
_weather_bao_info:'每名角色在回合结束阶段有&weather&的机率受到一点伤害',
_weather_xue:'雪',
_weather_xue_info:'',
_weather_xue_info:'每名角色在回合结束阶段有&weather&的机率随机移动1格',
_weather_feng:'风',
_weather_feng_info:'当一名角色受到火焰伤害有30%的机率令距离其1以内的一名其他角色受到一点火焰伤害',
_weather_feng_info:'当一名角色受到火焰伤害后,有&weather&的机率令距离其1以内的一名其他角色受到一点火焰伤害',
_weather_lei:'雷',
_weather_lei_info:'在一名角色的回合结束阶段,有30%的机率将一张闪电置于其判定区',
}
_weather_lei_info:'在一名角色的回合结束阶段,若场上没有闪电,有&weather&的机率将一张闪电置于其判定区',
},
};

View File

@ -2,6 +2,23 @@ play.wuxing={
init:function(){
// lib.nature.push('metal','wood','water','soil');
lib.card.list.splice(Math.floor(lib.card.list.length*Math.random()),0,['spade',5,'wuxingpan']);
if(!_status.video){
lib.video.push({
type:'play',
name:'wuxing'
});
}
},
video:function(){
for(var i in this.translate){
lib.translate[i]=this.translate[i];
}
for(var i in this.card){
lib.card[i]=this.card[i];
}
for(var i in this.skill){
lib.skill[i]=this.skill[i];
}
},
element:{
player:{
@ -9,6 +26,7 @@ play.wuxing={
if(player.node.wuxing){
player.node.wuxing.remove();
}
if(_status.video) return;
var node=ui.create.div('.wunature',player);
var list=['metal','wood','water','fire','soil'];
var nature=list.randomGet();
@ -20,9 +38,10 @@ play.wuxing={
},
card:{
init:function(card){
if(_status.video) return;
if(card.name=='wuxingpan') return;
if(card.wunature) return;
if(Math.random()>1/3) return;
if(Math.random()>(parseFloat(lib.config.wuxing_num_playpackconfig)||0)) return;
var node=ui.create.div('.wunature',card);
var list=['metal','wood','water','fire','soil'];
var nature=list.randomGet();
@ -30,6 +49,9 @@ play.wuxing={
node.dataset.nature=nature;
node.innerHTML=get.translation(nature);
card.node.wuxing=node;
if(!card.suit||!card.number){
card.node.wuxing.style.display='none';
}
}
}
},
@ -144,7 +166,7 @@ play.wuxing={
}
}
},
wuxing:{
wuxingpan_skill:{
enable:'phaseUse',
usable:1,
filterCard:true,
@ -170,7 +192,7 @@ play.wuxing={
wuxingpan:{
type:'equip',
subtype:'equip5',
skills:['wuxing'],
skills:['wuxingpan_skill'],
fullskin:true
}
},
@ -190,8 +212,9 @@ play.wuxing={
fireColor2:'rgba(255,51,0,0.3)',
soilColor2:'rgba(163,98,0,0.3)',
wuxingpan:'五行盘',
wuxing:'五行',
wuxing_info:'出牌阶段,你可以永久改变一张手牌的五行属性,每阶段限一次',
wuxingpan_skill:'五行',
wuxingpan_skill_info:'出牌阶段限一次,你可以永久改变一张手牌的五行属性',
wuxingpan_info:'出牌阶段限一次,你可以永久改变一张手牌的五行属性',
},
help:{
'五行生克':'<ul><li>每名角色在游戏开始时随机获得一个属性<li>牌堆中三分之一的牌会随机获得一个属性<li>当一名成为相克属性卡牌的目标时,'+