Merge pull request #1212 from nofficalfs/Dev-Pref-Format
(W.I.P)修复换行符,并且进行格式化
This commit is contained in:
commit
787f0500c0
|
@ -31,4 +31,5 @@
|
|||
- [ ] 如果此次PR涉及到新功能的添加,我已在`PR描述`中写入详细文档
|
||||
- [ ] 如果此次PR需要扩展跟进,我已在`扩展适配`中写入详细文档
|
||||
- [ ] 如果这个PR解决了一个issue,我在`诱因和背景`中明确链接到该issue
|
||||
- [ ] 我保证该PR中没有随意修改换行符等内容,没有制造出大量的Diff
|
||||
- [ ] 我保证该PR中没有随意修改换行符等内容,没有制造出大量的Diff
|
||||
- [ ] 我保证该PR遵循项目中`.editorconfig`、`.eslintrc.json`和`.prettierrc`所规定的代码样式,并且已经通过`prettier`格式化过代码
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"arrowParens": "always",
|
||||
"bracketSpacing": true,
|
||||
"endOfLine": "lf",
|
||||
"printWidth": 110,
|
||||
"proseWrap": "preserve",
|
||||
"quoteProps": "as-needed",
|
||||
"semi": true,
|
||||
"tabWidth": 4,
|
||||
"trailingComma": "es5",
|
||||
"useTabs": true
|
||||
}
|
1837
card/extra.js
1837
card/extra.js
File diff suppressed because it is too large
Load Diff
3210
card/gujian.js
3210
card/gujian.js
File diff suppressed because it is too large
Load Diff
3345
card/guozhan.js
3345
card/guozhan.js
File diff suppressed because it is too large
Load Diff
3574
card/gwent.js
3574
card/gwent.js
File diff suppressed because it is too large
Load Diff
1497
card/hearth.js
1497
card/hearth.js
File diff suppressed because it is too large
Load Diff
|
@ -1,290 +1,316 @@
|
|||
import { lib, game, ui, get, ai, _status } from '../noname.js';
|
||||
game.import('card', function () {
|
||||
return {
|
||||
name:'huanlekapai',
|
||||
connect:true,
|
||||
card:{
|
||||
"monkey":{
|
||||
audio:true,
|
||||
fullskin:true,
|
||||
type:"equip",
|
||||
subtype:"equip5",
|
||||
skills:["monkey"],
|
||||
ai:{
|
||||
basic:{
|
||||
equipValue:8,
|
||||
import { lib, game, ui, get, ai, _status } from "../noname.js";
|
||||
game.import("card", function () {
|
||||
return {
|
||||
name: "huanlekapai",
|
||||
connect: true,
|
||||
card: {
|
||||
monkey: {
|
||||
audio: true,
|
||||
fullskin: true,
|
||||
type: "equip",
|
||||
subtype: "equip5",
|
||||
skills: ["monkey"],
|
||||
ai: {
|
||||
basic: {
|
||||
equipValue: 8,
|
||||
},
|
||||
},
|
||||
},
|
||||
"mianju":{
|
||||
audio:true,
|
||||
fullskin:true,
|
||||
type:"equip",
|
||||
subtype:"equip2",
|
||||
skills:["mianju"],
|
||||
ai:{
|
||||
order:9.5,
|
||||
basic:{
|
||||
equipValue:function (card,player){
|
||||
if(!player.isTurnedOver()) return 6;
|
||||
if(player.isTurnedOver()) return -10;
|
||||
mianju: {
|
||||
audio: true,
|
||||
fullskin: true,
|
||||
type: "equip",
|
||||
subtype: "equip2",
|
||||
skills: ["mianju"],
|
||||
ai: {
|
||||
order: 9.5,
|
||||
basic: {
|
||||
equipValue: function (card, player) {
|
||||
if (!player.isTurnedOver()) return 6;
|
||||
if (player.isTurnedOver()) return -10;
|
||||
return 0;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"shoulijian":{
|
||||
audio:true,
|
||||
type:"basic",
|
||||
enable:true,
|
||||
fullskin:true,
|
||||
outrange:{
|
||||
global:2,
|
||||
shoulijian: {
|
||||
audio: true,
|
||||
type: "basic",
|
||||
enable: true,
|
||||
fullskin: true,
|
||||
outrange: {
|
||||
global: 2,
|
||||
},
|
||||
filterTarget:lib.filter.notMe,
|
||||
content:function (){
|
||||
"step 0"
|
||||
if(!target.countCards('he',{type:'equip'})){
|
||||
filterTarget: lib.filter.notMe,
|
||||
content: function () {
|
||||
"step 0";
|
||||
if (!target.countCards("he", { type: "equip" })) {
|
||||
target.damage();
|
||||
event.finish();
|
||||
} else {
|
||||
target.chooseToDiscard("he", { type: "equip" }, "弃置一张装备牌或受到1点伤害").ai =
|
||||
function (card) {
|
||||
var player = _status.event.player;
|
||||
var source = _status.event.getParent().player;
|
||||
if (get.damageEffect(player, source, player) > 0) return -1;
|
||||
return 7 - get.value(card);
|
||||
};
|
||||
}
|
||||
else{
|
||||
target.chooseToDiscard('he',{type:'equip'},'弃置一张装备牌或受到1点伤害').ai=function(card){
|
||||
var player=_status.event.player;
|
||||
var source=_status.event.getParent().player;
|
||||
if(get.damageEffect(player,source,player)>0) return -1;
|
||||
return 7-get.value(card);
|
||||
};
|
||||
}
|
||||
"step 1"
|
||||
if(!result.bool){
|
||||
"step 1";
|
||||
if (!result.bool) {
|
||||
target.damage();
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
basic:{
|
||||
order:9,
|
||||
value:6,
|
||||
useful:2,
|
||||
ai: {
|
||||
basic: {
|
||||
order: 9,
|
||||
value: 6,
|
||||
useful: 2,
|
||||
},
|
||||
result:{
|
||||
target:-2,
|
||||
result: {
|
||||
target: -2,
|
||||
},
|
||||
tag:{
|
||||
discard:1,
|
||||
damage:1,
|
||||
tag: {
|
||||
discard: 1,
|
||||
damage: 1,
|
||||
},
|
||||
},
|
||||
selectTarget:1,
|
||||
selectTarget: 1,
|
||||
},
|
||||
"kuwu":{
|
||||
audio:true,
|
||||
fullskin:true,
|
||||
type:"equip",
|
||||
subtype:"equip1",
|
||||
skills:["kuwu"],
|
||||
nomod:true,
|
||||
nopower:true,
|
||||
unique:true,
|
||||
distance:{
|
||||
attackFrom:-1,
|
||||
kuwu: {
|
||||
audio: true,
|
||||
fullskin: true,
|
||||
type: "equip",
|
||||
subtype: "equip1",
|
||||
skills: ["kuwu"],
|
||||
nomod: true,
|
||||
nopower: true,
|
||||
unique: true,
|
||||
distance: {
|
||||
attackFrom: -1,
|
||||
},
|
||||
ai:{
|
||||
equipValue:6,
|
||||
ai: {
|
||||
equipValue: 6,
|
||||
},
|
||||
},
|
||||
"xuelunyang":{
|
||||
audio:true,
|
||||
fullskin:true,
|
||||
type:"equip",
|
||||
subtype:"equip5",
|
||||
skills:["xuelunyang"],
|
||||
ai:{
|
||||
basic:{
|
||||
equipValue:8,
|
||||
xuelunyang: {
|
||||
audio: true,
|
||||
fullskin: true,
|
||||
type: "equip",
|
||||
subtype: "equip5",
|
||||
skills: ["xuelunyang"],
|
||||
ai: {
|
||||
basic: {
|
||||
equipValue: 8,
|
||||
},
|
||||
},
|
||||
},
|
||||
"jiuwei":{
|
||||
audio:true,
|
||||
fullskin:true,
|
||||
type:"equip",
|
||||
subtype:"equip5",
|
||||
skills:["jiuwei"],
|
||||
ai:{
|
||||
basic:{
|
||||
equipValue:8,
|
||||
jiuwei: {
|
||||
audio: true,
|
||||
fullskin: true,
|
||||
type: "equip",
|
||||
subtype: "equip5",
|
||||
skills: ["jiuwei"],
|
||||
ai: {
|
||||
basic: {
|
||||
equipValue: 8,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
skill:{
|
||||
"monkey":{
|
||||
trigger:{
|
||||
global:"useCardToBegin",
|
||||
skill: {
|
||||
monkey: {
|
||||
trigger: {
|
||||
global: "useCardToBegin",
|
||||
},
|
||||
audio:true,
|
||||
filter:function (event,player){
|
||||
var card=player.getEquip(5);
|
||||
if(card){
|
||||
var name=card.name;
|
||||
if(name&&name.indexOf('monkey')!=-1&&event.name=='tao'&&event.player!=player&&event.cards.filterInD().length>0) return true;
|
||||
audio: true,
|
||||
filter: function (event, player) {
|
||||
var card = player.getEquip(5);
|
||||
if (card) {
|
||||
var name = card.name;
|
||||
if (
|
||||
name &&
|
||||
name.indexOf("monkey") != -1 &&
|
||||
event.name == "tao" &&
|
||||
event.player != player &&
|
||||
event.cards.filterInD().length > 0
|
||||
)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
check:function (event,player){
|
||||
return get.attitude(player,event.player)<=0;
|
||||
check: function (event, player) {
|
||||
return get.attitude(player, event.player) <= 0;
|
||||
},
|
||||
content:function (){
|
||||
"step 0"
|
||||
player.$fullscreenpop('猴子偷桃','fire');
|
||||
content: function () {
|
||||
"step 0";
|
||||
player.$fullscreenpop("猴子偷桃", "fire");
|
||||
trigger.untrigger();
|
||||
trigger.finish();
|
||||
"step 1"
|
||||
"step 1";
|
||||
player.discard(player.getEquip(5));
|
||||
"step 2"
|
||||
player.gain(trigger.cards.filterInD(),'gain2','log');
|
||||
"step 2";
|
||||
player.gain(trigger.cards.filterInD(), "gain2", "log");
|
||||
},
|
||||
},
|
||||
"mianju":{
|
||||
audio:true,
|
||||
trigger:{
|
||||
player:"turnOverBefore",
|
||||
mianju: {
|
||||
audio: true,
|
||||
trigger: {
|
||||
player: "turnOverBefore",
|
||||
},
|
||||
forced:true,
|
||||
equipSkill:true,
|
||||
content:function (){
|
||||
forced: true,
|
||||
equipSkill: true,
|
||||
content: function () {
|
||||
trigger.cancel();
|
||||
},
|
||||
ai:{
|
||||
noturnOver:true,
|
||||
effect:{
|
||||
target:function (card,player,target,current){
|
||||
if(get.tag(card,'turnOver')) return [0,0];
|
||||
ai: {
|
||||
noturnOver: true,
|
||||
effect: {
|
||||
target: function (card, player, target, current) {
|
||||
if (get.tag(card, "turnOver")) return [0, 0];
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"kuwu":{
|
||||
audio:true,
|
||||
trigger:{
|
||||
source:"damageSource",
|
||||
kuwu: {
|
||||
audio: true,
|
||||
trigger: {
|
||||
source: "damageSource",
|
||||
},
|
||||
forced:true,
|
||||
equipSkill:true,
|
||||
filter:function (event,player){
|
||||
if(event._notrigger.includes(event.player)) return false;
|
||||
return event.card&&event.card.name=='sha'&&event.notLink()&&event.player.countCards('he')>0;
|
||||
forced: true,
|
||||
equipSkill: true,
|
||||
filter: function (event, player) {
|
||||
if (event._notrigger.includes(event.player)) return false;
|
||||
return (
|
||||
event.card &&
|
||||
event.card.name == "sha" &&
|
||||
event.notLink() &&
|
||||
event.player.countCards("he") > 0
|
||||
);
|
||||
},
|
||||
content:function (){
|
||||
trigger.player.chooseToDiscard(true,'he');
|
||||
content: function () {
|
||||
trigger.player.chooseToDiscard(true, "he");
|
||||
},
|
||||
},
|
||||
"xuelunyang":{
|
||||
audio:true,
|
||||
trigger:{
|
||||
player:"phaseBegin",
|
||||
xuelunyang: {
|
||||
audio: true,
|
||||
trigger: {
|
||||
player: "phaseBegin",
|
||||
},
|
||||
equipSkill:true,
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt2('xuelunyang'),function(card,player,target){
|
||||
var names=[];
|
||||
if(target.name&&!target.isUnseen(0)) names.add(target.name);
|
||||
if(target.name1&&!target.isUnseen(0)) names.add(target.name1);
|
||||
if(target.name2&&!target.isUnseen(1)) names.add(target.name2);
|
||||
var pss=player.getSkills();
|
||||
for(var i=0;i<names.length;i++){
|
||||
var info=lib.character[names[i]];
|
||||
if(info){
|
||||
var skills=info[3];
|
||||
for(var j=0;j<skills.length;j++){
|
||||
if(lib.translate[skills[j]+'_info']&&lib.skill[skills[j]]&&
|
||||
!lib.skill[skills[j]].unique&&!pss.includes(skills[j])){
|
||||
return true;
|
||||
equipSkill: true,
|
||||
direct: true,
|
||||
content: function () {
|
||||
"step 0";
|
||||
player
|
||||
.chooseTarget(get.prompt2("xuelunyang"), function (card, player, target) {
|
||||
var names = [];
|
||||
if (target.name && !target.isUnseen(0)) names.add(target.name);
|
||||
if (target.name1 && !target.isUnseen(0)) names.add(target.name1);
|
||||
if (target.name2 && !target.isUnseen(1)) names.add(target.name2);
|
||||
var pss = player.getSkills();
|
||||
for (var i = 0; i < names.length; i++) {
|
||||
var info = lib.character[names[i]];
|
||||
if (info) {
|
||||
var skills = info[3];
|
||||
for (var j = 0; j < skills.length; j++) {
|
||||
if (
|
||||
lib.translate[skills[j] + "_info"] &&
|
||||
lib.skill[skills[j]] &&
|
||||
!lib.skill[skills[j]].unique &&
|
||||
!pss.includes(skills[j])
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}).set('ai',function(target){
|
||||
return Math.random();
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
event.target=result.targets[0];
|
||||
player.logSkill('xuelunyang',event.target);
|
||||
}
|
||||
else{
|
||||
})
|
||||
.set("ai", function (target) {
|
||||
return Math.random();
|
||||
});
|
||||
"step 1";
|
||||
if (result.bool) {
|
||||
event.target = result.targets[0];
|
||||
player.logSkill("xuelunyang", event.target);
|
||||
} else {
|
||||
event.finish();
|
||||
}
|
||||
'step 2'
|
||||
var names=[];
|
||||
var list=[];
|
||||
if(target.name&&!target.isUnseen(0)) names.add(target.name);
|
||||
if(target.name1&&!target.isUnseen(0)) names.add(target.name1);
|
||||
if(target.name2&&!target.isUnseen(1)) names.add(target.name2);
|
||||
var pss=player.getSkills();
|
||||
for(var i=0;i<names.length;i++){
|
||||
var info=lib.character[names[i]];
|
||||
if(info){
|
||||
var skills=info[3];
|
||||
for(var j=0;j<skills.length;j++){
|
||||
if(lib.translate[skills[j]+'_info']&&lib.skill[skills[j]]&&
|
||||
!lib.skill[skills[j]].unique&&
|
||||
!pss.includes(skills[j])){
|
||||
"step 2";
|
||||
var names = [];
|
||||
var list = [];
|
||||
if (target.name && !target.isUnseen(0)) names.add(target.name);
|
||||
if (target.name1 && !target.isUnseen(0)) names.add(target.name1);
|
||||
if (target.name2 && !target.isUnseen(1)) names.add(target.name2);
|
||||
var pss = player.getSkills();
|
||||
for (var i = 0; i < names.length; i++) {
|
||||
var info = lib.character[names[i]];
|
||||
if (info) {
|
||||
var skills = info[3];
|
||||
for (var j = 0; j < skills.length; j++) {
|
||||
if (
|
||||
lib.translate[skills[j] + "_info"] &&
|
||||
lib.skill[skills[j]] &&
|
||||
!lib.skill[skills[j]].unique &&
|
||||
!pss.includes(skills[j])
|
||||
) {
|
||||
list.push(skills[j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
player.chooseControl(list).set('prompt','选择获得一个技能').set('choice',get.max(list,get.skillRank,'item')).set('ai',function(){return _status.event.choice})
|
||||
'step 3'
|
||||
player
|
||||
.chooseControl(list)
|
||||
.set("prompt", "选择获得一个技能")
|
||||
.set("choice", get.max(list, get.skillRank, "item"))
|
||||
.set("ai", function () {
|
||||
return _status.event.choice;
|
||||
});
|
||||
"step 3";
|
||||
player.addTempSkill(result.control);
|
||||
player.popup(result.control);
|
||||
game.log(player,'获得了','#g【'+get.translation(result.control)+'】');
|
||||
game.log(player, "获得了", "#g【" + get.translation(result.control) + "】");
|
||||
},
|
||||
},
|
||||
"jiuwei":{
|
||||
trigger:{
|
||||
player:"phaseEnd",
|
||||
jiuwei: {
|
||||
trigger: {
|
||||
player: "phaseEnd",
|
||||
},
|
||||
audio:true,
|
||||
frequent:true,
|
||||
equipSkill:true,
|
||||
content:function (){
|
||||
if(player.isDamaged()){
|
||||
audio: true,
|
||||
frequent: true,
|
||||
equipSkill: true,
|
||||
content: function () {
|
||||
if (player.isDamaged()) {
|
||||
player.recover();
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
player.draw();
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
translate:{
|
||||
"monkey":"猴子",
|
||||
"monkey_info":"猴子偷桃:当场上有其他角色使用【桃】时,你可以弃掉【猴子】,阻止【桃】的结算并将其收为手牌。",
|
||||
"mianju":"漩涡面具",
|
||||
"mianju_info":"<font color=#f00>锁定技</font> 你的武将牌不能被翻面。",
|
||||
"shoulijian":"手里剑",
|
||||
"shoulijian_info":"出牌阶段,对一名距离1以外的角色使用,令其弃置一张装备牌或受到1点伤害。",
|
||||
"kuwu":"苦无",
|
||||
"kuwu_info":"<font color=#f00>锁定技</font> 每当你使用【杀】造成一次伤害,受伤角色须弃置一张牌。",
|
||||
"xuelunyang":"写轮眼",
|
||||
"xuelunyang_info":"回合开始阶段,你可以选择一名角色,然后获得其一项技能,直到回合结束。",
|
||||
"jiuwei":"九尾",
|
||||
"jiuwei_info":"(收集查克拉)回合结束时,若你已受伤,你可回复1点体力,否则摸一张牌。",
|
||||
translate: {
|
||||
monkey: "猴子",
|
||||
monkey_info:
|
||||
"猴子偷桃:当场上有其他角色使用【桃】时,你可以弃掉【猴子】,阻止【桃】的结算并将其收为手牌。",
|
||||
mianju: "漩涡面具",
|
||||
mianju_info: "<font color=#f00>锁定技</font> 你的武将牌不能被翻面。",
|
||||
shoulijian: "手里剑",
|
||||
shoulijian_info: "出牌阶段,对一名距离1以外的角色使用,令其弃置一张装备牌或受到1点伤害。",
|
||||
kuwu: "苦无",
|
||||
kuwu_info: "<font color=#f00>锁定技</font> 每当你使用【杀】造成一次伤害,受伤角色须弃置一张牌。",
|
||||
xuelunyang: "写轮眼",
|
||||
xuelunyang_info: "回合开始阶段,你可以选择一名角色,然后获得其一项技能,直到回合结束。",
|
||||
jiuwei: "九尾",
|
||||
jiuwei_info: "(收集查克拉)回合结束时,若你已受伤,你可回复1点体力,否则摸一张牌。",
|
||||
},
|
||||
list:[
|
||||
["diamond","5","monkey"],
|
||||
["heart","9","jiuwei"],
|
||||
["heart","2","xuelunyang"],
|
||||
["spade","6","kuwu"],
|
||||
["diamond","4","shoulijian"],
|
||||
["spade","4","shoulijian"],
|
||||
["club","3","mianju"],
|
||||
list: [
|
||||
["diamond", "5", "monkey"],
|
||||
["heart", "9", "jiuwei"],
|
||||
["heart", "2", "xuelunyang"],
|
||||
["spade", "6", "kuwu"],
|
||||
["diamond", "4", "shoulijian"],
|
||||
["spade", "4", "shoulijian"],
|
||||
["club", "3", "mianju"],
|
||||
],
|
||||
}
|
||||
};
|
||||
});
|
||||
|
|
1494
card/mtg.js
1494
card/mtg.js
File diff suppressed because it is too large
Load Diff
1107
card/sp.js
1107
card/sp.js
File diff suppressed because it is too large
Load Diff
6497
card/standard.js
6497
card/standard.js
File diff suppressed because it is too large
Load Diff
8841
card/swd.js
8841
card/swd.js
File diff suppressed because it is too large
Load Diff
1613
card/yingbian.js
1613
card/yingbian.js
File diff suppressed because it is too large
Load Diff
1355
card/yongjian.js
1355
card/yongjian.js
File diff suppressed because it is too large
Load Diff
1522
card/yunchou.js
1522
card/yunchou.js
File diff suppressed because it is too large
Load Diff
594
card/zhenfa.js
594
card/zhenfa.js
|
@ -1,396 +1,412 @@
|
|||
import { lib, game, ui, get, ai, _status } from '../noname.js';
|
||||
game.import('card', function () {
|
||||
import { lib, game, ui, get, ai, _status } from "../noname.js";
|
||||
game.import("card", function () {
|
||||
return {
|
||||
name:'zhenfa',
|
||||
card:{
|
||||
pozhenjue:{
|
||||
type:'zhenfa',
|
||||
recastable:true,
|
||||
enable:true,
|
||||
notarget:true,
|
||||
content:function(){
|
||||
var targets=game.filterPlayer();
|
||||
var n=targets.length;
|
||||
while(n--){
|
||||
game.swapSeat(targets.randomGet(),targets.randomGet());
|
||||
name: "zhenfa",
|
||||
card: {
|
||||
pozhenjue: {
|
||||
type: "zhenfa",
|
||||
recastable: true,
|
||||
enable: true,
|
||||
notarget: true,
|
||||
content: function () {
|
||||
var targets = game.filterPlayer();
|
||||
var n = targets.length;
|
||||
while (n--) {
|
||||
game.swapSeat(targets.randomGet(), targets.randomGet());
|
||||
}
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:8,
|
||||
result:{
|
||||
player:1,
|
||||
mode: ["guozhan"],
|
||||
ai: {
|
||||
order: 8,
|
||||
result: {
|
||||
player: 1,
|
||||
},
|
||||
}
|
||||
},
|
||||
},
|
||||
changshezhen:{
|
||||
type:'zhenfa',
|
||||
recastable:true,
|
||||
enable:function(card,player){
|
||||
if(player.inline()) return true;
|
||||
if(player.identity=='unknown'||player.identity=='ye') return false;
|
||||
return game.hasPlayer(function(current){
|
||||
return current!=player&¤t.isFriendOf(player);
|
||||
changshezhen: {
|
||||
type: "zhenfa",
|
||||
recastable: true,
|
||||
enable: function (card, player) {
|
||||
if (player.inline()) return true;
|
||||
if (player.identity == "unknown" || player.identity == "ye") return false;
|
||||
return game.hasPlayer(function (current) {
|
||||
return current != player && current.isFriendOf(player);
|
||||
});
|
||||
},
|
||||
notarget:true,
|
||||
content:function(){
|
||||
if(player.inline()){
|
||||
var targets=game.filterPlayer(function(current){
|
||||
notarget: true,
|
||||
content: function () {
|
||||
if (player.inline()) {
|
||||
var targets = game.filterPlayer(function (current) {
|
||||
return player.inline(current);
|
||||
});
|
||||
player.line(targets);
|
||||
game.asyncDraw(targets);
|
||||
}
|
||||
else if(player.getNext()){
|
||||
var list=game.filterPlayer(function(current){
|
||||
return current!=player&¤t.isFriendOf(player);
|
||||
} else if (player.getNext()) {
|
||||
var list = game.filterPlayer(function (current) {
|
||||
return current != player && current.isFriendOf(player);
|
||||
});
|
||||
if(list.length){
|
||||
list.sort(function(a,b){
|
||||
return get.distance(player,a,'absolute')-get.distance(player,b,'absolute');
|
||||
if (list.length) {
|
||||
list.sort(function (a, b) {
|
||||
return (
|
||||
get.distance(player, a, "absolute") - get.distance(player, b, "absolute")
|
||||
);
|
||||
});
|
||||
player.line(list[0]);
|
||||
game.swapSeat(list[0],player.getNext(),true,true);
|
||||
game.swapSeat(list[0], player.getNext(), true, true);
|
||||
}
|
||||
}
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:6.5,
|
||||
result:{
|
||||
player:1,
|
||||
mode: ["guozhan"],
|
||||
ai: {
|
||||
order: 6.5,
|
||||
result: {
|
||||
player: 1,
|
||||
},
|
||||
tag:{
|
||||
draw:1
|
||||
}
|
||||
}
|
||||
tag: {
|
||||
draw: 1,
|
||||
},
|
||||
},
|
||||
},
|
||||
tianfuzhen:{
|
||||
type:'zhenfa',
|
||||
recastable:true,
|
||||
enable:function(){
|
||||
return game.hasPlayer(function(current){
|
||||
tianfuzhen: {
|
||||
type: "zhenfa",
|
||||
recastable: true,
|
||||
enable: function () {
|
||||
return game.hasPlayer(function (current) {
|
||||
return current.isMajor();
|
||||
});
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return target.isMajor()&&target.countCards('he')>0;
|
||||
filterTarget: function (card, player, target) {
|
||||
return target.isMajor() && target.countCards("he") > 0;
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
target.chooseToDiscard('he',true).delay=false;
|
||||
selectTarget: -1,
|
||||
content: function () {
|
||||
target.chooseToDiscard("he", true).delay = false;
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target:-1,
|
||||
mode: ["guozhan"],
|
||||
ai: {
|
||||
order: 7,
|
||||
result: {
|
||||
target: -1,
|
||||
},
|
||||
tag:{
|
||||
discard:1
|
||||
}
|
||||
}
|
||||
tag: {
|
||||
discard: 1,
|
||||
},
|
||||
},
|
||||
},
|
||||
dizaizhen:{
|
||||
type:'zhenfa',
|
||||
recastable:true,
|
||||
enable:function(){
|
||||
return game.hasPlayer(function(current){
|
||||
dizaizhen: {
|
||||
type: "zhenfa",
|
||||
recastable: true,
|
||||
enable: function () {
|
||||
return game.hasPlayer(function (current) {
|
||||
return current.isNotMajor();
|
||||
});
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
filterTarget: function (card, player, target) {
|
||||
return target.isNotMajor();
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
selectTarget: -1,
|
||||
content: function () {
|
||||
target.draw(false);
|
||||
target.$draw();
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target:1,
|
||||
mode: ["guozhan"],
|
||||
ai: {
|
||||
order: 7,
|
||||
result: {
|
||||
target: 1,
|
||||
},
|
||||
tag:{
|
||||
draw:1
|
||||
}
|
||||
}
|
||||
tag: {
|
||||
draw: 1,
|
||||
},
|
||||
},
|
||||
},
|
||||
fengyangzhen:{
|
||||
type:'zhenfa',
|
||||
recastable:true,
|
||||
enable:true,
|
||||
filterTarget:function(card,player,target){
|
||||
fengyangzhen: {
|
||||
type: "zhenfa",
|
||||
recastable: true,
|
||||
enable: true,
|
||||
filterTarget: function (card, player, target) {
|
||||
return target.sieged();
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
target.addTempSkill('feiying',{player:'damageAfter'});
|
||||
target.popup('feiying');
|
||||
game.log(target,'获得了技能','【飞影】');
|
||||
selectTarget: -1,
|
||||
content: function () {
|
||||
target.addTempSkill("feiying", { player: "damageAfter" });
|
||||
target.popup("feiying");
|
||||
game.log(target, "获得了技能", "【飞影】");
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target:2,
|
||||
mode: ["guozhan"],
|
||||
ai: {
|
||||
order: 7,
|
||||
result: {
|
||||
target: 2,
|
||||
},
|
||||
}
|
||||
},
|
||||
},
|
||||
yunchuizhen:{
|
||||
type:'zhenfa',
|
||||
recastable:true,
|
||||
enable:true,
|
||||
filterTarget:function(card,player,target){
|
||||
yunchuizhen: {
|
||||
type: "zhenfa",
|
||||
recastable: true,
|
||||
enable: true,
|
||||
filterTarget: function (card, player, target) {
|
||||
return target.siege();
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
target.addTempSkill('wushuang',{source:'damageAfter'});
|
||||
target.popup('wushuang');
|
||||
game.log(target,'获得了技能','【无双】');
|
||||
selectTarget: -1,
|
||||
content: function () {
|
||||
target.addTempSkill("wushuang", { source: "damageAfter" });
|
||||
target.popup("wushuang");
|
||||
game.log(target, "获得了技能", "【无双】");
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target:2,
|
||||
mode: ["guozhan"],
|
||||
ai: {
|
||||
order: 7,
|
||||
result: {
|
||||
target: 2,
|
||||
},
|
||||
}
|
||||
},
|
||||
},
|
||||
qixingzhen:{
|
||||
type:'zhenfa',
|
||||
recastable:true,
|
||||
enable:function(card,player){
|
||||
return player.siege()||player.sieged();
|
||||
qixingzhen: {
|
||||
type: "zhenfa",
|
||||
recastable: true,
|
||||
enable: function (card, player) {
|
||||
return player.siege() || player.sieged();
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return target==player;
|
||||
filterTarget: function (card, player, target) {
|
||||
return target == player;
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
'step 0'
|
||||
event.targets=game.filterPlayer(function(current){
|
||||
selectTarget: -1,
|
||||
content: function () {
|
||||
"step 0";
|
||||
event.targets = game.filterPlayer(function (current) {
|
||||
return current.siege(player);
|
||||
});
|
||||
'step 1'
|
||||
if(event.targets.length){
|
||||
var current=event.targets.shift();
|
||||
player.line(current,'green');
|
||||
player.discardPlayerCard(current,true);
|
||||
"step 1";
|
||||
if (event.targets.length) {
|
||||
var current = event.targets.shift();
|
||||
player.line(current, "green");
|
||||
player.discardPlayerCard(current, true);
|
||||
event.redo();
|
||||
}
|
||||
'step 2'
|
||||
var card={name:'sha',isCard:true};
|
||||
var list=game.filterPlayer(function(current){
|
||||
return current.siege(player)&&player.canUse(card,current);
|
||||
"step 2";
|
||||
var card = { name: "sha", isCard: true };
|
||||
var list = game.filterPlayer(function (current) {
|
||||
return current.siege(player) && player.canUse(card, current);
|
||||
});
|
||||
if(list.length){
|
||||
player.useCard(card,list,false);
|
||||
if (list.length) {
|
||||
player.useCard(card, list, false);
|
||||
}
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target:1,
|
||||
mode: ["guozhan"],
|
||||
ai: {
|
||||
order: 7,
|
||||
result: {
|
||||
target: 1,
|
||||
},
|
||||
}
|
||||
},
|
||||
},
|
||||
shepanzhen:{
|
||||
type:'zhenfa',
|
||||
recastable:true,
|
||||
enable:function(card,player){
|
||||
if(player.identity=='unknown'||player.identity=='ye') return false;
|
||||
if(get.population(player.identity)<=1) return false;
|
||||
return game.hasPlayer(function(current){
|
||||
return current!=player&¤t.identity==player.identity&&!player.inline(current);
|
||||
shepanzhen: {
|
||||
type: "zhenfa",
|
||||
recastable: true,
|
||||
enable: function (card, player) {
|
||||
if (player.identity == "unknown" || player.identity == "ye") return false;
|
||||
if (get.population(player.identity) <= 1) return false;
|
||||
return game.hasPlayer(function (current) {
|
||||
return (
|
||||
current != player &&
|
||||
current.identity == player.identity &&
|
||||
!player.inline(current)
|
||||
);
|
||||
});
|
||||
},
|
||||
notarget:true,
|
||||
content:function(){
|
||||
var targets=game.filterPlayer(function(current){
|
||||
return current.identity==player.identity;
|
||||
notarget: true,
|
||||
content: function () {
|
||||
var targets = game.filterPlayer(function (current) {
|
||||
return current.identity == player.identity;
|
||||
});
|
||||
targets.sortBySeat();
|
||||
for(var i=1;i<targets.length;i++){
|
||||
game.swapSeat(targets[i],targets[i-1].next,false);
|
||||
for (var i = 1; i < targets.length; i++) {
|
||||
game.swapSeat(targets[i], targets[i - 1].next, false);
|
||||
}
|
||||
game.log(get.translation(player.identity)+'势力角色摆成了蛇蟠阵')
|
||||
game.log(get.translation(player.identity) + "势力角色摆成了蛇蟠阵");
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
player:1,
|
||||
mode: ["guozhan"],
|
||||
ai: {
|
||||
order: 7,
|
||||
result: {
|
||||
player: 1,
|
||||
},
|
||||
}
|
||||
},
|
||||
},
|
||||
longfeizhen:{
|
||||
type:'zhenfa',
|
||||
recastable:true,
|
||||
enable:function(card,player){
|
||||
longfeizhen: {
|
||||
type: "zhenfa",
|
||||
recastable: true,
|
||||
enable: function (card, player) {
|
||||
return player.next.siege(player);
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
if(target.getCards('he').length==0) return false;
|
||||
return target==player.next||target==player.previous;
|
||||
filterTarget: function (card, player, target) {
|
||||
if (target.getCards("he").length == 0) return false;
|
||||
return target == player.next || target == player.previous;
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.choosePlayerCard(target,'he',true);
|
||||
"step 1"
|
||||
selectTarget: -1,
|
||||
content: function () {
|
||||
"step 0";
|
||||
player.choosePlayerCard(target, "he", true);
|
||||
"step 1";
|
||||
target.discard(result.buttons[0].link);
|
||||
"step 2"
|
||||
if(target==targets[targets.length-1]){
|
||||
"step 2";
|
||||
if (target == targets[targets.length - 1]) {
|
||||
player.draw();
|
||||
}
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:10,
|
||||
result:{
|
||||
target:-1,
|
||||
player:1
|
||||
mode: ["guozhan"],
|
||||
ai: {
|
||||
order: 10,
|
||||
result: {
|
||||
target: -1,
|
||||
player: 1,
|
||||
},
|
||||
}
|
||||
},
|
||||
huyizhen:{
|
||||
type:'zhenfa',
|
||||
recastable:true,
|
||||
enable:function(card,player){
|
||||
return player.siege(player.next)||player.siege(player.previous);
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
},
|
||||
huyizhen: {
|
||||
type: "zhenfa",
|
||||
recastable: true,
|
||||
enable: function (card, player) {
|
||||
return player.siege(player.next) || player.siege(player.previous);
|
||||
},
|
||||
filterTarget: function (card, player, target) {
|
||||
return player.siege(target);
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.chooseCard('将一张非基本牌当作杀对'+get.translation(target)+'使用','he',function(card){
|
||||
return get.type(card)!='basic';
|
||||
}).ai=function(card){
|
||||
if(get.effect(target,{name:'sha'},player,player)>0){
|
||||
return 6-get.value(card);
|
||||
selectTarget: -1,
|
||||
content: function () {
|
||||
"step 0";
|
||||
player.chooseCard(
|
||||
"将一张非基本牌当作杀对" + get.translation(target) + "使用",
|
||||
"he",
|
||||
function (card) {
|
||||
return get.type(card) != "basic";
|
||||
}
|
||||
).ai = function (card) {
|
||||
if (get.effect(target, { name: "sha" }, player, player) > 0) {
|
||||
return 6 - get.value(card);
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
"step 1"
|
||||
if(result.bool){
|
||||
player.useCard({name:'sha'},result.cards,target,false);
|
||||
"step 1";
|
||||
if (result.bool) {
|
||||
player.useCard({ name: "sha" }, result.cards, target, false);
|
||||
}
|
||||
"step 2"
|
||||
if(target==player.next) event.player2=player.next.next;
|
||||
else event.player2=player.previous.previous;
|
||||
event.player2.chooseCard('将一张非基本牌当作杀对'+get.translation(target)+'使用','he',function(card){
|
||||
return get.type(card)!='basic';
|
||||
}).ai=function(card){
|
||||
if(get.effect(target,{name:'sha'},event.player2,event.player2)>0){
|
||||
return 6-get.value(card);
|
||||
"step 2";
|
||||
if (target == player.next) event.player2 = player.next.next;
|
||||
else event.player2 = player.previous.previous;
|
||||
event.player2.chooseCard(
|
||||
"将一张非基本牌当作杀对" + get.translation(target) + "使用",
|
||||
"he",
|
||||
function (card) {
|
||||
return get.type(card) != "basic";
|
||||
}
|
||||
).ai = function (card) {
|
||||
if (get.effect(target, { name: "sha" }, event.player2, event.player2) > 0) {
|
||||
return 6 - get.value(card);
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
"step 3"
|
||||
if(result.bool){
|
||||
event.player2.useCard({name:'sha'},result.cards,target,false);
|
||||
"step 3";
|
||||
if (result.bool) {
|
||||
event.player2.useCard({ name: "sha" }, result.cards, target, false);
|
||||
}
|
||||
},
|
||||
mode:['guozhan'],
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target:-2,
|
||||
mode: ["guozhan"],
|
||||
ai: {
|
||||
order: 7,
|
||||
result: {
|
||||
target: -2,
|
||||
},
|
||||
}
|
||||
},
|
||||
niaoxiangzhen:{
|
||||
type:'zhenfa',
|
||||
recastable:true,
|
||||
enable:true,
|
||||
filterTarget:function(card,player,target){
|
||||
if(player.identity==target.identity) return false;
|
||||
if(target.identity=='unknown'||target.identity=='ye') return false;
|
||||
return target.identity==target.next.identity||target.identity==target.previous.identity
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
"step 0"
|
||||
var next=target.chooseToRespond({name:'shan'});
|
||||
next.ai=function(card){
|
||||
if(get.damageEffect(target,player,target)>=0) return 0;
|
||||
},
|
||||
niaoxiangzhen: {
|
||||
type: "zhenfa",
|
||||
recastable: true,
|
||||
enable: true,
|
||||
filterTarget: function (card, player, target) {
|
||||
if (player.identity == target.identity) return false;
|
||||
if (target.identity == "unknown" || target.identity == "ye") return false;
|
||||
return (
|
||||
target.identity == target.next.identity || target.identity == target.previous.identity
|
||||
);
|
||||
},
|
||||
selectTarget: -1,
|
||||
content: function () {
|
||||
"step 0";
|
||||
var next = target.chooseToRespond({ name: "shan" });
|
||||
next.ai = function (card) {
|
||||
if (get.damageEffect(target, player, target) >= 0) return 0;
|
||||
return 1;
|
||||
};
|
||||
next.autochoose=lib.filter.autoRespondShan;
|
||||
"step 1"
|
||||
if(result.bool==false){
|
||||
next.autochoose = lib.filter.autoRespondShan;
|
||||
"step 1";
|
||||
if (result.bool == false) {
|
||||
target.damage();
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
basic:{
|
||||
order:9,
|
||||
useful:1
|
||||
ai: {
|
||||
basic: {
|
||||
order: 9,
|
||||
useful: 1,
|
||||
},
|
||||
result:{
|
||||
target:-1.5,
|
||||
result: {
|
||||
target: -1.5,
|
||||
},
|
||||
tag: {
|
||||
respond: 1,
|
||||
respondShan: 1,
|
||||
damage: 1,
|
||||
},
|
||||
tag:{
|
||||
respond:1,
|
||||
respondShan:1,
|
||||
damage:1,
|
||||
}
|
||||
},
|
||||
mode:['guozhan'],
|
||||
mode: ["guozhan"],
|
||||
},
|
||||
},
|
||||
skill:{
|
||||
},
|
||||
translate:{
|
||||
zhenfa:'阵法',
|
||||
changshezhen:'长蛇阵',
|
||||
pozhenjue:'破阵决',
|
||||
tianfuzhen:'天覆阵',
|
||||
dizaizhen:'地载阵',
|
||||
fengyangzhen:'风扬阵',
|
||||
yunchuizhen:'云垂阵',
|
||||
qixingzhen:'七星阵',
|
||||
shepanzhen:'蛇蟠阵',
|
||||
shepanzhen_bg:'列',
|
||||
yunchuizhen_bg:'垂',
|
||||
longfeizhen:'龙飞阵',
|
||||
huyizhen:'虎翼阵',
|
||||
niaoxiangzhen:'鸟翔阵',
|
||||
niaoxiangzhen_info:'令所有非你阵营的队列的角色今次打出一张闪,或者受到1点伤害。',
|
||||
qixingzhen_info:'弃置所有围攻你的角色各一张牌,然后视为对所有你围攻的角色使用一张不计入出杀次数的杀。',
|
||||
skill: {},
|
||||
translate: {
|
||||
zhenfa: "阵法",
|
||||
changshezhen: "长蛇阵",
|
||||
pozhenjue: "破阵决",
|
||||
tianfuzhen: "天覆阵",
|
||||
dizaizhen: "地载阵",
|
||||
fengyangzhen: "风扬阵",
|
||||
yunchuizhen: "云垂阵",
|
||||
qixingzhen: "七星阵",
|
||||
shepanzhen: "蛇蟠阵",
|
||||
shepanzhen_bg: "列",
|
||||
yunchuizhen_bg: "垂",
|
||||
longfeizhen: "龙飞阵",
|
||||
huyizhen: "虎翼阵",
|
||||
niaoxiangzhen: "鸟翔阵",
|
||||
niaoxiangzhen_info: "令所有非你阵营的队列的角色今次打出一张闪,或者受到1点伤害。",
|
||||
qixingzhen_info:
|
||||
"弃置所有围攻你的角色各一张牌,然后视为对所有你围攻的角色使用一张不计入出杀次数的杀。",
|
||||
// longfeizhen_info:'弃置围攻你的角色各一张牌,然后摸一张牌。',
|
||||
// qixingzhen_info:'令我方所有角色进入围攻状态。',
|
||||
// shepanzhen_info:'令我方所有角色进入队列状态。',
|
||||
// yunchuizhen_info:'令所有围攻角色获得技能〖无双〗,直到其首次造成伤害。',
|
||||
// fengyangzhen_info:'令所有被围攻角色获得技能〖飞影〗,直到其首次受到伤害。',
|
||||
dizaizhen_info:'所有小势力角色摸一张牌。',
|
||||
changshezhen_info:'若你处于队列中,与你同一队列的所有角色摸一张牌,否则将与你逆时针距离最近的同势力角色移至你下家。',
|
||||
dizaizhen_info: "所有小势力角色摸一张牌。",
|
||||
changshezhen_info:
|
||||
"若你处于队列中,与你同一队列的所有角色摸一张牌,否则将与你逆时针距离最近的同势力角色移至你下家。",
|
||||
// pozhenjue_info:'将所有角色的顺序随机重排。',
|
||||
tianfuzhen_info:'所有大势力角色弃置一张牌。'
|
||||
tianfuzhen_info: "所有大势力角色弃置一张牌。",
|
||||
},
|
||||
list:[
|
||||
["diamond",1,'changshezhen'],
|
||||
["club",1,'changshezhen'],
|
||||
list: [
|
||||
["diamond", 1, "changshezhen"],
|
||||
["club", 1, "changshezhen"],
|
||||
// ["spade",1,'changshezhen'],
|
||||
// ["heart",1,'changshezhen'],
|
||||
|
||||
["diamond",2,'tianfuzhen'],
|
||||
["diamond", 2, "tianfuzhen"],
|
||||
// ["club",2,'tianfuzhen'],
|
||||
["spade",2,'tianfuzhen'],
|
||||
["heart",2,'tianfuzhen'],
|
||||
["spade", 2, "tianfuzhen"],
|
||||
["heart", 2, "tianfuzhen"],
|
||||
|
||||
["diamond",3,'dizaizhen'],
|
||||
["diamond", 3, "dizaizhen"],
|
||||
// ["club",3,'dizaizhen'],
|
||||
["spade",3,'dizaizhen'],
|
||||
["heart",3,'dizaizhen'],
|
||||
["spade", 3, "dizaizhen"],
|
||||
["heart", 3, "dizaizhen"],
|
||||
|
||||
// ["diamond",4,'fengyangzhen'],
|
||||
// ["club",4,'fengyangzhen'],
|
||||
|
@ -407,9 +423,9 @@ game.import('card', function () {
|
|||
// ["spade",6,'huyizhen'],
|
||||
// ["heart",6,'huyizhen'],
|
||||
|
||||
["diamond",7,'qixingzhen'],
|
||||
["club",7,'qixingzhen'],
|
||||
["spade",7,'qixingzhen'],
|
||||
["diamond", 7, "qixingzhen"],
|
||||
["club", 7, "qixingzhen"],
|
||||
["spade", 7, "qixingzhen"],
|
||||
// ["heart",7,'qixingzhen'],
|
||||
|
||||
// ["diamond",8,'shepanzhen'],
|
||||
|
@ -422,10 +438,10 @@ game.import('card', function () {
|
|||
// ["spade",9,'longfeizhen'],
|
||||
// ["heart",9,'longfeizhen'],
|
||||
|
||||
["diamond",11,'niaoxiangzhen'],
|
||||
["diamond", 11, "niaoxiangzhen"],
|
||||
// ["club",11,'niaoxiangzhen'],
|
||||
["spade",11,'niaoxiangzhen'],
|
||||
["heart",11,'niaoxiangzhen'],
|
||||
["spade", 11, "niaoxiangzhen"],
|
||||
["heart", 11, "niaoxiangzhen"],
|
||||
|
||||
// ["diamond",12,'yunchuizhen'],
|
||||
// ["club",12,'yunchuizhen'],
|
||||
|
|
1492
card/zhulu.js
1492
card/zhulu.js
File diff suppressed because it is too large
Load Diff
6252
character/clan.js
6252
character/clan.js
File diff suppressed because it is too large
Load Diff
3457
character/collab.js
3457
character/collab.js
File diff suppressed because it is too large
Load Diff
10268
character/ddd.js
10268
character/ddd.js
File diff suppressed because it is too large
Load Diff
32401
character/diy.js
32401
character/diy.js
File diff suppressed because it is too large
Load Diff
15529
character/extra.js
15529
character/extra.js
File diff suppressed because it is too large
Load Diff
4463
character/gujian.js
4463
character/gujian.js
File diff suppressed because it is too large
Load Diff
7400
character/gwent.js
7400
character/gwent.js
File diff suppressed because it is too large
Load Diff
16022
character/hearth.js
16022
character/hearth.js
File diff suppressed because it is too large
Load Diff
23678
character/huicui.js
23678
character/huicui.js
File diff suppressed because it is too large
Load Diff
1185
character/jiange.js
1185
character/jiange.js
File diff suppressed because it is too large
Load Diff
15086
character/jsrg.js
15086
character/jsrg.js
File diff suppressed because it is too large
Load Diff
30639
character/mobile.js
30639
character/mobile.js
File diff suppressed because it is too large
Load Diff
744
character/mtg.js
744
character/mtg.js
|
@ -1,492 +1,516 @@
|
|||
import { lib, game, ui, get, ai, _status } from '../noname.js';
|
||||
game.import('character', function () {
|
||||
import { lib, game, ui, get, ai, _status } from "../noname.js";
|
||||
game.import("character", function () {
|
||||
return {
|
||||
name:'mtg',
|
||||
character:{
|
||||
mtg_jiding:['male','qun',4,['mbaizhan','msilian']],
|
||||
name: "mtg",
|
||||
character: {
|
||||
mtg_jiding: ["male", "qun", 4, ["mbaizhan", "msilian"]],
|
||||
// mtg_qianzhuo:['female','shu',3,[]],
|
||||
mtg_jiesi:['male','wei',3,['mtongnian','msuoling','mhuanyi']],
|
||||
mtg_lilianna:['female','qun',3,['lingyong','mduohun']],
|
||||
mtg_jiesi: ["male", "wei", 3, ["mtongnian", "msuoling", "mhuanyi"]],
|
||||
mtg_lilianna: ["female", "qun", 3, ["lingyong", "mduohun"]],
|
||||
// mtg_nisha:['female','wu',3,[]],
|
||||
// mtg_ayeni:['male','qun',4,[]],
|
||||
},
|
||||
characterIntro:{
|
||||
mtg_jiding:'这名白色魔法的使用者极其注重忠诚,正义和荣誉。他曾全力追捕茜卓纳拉,如今已不可思议地与这位火焰法师成为伙伴。',
|
||||
mtg_qianzhuo:'茜卓纳拉是使用红色法术力的旅法师。她擅长使用火焰:除了火焰,还是火焰。茜卓性格冲动、易怒、富有激情,不断增长的火焰法术能力随时都准备爆发。她的火花在还很年轻时便已点燃,如今已是相当有经验的烈焰术士和旅法师。',
|
||||
mtg_jiesi:'杰斯贝连是使用蓝色法术的鹏洛客。他擅长心灵法术:读取心灵,幻影,知识,以及欺瞒的咒语。',
|
||||
mtg_lilianna:'莉莲娜维斯是一位精通死灵术的旅法师,她擅长用黑色法术力来复活死者,腐化生者,并从死亡中召唤力量。',
|
||||
mtg_nisha:'赞迪卡妖精部落玖瑞加的一名战士,做事倾尽全力,与大地有密切的联系,还擅使元素魔法。她能够引导时空的魔法生机地脉,为土地赋予生命。',
|
||||
mtg_ayeni:'金鬃阿耶尼是使用白色法术的鹏洛客。他长于净化身体与心灵的法术:用咒语来治疗、强化盟友,以及唤醒他人内在的心灵精华。',
|
||||
characterIntro: {
|
||||
mtg_jiding:
|
||||
"这名白色魔法的使用者极其注重忠诚,正义和荣誉。他曾全力追捕茜卓纳拉,如今已不可思议地与这位火焰法师成为伙伴。",
|
||||
mtg_qianzhuo:
|
||||
"茜卓纳拉是使用红色法术力的旅法师。她擅长使用火焰:除了火焰,还是火焰。茜卓性格冲动、易怒、富有激情,不断增长的火焰法术能力随时都准备爆发。她的火花在还很年轻时便已点燃,如今已是相当有经验的烈焰术士和旅法师。",
|
||||
mtg_jiesi:
|
||||
"杰斯贝连是使用蓝色法术的鹏洛客。他擅长心灵法术:读取心灵,幻影,知识,以及欺瞒的咒语。",
|
||||
mtg_lilianna:
|
||||
"莉莲娜维斯是一位精通死灵术的旅法师,她擅长用黑色法术力来复活死者,腐化生者,并从死亡中召唤力量。",
|
||||
mtg_nisha:
|
||||
"赞迪卡妖精部落玖瑞加的一名战士,做事倾尽全力,与大地有密切的联系,还擅使元素魔法。她能够引导时空的魔法生机地脉,为土地赋予生命。",
|
||||
mtg_ayeni:
|
||||
"金鬃阿耶尼是使用白色法术的鹏洛客。他长于净化身体与心灵的法术:用咒语来治疗、强化盟友,以及唤醒他人内在的心灵精华。",
|
||||
},
|
||||
skill:{
|
||||
mduohun:{
|
||||
trigger:{player:'dyingAfter'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return event.source&&event.source.isIn()&&event.source.hp>0;
|
||||
skill: {
|
||||
mduohun: {
|
||||
trigger: { player: "dyingAfter" },
|
||||
forced: true,
|
||||
filter: function (event, player) {
|
||||
return event.source && event.source.isIn() && event.source.hp > 0;
|
||||
},
|
||||
logTarget:'source',
|
||||
content:function(){
|
||||
logTarget: "source",
|
||||
content: function () {
|
||||
trigger.source.loseHp();
|
||||
},
|
||||
ai:{
|
||||
threaten:function(player,target){
|
||||
if(target.hp==1) return 0.6;
|
||||
ai: {
|
||||
threaten: function (player, target) {
|
||||
if (target.hp == 1) return 0.6;
|
||||
return 1;
|
||||
},
|
||||
effect:{
|
||||
target:function(card,player,target,current){
|
||||
if(!target.hasFriend()) return;
|
||||
if(target.hp<=1&&get.tag(card,'damage')) return [1,0,0,-1];
|
||||
}
|
||||
}
|
||||
}
|
||||
effect: {
|
||||
target: function (card, player, target, current) {
|
||||
if (!target.hasFriend()) return;
|
||||
if (target.hp <= 1 && get.tag(card, "damage")) return [1, 0, 0, -1];
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
lingyong:{
|
||||
enable:'phaseUse',
|
||||
filter:function(event,player){
|
||||
return !player.hasSkill('subplayer')&&player.getSubPlayers('lingyong_get').length>0;
|
||||
lingyong: {
|
||||
enable: "phaseUse",
|
||||
filter: function (event, player) {
|
||||
return !player.hasSkill("subplayer") && player.getSubPlayers("lingyong_get").length > 0;
|
||||
},
|
||||
nosub:true,
|
||||
group:'lingyong_get',
|
||||
direct:true,
|
||||
delay:0,
|
||||
skillAnimation:true,
|
||||
animationColor:'thunder',
|
||||
content:function(){
|
||||
player.callSubPlayer().set('tag','lingyong_get');
|
||||
nosub: true,
|
||||
group: "lingyong_get",
|
||||
direct: true,
|
||||
delay: 0,
|
||||
skillAnimation: true,
|
||||
animationColor: "thunder",
|
||||
content: function () {
|
||||
player.callSubPlayer().set("tag", "lingyong_get");
|
||||
},
|
||||
ai:{
|
||||
order:1,
|
||||
result:{
|
||||
player:function(player,target){
|
||||
ai: {
|
||||
order: 1,
|
||||
result: {
|
||||
player: function (player, target) {
|
||||
return 1;
|
||||
// if(player.hp<=1) return 1;
|
||||
// if(!player.needsToDiscard(player.hp-1)) return 1;
|
||||
// return 0;
|
||||
}
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
get:{
|
||||
trigger:{global:'dieAfter'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return !event.player.isMin()&&![player.name,player.name1,player.name2].includes(event.player.name);
|
||||
},
|
||||
content:function(){
|
||||
var skills=lib.character[trigger.player.name][3].slice(0);
|
||||
for(var i=0;i<skills.length;i++){
|
||||
if(lib.skill[skills[i]].nosub){
|
||||
skills.splice(i--,1);
|
||||
},
|
||||
},
|
||||
subSkill: {
|
||||
get: {
|
||||
trigger: { global: "dieAfter" },
|
||||
forced: true,
|
||||
filter: function (event, player) {
|
||||
return (
|
||||
!event.player.isMin() &&
|
||||
![player.name, player.name1, player.name2].includes(event.player.name)
|
||||
);
|
||||
},
|
||||
content: function () {
|
||||
var skills = lib.character[trigger.player.name][3].slice(0);
|
||||
for (var i = 0; i < skills.length; i++) {
|
||||
if (lib.skill[skills[i]].nosub) {
|
||||
skills.splice(i--, 1);
|
||||
}
|
||||
}
|
||||
player.addSubPlayer({
|
||||
name:trigger.player.name,
|
||||
skills:skills,
|
||||
hs:get.cards(2),
|
||||
intro:'出牌阶段,你可以调遣此随从(直到随从死亡不可再次切换)'
|
||||
name: trigger.player.name,
|
||||
skills: skills,
|
||||
hs: get.cards(2),
|
||||
intro: "出牌阶段,你可以调遣此随从(直到随从死亡不可再次切换)",
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
mhuanyi:{
|
||||
round:2,
|
||||
trigger:{player:'phaseEnd'},
|
||||
direct:true,
|
||||
addintro:function(storage,player){
|
||||
if(player.hasSkill('mhuanyi_target')){
|
||||
return '直到下一回合开始,当成为某类型的卡牌的惟一目标时,将目标转移给某名其他角色;'
|
||||
}
|
||||
return '';
|
||||
},
|
||||
},
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var rand=Math.random();
|
||||
player.chooseTarget(get.prompt2('mhuanyi'),function(card,player,target){
|
||||
return target!=player;
|
||||
}).set('ai',function(target){
|
||||
if(get.attitude(player,target)<0){
|
||||
return rand;
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
event.target=result.targets[0];
|
||||
if(player.isUnderControl(true)){
|
||||
player.line(event.target,'green');
|
||||
}
|
||||
player.chooseControl('基本牌','非基本牌','cancel2',function(){
|
||||
return Math.floor(Math.random()*2);
|
||||
}).set('prompt','选择一种卡牌类型');
|
||||
},
|
||||
mhuanyi: {
|
||||
round: 2,
|
||||
trigger: { player: "phaseEnd" },
|
||||
direct: true,
|
||||
addintro: function (storage, player) {
|
||||
if (player.hasSkill("mhuanyi_target")) {
|
||||
return "直到下一回合开始,当成为某类型的卡牌的惟一目标时,将目标转移给某名其他角色;";
|
||||
}
|
||||
else{
|
||||
return "";
|
||||
},
|
||||
content: function () {
|
||||
"step 0";
|
||||
var rand = Math.random();
|
||||
player
|
||||
.chooseTarget(get.prompt2("mhuanyi"), function (card, player, target) {
|
||||
return target != player;
|
||||
})
|
||||
.set("ai", function (target) {
|
||||
if (get.attitude(player, target) < 0) {
|
||||
return rand;
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
"step 1";
|
||||
if (result.bool) {
|
||||
event.target = result.targets[0];
|
||||
if (player.isUnderControl(true)) {
|
||||
player.line(event.target, "green");
|
||||
}
|
||||
player
|
||||
.chooseControl("基本牌", "非基本牌", "cancel2", function () {
|
||||
return Math.floor(Math.random() * 2);
|
||||
})
|
||||
.set("prompt", "选择一种卡牌类型");
|
||||
} else {
|
||||
event.finish();
|
||||
}
|
||||
'step 2'
|
||||
if(result.control&&result.control!='cancel2'){
|
||||
player.logSkill('mhuanyi');
|
||||
player.storage.mhuanyi_target=[event.target,result.index];
|
||||
player.addTempSkill('mhuanyi_target',{player:'phaseBegin'});
|
||||
"step 2";
|
||||
if (result.control && result.control != "cancel2") {
|
||||
player.logSkill("mhuanyi");
|
||||
player.storage.mhuanyi_target = [event.target, result.index];
|
||||
player.addTempSkill("mhuanyi_target", { player: "phaseBegin" });
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
target:{
|
||||
trigger:{target:'useCardToBefore'},
|
||||
priority:6,
|
||||
forced:true,
|
||||
onremove:true,
|
||||
group:'mhuanyi_die',
|
||||
filter:function(event,player){
|
||||
if(!player.storage.mhuanyi_target) return false;
|
||||
if(event.player==player.storage.mhuanyi_target[0]) return false;
|
||||
if(get.type(event.card)=='basic'){
|
||||
if(player.storage.mhuanyi_target[1]!=0) return false;
|
||||
subSkill: {
|
||||
target: {
|
||||
trigger: { target: "useCardToBefore" },
|
||||
priority: 6,
|
||||
forced: true,
|
||||
onremove: true,
|
||||
group: "mhuanyi_die",
|
||||
filter: function (event, player) {
|
||||
if (!player.storage.mhuanyi_target) return false;
|
||||
if (event.player == player.storage.mhuanyi_target[0]) return false;
|
||||
if (get.type(event.card) == "basic") {
|
||||
if (player.storage.mhuanyi_target[1] != 0) return false;
|
||||
} else {
|
||||
if (player.storage.mhuanyi_target[1] != 1) return false;
|
||||
}
|
||||
else{
|
||||
if(player.storage.mhuanyi_target[1]!=1) return false;
|
||||
}
|
||||
if(!lib.filter.targetEnabled2(event.card,event.player,player.storage.mhuanyi_target[0])){
|
||||
if (
|
||||
!lib.filter.targetEnabled2(
|
||||
event.card,
|
||||
event.player,
|
||||
player.storage.mhuanyi_target[0]
|
||||
)
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
logTarget:function(event,player){
|
||||
logTarget: function (event, player) {
|
||||
return player.storage.mhuanyi_target[0];
|
||||
},
|
||||
content:function(){
|
||||
trigger.target=player.storage.mhuanyi_target[0];
|
||||
player.removeSkill('mhuanyi_target');
|
||||
}
|
||||
},
|
||||
die:{
|
||||
trigger:{global:'dieAfter'},
|
||||
silent:true,
|
||||
filter:function(event,player){
|
||||
if(!player.storage.mhuanyi_target) return false;
|
||||
return event.player==player.storage.mhuanyi_target[0];
|
||||
content: function () {
|
||||
trigger.target = player.storage.mhuanyi_target[0];
|
||||
player.removeSkill("mhuanyi_target");
|
||||
},
|
||||
content:function(){
|
||||
player.removeSkill('mhuanyi_target');
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
die: {
|
||||
trigger: { global: "dieAfter" },
|
||||
silent: true,
|
||||
filter: function (event, player) {
|
||||
if (!player.storage.mhuanyi_target) return false;
|
||||
return event.player == player.storage.mhuanyi_target[0];
|
||||
},
|
||||
content: function () {
|
||||
player.removeSkill("mhuanyi_target");
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
msuoling:{
|
||||
trigger:{global:'useCard'},
|
||||
direct:true,
|
||||
priority:5.5,
|
||||
round:1,
|
||||
filter:function(event,player){
|
||||
if(get.type(event.card)=='trick'&&event.card.isCard){
|
||||
if(event.player==player) return false;
|
||||
if(!player.countCards('he',{suit:get.suit(event.card)})) return false;
|
||||
msuoling: {
|
||||
trigger: { global: "useCard" },
|
||||
direct: true,
|
||||
priority: 5.5,
|
||||
round: 1,
|
||||
filter: function (event, player) {
|
||||
if (get.type(event.card) == "trick" && event.card.isCard) {
|
||||
if (event.player == player) return false;
|
||||
if (!player.countCards("he", { suit: get.suit(event.card) })) return false;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var att=get.attitude(player,trigger.player);
|
||||
var suit=get.suit(trigger.card);
|
||||
player.chooseToDiscard('he',get.prompt2('msuoling',trigger.player),function(card){
|
||||
return get.suit(card)==suit;
|
||||
}).set('autodelay',true).set('logSkill',['msuoling',trigger.player]).ai=function(card){
|
||||
if(att<0){
|
||||
return 8-get.value(card);
|
||||
content: function () {
|
||||
"step 0";
|
||||
var att = get.attitude(player, trigger.player);
|
||||
var suit = get.suit(trigger.card);
|
||||
player
|
||||
.chooseToDiscard("he", get.prompt2("msuoling", trigger.player), function (card) {
|
||||
return get.suit(card) == suit;
|
||||
})
|
||||
.set("autodelay", true)
|
||||
.set("logSkill", ["msuoling", trigger.player]).ai = function (card) {
|
||||
if (att < 0) {
|
||||
return 8 - get.value(card);
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
"step 1";
|
||||
if (result.bool) {
|
||||
trigger.cancel();
|
||||
player.chooseUseTarget(true,trigger.card);
|
||||
player.chooseUseTarget(true, trigger.card);
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
msuoling_old:{
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
subSkill:{
|
||||
ai:{
|
||||
onremove:true
|
||||
}
|
||||
msuoling_old: {
|
||||
enable: "phaseUse",
|
||||
usable: 1,
|
||||
subSkill: {
|
||||
ai: {
|
||||
onremove: true,
|
||||
},
|
||||
},
|
||||
filter:function(event,player){
|
||||
var nh=player.countCards('h');
|
||||
if(nh<=1||nh>=5) return false;
|
||||
return lib.skill.msuoling.getc(player).number>0;
|
||||
filter: function (event, player) {
|
||||
var nh = player.countCards("h");
|
||||
if (nh <= 1 || nh >= 5) return false;
|
||||
return lib.skill.msuoling.getc(player).number > 0;
|
||||
},
|
||||
getc:function(player){
|
||||
var hs=player.getCards('h');
|
||||
for(var i=0;i<hs.length;i++){
|
||||
if(hs[i].mtongnian_link){
|
||||
getc: function (player) {
|
||||
var hs = player.getCards("h");
|
||||
for (var i = 0; i < hs.length; i++) {
|
||||
if (hs[i].mtongnian_link) {
|
||||
return hs[i];
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
},
|
||||
getn:function(player){
|
||||
var hs=player.getCards('h');
|
||||
var ns=[];
|
||||
for(var i=0;i<hs.length;i++){
|
||||
if(!hs[i].mtongnian_link){
|
||||
getn: function (player) {
|
||||
var hs = player.getCards("h");
|
||||
var ns = [];
|
||||
for (var i = 0; i < hs.length; i++) {
|
||||
if (!hs[i].mtongnian_link) {
|
||||
ns.push(hs[i].number);
|
||||
}
|
||||
}
|
||||
return ns;
|
||||
},
|
||||
test:function(player){
|
||||
var cs=lib.skill.msuoling.getc(player).number;
|
||||
var ns=lib.skill.msuoling.getn(player);
|
||||
return lib.skill.msuoling.calc(ns,cs);
|
||||
test: function (player) {
|
||||
var cs = lib.skill.msuoling.getc(player).number;
|
||||
var ns = lib.skill.msuoling.getn(player);
|
||||
return lib.skill.msuoling.calc(ns, cs);
|
||||
},
|
||||
calc:function(arr, num){
|
||||
for(var i=0;i<arr.length;i++){
|
||||
if(arr[i]==num){
|
||||
calc: function (arr, num) {
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
if (arr[i] == num) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if(arr.length>1){
|
||||
for(var i=0;i<arr.length-1;i++){
|
||||
for(var j=i+1;j<arr.length;j++){
|
||||
var brr=[];
|
||||
for(var k=0;k<arr.length;k++){
|
||||
if(k!=i&&k!=j){
|
||||
if (arr.length > 1) {
|
||||
for (var i = 0; i < arr.length - 1; i++) {
|
||||
for (var j = i + 1; j < arr.length; j++) {
|
||||
var brr = [];
|
||||
for (var k = 0; k < arr.length; k++) {
|
||||
if (k != i && k != j) {
|
||||
brr.push(arr[k]);
|
||||
}
|
||||
}
|
||||
if(lib.skill.msuoling.calc(brr.concat([arr[i]+arr[j]]),num)) return true;
|
||||
if(lib.skill.msuoling.calc(brr.concat([arr[i]-arr[j]]),num)) return true;
|
||||
if(lib.skill.msuoling.calc(brr.concat([arr[i]*arr[j]]),num)) return true;
|
||||
if(lib.skill.msuoling.calc(brr.concat([arr[i]/arr[j]]),num)) return true;
|
||||
if (lib.skill.msuoling.calc(brr.concat([arr[i] + arr[j]]), num)) return true;
|
||||
if (lib.skill.msuoling.calc(brr.concat([arr[i] - arr[j]]), num)) return true;
|
||||
if (lib.skill.msuoling.calc(brr.concat([arr[i] * arr[j]]), num)) return true;
|
||||
if (lib.skill.msuoling.calc(brr.concat([arr[i] / arr[j]]), num)) return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
check:function(card){
|
||||
check: function (card) {
|
||||
// if(player.isUnderControl(true)) return 0;
|
||||
var player=_status.event.player;
|
||||
if(player.hasSkill('msuoling_ai')){
|
||||
var player = _status.event.player;
|
||||
if (player.hasSkill("msuoling_ai")) {
|
||||
return false;
|
||||
}
|
||||
if(lib.skill.msuoling.test(player)){
|
||||
if (lib.skill.msuoling.test(player)) {
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
player.addTempSkill('msuoling_ai',{player:['gainAfter','phaseAfter']});
|
||||
} else {
|
||||
player.addTempSkill("msuoling_ai", { player: ["gainAfter", "phaseAfter"] });
|
||||
return false;
|
||||
}
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
content: function () {
|
||||
"step 0";
|
||||
player.showHandcards();
|
||||
'step 1'
|
||||
if(lib.skill.msuoling.test(player)){
|
||||
var card=lib.skill.msuoling.getc(player);
|
||||
card.classList.remove('glow');
|
||||
"step 1";
|
||||
if (lib.skill.msuoling.test(player)) {
|
||||
var card = lib.skill.msuoling.getc(player);
|
||||
card.classList.remove("glow");
|
||||
delete card.mtongnian_link;
|
||||
delete card._destroy;
|
||||
|
||||
var list=lib.skill.mtongnian.getList(player);
|
||||
if(list.length){
|
||||
var card=list.randomGet();
|
||||
var fake=game.createCard(card);
|
||||
fake.mtongnian_link=card;
|
||||
player.gain(fake,'draw')._triggered=null;
|
||||
fake.classList.add('glow');
|
||||
fake._destroy='mtongnian';
|
||||
var list = lib.skill.mtongnian.getList(player);
|
||||
if (list.length) {
|
||||
var card = list.randomGet();
|
||||
var fake = game.createCard(card);
|
||||
fake.mtongnian_link = card;
|
||||
player.gain(fake, "draw")._triggered = null;
|
||||
fake.classList.add("glow");
|
||||
fake._destroy = "mtongnian";
|
||||
}
|
||||
}
|
||||
},
|
||||
selectCard:[1,Infinity],
|
||||
ai:{
|
||||
order:11
|
||||
}
|
||||
selectCard: [1, Infinity],
|
||||
ai: {
|
||||
order: 11,
|
||||
},
|
||||
},
|
||||
mtongnian:{
|
||||
trigger:{player:'phaseUseBegin'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
var enemies=player.getEnemies();
|
||||
for(var i=0;i<enemies.length;i++){
|
||||
if(enemies[i].countCards('h')) return true;
|
||||
mtongnian: {
|
||||
trigger: { player: "phaseUseBegin" },
|
||||
forced: true,
|
||||
filter: function (event, player) {
|
||||
var enemies = player.getEnemies();
|
||||
for (var i = 0; i < enemies.length; i++) {
|
||||
if (enemies[i].countCards("h")) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
getList:function(player){
|
||||
var list=[];
|
||||
var enemies=player.getEnemies();
|
||||
for(var i=0;i<enemies.length;i++){
|
||||
list.addArray(enemies[i].getCards('h'));
|
||||
getList: function (player) {
|
||||
var list = [];
|
||||
var enemies = player.getEnemies();
|
||||
for (var i = 0; i < enemies.length; i++) {
|
||||
list.addArray(enemies[i].getCards("h"));
|
||||
}
|
||||
return list;
|
||||
},
|
||||
content:function(){
|
||||
var list=lib.skill.mtongnian.getList(player);
|
||||
if(list.length){
|
||||
var card=list.randomGet();
|
||||
var fake=game.createCard(card);
|
||||
fake.mtongnian_link=card;
|
||||
player.gain(fake,'draw')._triggered=null;
|
||||
fake.classList.add('glow');
|
||||
fake._destroy='mtongnian';
|
||||
content: function () {
|
||||
var list = lib.skill.mtongnian.getList(player);
|
||||
if (list.length) {
|
||||
var card = list.randomGet();
|
||||
var fake = game.createCard(card);
|
||||
fake.mtongnian_link = card;
|
||||
player.gain(fake, "draw")._triggered = null;
|
||||
fake.classList.add("glow");
|
||||
fake._destroy = "mtongnian";
|
||||
}
|
||||
},
|
||||
group:['mtongnian_change','mtongnian_use','mtongnian_lose'],
|
||||
subSkill:{
|
||||
change:{
|
||||
trigger:{player:'useCard'},
|
||||
silent:true,
|
||||
filter:function(event,player){
|
||||
return player.hasCard(function(card){
|
||||
return card.mtongnian_link?true:false;
|
||||
},'h');
|
||||
group: ["mtongnian_change", "mtongnian_use", "mtongnian_lose"],
|
||||
subSkill: {
|
||||
change: {
|
||||
trigger: { player: "useCard" },
|
||||
silent: true,
|
||||
filter: function (event, player) {
|
||||
return player.hasCard(function (card) {
|
||||
return card.mtongnian_link ? true : false;
|
||||
}, "h");
|
||||
},
|
||||
content:function(){
|
||||
var list=lib.skill.mtongnian.getList(player);
|
||||
var hs=player.getCards('h',function(card){
|
||||
return card.mtongnian_link?true:false;
|
||||
content: function () {
|
||||
var list = lib.skill.mtongnian.getList(player);
|
||||
var hs = player.getCards("h", function (card) {
|
||||
return card.mtongnian_link ? true : false;
|
||||
});
|
||||
for(var i=0;i<hs.length;i++){
|
||||
var current=hs[i].mtongnian_link;
|
||||
hs[i].mtongnian_link=list.randomGet(current);
|
||||
if(!hs[i].mtongnian_link){
|
||||
hs[i].mtongnian_link=current;
|
||||
for (var i = 0; i < hs.length; i++) {
|
||||
var current = hs[i].mtongnian_link;
|
||||
hs[i].mtongnian_link = list.randomGet(current);
|
||||
if (!hs[i].mtongnian_link) {
|
||||
hs[i].mtongnian_link = current;
|
||||
}
|
||||
hs[i].init(hs[i].mtongnian_link);
|
||||
}
|
||||
}
|
||||
},
|
||||
use:{
|
||||
trigger:{player:'useCardBefore'},
|
||||
silent:true,
|
||||
filter:function(event,player){
|
||||
return event.card.mtongnian_link?true:false;
|
||||
},
|
||||
content:function(){
|
||||
var link=trigger.card.mtongnian_link;
|
||||
var target=get.owner(link);
|
||||
if(target&&target!=player){
|
||||
},
|
||||
use: {
|
||||
trigger: { player: "useCardBefore" },
|
||||
silent: true,
|
||||
filter: function (event, player) {
|
||||
return event.card.mtongnian_link ? true : false;
|
||||
},
|
||||
content: function () {
|
||||
var link = trigger.card.mtongnian_link;
|
||||
var target = get.owner(link);
|
||||
if (target && target != player) {
|
||||
trigger.cards.add(trigger.card);
|
||||
player.lose(trigger.cards,ui.discardPile);
|
||||
trigger.card=link;
|
||||
trigger.cards.length=0;
|
||||
player.lose(trigger.cards, ui.discardPile);
|
||||
trigger.card = link;
|
||||
trigger.cards.length = 0;
|
||||
trigger.cards.push(link);
|
||||
target.lose(link,ui.discardPile);
|
||||
player.logSkill('mtongnian',target);
|
||||
game.log(target,'失去了',link);
|
||||
target.lose(link, ui.discardPile);
|
||||
player.logSkill("mtongnian", target);
|
||||
game.log(target, "失去了", link);
|
||||
game.delayx();
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
player.lose(trigger.card);
|
||||
trigger.cancel();
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
lose:{
|
||||
trigger:{player:'phaseUseEnd',global:'loseEnd'},
|
||||
silent:true,
|
||||
filter:function(event,player){
|
||||
if(event.name=='lose'){
|
||||
return lib.skill.mtongnian.getList(player).length==0;
|
||||
lose: {
|
||||
trigger: { player: "phaseUseEnd", global: "loseEnd" },
|
||||
silent: true,
|
||||
filter: function (event, player) {
|
||||
if (event.name == "lose") {
|
||||
return lib.skill.mtongnian.getList(player).length == 0;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
content:function(){
|
||||
var hs=player.getCards('h',function(card){
|
||||
return card.mtongnian_link?true:false;
|
||||
content: function () {
|
||||
var hs = player.getCards("h", function (card) {
|
||||
return card.mtongnian_link ? true : false;
|
||||
});
|
||||
if(hs.length){
|
||||
player.lose(hs)._triggered=null;
|
||||
if (hs.length) {
|
||||
player.lose(hs)._triggered = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
ai: {
|
||||
threaten: 1.3,
|
||||
},
|
||||
ai:{
|
||||
threaten:1.3
|
||||
}
|
||||
},
|
||||
mbaizhan:{
|
||||
trigger:{source:'damageEnd'},
|
||||
forced:true,
|
||||
filter:function(event){
|
||||
return event.num>0;
|
||||
mbaizhan: {
|
||||
trigger: { source: "damageEnd" },
|
||||
forced: true,
|
||||
filter: function (event) {
|
||||
return event.num > 0;
|
||||
},
|
||||
content:function(){
|
||||
content: function () {
|
||||
player.changeHujia(trigger.num);
|
||||
},
|
||||
ai:{
|
||||
damageBonus:true
|
||||
}
|
||||
ai: {
|
||||
damageBonus: true,
|
||||
},
|
||||
},
|
||||
msilian:{
|
||||
trigger:{player:'phaseEnd'},
|
||||
filter:function(event,player){
|
||||
return player.hujia>0;
|
||||
msilian: {
|
||||
trigger: { player: "phaseEnd" },
|
||||
filter: function (event, player) {
|
||||
return player.hujia > 0;
|
||||
},
|
||||
check:function(event,player){
|
||||
return player.hujia>1&&player.hp>1;
|
||||
check: function (event, player) {
|
||||
return player.hujia > 1 && player.hp > 1;
|
||||
},
|
||||
content:function(){
|
||||
player.storage.msilian=player.hujia;
|
||||
content: function () {
|
||||
player.storage.msilian = player.hujia;
|
||||
player.changeHujia(-player.hujia);
|
||||
player.insertPhase();
|
||||
},
|
||||
group:['msilian_hp','msilian_draw'],
|
||||
subSkill:{
|
||||
hp:{
|
||||
trigger:{player:'phaseAfter'},
|
||||
silent:true,
|
||||
filter:function(event,player){
|
||||
return event.skill=='msilian'&&!player.getStat('damage');
|
||||
group: ["msilian_hp", "msilian_draw"],
|
||||
subSkill: {
|
||||
hp: {
|
||||
trigger: { player: "phaseAfter" },
|
||||
silent: true,
|
||||
filter: function (event, player) {
|
||||
return event.skill == "msilian" && !player.getStat("damage");
|
||||
},
|
||||
content:function(){
|
||||
content: function () {
|
||||
player.loseHp();
|
||||
}
|
||||
},
|
||||
draw:{
|
||||
trigger:{player:'phaseDrawBegin'},
|
||||
filter:function(event){
|
||||
return event.getParent('phase').skill=='msilian';
|
||||
},
|
||||
silent:true,
|
||||
content:function(){
|
||||
trigger.num+=player.storage.msilian-2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
draw: {
|
||||
trigger: { player: "phaseDrawBegin" },
|
||||
filter: function (event) {
|
||||
return event.getParent("phase").skill == "msilian";
|
||||
},
|
||||
silent: true,
|
||||
content: function () {
|
||||
trigger.num += player.storage.msilian - 2;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
translate:{
|
||||
mtg_jiding:'基定',
|
||||
mtg_qianzhuo:'茜卓',
|
||||
mtg_jiesi:'杰斯',
|
||||
mtg_lilianna:'莉莲娜',
|
||||
mtg_nisha:'妮莎',
|
||||
mtg_ayeni:'阿耶尼',
|
||||
translate: {
|
||||
mtg_jiding: "基定",
|
||||
mtg_qianzhuo: "茜卓",
|
||||
mtg_jiesi: "杰斯",
|
||||
mtg_lilianna: "莉莲娜",
|
||||
mtg_nisha: "妮莎",
|
||||
mtg_ayeni: "阿耶尼",
|
||||
|
||||
mduohun:'夺魂',
|
||||
mduohun_info:'锁定技,当你解除濒死状态后,令你进入濒死状态的角色失去1点体力。',
|
||||
lingyong:'灵俑',
|
||||
lingyong2:'灵俑',
|
||||
lingyong3:'灵俑',
|
||||
lingyong3_bg:'俑',
|
||||
lingyong_info:'锁定技,每当一名其他角色死亡,你获得一个与该角色同名且体力上限为1、初始手牌为2的随从;出牌阶段,你可以调遣以此法获得的随从(直到随从死亡不可再次切换)。',
|
||||
mbaizhan:'百战',
|
||||
mbaizhan_info:'锁定技,每当你造成1点伤害,你获得1点护甲。',
|
||||
msilian:'祀炼',
|
||||
msilian_info:'结束阶段,若你有护甲,你可以移去全部护甲,然后进行一个额外回合;在额外回合中,你的摸牌阶段摸牌基数为你移去的护甲数;额外回合结束后,若你未造成伤害,你失去1点体力。',
|
||||
mtongnian:'通念',
|
||||
mtongnian_info:'锁定技,出牌阶段开始时,你获得一张替身牌,此牌对应一名随机敌人的一张随机手牌;每当你使用一张非替身牌,随机更换替身牌对应的牌;当你使用替身牌时,改为使用替身牌对应的牌;当出牌阶段结束,或替身牌离开手牌区,或敌方角色没有手牌时,销毁替身牌。',
|
||||
msuoling:'塑灵',
|
||||
msuoling_info:'每轮限一次,当一名其他角色使用一张非转化的普通锦囊牌时,你可以弃置一张与之花色相同的牌取消之,然后你视为使用该锦囊牌。',
|
||||
msuoling_old_info:'出牌阶段限一次,若你手牌中有替身牌且手牌数不超过5,你可以展示手牌,若其中的非替身手牌能通过四则运算得到你的替身牌的点数,你将替身牌转化为非替身牌,然后获得一张新的替身牌(此技能托管无效)。',
|
||||
mhuanyi:'幻逸',
|
||||
mhuanyi_info:'每两轮限一次,结束阶段,你可以选择一名其他角色和一种卡牌类型(选择结果对其他角色不可见),直到下一回合开始,当你首次成为该类型卡牌的惟一目标时,你将目标转移给你指定的角色(目标须合法)。',
|
||||
mduohun: "夺魂",
|
||||
mduohun_info: "锁定技,当你解除濒死状态后,令你进入濒死状态的角色失去1点体力。",
|
||||
lingyong: "灵俑",
|
||||
lingyong2: "灵俑",
|
||||
lingyong3: "灵俑",
|
||||
lingyong3_bg: "俑",
|
||||
lingyong_info:
|
||||
"锁定技,每当一名其他角色死亡,你获得一个与该角色同名且体力上限为1、初始手牌为2的随从;出牌阶段,你可以调遣以此法获得的随从(直到随从死亡不可再次切换)。",
|
||||
mbaizhan: "百战",
|
||||
mbaizhan_info: "锁定技,每当你造成1点伤害,你获得1点护甲。",
|
||||
msilian: "祀炼",
|
||||
msilian_info:
|
||||
"结束阶段,若你有护甲,你可以移去全部护甲,然后进行一个额外回合;在额外回合中,你的摸牌阶段摸牌基数为你移去的护甲数;额外回合结束后,若你未造成伤害,你失去1点体力。",
|
||||
mtongnian: "通念",
|
||||
mtongnian_info:
|
||||
"锁定技,出牌阶段开始时,你获得一张替身牌,此牌对应一名随机敌人的一张随机手牌;每当你使用一张非替身牌,随机更换替身牌对应的牌;当你使用替身牌时,改为使用替身牌对应的牌;当出牌阶段结束,或替身牌离开手牌区,或敌方角色没有手牌时,销毁替身牌。",
|
||||
msuoling: "塑灵",
|
||||
msuoling_info:
|
||||
"每轮限一次,当一名其他角色使用一张非转化的普通锦囊牌时,你可以弃置一张与之花色相同的牌取消之,然后你视为使用该锦囊牌。",
|
||||
msuoling_old_info:
|
||||
"出牌阶段限一次,若你手牌中有替身牌且手牌数不超过5,你可以展示手牌,若其中的非替身手牌能通过四则运算得到你的替身牌的点数,你将替身牌转化为非替身牌,然后获得一张新的替身牌(此技能托管无效)。",
|
||||
mhuanyi: "幻逸",
|
||||
mhuanyi_info:
|
||||
"每两轮限一次,结束阶段,你可以选择一名其他角色和一种卡牌类型(选择结果对其他角色不可见),直到下一回合开始,当你首次成为该类型卡牌的惟一目标时,你将目标转移给你指定的角色(目标须合法)。",
|
||||
},
|
||||
};
|
||||
});
|
||||
|
|
13320
character/offline.js
13320
character/offline.js
File diff suppressed because it is too large
Load Diff
2276
character/old.js
2276
character/old.js
File diff suppressed because it is too large
Load Diff
2750
character/onlyOL.js
2750
character/onlyOL.js
File diff suppressed because it is too large
Load Diff
5855
character/ow.js
5855
character/ow.js
File diff suppressed because it is too large
Load Diff
5468
character/rank.js
5468
character/rank.js
File diff suppressed because it is too large
Load Diff
27464
character/refresh.js
27464
character/refresh.js
File diff suppressed because it is too large
Load Diff
13029
character/sb.js
13029
character/sb.js
File diff suppressed because it is too large
Load Diff
14080
character/shenhua.js
14080
character/shenhua.js
File diff suppressed because it is too large
Load Diff
12068
character/shiji.js
12068
character/shiji.js
File diff suppressed because it is too large
Load Diff
50173
character/sp.js
50173
character/sp.js
File diff suppressed because it is too large
Load Diff
21044
character/sp2.js
21044
character/sp2.js
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
16023
character/swd.js
16023
character/swd.js
File diff suppressed because it is too large
Load Diff
30634
character/tw.js
30634
character/tw.js
File diff suppressed because it is too large
Load Diff
|
@ -1,118 +1,123 @@
|
|||
import { lib, game, ui, get, ai, _status } from '../noname.js';
|
||||
game.import('character', function () {
|
||||
return {
|
||||
name:'xiake',
|
||||
character:{
|
||||
// xk_dongfangweiming:['male','shu',4,[]],
|
||||
xk_guyuexuan:['male','qun',4,['rouquan','gzhenji']],
|
||||
xk_jinji:['male','shu',4,['zhongzhan','lianpo']],
|
||||
// xk_shenxiangyun:['female','wei',3,['zhenjiu']],
|
||||
xk_fujianhan:['male','qun',4,['zuijian','zitong']],
|
||||
},
|
||||
skill:{
|
||||
zhongzhan:{
|
||||
trigger:{source:'damageBegin'},
|
||||
logTarget:'player',
|
||||
check:function(event,player){
|
||||
if(get.damageEffect(event.player,player,player)>0&&
|
||||
get.attitude(player,event.player)<0){
|
||||
return player.hp>event.player.hp&&player.hp>=2;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
player.loseHp();
|
||||
trigger.num++;
|
||||
}
|
||||
},
|
||||
rouquan:{
|
||||
mod:{
|
||||
selectTarget:function(card,player,range){
|
||||
if(card.name=='sha'&&!player.getEquip(1)&&range[1]!=-1) range[1]=Infinity;
|
||||
}
|
||||
},
|
||||
enable:'phaseUse',
|
||||
position:'e',
|
||||
filter:function(event,player){
|
||||
return player.hasCard(card=>lib.skill.rouquan.filterCard(card,player),lib.skill.rouquan.position);
|
||||
},
|
||||
filterCard:lib.filter.cardRecastable,
|
||||
prompt:'将要重铸的牌置入弃牌堆并摸一张牌',
|
||||
discard:false,
|
||||
lose:false,
|
||||
delay:false,
|
||||
check:function(card,player){
|
||||
var val=get.equipValue(card);
|
||||
var player=_status.event.player;
|
||||
var cards=player.getCards('h',{subtype:get.subtype(card)});
|
||||
for(var i=0;i<cards.length;i++){
|
||||
if(get.equipValue(cards[i])>=val){
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
},
|
||||
content:function(){
|
||||
player.recast(cards);
|
||||
},
|
||||
ai:{
|
||||
order:9.5,
|
||||
result:{
|
||||
player:1
|
||||
}
|
||||
}
|
||||
},
|
||||
gzhenji:{
|
||||
trigger:{source:'damageEnd'},
|
||||
frequent:true,
|
||||
filter:function(event,player){
|
||||
if(event._notrigger.includes(event.player)) return false;
|
||||
return _status.currentPhase==player&&event.card&&event.card.name=='sha';
|
||||
},
|
||||
content:function(){
|
||||
player.draw();
|
||||
player.addTempSkill('gzhenji3');
|
||||
}
|
||||
},
|
||||
gzhenji3:{
|
||||
mod:{
|
||||
cardUsable:function(card,player,num){
|
||||
if(card.name=='sha') return num+1;
|
||||
}
|
||||
},
|
||||
},
|
||||
zitong:{
|
||||
trigger:{player:'useCard'},
|
||||
frequent:true,
|
||||
filter:function(event,player){
|
||||
return _status.currentPhase==player&&player.countUsed()==3;
|
||||
},
|
||||
content:function(){
|
||||
var card=get.cardPile('chuansongmen');
|
||||
if(!card){
|
||||
card=game.createCard('chuansongmen');
|
||||
}
|
||||
player.gain(card,'gain2');
|
||||
},
|
||||
ai:{
|
||||
threaten:1.2
|
||||
}
|
||||
}
|
||||
},
|
||||
translate:{
|
||||
xk_dongfangweiming:'东方未明',
|
||||
xk_guyuexuan:'谷月轩',
|
||||
xk_jinji:'荆棘',
|
||||
xk_shenxiangyun:'沈湘芸',
|
||||
xk_fujianhan:'傅剑寒',
|
||||
zhongzhan:'重斩',
|
||||
zhongzhan_info:'每当你即将造成伤害,你可失去1点体力令伤害+1。',
|
||||
gzhenji:'震击',
|
||||
gzhenji_info:'你使用杀造成伤害后,可以摸一张牌,并且本回合内可以额外使用一张杀。',
|
||||
rouquan:'柔拳',
|
||||
rouquan_info:'你可以重铸装备区内的牌;当你没有武器牌时,你的杀可以指定任意个目标。',
|
||||
zitong:'通悟',
|
||||
zitong_info:'当你于自己的回合内使用第三张牌时,你可以将一张传送门置于你的手牌。',
|
||||
},
|
||||
};
|
||||
});
|
||||
import { lib, game, ui, get, ai, _status } from "../noname.js";
|
||||
game.import("character", function () {
|
||||
return {
|
||||
name: "xiake",
|
||||
character: {
|
||||
// xk_dongfangweiming:['male','shu',4,[]],
|
||||
xk_guyuexuan: ["male", "qun", 4, ["rouquan", "gzhenji"]],
|
||||
xk_jinji: ["male", "shu", 4, ["zhongzhan", "lianpo"]],
|
||||
// xk_shenxiangyun:['female','wei',3,['zhenjiu']],
|
||||
xk_fujianhan: ["male", "qun", 4, ["zuijian", "zitong"]],
|
||||
},
|
||||
skill: {
|
||||
zhongzhan: {
|
||||
trigger: { source: "damageBegin" },
|
||||
logTarget: "player",
|
||||
check: function (event, player) {
|
||||
if (
|
||||
get.damageEffect(event.player, player, player) > 0 &&
|
||||
get.attitude(player, event.player) < 0
|
||||
) {
|
||||
return player.hp > event.player.hp && player.hp >= 2;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content: function () {
|
||||
player.loseHp();
|
||||
trigger.num++;
|
||||
},
|
||||
},
|
||||
rouquan: {
|
||||
mod: {
|
||||
selectTarget: function (card, player, range) {
|
||||
if (card.name == "sha" && !player.getEquip(1) && range[1] != -1) range[1] = Infinity;
|
||||
},
|
||||
},
|
||||
enable: "phaseUse",
|
||||
position: "e",
|
||||
filter: function (event, player) {
|
||||
return player.hasCard(
|
||||
(card) => lib.skill.rouquan.filterCard(card, player),
|
||||
lib.skill.rouquan.position
|
||||
);
|
||||
},
|
||||
filterCard: lib.filter.cardRecastable,
|
||||
prompt: "将要重铸的牌置入弃牌堆并摸一张牌",
|
||||
discard: false,
|
||||
lose: false,
|
||||
delay: false,
|
||||
check: function (card, player) {
|
||||
var val = get.equipValue(card);
|
||||
var player = _status.event.player;
|
||||
var cards = player.getCards("h", { subtype: get.subtype(card) });
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
if (get.equipValue(cards[i]) >= val) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
},
|
||||
content: function () {
|
||||
player.recast(cards);
|
||||
},
|
||||
ai: {
|
||||
order: 9.5,
|
||||
result: {
|
||||
player: 1,
|
||||
},
|
||||
},
|
||||
},
|
||||
gzhenji: {
|
||||
trigger: { source: "damageEnd" },
|
||||
frequent: true,
|
||||
filter: function (event, player) {
|
||||
if (event._notrigger.includes(event.player)) return false;
|
||||
return _status.currentPhase == player && event.card && event.card.name == "sha";
|
||||
},
|
||||
content: function () {
|
||||
player.draw();
|
||||
player.addTempSkill("gzhenji3");
|
||||
},
|
||||
},
|
||||
gzhenji3: {
|
||||
mod: {
|
||||
cardUsable: function (card, player, num) {
|
||||
if (card.name == "sha") return num + 1;
|
||||
},
|
||||
},
|
||||
},
|
||||
zitong: {
|
||||
trigger: { player: "useCard" },
|
||||
frequent: true,
|
||||
filter: function (event, player) {
|
||||
return _status.currentPhase == player && player.countUsed() == 3;
|
||||
},
|
||||
content: function () {
|
||||
var card = get.cardPile("chuansongmen");
|
||||
if (!card) {
|
||||
card = game.createCard("chuansongmen");
|
||||
}
|
||||
player.gain(card, "gain2");
|
||||
},
|
||||
ai: {
|
||||
threaten: 1.2,
|
||||
},
|
||||
},
|
||||
},
|
||||
translate: {
|
||||
xk_dongfangweiming: "东方未明",
|
||||
xk_guyuexuan: "谷月轩",
|
||||
xk_jinji: "荆棘",
|
||||
xk_shenxiangyun: "沈湘芸",
|
||||
xk_fujianhan: "傅剑寒",
|
||||
zhongzhan: "重斩",
|
||||
zhongzhan_info: "每当你即将造成伤害,你可失去1点体力令伤害+1。",
|
||||
gzhenji: "震击",
|
||||
gzhenji_info: "你使用杀造成伤害后,可以摸一张牌,并且本回合内可以额外使用一张杀。",
|
||||
rouquan: "柔拳",
|
||||
rouquan_info: "你可以重铸装备区内的牌;当你没有武器牌时,你的杀可以指定任意个目标。",
|
||||
zitong: "通悟",
|
||||
zitong_info: "当你于自己的回合内使用第三张牌时,你可以将一张传送门置于你的手牌。",
|
||||
},
|
||||
};
|
||||
});
|
||||
|
|
29138
character/xianding.js
29138
character/xianding.js
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
25528
character/yijiang.js
25528
character/yijiang.js
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
5100
character/yxs.js
5100
character/yxs.js
File diff suppressed because it is too large
Load Diff
|
@ -1,342 +1,343 @@
|
|||
import { lib, game, ui, get, ai, _status } from '../noname.js';
|
||||
game.import('character', function () {
|
||||
return {
|
||||
name:'zhuogui',
|
||||
character:{
|
||||
nianshou:['male','shu',4,['nianrui','qixiang']],
|
||||
mamian:['male','qun',4,['lianyu','guiji']],
|
||||
niutou:['male','shu',4,['manjia','xiaoshou']],
|
||||
baiwuchang:['male','qun',3,['qiangzheng','moukui']],
|
||||
heiwuchang:['male','qun',3,['suoling','xixing']],
|
||||
},
|
||||
skill:{
|
||||
qixiang:{
|
||||
group:['qixiang1','qixiang2'],
|
||||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target,current){
|
||||
if(card.name=='lebu'&&card.name=='bingliang') return 0.8;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
qixiang1:{
|
||||
trigger:{player:'judge'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(event.card){
|
||||
if(event.card.viewAs){
|
||||
return event.card.viewAs=='lebu';
|
||||
}
|
||||
else{
|
||||
return event.card.name=='lebu';
|
||||
}
|
||||
}
|
||||
},
|
||||
content:function(){
|
||||
player.addTempSkill('qixiang3','phaseJudgeAfter');
|
||||
}
|
||||
},
|
||||
qixiang2:{
|
||||
trigger:{player:'judge'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(event.card){
|
||||
if(event.card.viewAs){
|
||||
return event.card.viewAs=='bingliang';
|
||||
}
|
||||
else{
|
||||
return event.card.name=='bingliang';
|
||||
}
|
||||
}
|
||||
},
|
||||
content:function(){
|
||||
player.addTempSkill('qixiang4','phaseJudgeAfter');
|
||||
}
|
||||
},
|
||||
qixiang3:{
|
||||
mod:{
|
||||
suit:function(card,suit){
|
||||
if(suit=='diamond') return 'heart';
|
||||
}
|
||||
}
|
||||
},
|
||||
qixiang4:{
|
||||
mod:{
|
||||
suit:function(card,suit){
|
||||
if(suit=='spade') return 'club';
|
||||
}
|
||||
}
|
||||
},
|
||||
nianrui:{
|
||||
trigger:{player:['phaseBegin','phaseEnd']},
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.judge(function(card){
|
||||
return get.color(card)=='red'?1:0;
|
||||
});
|
||||
"step 1"
|
||||
if(result.bool){
|
||||
player.draw();
|
||||
}
|
||||
}
|
||||
},
|
||||
lianyu:{
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filterCard:{color:'red'},
|
||||
check:function(card){return 6-get.value(card)},
|
||||
filterTarget:true,
|
||||
selectTarget:-1,
|
||||
line:'fire',
|
||||
content:function(){
|
||||
target.damage('fire');
|
||||
},
|
||||
ai:{
|
||||
result:{
|
||||
player:function(card,player,target){
|
||||
var eff=0;
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
if(!game.players[i].isOut()){
|
||||
eff+=get.damageEffect(game.players[i],player,player,'fire');
|
||||
}
|
||||
}
|
||||
return eff;
|
||||
}
|
||||
},
|
||||
expose:0.1
|
||||
}
|
||||
},
|
||||
manjia:{
|
||||
group:['manjia1','manjia2']
|
||||
},
|
||||
manjia1:{
|
||||
trigger:{target:'useCardToBefore'},
|
||||
forced:true,
|
||||
priority:6,
|
||||
filter:function(event,player){
|
||||
if(player.getEquip(2)) return false;
|
||||
return lib.skill.tengjia1.filter(event,player);
|
||||
},
|
||||
content:function(){
|
||||
trigger.cancel();
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target,current){
|
||||
if(target.getEquip(2)) return;
|
||||
return lib.skill.tengjia1.ai.effect.target.apply(this,arguments);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
manjia2:{
|
||||
trigger:{player:'damageBegin'},
|
||||
filter:function(event,player){
|
||||
if(player.getEquip(2)) return false;
|
||||
if(event.hasNature('fire')) return true;
|
||||
},
|
||||
forced:true,
|
||||
check:function(){
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
trigger.num++;
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target,current){
|
||||
if(target.getEquip(2)) return;
|
||||
return lib.skill.tengjia2.ai.effect.target.apply(this,arguments);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
xiaoshou:{
|
||||
trigger:{player:'phaseEnd'},
|
||||
filter:function(event,player){
|
||||
var players=game.players.slice(0);
|
||||
players.sort(function(a,b){
|
||||
return b.hp-a.hp;
|
||||
});
|
||||
return players[0].hp>players[1].hp&&players[0]!=player;
|
||||
},
|
||||
check:function(event,player){
|
||||
var players=game.players.slice(0);
|
||||
players.sort(function(a,b){
|
||||
return b.hp-a.hp;
|
||||
});
|
||||
return get.damageEffect(players[0],player,player,'fire')>0;
|
||||
},
|
||||
prompt:function(){
|
||||
var players=game.players.slice(0);
|
||||
players.sort(function(a,b){
|
||||
return b.hp-a.hp;
|
||||
});
|
||||
return '枭首:是否对'+get.translation(players[0])+'造成1点火焰伤害?';
|
||||
},
|
||||
content:function(){
|
||||
var players=game.players.slice(0);
|
||||
players.sort(function(a,b){
|
||||
return b.hp-a.hp;
|
||||
});
|
||||
if(players[0].hp>players[1].hp&&players[0]!=player){
|
||||
players[0].damage('fire');
|
||||
player.line(players[0],'fire');
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
expose:0.2
|
||||
}
|
||||
},
|
||||
guiji:{
|
||||
trigger:{player:'phaseJudgeBegin'},
|
||||
forced:true,
|
||||
content:function(){
|
||||
player.discard(player.getCards('j').randomGet());
|
||||
},
|
||||
filter:function(event ,player){
|
||||
return player.countCards('j')>0;
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target,current){
|
||||
if(get.type(card)=='delay'&&target.countCards('j')==0) return 0.1;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
qiangzheng:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseEnd'},
|
||||
direct:true,
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
if(game.players[i]!=player&&game.players[i].countCards('h')) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.chooseTarget('获得一名角色的一张手牌',true,function(card,player,target){
|
||||
return player!=target&&target.countCards('h')>0;
|
||||
}).ai=function(target){
|
||||
return -get.attitude(player,target);
|
||||
};
|
||||
"step 1"
|
||||
if(result.targets&&result.targets.length){
|
||||
player.logSkill('qiangzheng',result.targets);
|
||||
player.gain(result.targets[0].getCards('h').randomGet(),result.targets[0]);
|
||||
result.targets[0].$give(1,player);
|
||||
game.delay();
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
threaten:1.7
|
||||
}
|
||||
},
|
||||
suoling:{
|
||||
trigger:{player:'phaseEnd'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(player.isLinked()) return true;
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
if(game.players[i]!=player&&!game.players[i].isLinked()){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
event.targets=game.players.slice(0);
|
||||
event.targets.remove(player);
|
||||
event.targets.sort(lib.sort.seat);
|
||||
if(player.isLinked()) player.link();
|
||||
"step 1"
|
||||
if(event.targets.length){
|
||||
var target=event.targets.shift();
|
||||
if(!target.isLinked()){
|
||||
target.link();
|
||||
}
|
||||
event.redo();
|
||||
}
|
||||
}
|
||||
},
|
||||
xixing:{
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filterCard:function(card){
|
||||
var type=get.type(card);
|
||||
for(var i=0;i<ui.selected.cards.length;i++){
|
||||
if(get.type(ui.selected.cards[i])==type) return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
complexCard:true,
|
||||
selectCard:3,
|
||||
position:'he',
|
||||
filterTarget:function(card,player,target){
|
||||
return player!=target;
|
||||
},
|
||||
check:function(card){
|
||||
if(_status.event.player.hp==_status.event.player.maxHp){
|
||||
return 5-get.value(card);
|
||||
}
|
||||
return 10-get.value(card);
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
target.damage();
|
||||
"step 1"
|
||||
player.recover();
|
||||
},
|
||||
ai:{
|
||||
order:9.5,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
return get.damageEffect(target,player);
|
||||
}
|
||||
},
|
||||
expose:0.2
|
||||
}
|
||||
}
|
||||
},
|
||||
translate:{
|
||||
nianshou:'年兽',
|
||||
nianrui:'年瑞',
|
||||
qixiang:'祺祥',
|
||||
qixiang1:'祺祥',
|
||||
qixiang2:'祺祥',
|
||||
nianrui_info:'准备阶段和结束阶段,你可以进行一次判定,若结果为红色则摸一张牌。',
|
||||
qixiang_info:'乐不思蜀判定时,你的方块判定牌视为红桃;兵粮寸断判定时,你的黑桃判定牌视为草花。',
|
||||
|
||||
mamian:'马面',
|
||||
lianyu:'炼狱',
|
||||
lianyu_info:'出牌阶段限一次,你可以弃置一张红色手牌令场上所有角色受到1点火焰伤害。',
|
||||
|
||||
niutou:'牛头',
|
||||
manjia:'蛮甲',
|
||||
manjia1:'蛮甲',
|
||||
manjia2:'蛮甲',
|
||||
manjia_info:'锁定技,若你的装备区内没有防具牌,则你视为装备了【藤甲】。',
|
||||
xiaoshou:'枭首',
|
||||
xiaoshou_info:'结束阶段,若场上体力值最多的角色只有一个,你可以对其造成1点火焰伤害。',
|
||||
guiji:'诡计',
|
||||
guiji_info:'锁定技,准备阶段结束时,若你的判定区内有牌,你随机弃置其中一张牌。',
|
||||
|
||||
baiwuchang:'白无常',
|
||||
qiangzheng:'强征',
|
||||
qiangzheng_info:'锁定技,结束阶段,你获得一名其他角色的一张手牌。',
|
||||
zuijiu:'醉酒',
|
||||
zuijiu_info:'锁定技,你的黑杀造成的伤害+1,造成伤害后须弃置一张手牌。',
|
||||
|
||||
heiwuchang:'黑无常',
|
||||
suoling:'索令',
|
||||
suoling_info:'锁定技,结束阶段,你解除横置状态,除你之外的所有角色进入横置状态。',
|
||||
xixing:'吸星',
|
||||
xixing_info:'出牌阶段限一次,你可以弃置三张不同类别的牌,对一名其他角色造成1点伤害,然后回复1点体力。',
|
||||
},
|
||||
};
|
||||
});
|
||||
import { lib, game, ui, get, ai, _status } from "../noname.js";
|
||||
game.import("character", function () {
|
||||
return {
|
||||
name: "zhuogui",
|
||||
character: {
|
||||
nianshou: ["male", "shu", 4, ["nianrui", "qixiang"]],
|
||||
mamian: ["male", "qun", 4, ["lianyu", "guiji"]],
|
||||
niutou: ["male", "shu", 4, ["manjia", "xiaoshou"]],
|
||||
baiwuchang: ["male", "qun", 3, ["qiangzheng", "moukui"]],
|
||||
heiwuchang: ["male", "qun", 3, ["suoling", "xixing"]],
|
||||
},
|
||||
skill: {
|
||||
qixiang: {
|
||||
group: ["qixiang1", "qixiang2"],
|
||||
ai: {
|
||||
effect: {
|
||||
target: function (card, player, target, current) {
|
||||
if (card.name == "lebu" && card.name == "bingliang") return 0.8;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
qixiang1: {
|
||||
trigger: { player: "judge" },
|
||||
forced: true,
|
||||
filter: function (event, player) {
|
||||
if (event.card) {
|
||||
if (event.card.viewAs) {
|
||||
return event.card.viewAs == "lebu";
|
||||
} else {
|
||||
return event.card.name == "lebu";
|
||||
}
|
||||
}
|
||||
},
|
||||
content: function () {
|
||||
player.addTempSkill("qixiang3", "phaseJudgeAfter");
|
||||
},
|
||||
},
|
||||
qixiang2: {
|
||||
trigger: { player: "judge" },
|
||||
forced: true,
|
||||
filter: function (event, player) {
|
||||
if (event.card) {
|
||||
if (event.card.viewAs) {
|
||||
return event.card.viewAs == "bingliang";
|
||||
} else {
|
||||
return event.card.name == "bingliang";
|
||||
}
|
||||
}
|
||||
},
|
||||
content: function () {
|
||||
player.addTempSkill("qixiang4", "phaseJudgeAfter");
|
||||
},
|
||||
},
|
||||
qixiang3: {
|
||||
mod: {
|
||||
suit: function (card, suit) {
|
||||
if (suit == "diamond") return "heart";
|
||||
},
|
||||
},
|
||||
},
|
||||
qixiang4: {
|
||||
mod: {
|
||||
suit: function (card, suit) {
|
||||
if (suit == "spade") return "club";
|
||||
},
|
||||
},
|
||||
},
|
||||
nianrui: {
|
||||
trigger: { player: ["phaseBegin", "phaseEnd"] },
|
||||
content: function () {
|
||||
"step 0";
|
||||
player.judge(function (card) {
|
||||
return get.color(card) == "red" ? 1 : 0;
|
||||
});
|
||||
"step 1";
|
||||
if (result.bool) {
|
||||
player.draw();
|
||||
}
|
||||
},
|
||||
},
|
||||
lianyu: {
|
||||
enable: "phaseUse",
|
||||
usable: 1,
|
||||
filterCard: { color: "red" },
|
||||
check: function (card) {
|
||||
return 6 - get.value(card);
|
||||
},
|
||||
filterTarget: true,
|
||||
selectTarget: -1,
|
||||
line: "fire",
|
||||
content: function () {
|
||||
target.damage("fire");
|
||||
},
|
||||
ai: {
|
||||
result: {
|
||||
player: function (card, player, target) {
|
||||
var eff = 0;
|
||||
for (var i = 0; i < game.players.length; i++) {
|
||||
if (!game.players[i].isOut()) {
|
||||
eff += get.damageEffect(game.players[i], player, player, "fire");
|
||||
}
|
||||
}
|
||||
return eff;
|
||||
},
|
||||
},
|
||||
expose: 0.1,
|
||||
},
|
||||
},
|
||||
manjia: {
|
||||
group: ["manjia1", "manjia2"],
|
||||
},
|
||||
manjia1: {
|
||||
trigger: { target: "useCardToBefore" },
|
||||
forced: true,
|
||||
priority: 6,
|
||||
filter: function (event, player) {
|
||||
if (player.getEquip(2)) return false;
|
||||
return lib.skill.tengjia1.filter(event, player);
|
||||
},
|
||||
content: function () {
|
||||
trigger.cancel();
|
||||
},
|
||||
ai: {
|
||||
effect: {
|
||||
target: function (card, player, target, current) {
|
||||
if (target.getEquip(2)) return;
|
||||
return lib.skill.tengjia1.ai.effect.target.apply(this, arguments);
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
manjia2: {
|
||||
trigger: { player: "damageBegin" },
|
||||
filter: function (event, player) {
|
||||
if (player.getEquip(2)) return false;
|
||||
if (event.hasNature("fire")) return true;
|
||||
},
|
||||
forced: true,
|
||||
check: function () {
|
||||
return false;
|
||||
},
|
||||
content: function () {
|
||||
trigger.num++;
|
||||
},
|
||||
ai: {
|
||||
effect: {
|
||||
target: function (card, player, target, current) {
|
||||
if (target.getEquip(2)) return;
|
||||
return lib.skill.tengjia2.ai.effect.target.apply(this, arguments);
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
xiaoshou: {
|
||||
trigger: { player: "phaseEnd" },
|
||||
filter: function (event, player) {
|
||||
var players = game.players.slice(0);
|
||||
players.sort(function (a, b) {
|
||||
return b.hp - a.hp;
|
||||
});
|
||||
return players[0].hp > players[1].hp && players[0] != player;
|
||||
},
|
||||
check: function (event, player) {
|
||||
var players = game.players.slice(0);
|
||||
players.sort(function (a, b) {
|
||||
return b.hp - a.hp;
|
||||
});
|
||||
return get.damageEffect(players[0], player, player, "fire") > 0;
|
||||
},
|
||||
prompt: function () {
|
||||
var players = game.players.slice(0);
|
||||
players.sort(function (a, b) {
|
||||
return b.hp - a.hp;
|
||||
});
|
||||
return "枭首:是否对" + get.translation(players[0]) + "造成1点火焰伤害?";
|
||||
},
|
||||
content: function () {
|
||||
var players = game.players.slice(0);
|
||||
players.sort(function (a, b) {
|
||||
return b.hp - a.hp;
|
||||
});
|
||||
if (players[0].hp > players[1].hp && players[0] != player) {
|
||||
players[0].damage("fire");
|
||||
player.line(players[0], "fire");
|
||||
}
|
||||
},
|
||||
ai: {
|
||||
expose: 0.2,
|
||||
},
|
||||
},
|
||||
guiji: {
|
||||
trigger: { player: "phaseJudgeBegin" },
|
||||
forced: true,
|
||||
content: function () {
|
||||
player.discard(player.getCards("j").randomGet());
|
||||
},
|
||||
filter: function (event, player) {
|
||||
return player.countCards("j") > 0;
|
||||
},
|
||||
ai: {
|
||||
effect: {
|
||||
target: function (card, player, target, current) {
|
||||
if (get.type(card) == "delay" && target.countCards("j") == 0) return 0.1;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
qiangzheng: {
|
||||
audio: 2,
|
||||
trigger: { player: "phaseEnd" },
|
||||
direct: true,
|
||||
forced: true,
|
||||
filter: function (event, player) {
|
||||
for (var i = 0; i < game.players.length; i++) {
|
||||
if (game.players[i] != player && game.players[i].countCards("h")) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content: function () {
|
||||
"step 0";
|
||||
player.chooseTarget("获得一名角色的一张手牌", true, function (card, player, target) {
|
||||
return player != target && target.countCards("h") > 0;
|
||||
}).ai = function (target) {
|
||||
return -get.attitude(player, target);
|
||||
};
|
||||
"step 1";
|
||||
if (result.targets && result.targets.length) {
|
||||
player.logSkill("qiangzheng", result.targets);
|
||||
player.gain(result.targets[0].getCards("h").randomGet(), result.targets[0]);
|
||||
result.targets[0].$give(1, player);
|
||||
game.delay();
|
||||
}
|
||||
},
|
||||
ai: {
|
||||
threaten: 1.7,
|
||||
},
|
||||
},
|
||||
suoling: {
|
||||
trigger: { player: "phaseEnd" },
|
||||
forced: true,
|
||||
filter: function (event, player) {
|
||||
if (player.isLinked()) return true;
|
||||
for (var i = 0; i < game.players.length; i++) {
|
||||
if (game.players[i] != player && !game.players[i].isLinked()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content: function () {
|
||||
"step 0";
|
||||
event.targets = game.players.slice(0);
|
||||
event.targets.remove(player);
|
||||
event.targets.sort(lib.sort.seat);
|
||||
if (player.isLinked()) player.link();
|
||||
"step 1";
|
||||
if (event.targets.length) {
|
||||
var target = event.targets.shift();
|
||||
if (!target.isLinked()) {
|
||||
target.link();
|
||||
}
|
||||
event.redo();
|
||||
}
|
||||
},
|
||||
},
|
||||
xixing: {
|
||||
enable: "phaseUse",
|
||||
usable: 1,
|
||||
filterCard: function (card) {
|
||||
var type = get.type(card);
|
||||
for (var i = 0; i < ui.selected.cards.length; i++) {
|
||||
if (get.type(ui.selected.cards[i]) == type) return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
complexCard: true,
|
||||
selectCard: 3,
|
||||
position: "he",
|
||||
filterTarget: function (card, player, target) {
|
||||
return player != target;
|
||||
},
|
||||
check: function (card) {
|
||||
if (_status.event.player.hp == _status.event.player.maxHp) {
|
||||
return 5 - get.value(card);
|
||||
}
|
||||
return 10 - get.value(card);
|
||||
},
|
||||
content: function () {
|
||||
"step 0";
|
||||
target.damage();
|
||||
"step 1";
|
||||
player.recover();
|
||||
},
|
||||
ai: {
|
||||
order: 9.5,
|
||||
result: {
|
||||
target: function (player, target) {
|
||||
return get.damageEffect(target, player);
|
||||
},
|
||||
},
|
||||
expose: 0.2,
|
||||
},
|
||||
},
|
||||
},
|
||||
translate: {
|
||||
nianshou: "年兽",
|
||||
nianrui: "年瑞",
|
||||
qixiang: "祺祥",
|
||||
qixiang1: "祺祥",
|
||||
qixiang2: "祺祥",
|
||||
nianrui_info: "准备阶段和结束阶段,你可以进行一次判定,若结果为红色则摸一张牌。",
|
||||
qixiang_info: "乐不思蜀判定时,你的方块判定牌视为红桃;兵粮寸断判定时,你的黑桃判定牌视为草花。",
|
||||
|
||||
mamian: "马面",
|
||||
lianyu: "炼狱",
|
||||
lianyu_info: "出牌阶段限一次,你可以弃置一张红色手牌令场上所有角色受到1点火焰伤害。",
|
||||
|
||||
niutou: "牛头",
|
||||
manjia: "蛮甲",
|
||||
manjia1: "蛮甲",
|
||||
manjia2: "蛮甲",
|
||||
manjia_info: "锁定技,若你的装备区内没有防具牌,则你视为装备了【藤甲】。",
|
||||
xiaoshou: "枭首",
|
||||
xiaoshou_info: "结束阶段,若场上体力值最多的角色只有一个,你可以对其造成1点火焰伤害。",
|
||||
guiji: "诡计",
|
||||
guiji_info: "锁定技,准备阶段结束时,若你的判定区内有牌,你随机弃置其中一张牌。",
|
||||
|
||||
baiwuchang: "白无常",
|
||||
qiangzheng: "强征",
|
||||
qiangzheng_info: "锁定技,结束阶段,你获得一名其他角色的一张手牌。",
|
||||
zuijiu: "醉酒",
|
||||
zuijiu_info: "锁定技,你的黑杀造成的伤害+1,造成伤害后须弃置一张手牌。",
|
||||
|
||||
heiwuchang: "黑无常",
|
||||
suoling: "索令",
|
||||
suoling_info: "锁定技,结束阶段,你解除横置状态,除你之外的所有角色进入横置状态。",
|
||||
xixing: "吸星",
|
||||
xixing_info:
|
||||
"出牌阶段限一次,你可以弃置三张不同类别的牌,对一名其他角色造成1点伤害,然后回复1点体力。",
|
||||
},
|
||||
};
|
||||
});
|
||||
|
|
|
@ -1,136 +1,161 @@
|
|||
import { lib, game, ui, get, ai, _status } from '../../noname.js';
|
||||
game.import('play', function () {
|
||||
import { lib, game, ui, get, ai, _status } from "../../noname.js";
|
||||
game.import("play", function () {
|
||||
return {
|
||||
name:'boss',
|
||||
init:function(){
|
||||
if(get.mode()=='tafang') return;
|
||||
var storage=localStorage.getItem('boss_storage_playpackconfig');
|
||||
try{
|
||||
storage=JSON.parse(storage)||{};
|
||||
name: "boss",
|
||||
init: function () {
|
||||
if (get.mode() == "tafang") return;
|
||||
var storage = localStorage.getItem("boss_storage_playpackconfig");
|
||||
try {
|
||||
storage = JSON.parse(storage) || {};
|
||||
} catch (e) {
|
||||
storage = {};
|
||||
}
|
||||
catch(e){
|
||||
storage={};
|
||||
}
|
||||
if(get.mode()!='boss'){
|
||||
lib.characterPack.mode_extension_boss=storage.boss||{};
|
||||
for(var i in lib.characterPack.mode_extension_boss){
|
||||
lib.characterPack.mode_extension_boss[i][4].push('mode:boss');
|
||||
lib.character[i]=lib.characterPack.mode_extension_boss[i];
|
||||
if(typeof lib.character[i][2]!='number'&&(typeof lib.character[i][2]!='string'||lib.character[i][2].indexOf('/')==-1)){
|
||||
lib.character[i][2]=Infinity;
|
||||
if (get.mode() != "boss") {
|
||||
lib.characterPack.mode_extension_boss = storage.boss || {};
|
||||
for (var i in lib.characterPack.mode_extension_boss) {
|
||||
lib.characterPack.mode_extension_boss[i][4].push(
|
||||
"mode:boss"
|
||||
);
|
||||
lib.character[i] = lib.characterPack.mode_extension_boss[i];
|
||||
if (
|
||||
typeof lib.character[i][2] != "number" &&
|
||||
(typeof lib.character[i][2] != "string" ||
|
||||
lib.character[i][2].indexOf("/") == -1)
|
||||
) {
|
||||
lib.character[i][2] = Infinity;
|
||||
}
|
||||
if(!lib.config.boss_enableai_playpackconfig){
|
||||
if (!lib.config.boss_enableai_playpackconfig) {
|
||||
lib.config.forbidai.push(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
var list2=storage.versus||{};
|
||||
if(get.mode()!='versus'||get.config('versus_mode')!='jiange'){
|
||||
lib.characterPack.mode_extension_jiange=list2;
|
||||
for(var i in list2){
|
||||
lib.characterPack.mode_extension_jiange[i]=list2[i];
|
||||
lib.characterPack.mode_extension_jiange[i][4].push('mode:versus');
|
||||
lib.character[i]=list2[i];
|
||||
if(typeof lib.character[i][2]!='number'){
|
||||
lib.character[i][2]=Infinity;
|
||||
var list2 = storage.versus || {};
|
||||
if (
|
||||
get.mode() != "versus" ||
|
||||
get.config("versus_mode") != "jiange"
|
||||
) {
|
||||
lib.characterPack.mode_extension_jiange = list2;
|
||||
for (var i in list2) {
|
||||
lib.characterPack.mode_extension_jiange[i] = list2[i];
|
||||
lib.characterPack.mode_extension_jiange[i][4].push(
|
||||
"mode:versus"
|
||||
);
|
||||
lib.character[i] = list2[i];
|
||||
if (typeof lib.character[i][2] != "number") {
|
||||
lib.character[i][2] = Infinity;
|
||||
}
|
||||
if(!lib.config.boss_enableai_playpackconfig){
|
||||
if (!lib.config.boss_enableai_playpackconfig) {
|
||||
lib.config.forbidai.push(i);
|
||||
}
|
||||
}
|
||||
lib.characterIntro.boss_liedixuande=lib.characterIntro.liubei;
|
||||
lib.characterIntro.boss_gongshenyueying=lib.characterIntro.huangyueying;
|
||||
lib.characterIntro.boss_tianhoukongming=lib.characterIntro.shen_zhugeliang;
|
||||
lib.characterIntro.boss_yuhuoshiyuan=lib.characterIntro.pangtong;
|
||||
lib.characterIntro.boss_qiaokuijunyi=lib.characterIntro.zhanghe;
|
||||
lib.characterIntro.boss_jiarenzidan=lib.characterIntro.caozhen;
|
||||
lib.characterIntro.boss_duanyuzhongda=lib.characterIntro.simayi;
|
||||
lib.characterIntro.boss_juechenmiaocai=lib.characterIntro.xiahouyuan;
|
||||
}
|
||||
else if(_status.mode!='jiange'){
|
||||
for(var i in list2){
|
||||
lib.character[i]=list2[i];
|
||||
if(!lib.config.boss_enableai_playpackconfig){
|
||||
lib.characterIntro.boss_liedixuande = lib.characterIntro.liubei;
|
||||
lib.characterIntro.boss_gongshenyueying =
|
||||
lib.characterIntro.huangyueying;
|
||||
lib.characterIntro.boss_tianhoukongming =
|
||||
lib.characterIntro.shen_zhugeliang;
|
||||
lib.characterIntro.boss_yuhuoshiyuan =
|
||||
lib.characterIntro.pangtong;
|
||||
lib.characterIntro.boss_qiaokuijunyi =
|
||||
lib.characterIntro.zhanghe;
|
||||
lib.characterIntro.boss_jiarenzidan =
|
||||
lib.characterIntro.caozhen;
|
||||
lib.characterIntro.boss_duanyuzhongda =
|
||||
lib.characterIntro.simayi;
|
||||
lib.characterIntro.boss_juechenmiaocai =
|
||||
lib.characterIntro.xiahouyuan;
|
||||
} else if (_status.mode != "jiange") {
|
||||
for (var i in list2) {
|
||||
lib.character[i] = list2[i];
|
||||
if (!lib.config.boss_enableai_playpackconfig) {
|
||||
lib.config.forbidai.push(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
var list=storage.translate||{};
|
||||
list.mode_extension_boss_character_config='挑战武将';
|
||||
list.mode_extension_jiange_character_config='剑阁武将';
|
||||
var list = storage.translate || {};
|
||||
list.mode_extension_boss_character_config = "挑战武将";
|
||||
list.mode_extension_jiange_character_config = "剑阁武将";
|
||||
|
||||
for(var i in list){
|
||||
lib.translate[i]=lib.translate[i]||list[i];
|
||||
for (var i in list) {
|
||||
lib.translate[i] = lib.translate[i] || list[i];
|
||||
}
|
||||
},
|
||||
arenaReady:function(){
|
||||
if(get.mode()=='tafang') return;
|
||||
var storage=localStorage.getItem('boss_storage_playpackconfig');
|
||||
try{
|
||||
storage=JSON.parse(storage)||{};
|
||||
arenaReady: function () {
|
||||
if (get.mode() == "tafang") return;
|
||||
var storage = localStorage.getItem("boss_storage_playpackconfig");
|
||||
try {
|
||||
storage = JSON.parse(storage) || {};
|
||||
} catch (e) {
|
||||
storage = {};
|
||||
}
|
||||
catch(e){
|
||||
storage={};
|
||||
if (!storage.translate) {
|
||||
storage.translate = {};
|
||||
}
|
||||
if(!storage.translate){
|
||||
storage.translate={};
|
||||
}
|
||||
var loadversus=function(){
|
||||
if(get.mode()!='versus'){
|
||||
game.loadModeAsync('versus',function(mode){
|
||||
for(var i in mode.translate){
|
||||
lib.translate[i]=lib.translate[i]||mode.translate[i];
|
||||
storage.translate[i]=mode.translate[i];
|
||||
var loadversus = function () {
|
||||
if (get.mode() != "versus") {
|
||||
game.loadModeAsync("versus", function (mode) {
|
||||
for (var i in mode.translate) {
|
||||
lib.translate[i] =
|
||||
lib.translate[i] || mode.translate[i];
|
||||
storage.translate[i] = mode.translate[i];
|
||||
}
|
||||
for(var i in mode.skill){
|
||||
if(lib.skill[i]) console.log(i);
|
||||
if(i!='versus_ladder'){
|
||||
lib.skill[i]=mode.skill[i];
|
||||
for (var i in mode.skill) {
|
||||
if (lib.skill[i]) console.log(i);
|
||||
if (i != "versus_ladder") {
|
||||
lib.skill[i] = mode.skill[i];
|
||||
}
|
||||
}
|
||||
for(var ii in mode.skill){
|
||||
if(ii!='versus_ladder'){
|
||||
for (var ii in mode.skill) {
|
||||
if (ii != "versus_ladder") {
|
||||
game.finishSkill(ii);
|
||||
}
|
||||
}
|
||||
storage.versus={};
|
||||
for(var i in mode.jiangeboss){
|
||||
if(mode.jiangeboss[i][4].includes('bossallowed')){
|
||||
storage.versus[i]=mode.jiangeboss[i];
|
||||
storage.versus = {};
|
||||
for (var i in mode.jiangeboss) {
|
||||
if (mode.jiangeboss[i][4].includes("bossallowed")) {
|
||||
storage.versus[i] = mode.jiangeboss[i];
|
||||
}
|
||||
}
|
||||
localStorage.setItem('boss_storage_playpackconfig',JSON.stringify(storage));
|
||||
localStorage.setItem(
|
||||
"boss_storage_playpackconfig",
|
||||
JSON.stringify(storage)
|
||||
);
|
||||
});
|
||||
}
|
||||
else{
|
||||
localStorage.setItem('boss_storage_playpackconfig',JSON.stringify(storage));
|
||||
} else {
|
||||
localStorage.setItem(
|
||||
"boss_storage_playpackconfig",
|
||||
JSON.stringify(storage)
|
||||
);
|
||||
}
|
||||
};
|
||||
if(get.mode()!='boss'){
|
||||
game.loadModeAsync('boss',function(mode){
|
||||
for(var i in mode.translate){
|
||||
lib.translate[i]=lib.translate[i]||mode.translate[i];
|
||||
storage.translate[i]=mode.translate[i];
|
||||
if (get.mode() != "boss") {
|
||||
game.loadModeAsync("boss", function (mode) {
|
||||
for (var i in mode.translate) {
|
||||
lib.translate[i] =
|
||||
lib.translate[i] || mode.translate[i];
|
||||
storage.translate[i] = mode.translate[i];
|
||||
}
|
||||
for(var i in mode.skill){
|
||||
if(lib.skill[i]) console.log(i);
|
||||
lib.skill[i]=mode.skill[i];
|
||||
for (var i in mode.skill) {
|
||||
if (lib.skill[i]) console.log(i);
|
||||
lib.skill[i] = mode.skill[i];
|
||||
}
|
||||
for(var ii in mode.skill){
|
||||
if(ii!='versus_ladder'){
|
||||
for (var ii in mode.skill) {
|
||||
if (ii != "versus_ladder") {
|
||||
game.finishSkill(ii);
|
||||
}
|
||||
}
|
||||
storage.boss={};
|
||||
for(var i in mode.characterPack.mode_boss){
|
||||
if(mode.characterPack.mode_boss[i][4].includes('bossallowed')){
|
||||
storage.boss[i]=mode.characterPack.mode_boss[i];
|
||||
storage.boss = {};
|
||||
for (var i in mode.characterPack.mode_boss) {
|
||||
if (
|
||||
mode.characterPack.mode_boss[i][4].includes(
|
||||
"bossallowed"
|
||||
)
|
||||
) {
|
||||
storage.boss[i] = mode.characterPack.mode_boss[i];
|
||||
}
|
||||
}
|
||||
loadversus();
|
||||
});
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
loadversus();
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1,92 +1,102 @@
|
|||
import { lib, game, ui, get, ai, _status } from '../../noname.js';
|
||||
game.import('play', function () {
|
||||
import { lib, game, ui, get, ai, _status } from "../../noname.js";
|
||||
game.import("play", function () {
|
||||
return {
|
||||
name:'cardpile',
|
||||
arenaReady:function(){
|
||||
var data={
|
||||
total:160,
|
||||
sha:{
|
||||
diamond:6,
|
||||
club:14,
|
||||
heart:3,
|
||||
spade:7,
|
||||
name: "cardpile",
|
||||
arenaReady: function () {
|
||||
var data = {
|
||||
total: 160,
|
||||
sha: {
|
||||
diamond: 6,
|
||||
club: 14,
|
||||
heart: 3,
|
||||
spade: 7,
|
||||
},
|
||||
huosha:{
|
||||
diamond:2,
|
||||
heart:3
|
||||
huosha: {
|
||||
diamond: 2,
|
||||
heart: 3,
|
||||
},
|
||||
leisha:{
|
||||
spade:5,
|
||||
club:4
|
||||
leisha: {
|
||||
spade: 5,
|
||||
club: 4,
|
||||
},
|
||||
shan:{
|
||||
heart:6,
|
||||
diamond:18
|
||||
shan: {
|
||||
heart: 6,
|
||||
diamond: 18,
|
||||
},
|
||||
jiu:{
|
||||
diamond:1,
|
||||
spade:2,
|
||||
club:2
|
||||
jiu: {
|
||||
diamond: 1,
|
||||
spade: 2,
|
||||
club: 2,
|
||||
},
|
||||
tao:{
|
||||
heart:9,
|
||||
diamond:3,
|
||||
tao: {
|
||||
heart: 9,
|
||||
diamond: 3,
|
||||
},
|
||||
wanjian:{
|
||||
heart:1,
|
||||
wanjian: {
|
||||
heart: 1,
|
||||
},
|
||||
nanman:{
|
||||
spade:2,
|
||||
club:1,
|
||||
nanman: {
|
||||
spade: 2,
|
||||
club: 1,
|
||||
},
|
||||
guohe:{
|
||||
spade:3,
|
||||
club:2,
|
||||
heart:1
|
||||
guohe: {
|
||||
spade: 3,
|
||||
club: 2,
|
||||
heart: 1,
|
||||
},
|
||||
shunshou:{
|
||||
spade:3,
|
||||
diamond:2
|
||||
shunshou: {
|
||||
spade: 3,
|
||||
diamond: 2,
|
||||
},
|
||||
wuxie:{
|
||||
heart:2,
|
||||
diamond:1,
|
||||
spade:2,
|
||||
club:2
|
||||
wuxie: {
|
||||
heart: 2,
|
||||
diamond: 1,
|
||||
spade: 2,
|
||||
club: 2,
|
||||
},
|
||||
tiesuo:{
|
||||
spade:2,
|
||||
club:4
|
||||
tiesuo: {
|
||||
spade: 2,
|
||||
club: 4,
|
||||
},
|
||||
};
|
||||
var rand = function () {
|
||||
return Math.ceil(Math.random() * 13);
|
||||
};
|
||||
var getn = function (i, j) {
|
||||
return Math.round(
|
||||
data[i][j] *
|
||||
parseFloat(
|
||||
lib.config["cardpile_" + i + "_playpackconfig"]
|
||||
)
|
||||
);
|
||||
};
|
||||
var num = 0;
|
||||
for (var i in data) {
|
||||
for (var j in data[i]) {
|
||||
num += getn(i, j);
|
||||
}
|
||||
}
|
||||
var rand=function(){
|
||||
return Math.ceil(Math.random()*13);
|
||||
};
|
||||
var getn=function(i,j){
|
||||
return Math.round(data[i][j]*parseFloat(lib.config['cardpile_'+i+'_playpackconfig']));
|
||||
};
|
||||
var num=0;
|
||||
for(var i in data){
|
||||
for(var j in data[i]){
|
||||
num+=getn(i,j);
|
||||
}
|
||||
}
|
||||
var dn=num*(lib.card.list.length-data.total)/(data.total-num);
|
||||
if(dn>1000) dn=1000;
|
||||
if(dn>0){
|
||||
var p=0;
|
||||
for(var i in data){
|
||||
for(var j in data[i]){
|
||||
var n=Math.round(dn*getn(i,j)/num);
|
||||
while(n--){
|
||||
if(i=='huosha'){
|
||||
lib.card.list.push([j,rand(),'sha','fire']);
|
||||
}
|
||||
else if(i=='leisha'){
|
||||
lib.card.list.push([j,rand(),'sha','thunder']);
|
||||
}
|
||||
else{
|
||||
lib.card.list.push([j,rand(),i]);
|
||||
var dn =
|
||||
(num * (lib.card.list.length - data.total)) /
|
||||
(data.total - num);
|
||||
if (dn > 1000) dn = 1000;
|
||||
if (dn > 0) {
|
||||
var p = 0;
|
||||
for (var i in data) {
|
||||
for (var j in data[i]) {
|
||||
var n = Math.round((dn * getn(i, j)) / num);
|
||||
while (n--) {
|
||||
if (i == "huosha") {
|
||||
lib.card.list.push([j, rand(), "sha", "fire"]);
|
||||
} else if (i == "leisha") {
|
||||
lib.card.list.push([
|
||||
j,
|
||||
rand(),
|
||||
"sha",
|
||||
"thunder",
|
||||
]);
|
||||
} else {
|
||||
lib.card.list.push([j, rand(), i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,229 +1,376 @@
|
|||
import { lib, game, ui, get, ai, _status } from '../../noname.js';
|
||||
game.import('play', function () {
|
||||
import { lib, game, ui, get, ai, _status } from "../../noname.js";
|
||||
game.import("play", function () {
|
||||
return {
|
||||
name:'wuxing',
|
||||
arenaReady:function(){
|
||||
if(_status.connectMode) return;
|
||||
lib.card.list.splice(Math.floor(lib.card.list.length*Math.random()),0,['spade',5,'wuxingpan']);
|
||||
if(!_status.video){
|
||||
name: "wuxing",
|
||||
arenaReady: function () {
|
||||
if (_status.connectMode) return;
|
||||
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'
|
||||
type: "play",
|
||||
name: "wuxing",
|
||||
});
|
||||
}
|
||||
},
|
||||
video:function(){
|
||||
for(var i in this.translate){
|
||||
lib.translate[i]=this.translate[i];
|
||||
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.card) {
|
||||
lib.card[i] = this.card[i];
|
||||
}
|
||||
for(var i in this.skill){
|
||||
lib.skill[i]=this.skill[i];
|
||||
for (var i in this.skill) {
|
||||
lib.skill[i] = this.skill[i];
|
||||
}
|
||||
},
|
||||
element:{
|
||||
player:{
|
||||
init:function(player){
|
||||
if(player.node.wuxing){
|
||||
element: {
|
||||
player: {
|
||||
init: function (player) {
|
||||
if (player.node.wuxing) {
|
||||
player.node.wuxing.remove();
|
||||
}
|
||||
if(_status.video||_status.connectMode) return;
|
||||
var node=ui.create.div('.wunature',player);
|
||||
var list=['metal','wood','water','fire','soil'];
|
||||
var nature=list.randomGet();
|
||||
player.wunature=nature;
|
||||
node.dataset.nature=nature;
|
||||
node.innerHTML=get.translation(nature);
|
||||
player.node.wuxing=node;
|
||||
}
|
||||
if (_status.video || _status.connectMode) return;
|
||||
var node = ui.create.div(".wunature", player);
|
||||
var list = ["metal", "wood", "water", "fire", "soil"];
|
||||
var nature = list.randomGet();
|
||||
player.wunature = nature;
|
||||
node.dataset.nature = nature;
|
||||
node.innerHTML = get.translation(nature);
|
||||
player.node.wuxing = node;
|
||||
},
|
||||
},
|
||||
card:{
|
||||
init:function(card){
|
||||
if(_status.video||_status.connectMode) return;
|
||||
if(card.name=='wuxingpan') return;
|
||||
if(card.wunature) 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();
|
||||
card.wunature=nature;
|
||||
node.dataset.nature=nature;
|
||||
node.innerHTML=get.translation(nature);
|
||||
card.node.wuxing=node;
|
||||
if(!card.suit||!card.number){
|
||||
card.node.wuxing.style.display='none';
|
||||
card: {
|
||||
init: function (card) {
|
||||
if (_status.video || _status.connectMode) return;
|
||||
if (card.name == "wuxingpan") return;
|
||||
if (card.wunature) 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();
|
||||
card.wunature = nature;
|
||||
node.dataset.nature = nature;
|
||||
node.innerHTML = get.translation(nature);
|
||||
card.node.wuxing = node;
|
||||
if (!card.suit || !card.number) {
|
||||
card.node.wuxing.style.display = "none";
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
skill:{
|
||||
_shengke:{
|
||||
trigger:{target:'useCardToBegin'},
|
||||
forced:true,
|
||||
popup:false,
|
||||
filter:function(event,player){
|
||||
if(_status.connectMode) return false;
|
||||
return event.card.wunature&&player.wunature;
|
||||
skill: {
|
||||
_shengke: {
|
||||
trigger: { target: "useCardToBegin" },
|
||||
forced: true,
|
||||
popup: false,
|
||||
filter: function (event, player) {
|
||||
if (_status.connectMode) return false;
|
||||
return event.card.wunature && player.wunature;
|
||||
},
|
||||
content:function(){
|
||||
switch(trigger.card.wunature){
|
||||
case 'metal':
|
||||
switch(player.wunature){
|
||||
case 'wood':
|
||||
if(player.countCards('he')){
|
||||
game.log(player,'被'+get.translation(trigger.card.wunature)+'属性的卡牌克制');
|
||||
player.chooseToDiscard('你被金属性卡牌克制,需弃置一张牌',true,'he').ai=get.disvalue;player.popup('金克木')}return;
|
||||
case 'water':
|
||||
game.log(player,'得到'+get.translation(trigger.card.wunature)+'属性卡牌的加成');
|
||||
player.draw();player.popup('金生水');
|
||||
return;
|
||||
}
|
||||
return;
|
||||
case 'wood':
|
||||
switch(player.wunature){
|
||||
case 'soil':
|
||||
if(player.countCards('he')){
|
||||
game.log(player,'被'+get.translation(trigger.card.wunature)+'属性的卡牌克制');
|
||||
player.chooseToDiscard('你被木属性卡牌克制,需弃置一张牌',true,'he').ai=get.disvalue;player.popup('木克土')}return;
|
||||
case 'fire':
|
||||
game.log(player,'得到'+get.translation(trigger.card.wunature)+'属性卡牌的加成');
|
||||
player.draw();player.popup('木生火');
|
||||
return;
|
||||
}
|
||||
return;
|
||||
case 'water':
|
||||
switch(player.wunature){
|
||||
case 'fire':
|
||||
if(player.countCards('he')){
|
||||
game.log(player,'被'+get.translation(trigger.card.wunature)+'属性的卡牌克制');
|
||||
player.chooseToDiscard('你被水属性卡牌克制,需弃置一张牌',true,'he').ai=get.disvalue;player.popup('水克火')}return;
|
||||
case 'wood':
|
||||
game.log(player,'得到'+get.translation(trigger.card.wunature)+'属性卡牌的加成');
|
||||
player.draw();player.popup('水生木');
|
||||
return;
|
||||
}
|
||||
return;
|
||||
case 'fire':
|
||||
switch(player.wunature){
|
||||
case 'metal':
|
||||
if(player.countCards('he')){
|
||||
game.log(player,'被'+get.translation(trigger.card.wunature)+'属性的卡牌克制');
|
||||
player.chooseToDiscard('你被火属性卡牌克制,需弃置一张牌',true,'he').ai=get.disvalue;player.popup('火克金')}return;
|
||||
case 'soil':
|
||||
game.log(player,'得到'+get.translation(trigger.card.wunature)+'属性卡牌的加成');
|
||||
player.draw();player.popup('火生土');
|
||||
return;
|
||||
}
|
||||
return;
|
||||
case 'soil':
|
||||
switch(player.wunature){
|
||||
case 'water':
|
||||
if(player.countCards('he')){
|
||||
game.log(player,'被'+get.translation(trigger.card.wunature)+'属性的卡牌克制');
|
||||
player.chooseToDiscard('你被土属性卡牌克制,需弃置一张牌',true,'he').ai=get.disvalue;player.popup('土克水')}return;
|
||||
case 'metal':
|
||||
game.log(player,'得到'+get.translation(trigger.card.wunature)+'属性卡牌的加成');
|
||||
player.draw();player.popup('土生金');
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target,current){
|
||||
switch(card.wunature){
|
||||
case 'metal':
|
||||
switch(target.wunature){
|
||||
case 'wood':if(current!=0) return [1,-0.3];return;
|
||||
case 'water':if(current!=0) return [1,0.3];return;
|
||||
}
|
||||
return;
|
||||
case 'wood':
|
||||
switch(target.wunature){
|
||||
case 'soil':if(current!=0) return [1,-0.3];return;
|
||||
case 'fire':if(current!=0) return [1,0.3];return;
|
||||
}
|
||||
return;
|
||||
case 'water':
|
||||
switch(target.wunature){
|
||||
case 'fire':if(current!=0) return [1,-0.3];return;
|
||||
case 'wood':if(current!=0) return [1,0.3];return;
|
||||
}
|
||||
return;
|
||||
case 'fire':
|
||||
switch(target.wunature){
|
||||
case 'metal':if(current!=0) return [1,-0.3];return;
|
||||
case 'soil':if(current!=0) return [1,0.3];return;
|
||||
}
|
||||
return;
|
||||
case 'soil':
|
||||
switch(target.wunature){
|
||||
case 'water':if(current!=0) return [1,-0.3];return;
|
||||
case 'metal':if(current!=0) return [1,0.3];return;
|
||||
}
|
||||
return;
|
||||
content: function () {
|
||||
switch (trigger.card.wunature) {
|
||||
case "metal":
|
||||
switch (player.wunature) {
|
||||
case "wood":
|
||||
if (player.countCards("he")) {
|
||||
game.log(
|
||||
player,
|
||||
"被" +
|
||||
get.translation(
|
||||
trigger.card.wunature
|
||||
) +
|
||||
"属性的卡牌克制"
|
||||
);
|
||||
player.chooseToDiscard(
|
||||
"你被金属性卡牌克制,需弃置一张牌",
|
||||
true,
|
||||
"he"
|
||||
).ai = get.disvalue;
|
||||
player.popup("金克木");
|
||||
}
|
||||
return;
|
||||
case "water":
|
||||
game.log(
|
||||
player,
|
||||
"得到" +
|
||||
get.translation(
|
||||
trigger.card.wunature
|
||||
) +
|
||||
"属性卡牌的加成"
|
||||
);
|
||||
player.draw();
|
||||
player.popup("金生水");
|
||||
return;
|
||||
}
|
||||
}
|
||||
return;
|
||||
case "wood":
|
||||
switch (player.wunature) {
|
||||
case "soil":
|
||||
if (player.countCards("he")) {
|
||||
game.log(
|
||||
player,
|
||||
"被" +
|
||||
get.translation(
|
||||
trigger.card.wunature
|
||||
) +
|
||||
"属性的卡牌克制"
|
||||
);
|
||||
player.chooseToDiscard(
|
||||
"你被木属性卡牌克制,需弃置一张牌",
|
||||
true,
|
||||
"he"
|
||||
).ai = get.disvalue;
|
||||
player.popup("木克土");
|
||||
}
|
||||
return;
|
||||
case "fire":
|
||||
game.log(
|
||||
player,
|
||||
"得到" +
|
||||
get.translation(
|
||||
trigger.card.wunature
|
||||
) +
|
||||
"属性卡牌的加成"
|
||||
);
|
||||
player.draw();
|
||||
player.popup("木生火");
|
||||
return;
|
||||
}
|
||||
return;
|
||||
case "water":
|
||||
switch (player.wunature) {
|
||||
case "fire":
|
||||
if (player.countCards("he")) {
|
||||
game.log(
|
||||
player,
|
||||
"被" +
|
||||
get.translation(
|
||||
trigger.card.wunature
|
||||
) +
|
||||
"属性的卡牌克制"
|
||||
);
|
||||
player.chooseToDiscard(
|
||||
"你被水属性卡牌克制,需弃置一张牌",
|
||||
true,
|
||||
"he"
|
||||
).ai = get.disvalue;
|
||||
player.popup("水克火");
|
||||
}
|
||||
return;
|
||||
case "wood":
|
||||
game.log(
|
||||
player,
|
||||
"得到" +
|
||||
get.translation(
|
||||
trigger.card.wunature
|
||||
) +
|
||||
"属性卡牌的加成"
|
||||
);
|
||||
player.draw();
|
||||
player.popup("水生木");
|
||||
return;
|
||||
}
|
||||
return;
|
||||
case "fire":
|
||||
switch (player.wunature) {
|
||||
case "metal":
|
||||
if (player.countCards("he")) {
|
||||
game.log(
|
||||
player,
|
||||
"被" +
|
||||
get.translation(
|
||||
trigger.card.wunature
|
||||
) +
|
||||
"属性的卡牌克制"
|
||||
);
|
||||
player.chooseToDiscard(
|
||||
"你被火属性卡牌克制,需弃置一张牌",
|
||||
true,
|
||||
"he"
|
||||
).ai = get.disvalue;
|
||||
player.popup("火克金");
|
||||
}
|
||||
return;
|
||||
case "soil":
|
||||
game.log(
|
||||
player,
|
||||
"得到" +
|
||||
get.translation(
|
||||
trigger.card.wunature
|
||||
) +
|
||||
"属性卡牌的加成"
|
||||
);
|
||||
player.draw();
|
||||
player.popup("火生土");
|
||||
return;
|
||||
}
|
||||
return;
|
||||
case "soil":
|
||||
switch (player.wunature) {
|
||||
case "water":
|
||||
if (player.countCards("he")) {
|
||||
game.log(
|
||||
player,
|
||||
"被" +
|
||||
get.translation(
|
||||
trigger.card.wunature
|
||||
) +
|
||||
"属性的卡牌克制"
|
||||
);
|
||||
player.chooseToDiscard(
|
||||
"你被土属性卡牌克制,需弃置一张牌",
|
||||
true,
|
||||
"he"
|
||||
).ai = get.disvalue;
|
||||
player.popup("土克水");
|
||||
}
|
||||
return;
|
||||
case "metal":
|
||||
game.log(
|
||||
player,
|
||||
"得到" +
|
||||
get.translation(
|
||||
trigger.card.wunature
|
||||
) +
|
||||
"属性卡牌的加成"
|
||||
);
|
||||
player.draw();
|
||||
player.popup("土生金");
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
},
|
||||
ai: {
|
||||
effect: {
|
||||
target: function (card, player, target, current) {
|
||||
switch (card.wunature) {
|
||||
case "metal":
|
||||
switch (target.wunature) {
|
||||
case "wood":
|
||||
if (current != 0) return [1, -0.3];
|
||||
return;
|
||||
case "water":
|
||||
if (current != 0) return [1, 0.3];
|
||||
return;
|
||||
}
|
||||
return;
|
||||
case "wood":
|
||||
switch (target.wunature) {
|
||||
case "soil":
|
||||
if (current != 0) return [1, -0.3];
|
||||
return;
|
||||
case "fire":
|
||||
if (current != 0) return [1, 0.3];
|
||||
return;
|
||||
}
|
||||
return;
|
||||
case "water":
|
||||
switch (target.wunature) {
|
||||
case "fire":
|
||||
if (current != 0) return [1, -0.3];
|
||||
return;
|
||||
case "wood":
|
||||
if (current != 0) return [1, 0.3];
|
||||
return;
|
||||
}
|
||||
return;
|
||||
case "fire":
|
||||
switch (target.wunature) {
|
||||
case "metal":
|
||||
if (current != 0) return [1, -0.3];
|
||||
return;
|
||||
case "soil":
|
||||
if (current != 0) return [1, 0.3];
|
||||
return;
|
||||
}
|
||||
return;
|
||||
case "soil":
|
||||
switch (target.wunature) {
|
||||
case "water":
|
||||
if (current != 0) return [1, -0.3];
|
||||
return;
|
||||
case "metal":
|
||||
if (current != 0) return [1, 0.3];
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
wuxingpan_skill:{
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filterCard:true,
|
||||
lose:false,
|
||||
prompt:'选择一张手牌永久改变其五行属性',
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.chooseControl('metal','wood','water','fire','soil');
|
||||
"step 1"
|
||||
var card=cards[0];
|
||||
if(!card.node.wuxing){
|
||||
card.node.wuxing=ui.create.div('.wunature',card);
|
||||
wuxingpan_skill: {
|
||||
enable: "phaseUse",
|
||||
usable: 1,
|
||||
filterCard: true,
|
||||
lose: false,
|
||||
prompt: "选择一张手牌永久改变其五行属性",
|
||||
content: function () {
|
||||
"step 0";
|
||||
player.chooseControl(
|
||||
"metal",
|
||||
"wood",
|
||||
"water",
|
||||
"fire",
|
||||
"soil"
|
||||
);
|
||||
("step 1");
|
||||
var card = cards[0];
|
||||
if (!card.node.wuxing) {
|
||||
card.node.wuxing = ui.create.div(".wunature", card);
|
||||
}
|
||||
|
||||
|
||||
card.wunature=result.control;
|
||||
card.node.wuxing.dataset.nature=result.control;
|
||||
card.node.wuxing.innerHTML=get.translation(result.control);
|
||||
}
|
||||
}
|
||||
card.wunature = result.control;
|
||||
card.node.wuxing.dataset.nature = result.control;
|
||||
card.node.wuxing.innerHTML = get.translation(
|
||||
result.control
|
||||
);
|
||||
},
|
||||
},
|
||||
},
|
||||
card:{
|
||||
wuxingpan:{
|
||||
type:'equip',
|
||||
subtype:'equip5',
|
||||
skills:['wuxingpan_skill'],
|
||||
fullskin:true
|
||||
}
|
||||
card: {
|
||||
wuxingpan: {
|
||||
type: "equip",
|
||||
subtype: "equip5",
|
||||
skills: ["wuxingpan_skill"],
|
||||
fullskin: true,
|
||||
},
|
||||
},
|
||||
translate:{
|
||||
metal:'金',
|
||||
wood:'木',
|
||||
water:'水',
|
||||
soil:'土',
|
||||
goldColor:'rgb(236,236,130)',
|
||||
woodColor:'rgb(149,202,147)',
|
||||
waterColor:'rgb(150,88,201)',
|
||||
fireColor:'rgb(236,132,106)',
|
||||
soilColor:'rgb(201,159,98)',
|
||||
goldColor2:'rgba(236,236,57,0.3)',
|
||||
woodColor2:'rgba(33,155,10,0.3)',
|
||||
waterColor2:'rgba(29,156,255,0.3)',
|
||||
fireColor2:'rgba(255,51,0,0.3)',
|
||||
soilColor2:'rgba(163,98,0,0.3)',
|
||||
wuxingpan:'五行盘',
|
||||
wuxingpan_skill:'五行',
|
||||
wuxingpan_skill_info:'出牌阶段限一次,你可以永久改变一张手牌的五行属性',
|
||||
wuxingpan_info:'出牌阶段限一次,你可以永久改变一张手牌的五行属性',
|
||||
translate: {
|
||||
metal: "金",
|
||||
wood: "木",
|
||||
water: "水",
|
||||
soil: "土",
|
||||
goldColor: "rgb(236,236,130)",
|
||||
woodColor: "rgb(149,202,147)",
|
||||
waterColor: "rgb(150,88,201)",
|
||||
fireColor: "rgb(236,132,106)",
|
||||
soilColor: "rgb(201,159,98)",
|
||||
goldColor2: "rgba(236,236,57,0.3)",
|
||||
woodColor2: "rgba(33,155,10,0.3)",
|
||||
waterColor2: "rgba(29,156,255,0.3)",
|
||||
fireColor2: "rgba(255,51,0,0.3)",
|
||||
soilColor2: "rgba(163,98,0,0.3)",
|
||||
wuxingpan: "五行盘",
|
||||
wuxingpan_skill: "五行",
|
||||
wuxingpan_skill_info:
|
||||
"出牌阶段限一次,你可以永久改变一张手牌的五行属性",
|
||||
wuxingpan_info: "出牌阶段限一次,你可以永久改变一张手牌的五行属性",
|
||||
},
|
||||
help: {
|
||||
五行生克:
|
||||
"<ul><li>每名角色在游戏开始时随机获得一个属性<li>牌堆中三分之一的牌会随机获得一个属性<li>当一名成为相克属性卡牌的目标时," +
|
||||
"须弃置一张牌<li>当一名角色成为相生的卡牌的目标时,须摸一张牌" +
|
||||
"<li>金克木,金生水;<br>木克土,木生火;<br>水克火,水生木;<br>火克金,火生土;<br>土克水,土生金",
|
||||
},
|
||||
help:{
|
||||
'五行生克':'<ul><li>每名角色在游戏开始时随机获得一个属性<li>牌堆中三分之一的牌会随机获得一个属性<li>当一名成为相克属性卡牌的目标时,'+
|
||||
'须弃置一张牌<li>当一名角色成为相生的卡牌的目标时,须摸一张牌'+
|
||||
'<li>金克木,金生水;<br>木克土,木生火;<br>水克火,水生木;<br>火克金,火生土;<br>土克水,土生金'
|
||||
}
|
||||
};
|
||||
});
|
||||
|
|
384
game/NoSleep.js
384
game/NoSleep.js
File diff suppressed because one or more lines are too long
19220
game/asset.js
19220
game/asset.js
File diff suppressed because it is too large
Load Diff
|
@ -1,4 +1,4 @@
|
|||
// apk每次安装后第一次启动加载Service Worker会失败
|
||||
// 所以每次导入这个ts判断是否会成功,失败的话重启一次
|
||||
|
||||
export const text: string = 'ts文件导入成功';
|
||||
export const text: string = "ts文件导入成功";
|
||||
|
|
20916
game/codemirror.js
20916
game/codemirror.js
File diff suppressed because it is too large
Load Diff
595
game/config.js
595
game/config.js
|
@ -1,249 +1,410 @@
|
|||
window.config={
|
||||
extension_sources:{
|
||||
'GitHub Proxy':'https://mirror.ghproxy.com/https://raw.githubusercontent.com/libccy/noname-extension/master/',
|
||||
FastGit:'https://raw.fgit.cf/libccy/noname-extension/master/',
|
||||
GitHub:'https://raw.githubusercontent.com/libccy/noname-extension/master/'
|
||||
window.config = {
|
||||
extension_sources: {
|
||||
"GitHub Proxy":
|
||||
"https://mirror.ghproxy.com/https://raw.githubusercontent.com/libccy/noname-extension/master/",
|
||||
FastGit: "https://raw.fgit.cf/libccy/noname-extension/master/",
|
||||
GitHub: "https://raw.githubusercontent.com/libccy/noname-extension/master/",
|
||||
},
|
||||
extension_source:'GitHub Proxy',
|
||||
forbidai:['ns_liuzhang'],
|
||||
forbidai_user:[],
|
||||
forbidall:[],
|
||||
forbidstone:['zhugedan','pal_xuanxiao','hs_malfurion','lusu','chenlin','hs_siwangzhiyi',
|
||||
'gjqt_bailitusu','yuanshao','swd_anka','swd_nicole','daqiao','re_daqiao','hs_xuanzhuanjijia',
|
||||
'zhuran','huatuo','swd_tuwei','hs_guldan','wangyi','caoang','swd_guyue','swd_rongshuang',
|
||||
'swd_jiangziya','guojia','re_guojia','shen_caocao','swd_qiner','caopi','hs_yngvar','guansuo',
|
||||
'gjqt_aruan','swd_hanluo','hs_anduin','swd_huanglei','yxs_yujix','yxs_luzhishen','swd_muyun','ow_tianshi',
|
||||
'pal_yuejinzhao','hs_antonidas','xushi','hs_lreno'
|
||||
extension_source: "GitHub Proxy",
|
||||
forbidai: ["ns_liuzhang"],
|
||||
forbidai_user: [],
|
||||
forbidall: [],
|
||||
forbidstone: [
|
||||
"zhugedan",
|
||||
"pal_xuanxiao",
|
||||
"hs_malfurion",
|
||||
"lusu",
|
||||
"chenlin",
|
||||
"hs_siwangzhiyi",
|
||||
"gjqt_bailitusu",
|
||||
"yuanshao",
|
||||
"swd_anka",
|
||||
"swd_nicole",
|
||||
"daqiao",
|
||||
"re_daqiao",
|
||||
"hs_xuanzhuanjijia",
|
||||
"zhuran",
|
||||
"huatuo",
|
||||
"swd_tuwei",
|
||||
"hs_guldan",
|
||||
"wangyi",
|
||||
"caoang",
|
||||
"swd_guyue",
|
||||
"swd_rongshuang",
|
||||
"swd_jiangziya",
|
||||
"guojia",
|
||||
"re_guojia",
|
||||
"shen_caocao",
|
||||
"swd_qiner",
|
||||
"caopi",
|
||||
"hs_yngvar",
|
||||
"guansuo",
|
||||
"gjqt_aruan",
|
||||
"swd_hanluo",
|
||||
"hs_anduin",
|
||||
"swd_huanglei",
|
||||
"yxs_yujix",
|
||||
"yxs_luzhishen",
|
||||
"swd_muyun",
|
||||
"ow_tianshi",
|
||||
"pal_yuejinzhao",
|
||||
"hs_antonidas",
|
||||
"xushi",
|
||||
"hs_lreno",
|
||||
],
|
||||
forbidchess:['hetaihou','swd_kangnalishi'],
|
||||
forbidboss:['caiwenji','gjqt_aruan','pal_xuanxiao','swd_hupo'],
|
||||
forbiddouble:['zhugedan','swd_kangnalishi','dongzhuo','wutugu','hs_siwangzhiyi','hs_ronghejuren','hs_shanlingjuren'],
|
||||
forbidthreecard:['qiankunbiao','shenhuofeiya','gw_ciguhanshuang','gw_birinongwu','gw_qinpendayu','gw_poxiao'],
|
||||
zhinang_tricks:['guohe','wuxie','wuzhong','dongzhuxianji'],
|
||||
connect_zhinang_tricks:['guohe','wuxie','wuzhong','dongzhuxianji'],
|
||||
all:{
|
||||
sgscharacters:['standard','shenhua','xinghuoliaoyuan','refresh','yijiang','sp','sp2','xianding','huicui','extra','old','mobile','shiji','tw','yingbian','offline','jsrg','sb','clan','collab','onlyOL'],
|
||||
sgscards:['standard','extra','sp','guozhan','zhulu','yingbian','yongjian'],
|
||||
sgsmodes:['identity','guozhan','versus','doudizhu','single','brawl','connect'],
|
||||
stockmode:['identity','guozhan','versus','boss','doudizhu','single','chess','stone','connect','brawl','tafang'],
|
||||
stockextension:['boss','cardpile','coin','wuxing'],
|
||||
layout:['default','newlayout'],
|
||||
theme:['woodden','music','simple'],
|
||||
card_font:['xiaozhuan','huangcao','caoshu','xingshu'],
|
||||
double_hp:['hejiansan','pingjun','zuidazhi','zuixiaozhi','zonghe'],
|
||||
image_background_filter:['default','blur','gray','sepia','invert','saturate','contrast','hue','brightness'],
|
||||
forbidchess: ["hetaihou", "swd_kangnalishi"],
|
||||
forbidboss: ["caiwenji", "gjqt_aruan", "pal_xuanxiao", "swd_hupo"],
|
||||
forbiddouble: [
|
||||
"zhugedan",
|
||||
"swd_kangnalishi",
|
||||
"dongzhuo",
|
||||
"wutugu",
|
||||
"hs_siwangzhiyi",
|
||||
"hs_ronghejuren",
|
||||
"hs_shanlingjuren",
|
||||
],
|
||||
forbidthreecard: [
|
||||
"qiankunbiao",
|
||||
"shenhuofeiya",
|
||||
"gw_ciguhanshuang",
|
||||
"gw_birinongwu",
|
||||
"gw_qinpendayu",
|
||||
"gw_poxiao",
|
||||
],
|
||||
zhinang_tricks: ["guohe", "wuxie", "wuzhong", "dongzhuxianji"],
|
||||
connect_zhinang_tricks: ["guohe", "wuxie", "wuzhong", "dongzhuxianji"],
|
||||
all: {
|
||||
sgscharacters: [
|
||||
"standard",
|
||||
"shenhua",
|
||||
"xinghuoliaoyuan",
|
||||
"refresh",
|
||||
"yijiang",
|
||||
"sp",
|
||||
"sp2",
|
||||
"xianding",
|
||||
"huicui",
|
||||
"extra",
|
||||
"old",
|
||||
"mobile",
|
||||
"shiji",
|
||||
"tw",
|
||||
"yingbian",
|
||||
"offline",
|
||||
"jsrg",
|
||||
"sb",
|
||||
"clan",
|
||||
"collab",
|
||||
"onlyOL",
|
||||
],
|
||||
sgscards: [
|
||||
"standard",
|
||||
"extra",
|
||||
"sp",
|
||||
"guozhan",
|
||||
"zhulu",
|
||||
"yingbian",
|
||||
"yongjian",
|
||||
],
|
||||
sgsmodes: [
|
||||
"identity",
|
||||
"guozhan",
|
||||
"versus",
|
||||
"doudizhu",
|
||||
"single",
|
||||
"brawl",
|
||||
"connect",
|
||||
],
|
||||
stockmode: [
|
||||
"identity",
|
||||
"guozhan",
|
||||
"versus",
|
||||
"boss",
|
||||
"doudizhu",
|
||||
"single",
|
||||
"chess",
|
||||
"stone",
|
||||
"connect",
|
||||
"brawl",
|
||||
"tafang",
|
||||
],
|
||||
stockextension: ["boss", "cardpile", "coin", "wuxing"],
|
||||
layout: ["default", "newlayout"],
|
||||
theme: ["woodden", "music", "simple"],
|
||||
card_font: ["xiaozhuan", "huangcao", "caoshu", "xingshu"],
|
||||
double_hp: ["hejiansan", "pingjun", "zuidazhi", "zuixiaozhi", "zonghe"],
|
||||
image_background_filter: [
|
||||
"default",
|
||||
"blur",
|
||||
"gray",
|
||||
"sepia",
|
||||
"invert",
|
||||
"saturate",
|
||||
"contrast",
|
||||
"hue",
|
||||
"brightness",
|
||||
],
|
||||
},
|
||||
|
||||
game:'sgs',
|
||||
duration:500,
|
||||
hoveration:1000,
|
||||
doubleclick_intro:true,
|
||||
cheat:false,
|
||||
volumn_background:8,
|
||||
volumn_audio:8,
|
||||
game: "sgs",
|
||||
duration: 500,
|
||||
hoveration: 1000,
|
||||
doubleclick_intro: true,
|
||||
cheat: false,
|
||||
volumn_background: 8,
|
||||
volumn_audio: 8,
|
||||
|
||||
connect_avatar:'caocao',
|
||||
connect_nickname:'无名玩家',
|
||||
config_menu:true,
|
||||
auto_popped_config:true,
|
||||
auto_popped_history:false,
|
||||
auto_skill:true,
|
||||
auto_confirm:true,
|
||||
enable_drag:true,
|
||||
enable_pressure:false,
|
||||
pressure_taptic:true,
|
||||
hover_handcard:true,
|
||||
hover_all:true,
|
||||
right_info:true,
|
||||
longpress_info:true,
|
||||
long_info:true,
|
||||
background_music:'music_default',
|
||||
background_audio:true,
|
||||
background_speak:true,
|
||||
glow_phase:'yellow',
|
||||
die_move:'flip',
|
||||
connect_avatar: "caocao",
|
||||
connect_nickname: "无名玩家",
|
||||
config_menu: true,
|
||||
auto_popped_config: true,
|
||||
auto_popped_history: false,
|
||||
auto_skill: true,
|
||||
auto_confirm: true,
|
||||
enable_drag: true,
|
||||
enable_pressure: false,
|
||||
pressure_taptic: true,
|
||||
hover_handcard: true,
|
||||
hover_all: true,
|
||||
right_info: true,
|
||||
longpress_info: true,
|
||||
long_info: true,
|
||||
background_music: "music_default",
|
||||
background_audio: true,
|
||||
background_speak: true,
|
||||
glow_phase: "yellow",
|
||||
die_move: "flip",
|
||||
|
||||
skin:{},
|
||||
gameRecord:{},
|
||||
extensionInfo:{},
|
||||
autoskilllist:[],
|
||||
hiddenModePack:[],
|
||||
hiddenCharacterPack:[],
|
||||
hiddenCardPack:[],
|
||||
hiddenPlayPack:[],
|
||||
hiddenBackgroundPack:[],
|
||||
customBackgroundPack:[],
|
||||
favouriteCharacter:[],
|
||||
favouriteMode:[],
|
||||
recentIP:[],
|
||||
vintageSkills:[],
|
||||
alteredSkills:[],
|
||||
brokenFile:[],
|
||||
skin: {},
|
||||
gameRecord: {},
|
||||
extensionInfo: {},
|
||||
autoskilllist: [],
|
||||
hiddenModePack: [],
|
||||
hiddenCharacterPack: [],
|
||||
hiddenCardPack: [],
|
||||
hiddenPlayPack: [],
|
||||
hiddenBackgroundPack: [],
|
||||
customBackgroundPack: [],
|
||||
favouriteCharacter: [],
|
||||
favouriteMode: [],
|
||||
recentIP: [],
|
||||
vintageSkills: [],
|
||||
alteredSkills: [],
|
||||
brokenFile: [],
|
||||
|
||||
theme:'woodden',
|
||||
layout:'mobile',
|
||||
card_style:'default',
|
||||
cardback_style:'default',
|
||||
hp_style:'default',
|
||||
theme: "woodden",
|
||||
layout: "mobile",
|
||||
card_style: "default",
|
||||
cardback_style: "default",
|
||||
hp_style: "default",
|
||||
|
||||
image_character:'default',
|
||||
image_background:'default',
|
||||
image_character: "default",
|
||||
image_background: "default",
|
||||
|
||||
asset_image:true,
|
||||
asset_font:true,
|
||||
asset_image: true,
|
||||
asset_font: true,
|
||||
|
||||
card_font:'xiaozhuan',
|
||||
show_statusbar_ios:'off',
|
||||
show_statusbar_android:false,
|
||||
show_name:true,
|
||||
show_replay:false,
|
||||
show_round_menu:true,
|
||||
show_pause:true,
|
||||
show_auto:true,
|
||||
show_volumn:true,
|
||||
show_cardpile:true,
|
||||
only_fullskin:true,
|
||||
show_connect:true,
|
||||
show_wuxie:false,
|
||||
show_wuxie_self:true,
|
||||
show_stat:true,
|
||||
show_playerids:true,
|
||||
show_scrollbar:false,
|
||||
mousewheel:true,
|
||||
fold_card:true,
|
||||
threed_card:false,
|
||||
vertical_scroll:false,
|
||||
handcard_scroll:0,
|
||||
animation:true,
|
||||
skill_animation_type:'default',
|
||||
paused:false,
|
||||
title:false,
|
||||
button_press:true,
|
||||
damage_shake:true,
|
||||
log_highlight:true,
|
||||
player_border:'normal',
|
||||
radius_size:'default',
|
||||
card_font: "xiaozhuan",
|
||||
show_statusbar_ios: "off",
|
||||
show_statusbar_android: false,
|
||||
show_name: true,
|
||||
show_replay: false,
|
||||
show_round_menu: true,
|
||||
show_pause: true,
|
||||
show_auto: true,
|
||||
show_volumn: true,
|
||||
show_cardpile: true,
|
||||
only_fullskin: true,
|
||||
show_connect: true,
|
||||
show_wuxie: false,
|
||||
show_wuxie_self: true,
|
||||
show_stat: true,
|
||||
show_playerids: true,
|
||||
show_scrollbar: false,
|
||||
mousewheel: true,
|
||||
fold_card: true,
|
||||
threed_card: false,
|
||||
vertical_scroll: false,
|
||||
handcard_scroll: 0,
|
||||
animation: true,
|
||||
skill_animation_type: "default",
|
||||
paused: false,
|
||||
title: false,
|
||||
button_press: true,
|
||||
damage_shake: true,
|
||||
log_highlight: true,
|
||||
player_border: "normal",
|
||||
radius_size: "default",
|
||||
|
||||
modeconfig:false,
|
||||
gameconfig:false,
|
||||
appearence:false,
|
||||
video:'20',
|
||||
coin:0,
|
||||
modeconfig: false,
|
||||
gameconfig: false,
|
||||
appearence: false,
|
||||
video: "20",
|
||||
coin: 0,
|
||||
|
||||
intro:'i',
|
||||
right_click:'pause',
|
||||
sort:'type_sort',
|
||||
intro: "i",
|
||||
right_click: "pause",
|
||||
sort: "type_sort",
|
||||
|
||||
cards:['standard','extra'],
|
||||
characters:['standard','shenhua','sp','sp2','yijiang','refresh','xinghuoliaoyuan','mobile','extra','yingbian','sb','tw','offline','clan','collab','xianding','huicui','shiji','jsrg','onlyOL'],
|
||||
connect_characters:['diy'],
|
||||
connect_cards:['huanlekapai','guozhan','sp','zhulu','yingbian','yongjian'],
|
||||
plays:[],
|
||||
extensions:[],
|
||||
banned:[],
|
||||
bannedcards:[],
|
||||
forbidlist:[],
|
||||
bannedpile:{},
|
||||
customcardpile:{},
|
||||
addedpile:{},
|
||||
cards: ["standard", "extra"],
|
||||
characters: [
|
||||
"standard",
|
||||
"shenhua",
|
||||
"sp",
|
||||
"sp2",
|
||||
"yijiang",
|
||||
"refresh",
|
||||
"xinghuoliaoyuan",
|
||||
"mobile",
|
||||
"extra",
|
||||
"yingbian",
|
||||
"sb",
|
||||
"tw",
|
||||
"offline",
|
||||
"clan",
|
||||
"collab",
|
||||
"xianding",
|
||||
"huicui",
|
||||
"shiji",
|
||||
"jsrg",
|
||||
"onlyOL",
|
||||
],
|
||||
connect_characters: ["diy"],
|
||||
connect_cards: [
|
||||
"huanlekapai",
|
||||
"guozhan",
|
||||
"sp",
|
||||
"zhulu",
|
||||
"yingbian",
|
||||
"yongjian",
|
||||
],
|
||||
plays: [],
|
||||
extensions: [],
|
||||
banned: [],
|
||||
bannedcards: [],
|
||||
forbidlist: [],
|
||||
bannedpile: {},
|
||||
customcardpile: {},
|
||||
addedpile: {},
|
||||
|
||||
mode:'identity',
|
||||
mode_config:{
|
||||
global:{
|
||||
player_number:8,
|
||||
auto_identity:'off',
|
||||
double_character:false,
|
||||
save_progress:true,
|
||||
free_choose:true,
|
||||
swap:true,
|
||||
change_identity:true,
|
||||
battle_number:3,
|
||||
double_hp:'pingjun',
|
||||
mode: "identity",
|
||||
mode_config: {
|
||||
global: {
|
||||
player_number: 8,
|
||||
auto_identity: "off",
|
||||
double_character: false,
|
||||
save_progress: true,
|
||||
free_choose: true,
|
||||
swap: true,
|
||||
change_identity: true,
|
||||
battle_number: 3,
|
||||
double_hp: "pingjun",
|
||||
},
|
||||
identity:{
|
||||
identity:[
|
||||
['zhu','fan'],
|
||||
['zhu','nei','fan'],
|
||||
['zhu','zhong','nei','fan'],
|
||||
['zhu','zhong','nei','fan','fan'],
|
||||
['zhu','zhong','nei','fan','fan','fan'],
|
||||
['zhu','zhong','zhong','nei','fan','fan','fan'],
|
||||
['zhu','zhong','zhong','nei','fan','fan','fan','fan'],
|
||||
['zhu','zhong','zhong','zhong','nei','fan','fan','fan','fan'],
|
||||
['zhu','zhong','zhong','zhong','nei','nei','fan','fan','fan','fan'],
|
||||
identity: {
|
||||
identity: [
|
||||
["zhu", "fan"],
|
||||
["zhu", "nei", "fan"],
|
||||
["zhu", "zhong", "nei", "fan"],
|
||||
["zhu", "zhong", "nei", "fan", "fan"],
|
||||
["zhu", "zhong", "nei", "fan", "fan", "fan"],
|
||||
["zhu", "zhong", "zhong", "nei", "fan", "fan", "fan"],
|
||||
["zhu", "zhong", "zhong", "nei", "fan", "fan", "fan", "fan"],
|
||||
[
|
||||
"zhu",
|
||||
"zhong",
|
||||
"zhong",
|
||||
"zhong",
|
||||
"nei",
|
||||
"fan",
|
||||
"fan",
|
||||
"fan",
|
||||
"fan",
|
||||
],
|
||||
[
|
||||
"zhu",
|
||||
"zhong",
|
||||
"zhong",
|
||||
"zhong",
|
||||
"nei",
|
||||
"nei",
|
||||
"fan",
|
||||
"fan",
|
||||
"fan",
|
||||
"fan",
|
||||
],
|
||||
],
|
||||
choice:{
|
||||
zhu:3,
|
||||
zhong:4,
|
||||
nei:5,
|
||||
fan:3,
|
||||
choice: {
|
||||
zhu: 3,
|
||||
zhong: 4,
|
||||
nei: 5,
|
||||
fan: 3,
|
||||
},
|
||||
show_identity:true,
|
||||
difficulty:'normal',
|
||||
dierestart:true
|
||||
show_identity: true,
|
||||
difficulty: "normal",
|
||||
dierestart: true,
|
||||
},
|
||||
guozhan:{
|
||||
difficulty:'normal',
|
||||
initshow_draw:'mark',
|
||||
dierestart:true
|
||||
guozhan: {
|
||||
difficulty: "normal",
|
||||
initshow_draw: "mark",
|
||||
dierestart: true,
|
||||
},
|
||||
},
|
||||
current_mode:{},
|
||||
customforbid:[],
|
||||
forbid:[
|
||||
['huashen'],
|
||||
['rehuashen'],
|
||||
['xinmanjuan'],
|
||||
current_mode: {},
|
||||
customforbid: [],
|
||||
forbid: [
|
||||
["huashen"],
|
||||
["rehuashen"],
|
||||
["xinmanjuan"],
|
||||
//['xinleiji','fuji'],
|
||||
['xinleiji','xinfu_jijun'],
|
||||
['reluanji','jueqing'],
|
||||
['lianying','rende'],
|
||||
['lianying','anxian'],
|
||||
['lianying','yinguo'],
|
||||
['lianying','qingjian'],
|
||||
['boss_juejing','rende'],
|
||||
['boss_juejing','anxian'],
|
||||
['boss_juejing','yinguo'],
|
||||
['boss_juejing','qingjian'],
|
||||
['shangshi','rende'],
|
||||
['shangshi','anxian'],
|
||||
['shangshi','yinguo'],
|
||||
['shangshi','qingjian'],
|
||||
['rende','relianying'],
|
||||
['anxian','relianying'],
|
||||
['yinguo','relianying'],
|
||||
['shenxing','relianying'],
|
||||
['qingjian','relianying'],
|
||||
['rende','yuling'],
|
||||
['anxian','yuling'],
|
||||
['yinguo','yuling'],
|
||||
['qingjian','yuling'],
|
||||
["xinleiji", "xinfu_jijun"],
|
||||
["reluanji", "jueqing"],
|
||||
["lianying", "rende"],
|
||||
["lianying", "anxian"],
|
||||
["lianying", "yinguo"],
|
||||
["lianying", "qingjian"],
|
||||
["boss_juejing", "rende"],
|
||||
["boss_juejing", "anxian"],
|
||||
["boss_juejing", "yinguo"],
|
||||
["boss_juejing", "qingjian"],
|
||||
["shangshi", "rende"],
|
||||
["shangshi", "anxian"],
|
||||
["shangshi", "yinguo"],
|
||||
["shangshi", "qingjian"],
|
||||
["rende", "relianying"],
|
||||
["anxian", "relianying"],
|
||||
["yinguo", "relianying"],
|
||||
["shenxing", "relianying"],
|
||||
["qingjian", "relianying"],
|
||||
["rende", "yuling"],
|
||||
["anxian", "yuling"],
|
||||
["yinguo", "yuling"],
|
||||
["qingjian", "yuling"],
|
||||
//['qingnang','yiji'],
|
||||
//['qingnang','reyiji'],
|
||||
//['qingjian','tuntian'],
|
||||
// ['yiji','tuntian'],
|
||||
// ['reyiji','tuntian'],
|
||||
['tuntian','guidao'],
|
||||
['tuntian','tiandao'],
|
||||
['tuntian','huanshi'],
|
||||
["tuntian", "guidao"],
|
||||
["tuntian", "tiandao"],
|
||||
["tuntian", "huanshi"],
|
||||
// ['tuntian','guicai'],
|
||||
// ['jiang','chongzhen'],
|
||||
// ['fenji','yuling'],
|
||||
['jiushi','guixin'],
|
||||
['xiuhua','qiaoxie'],
|
||||
['xiuhua','xuanfeng'],
|
||||
['xiuhua','duanxing'],
|
||||
['xiuhua','xiaoji'],
|
||||
['xiuhua','xiaoji'],
|
||||
["jiushi", "guixin"],
|
||||
["xiuhua", "qiaoxie"],
|
||||
["xiuhua", "xuanfeng"],
|
||||
["xiuhua", "duanxing"],
|
||||
["xiuhua", "xiaoji"],
|
||||
["xiuhua", "xiaoji"],
|
||||
// ['jiushi','jushou'],
|
||||
// ['jiushi','kuiwei'],
|
||||
['zishu','xinfu_songsang'],
|
||||
['zishu','shenxing'],
|
||||
['minishendao','luoshen'],
|
||||
['minishendao','reluoshen'],
|
||||
['akane_quanqing','lianying'],
|
||||
['akane_quanqing','relianying'],
|
||||
['akane_quanqing','shangshi'],
|
||||
['dcruyi','cxliushi'],
|
||||
]
|
||||
["zishu", "xinfu_songsang"],
|
||||
["zishu", "shenxing"],
|
||||
["minishendao", "luoshen"],
|
||||
["minishendao", "reluoshen"],
|
||||
["akane_quanqing", "lianying"],
|
||||
["akane_quanqing", "relianying"],
|
||||
["akane_quanqing", "shangshi"],
|
||||
["dcruyi", "cxliushi"],
|
||||
],
|
||||
};
|
||||
|
|
|
@ -1,176 +1,198 @@
|
|||
var fs=require('fs');
|
||||
var path=require('path');
|
||||
var exec = require('child_process').exec;
|
||||
global.window=global;
|
||||
require(__dirname+'/update.js');
|
||||
require(__dirname+'/asset.js');
|
||||
|
||||
var updates=window.noname_update;
|
||||
var newversion=false;
|
||||
var commit=false
|
||||
if(process.argv[2]){
|
||||
if(/[0-9]/.test(process.argv[2][0])){
|
||||
newversion=true;
|
||||
updates.update = updates.version;
|
||||
updates.version = '1.9.' + process.argv[2];
|
||||
commit=updates.version;
|
||||
}
|
||||
else{
|
||||
commit=process.argv[2];
|
||||
}
|
||||
}
|
||||
var assetlist='';
|
||||
var skinlist='window.noname_skin_list={\n';
|
||||
var entrylist=[];
|
||||
var entrymap={};
|
||||
var get = function(dir,callback){
|
||||
fs.readdir(dir,function(err,list){
|
||||
var shift=function(){
|
||||
if(list.length){
|
||||
var filename=list.shift();
|
||||
var delay=false;
|
||||
if(!/\.|~|_/.test(filename[0])){
|
||||
var url=dir+'/'+filename;
|
||||
var stat=fs.statSync(url);
|
||||
if(stat.isFile()){
|
||||
if(['.jpg','.png','.mp3','.ttf'].indexOf(path.extname(url))!=-1){
|
||||
var assetentry=path.relative(path.dirname(__dirname),url);
|
||||
assetlist+=',\n\t\''+assetentry+'\'';
|
||||
entrylist.push(assetentry);
|
||||
}
|
||||
}
|
||||
else if(stat.isDirectory()){
|
||||
if(dir==path.dirname(__dirname)+'/image/skin'){
|
||||
fs.readdir(url,function(err,list){
|
||||
var num=0;
|
||||
for(var i=0;i<list.length;i++){
|
||||
var url2=url+'/'+list[i];
|
||||
var stat=fs.statSync(url2);
|
||||
if(stat.isFile()&&path.extname(url2)=='.jpg'){
|
||||
num++;
|
||||
}
|
||||
}
|
||||
skinlist+='\t'+filename+':'+num+',\n';
|
||||
entrymap[filename]=num;
|
||||
shift();
|
||||
});
|
||||
delay=true;
|
||||
}
|
||||
else{
|
||||
get(url,shift);
|
||||
delay=true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!delay){
|
||||
shift();
|
||||
}
|
||||
}
|
||||
else{
|
||||
callback();
|
||||
}
|
||||
}
|
||||
shift();
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
get(path.dirname(__dirname),function(){
|
||||
var diff=false;
|
||||
if(window.noname_asset_list.length==entrylist.length+1){
|
||||
for(var i=0;i<entrylist.length;i++){
|
||||
if(entrylist[i]!=window.noname_asset_list[i+1]){
|
||||
diff=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!diff){
|
||||
for(var i in entrymap){
|
||||
if(window.noname_skin_list[i]!==entrymap[i]){
|
||||
diff=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
for(var i in noname_skin_list){
|
||||
if(window.noname_skin_list[i]!==entrymap[i]){
|
||||
diff=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
diff=true;
|
||||
}
|
||||
var next=function(){
|
||||
exec('git diff --name-only', (error, stdout, stderr) => {
|
||||
var updatelist='window.noname_update={\n\tversion:\''+updates.version+'\',';
|
||||
updatelist+='\n\tupdate:\''+(updates.update||'')+'\',';
|
||||
var apply=function(name,list){
|
||||
updatelist+='\n\t'+name+':[\n';
|
||||
for(var i=0;i<list.length;i++){
|
||||
updatelist+='\t\t\''+list[i]+'\'';
|
||||
if(i<list.length-1){
|
||||
updatelist+=',';
|
||||
}
|
||||
updatelist+='\n';
|
||||
}
|
||||
updatelist+='\t]';
|
||||
};
|
||||
if(updates.changeLog){
|
||||
apply('changeLog',updates.changeLog);
|
||||
updatelist+=',';
|
||||
}
|
||||
if(updates.players){
|
||||
apply('players',updates.players);
|
||||
updatelist+=',';
|
||||
}
|
||||
if(updates.cards){
|
||||
apply('cards',updates.cards);
|
||||
updatelist+=',';
|
||||
}
|
||||
var changes = stdout.split('\n');
|
||||
for(var i=0;i<changes.length;i++){
|
||||
var extname=path.extname(changes[i]);
|
||||
if(!changes[i]||(extname!='.js'&&extname!='.css')||changes[i]=='game/update.js'){
|
||||
changes.splice(i--,1);
|
||||
}
|
||||
}
|
||||
var files;
|
||||
if(newversion){
|
||||
files = [];
|
||||
}
|
||||
else{
|
||||
files = updates.files || [];
|
||||
}
|
||||
for(var i=0;i<changes.length;i++){
|
||||
if(files.indexOf(changes[i])===-1){
|
||||
files.push(changes[i])
|
||||
}
|
||||
}
|
||||
files.sort(function(a,b){
|
||||
if (a>b) return 1;
|
||||
if (a<b) return -1;
|
||||
return 0;
|
||||
})
|
||||
apply('files',files);
|
||||
fs.writeFile('game/update.js',updatelist+'\n};','utf-8',function(){
|
||||
console.log('updated update.js');
|
||||
if(commit && typeof commit==='string'){
|
||||
exec('git add . && git commit -am '+commit);
|
||||
console.log('committed '+commit);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
if(diff){
|
||||
var assetversion='window.noname_asset_list=[\n\t\''+updates.version+'\'';
|
||||
fs.writeFile('game/asset.js',assetversion+assetlist+'\n];\n'+skinlist.slice(0,skinlist.length-2)+'\n};','utf-8',function(){
|
||||
console.log('udpated asset.js');
|
||||
next();
|
||||
});
|
||||
}
|
||||
else{
|
||||
next();
|
||||
}
|
||||
});
|
||||
var fs = require("fs");
|
||||
var path = require("path");
|
||||
var exec = require("child_process").exec;
|
||||
global.window = global;
|
||||
require(__dirname + "/update.js");
|
||||
require(__dirname + "/asset.js");
|
||||
|
||||
var updates = window.noname_update;
|
||||
var newversion = false;
|
||||
var commit = false;
|
||||
if (process.argv[2]) {
|
||||
if (/[0-9]/.test(process.argv[2][0])) {
|
||||
newversion = true;
|
||||
updates.update = updates.version;
|
||||
updates.version = "1.9." + process.argv[2];
|
||||
commit = updates.version;
|
||||
} else {
|
||||
commit = process.argv[2];
|
||||
}
|
||||
}
|
||||
var assetlist = "";
|
||||
var skinlist = "window.noname_skin_list={\n";
|
||||
var entrylist = [];
|
||||
var entrymap = {};
|
||||
var get = function (dir, callback) {
|
||||
fs.readdir(dir, function (err, list) {
|
||||
var shift = function () {
|
||||
if (list.length) {
|
||||
var filename = list.shift();
|
||||
var delay = false;
|
||||
if (!/\.|~|_/.test(filename[0])) {
|
||||
var url = dir + "/" + filename;
|
||||
var stat = fs.statSync(url);
|
||||
if (stat.isFile()) {
|
||||
if (
|
||||
[".jpg", ".png", ".mp3", ".ttf"].indexOf(
|
||||
path.extname(url)
|
||||
) != -1
|
||||
) {
|
||||
var assetentry = path.relative(
|
||||
path.dirname(__dirname),
|
||||
url
|
||||
);
|
||||
assetlist += ",\n\t'" + assetentry + "'";
|
||||
entrylist.push(assetentry);
|
||||
}
|
||||
} else if (stat.isDirectory()) {
|
||||
if (dir == path.dirname(__dirname) + "/image/skin") {
|
||||
fs.readdir(url, function (err, list) {
|
||||
var num = 0;
|
||||
for (var i = 0; i < list.length; i++) {
|
||||
var url2 = url + "/" + list[i];
|
||||
var stat = fs.statSync(url2);
|
||||
if (
|
||||
stat.isFile() &&
|
||||
path.extname(url2) == ".jpg"
|
||||
) {
|
||||
num++;
|
||||
}
|
||||
}
|
||||
skinlist += "\t" + filename + ":" + num + ",\n";
|
||||
entrymap[filename] = num;
|
||||
shift();
|
||||
});
|
||||
delay = true;
|
||||
} else {
|
||||
get(url, shift);
|
||||
delay = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!delay) {
|
||||
shift();
|
||||
}
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
shift();
|
||||
});
|
||||
};
|
||||
|
||||
get(path.dirname(__dirname), function () {
|
||||
var diff = false;
|
||||
if (window.noname_asset_list.length == entrylist.length + 1) {
|
||||
for (var i = 0; i < entrylist.length; i++) {
|
||||
if (entrylist[i] != window.noname_asset_list[i + 1]) {
|
||||
diff = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!diff) {
|
||||
for (var i in entrymap) {
|
||||
if (window.noname_skin_list[i] !== entrymap[i]) {
|
||||
diff = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (var i in noname_skin_list) {
|
||||
if (window.noname_skin_list[i] !== entrymap[i]) {
|
||||
diff = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
diff = true;
|
||||
}
|
||||
var next = function () {
|
||||
exec("git diff --name-only", (error, stdout, stderr) => {
|
||||
var updatelist =
|
||||
"window.noname_update={\n\tversion:'" + updates.version + "',";
|
||||
updatelist += "\n\tupdate:'" + (updates.update || "") + "',";
|
||||
var apply = function (name, list) {
|
||||
updatelist += "\n\t" + name + ":[\n";
|
||||
for (var i = 0; i < list.length; i++) {
|
||||
updatelist += "\t\t'" + list[i] + "'";
|
||||
if (i < list.length - 1) {
|
||||
updatelist += ",";
|
||||
}
|
||||
updatelist += "\n";
|
||||
}
|
||||
updatelist += "\t]";
|
||||
};
|
||||
if (updates.changeLog) {
|
||||
apply("changeLog", updates.changeLog);
|
||||
updatelist += ",";
|
||||
}
|
||||
if (updates.players) {
|
||||
apply("players", updates.players);
|
||||
updatelist += ",";
|
||||
}
|
||||
if (updates.cards) {
|
||||
apply("cards", updates.cards);
|
||||
updatelist += ",";
|
||||
}
|
||||
var changes = stdout.split("\n");
|
||||
for (var i = 0; i < changes.length; i++) {
|
||||
var extname = path.extname(changes[i]);
|
||||
if (
|
||||
!changes[i] ||
|
||||
(extname != ".js" && extname != ".css") ||
|
||||
changes[i] == "game/update.js"
|
||||
) {
|
||||
changes.splice(i--, 1);
|
||||
}
|
||||
}
|
||||
var files;
|
||||
if (newversion) {
|
||||
files = [];
|
||||
} else {
|
||||
files = updates.files || [];
|
||||
}
|
||||
for (var i = 0; i < changes.length; i++) {
|
||||
if (files.indexOf(changes[i]) === -1) {
|
||||
files.push(changes[i]);
|
||||
}
|
||||
}
|
||||
files.sort(function (a, b) {
|
||||
if (a > b) return 1;
|
||||
if (a < b) return -1;
|
||||
return 0;
|
||||
});
|
||||
apply("files", files);
|
||||
fs.writeFile(
|
||||
"game/update.js",
|
||||
updatelist + "\n};",
|
||||
"utf-8",
|
||||
function () {
|
||||
console.log("updated update.js");
|
||||
if (commit && typeof commit === "string") {
|
||||
exec("git add . && git commit -am " + commit);
|
||||
console.log("committed " + commit);
|
||||
}
|
||||
}
|
||||
);
|
||||
});
|
||||
};
|
||||
if (diff) {
|
||||
var assetversion =
|
||||
"window.noname_asset_list=[\n\t'" + updates.version + "'";
|
||||
fs.writeFile(
|
||||
"game/asset.js",
|
||||
assetversion +
|
||||
assetlist +
|
||||
"\n];\n" +
|
||||
skinlist.slice(0, skinlist.length - 2) +
|
||||
"\n};",
|
||||
"utf-8",
|
||||
function () {
|
||||
console.log("udpated asset.js");
|
||||
next();
|
||||
}
|
||||
);
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
});
|
||||
|
|
308
game/entry.js
308
game/entry.js
|
@ -1,137 +1,171 @@
|
|||
import { game, get, lib, boot } from "../noname.js";
|
||||
import { canUseHttpProtocol, sendUpdate } from "../noname/init/index.js";
|
||||
import { userAgent } from "../noname/util/index.js";
|
||||
|
||||
const coreAndVersion = get.coreInfo();
|
||||
const core = coreAndVersion[0], version = coreAndVersion[1];
|
||||
//@todo: 77 -> 80
|
||||
if (core === 'chrome' && !isNaN(version) && version < 77) {
|
||||
const tip = '检测到您的浏览器内核版本小于77,请及时升级浏览器或手机webview内核!';
|
||||
console.warn(tip);
|
||||
game.print(tip);
|
||||
const redirect_tip = `您使用的浏览器或无名杀客户端内核版本过低,将在未来的版本被废弃!\n目前使用的浏览器UA信息为:\n${userAgent}\n点击“确认”以前往GitHub下载最新版无名杀客户端(可能需要科学上网)。`;
|
||||
if (confirm(redirect_tip)) {
|
||||
window.open('https://github.com/libccy/noname/releases/tag/chromium77-client');
|
||||
}
|
||||
}
|
||||
|
||||
boot().then(() => {
|
||||
// 判断是否从file协议切换到http/s协议
|
||||
if (canUseHttpProtocol()) {
|
||||
/*
|
||||
升级方法:
|
||||
1. 游戏启动后导出数据,然后以http/s协议重启
|
||||
2. 以http/s协议导入数据
|
||||
3. 保存http/s协议的状态,以后不再以file协议启动
|
||||
*/
|
||||
// 导出数据到根目录的noname.config.txt
|
||||
let data;
|
||||
let export_data = function (data) {
|
||||
game.promises.writeFile(lib.init.encode(JSON.stringify(data)), './', 'noname.config.txt')
|
||||
.then(saveProtocol)
|
||||
.catch(e => {
|
||||
console.error('升级失败:', e);
|
||||
});
|
||||
};
|
||||
// @ts-ignore
|
||||
if (!lib.db) {
|
||||
data = {};
|
||||
for (let i in localStorage) {
|
||||
if (i.startsWith(lib.configprefix)) {
|
||||
data[i] = localStorage[i];
|
||||
}
|
||||
}
|
||||
export_data(data);
|
||||
}
|
||||
else {
|
||||
game.getDB('config', null, function (data1) {
|
||||
game.getDB('data', null, function (data2) {
|
||||
export_data({
|
||||
config: data1,
|
||||
data: data2
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
// 保存协议的切换状态
|
||||
function saveProtocol() {
|
||||
const url = sendUpdate();
|
||||
if (typeof url == 'string') {
|
||||
if (typeof window.require == 'function' && typeof window.process == 'object') {
|
||||
// @ts-ignore
|
||||
const remote = require('@electron/remote');
|
||||
const thisWindow = remote.getCurrentWindow();
|
||||
thisWindow.loadURL(url);
|
||||
} else {
|
||||
location.href = url;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 成功导入后删除noname.config.txt
|
||||
let searchParams = new URLSearchParams(location.search);
|
||||
for (let [key, value] of searchParams) {
|
||||
if (key === 'sendUpdate' && value === 'true') {
|
||||
game.promises.readFileAsText('noname.config.txt').then(data => {
|
||||
return /** @type {Promise<void>} */(new Promise(async (resolve, reject) => {
|
||||
if (!data) return reject('!data');
|
||||
try {
|
||||
data = JSON.parse(lib.init.decode(data));
|
||||
if (!data || typeof data != 'object') {
|
||||
throw ('err');
|
||||
}
|
||||
// @ts-ignore
|
||||
if (lib.db && (!data.config || !data.data)) {
|
||||
throw ('err');
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
console.log(e);
|
||||
if (e == 'err') {
|
||||
alert('导入文件格式不正确');
|
||||
reject('导入文件格式不正确');
|
||||
} else {
|
||||
alert('导入失败: ' + e.message);
|
||||
reject('导入失败: ' + e.message);
|
||||
}
|
||||
return;
|
||||
}
|
||||
alert('导入成功, 即将自动重启');
|
||||
// @ts-ignore
|
||||
if (!lib.db) {
|
||||
const noname_inited = localStorage.getItem('noname_inited');
|
||||
const onlineKey = localStorage.getItem(lib.configprefix + 'key');
|
||||
localStorage.clear();
|
||||
if (noname_inited) {
|
||||
localStorage.setItem('noname_inited', noname_inited);
|
||||
}
|
||||
if (onlineKey) {
|
||||
localStorage.setItem(lib.configprefix + 'key', onlineKey);
|
||||
}
|
||||
for (let i in data) {
|
||||
localStorage.setItem(i, data[i]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (let i in data.config) {
|
||||
await game.putDB('config', i, data.config[i]);
|
||||
lib.config[i] = data.config[i];
|
||||
}
|
||||
for (let i in data.data) {
|
||||
await game.putDB('data', i, data.data[i]);
|
||||
}
|
||||
}
|
||||
lib.init.background();
|
||||
resolve();
|
||||
}));
|
||||
}).then(() => {
|
||||
return game.promises.removeFile('noname.config.txt');
|
||||
}).then(() => {
|
||||
const url = new URL(location.href);
|
||||
location.href = url.origin + url.pathname;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
import { game, get, lib, boot } from "../noname.js";
|
||||
import { canUseHttpProtocol, sendUpdate } from "../noname/init/index.js";
|
||||
import { userAgent } from "../noname/util/index.js";
|
||||
|
||||
const coreAndVersion = get.coreInfo();
|
||||
const core = coreAndVersion[0],
|
||||
version = coreAndVersion[1];
|
||||
//@todo: 77 -> 80
|
||||
if (core === "chrome" && !isNaN(version) && version < 77) {
|
||||
const tip =
|
||||
"检测到您的浏览器内核版本小于77,请及时升级浏览器或手机webview内核!";
|
||||
console.warn(tip);
|
||||
game.print(tip);
|
||||
const redirect_tip = `您使用的浏览器或无名杀客户端内核版本过低,将在未来的版本被废弃!\n目前使用的浏览器UA信息为:\n${userAgent}\n点击“确认”以前往GitHub下载最新版无名杀客户端(可能需要科学上网)。`;
|
||||
if (confirm(redirect_tip)) {
|
||||
window.open(
|
||||
"https://github.com/libccy/noname/releases/tag/chromium77-client"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
boot().then(() => {
|
||||
// 判断是否从file协议切换到http/s协议
|
||||
if (canUseHttpProtocol()) {
|
||||
/*
|
||||
升级方法:
|
||||
1. 游戏启动后导出数据,然后以http/s协议重启
|
||||
2. 以http/s协议导入数据
|
||||
3. 保存http/s协议的状态,以后不再以file协议启动
|
||||
*/
|
||||
// 导出数据到根目录的noname.config.txt
|
||||
let data;
|
||||
let export_data = function (data) {
|
||||
game.promises
|
||||
.writeFile(
|
||||
lib.init.encode(JSON.stringify(data)),
|
||||
"./",
|
||||
"noname.config.txt"
|
||||
)
|
||||
.then(saveProtocol)
|
||||
.catch((e) => {
|
||||
console.error("升级失败:", e);
|
||||
});
|
||||
};
|
||||
// @ts-ignore
|
||||
if (!lib.db) {
|
||||
data = {};
|
||||
for (let i in localStorage) {
|
||||
if (i.startsWith(lib.configprefix)) {
|
||||
data[i] = localStorage[i];
|
||||
}
|
||||
}
|
||||
export_data(data);
|
||||
} else {
|
||||
game.getDB("config", null, function (data1) {
|
||||
game.getDB("data", null, function (data2) {
|
||||
export_data({
|
||||
config: data1,
|
||||
data: data2,
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
// 保存协议的切换状态
|
||||
function saveProtocol() {
|
||||
const url = sendUpdate();
|
||||
if (typeof url == "string") {
|
||||
if (
|
||||
typeof window.require == "function" &&
|
||||
typeof window.process == "object"
|
||||
) {
|
||||
// @ts-ignore
|
||||
const remote = require("@electron/remote");
|
||||
const thisWindow = remote.getCurrentWindow();
|
||||
thisWindow.loadURL(url);
|
||||
} else {
|
||||
location.href = url;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 成功导入后删除noname.config.txt
|
||||
let searchParams = new URLSearchParams(location.search);
|
||||
for (let [key, value] of searchParams) {
|
||||
if (key === "sendUpdate" && value === "true") {
|
||||
game.promises
|
||||
.readFileAsText("noname.config.txt")
|
||||
.then((data) => {
|
||||
return /** @type {Promise<void>} */ (
|
||||
new Promise(async (resolve, reject) => {
|
||||
if (!data) return reject("!data");
|
||||
try {
|
||||
data = JSON.parse(lib.init.decode(data));
|
||||
if (!data || typeof data != "object") {
|
||||
throw "err";
|
||||
}
|
||||
// @ts-ignore
|
||||
if (
|
||||
lib.db &&
|
||||
(!data.config || !data.data)
|
||||
) {
|
||||
throw "err";
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
if (e == "err") {
|
||||
alert("导入文件格式不正确");
|
||||
reject("导入文件格式不正确");
|
||||
} else {
|
||||
alert("导入失败: " + e.message);
|
||||
reject("导入失败: " + e.message);
|
||||
}
|
||||
return;
|
||||
}
|
||||
alert("导入成功, 即将自动重启");
|
||||
// @ts-ignore
|
||||
if (!lib.db) {
|
||||
const noname_inited =
|
||||
localStorage.getItem("noname_inited");
|
||||
const onlineKey = localStorage.getItem(
|
||||
lib.configprefix + "key"
|
||||
);
|
||||
localStorage.clear();
|
||||
if (noname_inited) {
|
||||
localStorage.setItem(
|
||||
"noname_inited",
|
||||
noname_inited
|
||||
);
|
||||
}
|
||||
if (onlineKey) {
|
||||
localStorage.setItem(
|
||||
lib.configprefix + "key",
|
||||
onlineKey
|
||||
);
|
||||
}
|
||||
for (let i in data) {
|
||||
localStorage.setItem(i, data[i]);
|
||||
}
|
||||
} else {
|
||||
for (let i in data.config) {
|
||||
await game.putDB(
|
||||
"config",
|
||||
i,
|
||||
data.config[i]
|
||||
);
|
||||
lib.config[i] = data.config[i];
|
||||
}
|
||||
for (let i in data.data) {
|
||||
await game.putDB(
|
||||
"data",
|
||||
i,
|
||||
data.data[i]
|
||||
);
|
||||
}
|
||||
}
|
||||
lib.init.background();
|
||||
resolve();
|
||||
})
|
||||
);
|
||||
})
|
||||
.then(() => {
|
||||
return game.promises.removeFile("noname.config.txt");
|
||||
})
|
||||
.then(() => {
|
||||
const url = new URL(location.href);
|
||||
location.href = url.origin + url.pathname;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
533
game/game.js
533
game/game.js
|
@ -1,232 +1,301 @@
|
|||
"use strict";
|
||||
|
||||
new Promise(resolve => {
|
||||
// 客户端自带core.js的请注意跟进core.js版本
|
||||
if ('__core-js_shared__' in window) resolve(null);
|
||||
else {
|
||||
const nonameInitialized = localStorage.getItem('noname_inited');
|
||||
const assetURL = location.protocol.startsWith('http') || typeof nonameInitialized != 'string' || nonameInitialized == 'nodejs' ? '' : nonameInitialized;
|
||||
const coreJSBundle = document.createElement('script');
|
||||
coreJSBundle.onerror = coreJSBundle.onload = resolve;
|
||||
coreJSBundle.src = `${assetURL}game/core-js-bundle.js`;
|
||||
document.head.appendChild(coreJSBundle);
|
||||
}
|
||||
}).then(() => {
|
||||
const nonameInitialized = localStorage.getItem('noname_inited');
|
||||
const assetURL = location.protocol.startsWith('http') || typeof nonameInitialized != 'string' || nonameInitialized == 'nodejs' ? '' : nonameInitialized;
|
||||
const userAgent = navigator.userAgent.toLowerCase();
|
||||
|
||||
const exit = () => {
|
||||
const ios = userAgent.includes('iphone') || userAgent.includes('ipad') || userAgent.includes('macintosh');
|
||||
//electron
|
||||
if (typeof window.process == 'object' && typeof window.require == 'function') {
|
||||
const versions = window.process.versions;
|
||||
// @ts-ignore
|
||||
const electronVersion = parseFloat(versions.electron);
|
||||
let remote;
|
||||
if (electronVersion >= 14) {
|
||||
// @ts-ignore
|
||||
remote = require('@electron/remote');
|
||||
} else {
|
||||
// @ts-ignore
|
||||
remote = require('electron').remote;
|
||||
}
|
||||
const thisWindow = remote.getCurrentWindow();
|
||||
thisWindow.destroy();
|
||||
window.process.exit();
|
||||
}
|
||||
//android-cordova环境
|
||||
//ios-cordova环境或ios浏览器环境
|
||||
//非ios的网页版
|
||||
else if (!ios) {
|
||||
window.close();
|
||||
}
|
||||
};
|
||||
|
||||
// 这个弹窗,在升级到http协议下的客户端不应该进行提示。
|
||||
if (!localStorage.getItem('gplv3_noname_alerted')) {
|
||||
const nonameInitialized = localStorage.getItem('noname_inited');
|
||||
const callback = () => {
|
||||
if (confirm('①无名杀是一款基于GPLv3协议的开源软件!\n你可以在遵守GPLv3协议的基础上任意使用,修改并转发《无名杀》,以及所有基于《无名杀》开发的拓展。\n点击“确定”即代表您认可并接受GPLv3协议↓️\nhttps://www.gnu.org/licenses/gpl-3.0.html\n②无名杀官方发布地址仅有GitHub仓库!\n其他所有的所谓“无名杀”社群(包括但不限于绝大多数“官方”QQ群、QQ频道等)均为玩家自发组织,与无名杀官方无关!')) {
|
||||
// @ts-ignore
|
||||
localStorage.setItem('gplv3_noname_alerted', true);
|
||||
}
|
||||
else {
|
||||
exit();
|
||||
}
|
||||
};
|
||||
if (location.protocol.startsWith('http')) {
|
||||
if (!nonameInitialized || nonameInitialized.length == 0) {
|
||||
callback();
|
||||
} else {
|
||||
// @ts-ignore
|
||||
localStorage.setItem('gplv3_noname_alerted', true);
|
||||
}
|
||||
} else callback();
|
||||
|
||||
}
|
||||
window['b' + 'ann' + 'e' + 'dE' + 'x' + 'ten' + 's' + 'i' + 'o' + 'ns'] = ['\u4fa0\u4e49', '\u5168\u6559\u7a0b'];
|
||||
|
||||
/**
|
||||
*
|
||||
* @returns {["firefox" | "chrome" | "safari" | "other", number, number, number]}
|
||||
*/
|
||||
function coreInfo() {
|
||||
const regex = /(firefox|chrome|safari)\/(\d+(?:\.\d+)+)/
|
||||
let result
|
||||
if (!(result = userAgent.match(regex))) return ["other", NaN, NaN, NaN]
|
||||
if (result[1] != "safari") {
|
||||
const [major, minor, patch] = result[2].split(".")
|
||||
// @ts-ignore
|
||||
return [result[1], parseInt(major), parseInt(minor), parseInt(patch)]
|
||||
}
|
||||
result = userAgent.match(/version\/(\d+(?:\.\d+)+).*safari/)
|
||||
// @ts-ignore
|
||||
const [major, minor, patch] = result[1].split(".")
|
||||
return ["safari", parseInt(major), parseInt(minor), parseInt(patch)]
|
||||
}
|
||||
const [core, major, minor, patch] = coreInfo();
|
||||
const supportMap = {
|
||||
"firefox": [60, 0, 0],
|
||||
"chrome": [61, 0, 0],
|
||||
"safari": [14, 5, 0]
|
||||
}
|
||||
const versions = [major, minor, patch]
|
||||
// require是需求的版本号,current是浏览器环境本身的版本号
|
||||
const check = (require, current) => {
|
||||
// 防止不存在的意外,提前截断当前版本号的长度
|
||||
if (current.length > require.length) current.length = require.length
|
||||
|
||||
// 考虑到玄学的NaN情况,记录是否存在NaN
|
||||
let flag = false
|
||||
// 从主版本号遍历到修订版本号,只考虑当前版本号的长度
|
||||
for (let i = 0; i < current.length; ++i) {
|
||||
// 当前环境版本号当前位若是NaN,则记录后直接到下一位
|
||||
if (isNaN(current[i])) {
|
||||
flag = true
|
||||
continue
|
||||
}
|
||||
// 如果此时flag为true且current[i]不为NaN,版本号则不合法,直接否
|
||||
if (flag) return false
|
||||
// 上位版本号未达到要求,直接否决
|
||||
if (require[i] > current[i]) return false
|
||||
// 上位版本号已超过要求,直接可行
|
||||
if (current[i] > require[i]) return true
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
if (core in supportMap && !check(supportMap[core], versions)) {
|
||||
const tip = '检测到您的浏览器内核版本无法支持当前无名杀所需的功能,请立即升级浏览器或手机webview内核!';
|
||||
console.error(tip);
|
||||
let redirect_tip = `您使用的浏览器或无名杀客户端内核版本过低,已经无法正常运行无名杀!\n目前使用的浏览器UA信息为:\n${userAgent}\n点击“确认”以前往GitHub下载最新版无名杀客户端(可能需要科学上网)。\n稍后您的无名杀将自动退出(可能的话)`;
|
||||
if (core === 'safari') {
|
||||
alert(`您使用的safari浏览器无法支持当前无名杀所需的功能,请至少升级至14.5.0!\n稍后您的无名杀将自动退出(可能的话)`);
|
||||
} else {
|
||||
if (confirm(redirect_tip)) {
|
||||
window.open('https://github.com/libccy/noname/releases/tag/chromium77-client');
|
||||
}
|
||||
}
|
||||
exit();
|
||||
}
|
||||
else {
|
||||
// node环境下
|
||||
if (typeof window.require == 'function' &&
|
||||
typeof window.process == 'object' &&
|
||||
typeof window.__dirname == 'string') {
|
||||
// 在http环境下修改__dirname和require的逻辑
|
||||
if (location.protocol.startsWith('http') &&
|
||||
window.__dirname.endsWith('electron.asar\\renderer')) {
|
||||
const path = require('path');
|
||||
window.__dirname = path.join(path.resolve(), 'resources/app');
|
||||
const oldData = Object.entries(window.require);
|
||||
// @ts-ignore
|
||||
window.require = function (moduleId) {
|
||||
try {
|
||||
return module.require(moduleId);
|
||||
} catch {
|
||||
return module.require(path.join(window.__dirname, moduleId));
|
||||
}
|
||||
};
|
||||
oldData.forEach(([key, value]) => {
|
||||
window.require[key] = value;
|
||||
});
|
||||
}
|
||||
// 增加导入ts的逻辑
|
||||
window.require.extensions['.ts'] = function (module, filename) {
|
||||
// @ts-ignore
|
||||
const _compile = module._compile;
|
||||
// @ts-ignore
|
||||
module._compile = function (code, fileName) {
|
||||
/**
|
||||
* @type { import('typescript') }
|
||||
*/
|
||||
// @ts-ignore
|
||||
const ts = require('./game/typescript.js');
|
||||
// 使用ts compiler对ts文件进行编译
|
||||
const result = ts.transpile(code, {
|
||||
module: ts.ModuleKind.CommonJS,
|
||||
//@todo: ES2019 -> ES2020
|
||||
target: ts.ScriptTarget.ES2019,
|
||||
inlineSourceMap: true,
|
||||
resolveJsonModule: true,
|
||||
esModuleInterop: true,
|
||||
}, fileName);
|
||||
// 使用默认的js编译函数获取返回值
|
||||
return _compile.call(this, result, fileName);
|
||||
}
|
||||
// @ts-ignore
|
||||
module._compile(require('fs').readFileSync(filename, 'utf8'), filename);
|
||||
};
|
||||
}
|
||||
// 使serviceWorker加载完成后,再加载entry.js
|
||||
const loadEntryJs = () => {
|
||||
const script = document.createElement('script')
|
||||
script.type = "module";
|
||||
script.src = `${assetURL}game/entry.js`;
|
||||
script.async = true;
|
||||
script.onerror = event => {
|
||||
console.error(event);
|
||||
const message = `您使用的浏览器或《无名杀》客户端加载内容失败!\n请检查是否缺少游戏文件!隔版本更新请下载完整包而不是离线包!\n目前使用的浏览器UA信息为:\n${userAgent}\n若您使用的客户端为自带内核的旧版“兼容版”,请及时更新客户端版本!\n若您使用的客户端为手机端的非兼容版《无名杀》,请尝试更新手机的WebView内核,或者更换为1.8.2版本及以上的兼容版!\n若您是直接使用浏览器加载index.html进行游戏,请改为运行文件夹内的“noname-server.exe”(或使用VSCode等工具启动Live Server),以动态服务器的方式启动《无名杀》!\n若您使用的是苹果端,请至少将Safari升级至14.5.0!`;
|
||||
console.error(message);
|
||||
alert(message);
|
||||
exit();
|
||||
}
|
||||
document.head.appendChild(script);
|
||||
};
|
||||
|
||||
if (location.protocol.startsWith('http') && 'serviceWorker' in navigator) {
|
||||
let scope = window.location.protocol + '//' + window.location.host + '/';
|
||||
navigator.serviceWorker.getRegistrations()
|
||||
.then(async registrations => {
|
||||
let findServiceWorker = registrations.find(registration => {
|
||||
return registration && registration.active && registration.active.scriptURL == `${scope}service-worker.js`;
|
||||
});
|
||||
try {
|
||||
const registration_1 = await navigator.serviceWorker.register(`${scope}service-worker.js`, {
|
||||
type: 'module',
|
||||
updateViaCache: "all",
|
||||
scope,
|
||||
});
|
||||
// 初次加载worker,需要重新启动一次
|
||||
if (!findServiceWorker) location.reload();
|
||||
// 接收消息,暂时没用到
|
||||
navigator.serviceWorker.addEventListener('message', e => {
|
||||
console.log(e);
|
||||
});
|
||||
registration_1.update().catch(e => console.error('worker update失败', e));
|
||||
if (!sessionStorage.getItem('canUseTs')) {
|
||||
await import('./canUse.ts').then(({ text }) => console.log(text)).catch(() => {
|
||||
sessionStorage.setItem('canUseTs', '1');
|
||||
location.reload();
|
||||
});
|
||||
}
|
||||
} catch (e_1) {
|
||||
console.log('serviceWorker加载失败: ', e_1);
|
||||
}
|
||||
}).finally(loadEntryJs);
|
||||
} else {
|
||||
loadEntryJs();
|
||||
}
|
||||
}
|
||||
});
|
||||
"use strict";
|
||||
|
||||
new Promise((resolve) => {
|
||||
// 客户端自带core.js的请注意跟进core.js版本
|
||||
if ("__core-js_shared__" in window) resolve(null);
|
||||
else {
|
||||
const nonameInitialized = localStorage.getItem("noname_inited");
|
||||
const assetURL =
|
||||
location.protocol.startsWith("http") ||
|
||||
typeof nonameInitialized != "string" ||
|
||||
nonameInitialized == "nodejs"
|
||||
? ""
|
||||
: nonameInitialized;
|
||||
const coreJSBundle = document.createElement("script");
|
||||
coreJSBundle.onerror = coreJSBundle.onload = resolve;
|
||||
coreJSBundle.src = `${assetURL}game/core-js-bundle.js`;
|
||||
document.head.appendChild(coreJSBundle);
|
||||
}
|
||||
}).then(() => {
|
||||
const nonameInitialized = localStorage.getItem("noname_inited");
|
||||
const assetURL =
|
||||
location.protocol.startsWith("http") ||
|
||||
typeof nonameInitialized != "string" ||
|
||||
nonameInitialized == "nodejs"
|
||||
? ""
|
||||
: nonameInitialized;
|
||||
const userAgent = navigator.userAgent.toLowerCase();
|
||||
|
||||
const exit = () => {
|
||||
const ios =
|
||||
userAgent.includes("iphone") ||
|
||||
userAgent.includes("ipad") ||
|
||||
userAgent.includes("macintosh");
|
||||
//electron
|
||||
if (
|
||||
typeof window.process == "object" &&
|
||||
typeof window.require == "function"
|
||||
) {
|
||||
const versions = window.process.versions;
|
||||
// @ts-ignore
|
||||
const electronVersion = parseFloat(versions.electron);
|
||||
let remote;
|
||||
if (electronVersion >= 14) {
|
||||
// @ts-ignore
|
||||
remote = require("@electron/remote");
|
||||
} else {
|
||||
// @ts-ignore
|
||||
remote = require("electron").remote;
|
||||
}
|
||||
const thisWindow = remote.getCurrentWindow();
|
||||
thisWindow.destroy();
|
||||
window.process.exit();
|
||||
}
|
||||
//android-cordova环境
|
||||
//ios-cordova环境或ios浏览器环境
|
||||
//非ios的网页版
|
||||
else if (!ios) {
|
||||
window.close();
|
||||
}
|
||||
};
|
||||
|
||||
// 这个弹窗,在升级到http协议下的客户端不应该进行提示。
|
||||
if (!localStorage.getItem("gplv3_noname_alerted")) {
|
||||
const nonameInitialized = localStorage.getItem("noname_inited");
|
||||
const callback = () => {
|
||||
if (
|
||||
confirm(
|
||||
"①无名杀是一款基于GPLv3协议的开源软件!\n你可以在遵守GPLv3协议的基础上任意使用,修改并转发《无名杀》,以及所有基于《无名杀》开发的拓展。\n点击“确定”即代表您认可并接受GPLv3协议↓️\nhttps://www.gnu.org/licenses/gpl-3.0.html\n②无名杀官方发布地址仅有GitHub仓库!\n其他所有的所谓“无名杀”社群(包括但不限于绝大多数“官方”QQ群、QQ频道等)均为玩家自发组织,与无名杀官方无关!"
|
||||
)
|
||||
) {
|
||||
// @ts-ignore
|
||||
localStorage.setItem("gplv3_noname_alerted", true);
|
||||
} else {
|
||||
exit();
|
||||
}
|
||||
};
|
||||
if (location.protocol.startsWith("http")) {
|
||||
if (!nonameInitialized || nonameInitialized.length == 0) {
|
||||
callback();
|
||||
} else {
|
||||
// @ts-ignore
|
||||
localStorage.setItem("gplv3_noname_alerted", true);
|
||||
}
|
||||
} else callback();
|
||||
}
|
||||
window["b" + "ann" + "e" + "dE" + "x" + "ten" + "s" + "i" + "o" + "ns"] = [
|
||||
"\u4fa0\u4e49",
|
||||
"\u5168\u6559\u7a0b",
|
||||
];
|
||||
|
||||
/**
|
||||
*
|
||||
* @returns {["firefox" | "chrome" | "safari" | "other", number, number, number]}
|
||||
*/
|
||||
function coreInfo() {
|
||||
const regex = /(firefox|chrome|safari)\/(\d+(?:\.\d+)+)/;
|
||||
let result;
|
||||
if (!(result = userAgent.match(regex))) return ["other", NaN, NaN, NaN];
|
||||
if (result[1] != "safari") {
|
||||
const [major, minor, patch] = result[2].split(".");
|
||||
// @ts-ignore
|
||||
return [
|
||||
result[1],
|
||||
parseInt(major),
|
||||
parseInt(minor),
|
||||
parseInt(patch),
|
||||
];
|
||||
}
|
||||
result = userAgent.match(/version\/(\d+(?:\.\d+)+).*safari/);
|
||||
// @ts-ignore
|
||||
const [major, minor, patch] = result[1].split(".");
|
||||
return ["safari", parseInt(major), parseInt(minor), parseInt(patch)];
|
||||
}
|
||||
const [core, major, minor, patch] = coreInfo();
|
||||
const supportMap = {
|
||||
firefox: [60, 0, 0],
|
||||
chrome: [61, 0, 0],
|
||||
safari: [14, 5, 0],
|
||||
};
|
||||
const versions = [major, minor, patch];
|
||||
// require是需求的版本号,current是浏览器环境本身的版本号
|
||||
const check = (require, current) => {
|
||||
// 防止不存在的意外,提前截断当前版本号的长度
|
||||
if (current.length > require.length) current.length = require.length;
|
||||
|
||||
// 考虑到玄学的NaN情况,记录是否存在NaN
|
||||
let flag = false;
|
||||
// 从主版本号遍历到修订版本号,只考虑当前版本号的长度
|
||||
for (let i = 0; i < current.length; ++i) {
|
||||
// 当前环境版本号当前位若是NaN,则记录后直接到下一位
|
||||
if (isNaN(current[i])) {
|
||||
flag = true;
|
||||
continue;
|
||||
}
|
||||
// 如果此时flag为true且current[i]不为NaN,版本号则不合法,直接否
|
||||
if (flag) return false;
|
||||
// 上位版本号未达到要求,直接否决
|
||||
if (require[i] > current[i]) return false;
|
||||
// 上位版本号已超过要求,直接可行
|
||||
if (current[i] > require[i]) return true;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
if (core in supportMap && !check(supportMap[core], versions)) {
|
||||
const tip =
|
||||
"检测到您的浏览器内核版本无法支持当前无名杀所需的功能,请立即升级浏览器或手机webview内核!";
|
||||
console.error(tip);
|
||||
let redirect_tip = `您使用的浏览器或无名杀客户端内核版本过低,已经无法正常运行无名杀!\n目前使用的浏览器UA信息为:\n${userAgent}\n点击“确认”以前往GitHub下载最新版无名杀客户端(可能需要科学上网)。\n稍后您的无名杀将自动退出(可能的话)`;
|
||||
if (core === "safari") {
|
||||
alert(
|
||||
`您使用的safari浏览器无法支持当前无名杀所需的功能,请至少升级至14.5.0!\n稍后您的无名杀将自动退出(可能的话)`
|
||||
);
|
||||
} else {
|
||||
if (confirm(redirect_tip)) {
|
||||
window.open(
|
||||
"https://github.com/libccy/noname/releases/tag/chromium77-client"
|
||||
);
|
||||
}
|
||||
}
|
||||
exit();
|
||||
} else {
|
||||
// node环境下
|
||||
if (
|
||||
typeof window.require == "function" &&
|
||||
typeof window.process == "object" &&
|
||||
typeof window.__dirname == "string"
|
||||
) {
|
||||
// 在http环境下修改__dirname和require的逻辑
|
||||
if (
|
||||
location.protocol.startsWith("http") &&
|
||||
window.__dirname.endsWith("electron.asar\\renderer")
|
||||
) {
|
||||
const path = require("path");
|
||||
window.__dirname = path.join(path.resolve(), "resources/app");
|
||||
const oldData = Object.entries(window.require);
|
||||
// @ts-ignore
|
||||
window.require = function (moduleId) {
|
||||
try {
|
||||
return module.require(moduleId);
|
||||
} catch {
|
||||
return module.require(
|
||||
path.join(window.__dirname, moduleId)
|
||||
);
|
||||
}
|
||||
};
|
||||
oldData.forEach(([key, value]) => {
|
||||
window.require[key] = value;
|
||||
});
|
||||
}
|
||||
// 增加导入ts的逻辑
|
||||
window.require.extensions[".ts"] = function (module, filename) {
|
||||
// @ts-ignore
|
||||
const _compile = module._compile;
|
||||
// @ts-ignore
|
||||
module._compile = function (code, fileName) {
|
||||
/**
|
||||
* @type { import('typescript') }
|
||||
*/
|
||||
// @ts-ignore
|
||||
const ts = require("./game/typescript.js");
|
||||
// 使用ts compiler对ts文件进行编译
|
||||
const result = ts.transpile(
|
||||
code,
|
||||
{
|
||||
module: ts.ModuleKind.CommonJS,
|
||||
//@todo: ES2019 -> ES2020
|
||||
target: ts.ScriptTarget.ES2019,
|
||||
inlineSourceMap: true,
|
||||
resolveJsonModule: true,
|
||||
esModuleInterop: true,
|
||||
},
|
||||
fileName
|
||||
);
|
||||
// 使用默认的js编译函数获取返回值
|
||||
return _compile.call(this, result, fileName);
|
||||
};
|
||||
// @ts-ignore
|
||||
module._compile(
|
||||
require("fs").readFileSync(filename, "utf8"),
|
||||
filename
|
||||
);
|
||||
};
|
||||
}
|
||||
// 使serviceWorker加载完成后,再加载entry.js
|
||||
const loadEntryJs = () => {
|
||||
const script = document.createElement("script");
|
||||
script.type = "module";
|
||||
script.src = `${assetURL}game/entry.js`;
|
||||
script.async = true;
|
||||
script.onerror = (event) => {
|
||||
console.error(event);
|
||||
const message = `您使用的浏览器或《无名杀》客户端加载内容失败!\n请检查是否缺少游戏文件!隔版本更新请下载完整包而不是离线包!\n目前使用的浏览器UA信息为:\n${userAgent}\n若您使用的客户端为自带内核的旧版“兼容版”,请及时更新客户端版本!\n若您使用的客户端为手机端的非兼容版《无名杀》,请尝试更新手机的WebView内核,或者更换为1.8.2版本及以上的兼容版!\n若您是直接使用浏览器加载index.html进行游戏,请改为运行文件夹内的“noname-server.exe”(或使用VSCode等工具启动Live Server),以动态服务器的方式启动《无名杀》!\n若您使用的是苹果端,请至少将Safari升级至14.5.0!`;
|
||||
console.error(message);
|
||||
alert(message);
|
||||
exit();
|
||||
};
|
||||
document.head.appendChild(script);
|
||||
};
|
||||
|
||||
if (
|
||||
location.protocol.startsWith("http") &&
|
||||
"serviceWorker" in navigator
|
||||
) {
|
||||
let scope =
|
||||
window.location.protocol + "//" + window.location.host + "/";
|
||||
navigator.serviceWorker
|
||||
.getRegistrations()
|
||||
.then(async (registrations) => {
|
||||
let findServiceWorker = registrations.find(
|
||||
(registration) => {
|
||||
return (
|
||||
registration &&
|
||||
registration.active &&
|
||||
registration.active.scriptURL ==
|
||||
`${scope}service-worker.js`
|
||||
);
|
||||
}
|
||||
);
|
||||
try {
|
||||
const registration_1 =
|
||||
await navigator.serviceWorker.register(
|
||||
`${scope}service-worker.js`,
|
||||
{
|
||||
type: "module",
|
||||
updateViaCache: "all",
|
||||
scope,
|
||||
}
|
||||
);
|
||||
// 初次加载worker,需要重新启动一次
|
||||
if (!findServiceWorker) location.reload();
|
||||
// 接收消息,暂时没用到
|
||||
navigator.serviceWorker.addEventListener(
|
||||
"message",
|
||||
(e) => {
|
||||
console.log(e);
|
||||
}
|
||||
);
|
||||
registration_1
|
||||
.update()
|
||||
.catch((e) =>
|
||||
console.error("worker update失败", e)
|
||||
);
|
||||
if (!sessionStorage.getItem("canUseTs")) {
|
||||
await import("./canUse.ts")
|
||||
.then(({ text }) => console.log(text))
|
||||
.catch(() => {
|
||||
sessionStorage.setItem("canUseTs", "1");
|
||||
location.reload();
|
||||
});
|
||||
}
|
||||
} catch (e_1) {
|
||||
console.log("serviceWorker加载失败: ", e_1);
|
||||
}
|
||||
})
|
||||
.finally(loadEntryJs);
|
||||
} else {
|
||||
loadEntryJs();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
198
game/http.js
198
game/http.js
|
@ -1,87 +1,111 @@
|
|||
var http = require('http');
|
||||
var fs = require('fs');
|
||||
var server = new http.Server();
|
||||
server.listen(80);
|
||||
server.on('request', function(request, response) {
|
||||
var url = require('url').parse(request.url);
|
||||
switch(url.pathname) {
|
||||
case ''||'/' :
|
||||
fs.readFile('./index.html', function(err, content){
|
||||
if(err) {
|
||||
response.writeHead(404, { 'Content-Type':'text/plain; charset="UTF-8"' });
|
||||
response.write(err.message);
|
||||
response.end();
|
||||
} else {
|
||||
response.writeHead(200, { 'Content-Type' : 'text/html; charset=UTF-8' });
|
||||
response.write(content);
|
||||
response.end();
|
||||
}
|
||||
});
|
||||
break;
|
||||
case '/test/delay':
|
||||
var delay = parseInt(url.query) || 2000;
|
||||
response.writeHead(200, {'Content-type':'text/plain; charset=UTF-8'});
|
||||
response.write('Sleeping for' + delay + ' milliseconds...');
|
||||
setTimeout(function(){
|
||||
response.write('done.');
|
||||
response.end();
|
||||
}, delay);
|
||||
break;
|
||||
case '/test/mirror':
|
||||
response.writeHead(200, {'Content-type':'text/plain; charset=UTF-8'});
|
||||
response.write(request.mothod + ' ' + request.url + ' HTTP/' + request.httpVersion + '\r\n');
|
||||
for (var h in request.headers) {
|
||||
response.write(h + ':' + request.headers[h] + '\r\n');
|
||||
}
|
||||
response.write('\r\n');
|
||||
request.on('data', function(chunk) { response.write(chunk); });
|
||||
request.on('end', function(chunk){ response.end(); });
|
||||
break;
|
||||
case '/json' :
|
||||
response.writeHead(200, {'Content-type':'application/json; charset=UTF-8'});
|
||||
response.write(JSON.stringify({test:'success'}));
|
||||
response.end();
|
||||
break;
|
||||
default:
|
||||
var filename = url.pathname.substring(1);
|
||||
var type = getType(filename.substring(filename.lastIndexOf('.')+1));
|
||||
fs.readFile(filename, function(err, content){
|
||||
if(err) {
|
||||
response.writeHead(404, { 'Content-Type':'text/plain; charset="UTF-8"' });
|
||||
response.write(err.message);
|
||||
response.end();
|
||||
} else {
|
||||
response.writeHead(200, { 'Content-Type' : type });
|
||||
response.write(content);
|
||||
response.end();
|
||||
}
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
});
|
||||
function getType(endTag){
|
||||
var type=null;
|
||||
switch(endTag){
|
||||
case 'html' :
|
||||
case 'htm' :
|
||||
type = 'text/html; charset=UTF-8';
|
||||
break;
|
||||
case 'js' :
|
||||
type = 'application/javascript; charset="UTF-8"';
|
||||
break;
|
||||
case 'css' :
|
||||
type = 'text/css; charset="UTF-8"';
|
||||
break;
|
||||
case 'txt' :
|
||||
type = 'text/plain; charset="UTF-8"';
|
||||
break;
|
||||
case 'manifest' :
|
||||
type = 'text/cache-manifest; charset="UTF-8"';
|
||||
break;
|
||||
default :
|
||||
type = 'application/octet-stream';
|
||||
break;
|
||||
}
|
||||
return type;
|
||||
}
|
||||
var http = require("http");
|
||||
var fs = require("fs");
|
||||
var server = new http.Server();
|
||||
server.listen(80);
|
||||
server.on("request", function (request, response) {
|
||||
var url = require("url").parse(request.url);
|
||||
switch (url.pathname) {
|
||||
case "" || "/":
|
||||
fs.readFile("./index.html", function (err, content) {
|
||||
if (err) {
|
||||
response.writeHead(404, {
|
||||
"Content-Type": 'text/plain; charset="UTF-8"',
|
||||
});
|
||||
response.write(err.message);
|
||||
response.end();
|
||||
} else {
|
||||
response.writeHead(200, {
|
||||
"Content-Type": "text/html; charset=UTF-8",
|
||||
});
|
||||
response.write(content);
|
||||
response.end();
|
||||
}
|
||||
});
|
||||
break;
|
||||
case "/test/delay":
|
||||
var delay = parseInt(url.query) || 2000;
|
||||
response.writeHead(200, {
|
||||
"Content-type": "text/plain; charset=UTF-8",
|
||||
});
|
||||
response.write("Sleeping for" + delay + " milliseconds...");
|
||||
setTimeout(function () {
|
||||
response.write("done.");
|
||||
response.end();
|
||||
}, delay);
|
||||
break;
|
||||
case "/test/mirror":
|
||||
response.writeHead(200, {
|
||||
"Content-type": "text/plain; charset=UTF-8",
|
||||
});
|
||||
response.write(
|
||||
request.mothod +
|
||||
" " +
|
||||
request.url +
|
||||
" HTTP/" +
|
||||
request.httpVersion +
|
||||
"\r\n"
|
||||
);
|
||||
for (var h in request.headers) {
|
||||
response.write(h + ":" + request.headers[h] + "\r\n");
|
||||
}
|
||||
response.write("\r\n");
|
||||
request.on("data", function (chunk) {
|
||||
response.write(chunk);
|
||||
});
|
||||
request.on("end", function (chunk) {
|
||||
response.end();
|
||||
});
|
||||
break;
|
||||
case "/json":
|
||||
response.writeHead(200, {
|
||||
"Content-type": "application/json; charset=UTF-8",
|
||||
});
|
||||
response.write(JSON.stringify({ test: "success" }));
|
||||
response.end();
|
||||
break;
|
||||
default:
|
||||
var filename = url.pathname.substring(1);
|
||||
var type = getType(
|
||||
filename.substring(filename.lastIndexOf(".") + 1)
|
||||
);
|
||||
fs.readFile(filename, function (err, content) {
|
||||
if (err) {
|
||||
response.writeHead(404, {
|
||||
"Content-Type": 'text/plain; charset="UTF-8"',
|
||||
});
|
||||
response.write(err.message);
|
||||
response.end();
|
||||
} else {
|
||||
response.writeHead(200, { "Content-Type": type });
|
||||
response.write(content);
|
||||
response.end();
|
||||
}
|
||||
});
|
||||
break;
|
||||
}
|
||||
});
|
||||
function getType(endTag) {
|
||||
var type = null;
|
||||
switch (endTag) {
|
||||
case "html":
|
||||
case "htm":
|
||||
type = "text/html; charset=UTF-8";
|
||||
break;
|
||||
case "js":
|
||||
type = 'application/javascript; charset="UTF-8"';
|
||||
break;
|
||||
case "css":
|
||||
type = 'text/css; charset="UTF-8"';
|
||||
break;
|
||||
case "txt":
|
||||
type = 'text/plain; charset="UTF-8"';
|
||||
break;
|
||||
case "manifest":
|
||||
type = 'text/cache-manifest; charset="UTF-8"';
|
||||
break;
|
||||
default:
|
||||
type = "application/octet-stream";
|
||||
break;
|
||||
}
|
||||
return type;
|
||||
}
|
||||
|
|
21410
game/jszip.js
21410
game/jszip.js
File diff suppressed because it is too large
Load Diff
|
@ -1,3 +1,3 @@
|
|||
window.bannedKeyWords=JSON.parse(
|
||||
decodeURIComponent(
|
||||
atob("JTVCJTIyZ2hzJTIyJTJDJTIyJUU3JTlCJUI0JUU4JTgyJUEwJTIyJTJDJTIyJUU2JTgwJUE3JUU0JUJBJUE0JTIyJTJDJTIyJUU1JTgxJTlBJUU3JTg4JUIxJTIyJTJDJTIyaHR0cCUyMiUyQyUyMiVFNSU5MCU4MyVFNSVBNSVCNiUyMiUyQyUyMiVFOSVBQSU5QSVFOSU4MCVCQyUyMiUyQyUyMiVFNSU5MyU4OCVFNSVCNyVCNCVFNyU4QiU5NyUyMiUyQyUyMiVFNyVCRSU4RSVFNyU5QyU4OSUyMiUyQyUyMiVFNyU5OSU4QyUyMiUyQyUyMiVFNSVCMSU4MSVFNyU5QyVCQyUyMiUyQyUyMiVFOCU4OSVCOSUyMiUyQyUyMiVFNSU4MiVCQiVFOSU4MCVCQyUyMiUyQyUyMiVFNiU5MyU4RCVFNCVCRCVBMCUyMiUyQyUyMiVFNSU4MSU5QSVFOSVCOCVBMSUyMiUyQyUyMiVFNSVBNSVCOCUyMiUyQyUyMiVFNSVBNyVBNiUyMiUyQyUyMiVFNSU4RCU4RSVFNCVCOCVCQSUyMiUyQyUyMiVFNSVCMSU4NCUyMiUyQyUyMiVFNyU4QiU5NyVFNSVBRCU5MCUyMiUyQyUyMiVFNSVCMSU4RSUyMiUyQyUyMiVFNSU5MCU4QyVFNiU4MCVBNyVFNiU4MSU4QiUyMiUyQyUyMiVFOCU4MiU5NiVFNiU4OCU5OCUyMiUyQyUyMiVFOSVCOCVBMSVFNSVCNyVCNCUyMiUyQyUyMiVFNyVCMiVCRSVFNiVCNiVCMiUyMiUyQyUyMiVFNyVCMiVBQSVFNiVCMCVCNCUyMiUyQyUyMiVFNiU4QyU4MiVFNiU5QyU4OCVFNCVCQSVBRSVFNCVCOCVBRCUyMiUyQyUyMiVFOCVCNCVCMSVFOSVBQSVBOCVFNSVBNCVCNCUyMiUyQyUyMiVFNSU5MCU4MyVFNSVCMSU4MSUyMiUyQyUyMiVFNSU4MiVCQiUyMiUyQyUyMiVFNSVBNSVBNSVFNSU4OCVBOSVFNyVCQiU5OSUyMiUyQyUyMiVFNCVCOCU4MSVFNyU5QyU5RiUyMiUyQyUyMiVFOCU5QiU4NiUyMiUyQyUyMiVFOSVCQyVBMCVFOSVCQyVBMCUyMiUyQyUyMiVFOSVCQyVBMCVFNCVCQSVCQSUyMiUyQyUyMiVFNyVBNSU5RSVFNSU4RiU4QiUyMiUyQyUyMiUzQyUyRmElM0UlMjIlNUQ=")));
|
||||
atob("JTVCJTIyZ2hzJTIyJTJDJTIyJUU3JTlCJUI0JUU4JTgyJUEwJTIyJTJDJTIyJUU2JTgwJUE3JUU0JUJBJUE0JTIyJTJDJTIyJUU1JTgxJTlBJUU3JTg4JUIxJTIyJTJDJTIyaHR0cCUyMiUyQyUyMiVFNSU5MCU4MyVFNSVBNSVCNiUyMiUyQyUyMiVFOSVBQSU5QSVFOSU4MCVCQyUyMiUyQyUyMiVFNSU5MyU4OCVFNSVCNyVCNCVFNyU4QiU5NyUyMiUyQyUyMiVFNyVCRSU4RSVFNyU5QyU4OSUyMiUyQyUyMiVFNyU5OSU4QyUyMiUyQyUyMiVFNSVCMSU4MSVFNyU5QyVCQyUyMiUyQyUyMiVFOCU4OSVCOSUyMiUyQyUyMiVFNSU4MiVCQiVFOSU4MCVCQyUyMiUyQyUyMiVFNiU5MyU4RCVFNCVCRCVBMCUyMiUyQyUyMiVFNSU4MSU5QSVFOSVCOCVBMSUyMiUyQyUyMiVFNSVBNSVCOCUyMiUyQyUyMiVFNSVBNyVBNiUyMiUyQyUyMiVFNSU4RCU4RSVFNCVCOCVCQSUyMiUyQyUyMiVFNSVCMSU4NCUyMiUyQyUyMiVFNyU4QiU5NyVFNSVBRCU5MCUyMiUyQyUyMiVFNSVCMSU4RSUyMiUyQyUyMiVFNSU5MCU4QyVFNiU4MCVBNyVFNiU4MSU4QiUyMiUyQyUyMiVFOCU4MiU5NiVFNiU4OCU5OCUyMiUyQyUyMiVFOSVCOCVBMSVFNSVCNyVCNCUyMiUyQyUyMiVFNyVCMiVCRSVFNiVCNiVCMiUyMiUyQyUyMiVFNyVCMiVBQSVFNiVCMCVCNCUyMiUyQyUyMiVFNiU4QyU4MiVFNiU5QyU4OCVFNCVCQSVBRSVFNCVCOCVBRCUyMiUyQyUyMiVFOCVCNCVCMSVFOSVBQSVBOCVFNSVBNCVCNCUyMiUyQyUyMiVFNSU5MCU4MyVFNSVCMSU4MSUyMiUyQyUyMiVFNSU4MiVCQiUyMiUyQyUyMiVFNSVBNSVBNSVFNSU4OCVBOSVFNyVCQiU5OSUyMiUyQyUyMiVFNCVCOCU4MSVFNyU5QyU5RiUyMiUyQyUyMiVFOCU5QiU4NiUyMiUyQyUyMiVFOSVCQyVBMCVFOSVCQyVBMCUyMiUyQyUyMiVFOSVCQyVBMCVFNCVCQSVCQSUyMiUyQyUyMiVFNyVBNSU5RSVFNSU4RiU4QiUyMiUyQyUyMiUzQyUyRmElM0UlMjIlNUQ=")));
|
||||
|
|
260
game/package.js
260
game/package.js
|
@ -1,144 +1,144 @@
|
|||
window.noname_package={
|
||||
character:{
|
||||
standard:'标准',
|
||||
refresh:'界限突破',
|
||||
shenhua:'神话再临',
|
||||
yijiang:'一将成名',
|
||||
sp:'璀璨星河',
|
||||
onlyOL:'OL专属',
|
||||
yingbian:'文德武备',
|
||||
clan:'门阀士族',
|
||||
xinghuoliaoyuan:'星火燎原',
|
||||
huicui:'群英荟萃',
|
||||
xianding:'限定专属',
|
||||
sp2:'系列专属',
|
||||
extra:'神将',
|
||||
mobile:'移动版',
|
||||
shiji:'始计篇',
|
||||
sb:'谋攻篇',
|
||||
tw:'外服武将',
|
||||
collab:'联动卡',
|
||||
offline:'线下武将',
|
||||
jsrg:'江山如故',
|
||||
old:'怀旧',
|
||||
diy:'DIY',
|
||||
ddd:'3D精选',
|
||||
yxs:'英雄杀',
|
||||
hearth:'炉石传说',
|
||||
gwent:'昆特牌',
|
||||
mtg:'万智牌',
|
||||
ow:'守望先锋',
|
||||
swd:'轩辕剑',
|
||||
gujian:'古剑奇谭',
|
||||
xianjian:'仙剑奇侠传',
|
||||
window.noname_package = {
|
||||
character: {
|
||||
standard: "标准",
|
||||
refresh: "界限突破",
|
||||
shenhua: "神话再临",
|
||||
yijiang: "一将成名",
|
||||
sp: "璀璨星河",
|
||||
onlyOL: "OL专属",
|
||||
yingbian: "文德武备",
|
||||
clan: "门阀士族",
|
||||
xinghuoliaoyuan: "星火燎原",
|
||||
huicui: "群英荟萃",
|
||||
xianding: "限定专属",
|
||||
sp2: "系列专属",
|
||||
extra: "神将",
|
||||
mobile: "移动版",
|
||||
shiji: "始计篇",
|
||||
sb: "谋攻篇",
|
||||
tw: "外服武将",
|
||||
collab: "联动卡",
|
||||
offline: "线下武将",
|
||||
jsrg: "江山如故",
|
||||
old: "怀旧",
|
||||
diy: "DIY",
|
||||
ddd: "3D精选",
|
||||
yxs: "英雄杀",
|
||||
hearth: "炉石传说",
|
||||
gwent: "昆特牌",
|
||||
mtg: "万智牌",
|
||||
ow: "守望先锋",
|
||||
swd: "轩辕剑",
|
||||
gujian: "古剑奇谭",
|
||||
xianjian: "仙剑奇侠传",
|
||||
},
|
||||
card:{
|
||||
standard:'标准',
|
||||
extra:'军争',
|
||||
guozhan:'国战',
|
||||
yingbian:'应变篇',
|
||||
yongjian:'用间篇',
|
||||
sp:'忠胆英杰',
|
||||
zhulu:'逐鹿天下',
|
||||
yunchou:'运筹帷幄',
|
||||
zhenfa:'阵法',
|
||||
swd:'轩辕剑',
|
||||
gujian:'古剑奇谭',
|
||||
hearth:'炉石传说',
|
||||
gwent:'昆特牌',
|
||||
mtg:'万智牌',
|
||||
huanlekapai:'欢乐卡牌',
|
||||
card: {
|
||||
standard: "标准",
|
||||
extra: "军争",
|
||||
guozhan: "国战",
|
||||
yingbian: "应变篇",
|
||||
yongjian: "用间篇",
|
||||
sp: "忠胆英杰",
|
||||
zhulu: "逐鹿天下",
|
||||
yunchou: "运筹帷幄",
|
||||
zhenfa: "阵法",
|
||||
swd: "轩辕剑",
|
||||
gujian: "古剑奇谭",
|
||||
hearth: "炉石传说",
|
||||
gwent: "昆特牌",
|
||||
mtg: "万智牌",
|
||||
huanlekapai: "欢乐卡牌",
|
||||
},
|
||||
play:{
|
||||
boss:'诸神降临',
|
||||
cardpile:'牌堆补充',
|
||||
wuxing:'五行生克',
|
||||
coin:'富甲天下',
|
||||
play: {
|
||||
boss: "诸神降临",
|
||||
cardpile: "牌堆补充",
|
||||
wuxing: "五行生克",
|
||||
coin: "富甲天下",
|
||||
},
|
||||
mode:{
|
||||
identity:'身份',
|
||||
guozhan:'国战',
|
||||
versus:'对决',
|
||||
connect:'联机',
|
||||
boss:'挑战',
|
||||
doudizhu:'斗地主',
|
||||
single:'单挑',
|
||||
chess:'战棋',
|
||||
tafang:'塔防',
|
||||
stone:'炉石',
|
||||
brawl:'乱斗',
|
||||
mode: {
|
||||
identity: "身份",
|
||||
guozhan: "国战",
|
||||
versus: "对决",
|
||||
connect: "联机",
|
||||
boss: "挑战",
|
||||
doudizhu: "斗地主",
|
||||
single: "单挑",
|
||||
chess: "战棋",
|
||||
tafang: "塔防",
|
||||
stone: "炉石",
|
||||
brawl: "乱斗",
|
||||
},
|
||||
submode:{
|
||||
identity:{
|
||||
normal:'身份模式',
|
||||
zhong:'忠胆英杰',
|
||||
purple:'3v3v2',
|
||||
submode: {
|
||||
identity: {
|
||||
normal: "身份模式",
|
||||
zhong: "忠胆英杰",
|
||||
purple: "3v3v2",
|
||||
},
|
||||
guozhan:{
|
||||
normal:'国战模式',
|
||||
mingjiang:'明将国战'
|
||||
guozhan: {
|
||||
normal: "国战模式",
|
||||
mingjiang: "明将国战",
|
||||
},
|
||||
versus:{
|
||||
four:'四人对抗',
|
||||
three:'统率三军',
|
||||
two:'欢乐成双',
|
||||
jiange:'守卫剑阁',
|
||||
siguo:'四国争霸',
|
||||
standard:'自由对决'
|
||||
versus: {
|
||||
four: "四人对抗",
|
||||
three: "统率三军",
|
||||
two: "欢乐成双",
|
||||
jiange: "守卫剑阁",
|
||||
siguo: "四国争霸",
|
||||
standard: "自由对决",
|
||||
},
|
||||
chess:{
|
||||
combat:'战棋模式',
|
||||
three:'战棋统率',
|
||||
leader:'战棋君主'
|
||||
chess: {
|
||||
combat: "战棋模式",
|
||||
three: "战棋统率",
|
||||
leader: "战棋君主",
|
||||
},
|
||||
single:{
|
||||
normal:'新1v1',
|
||||
single: {
|
||||
normal: "新1v1",
|
||||
},
|
||||
},
|
||||
background:{
|
||||
ol_bg:'龙纹',
|
||||
planetarian_bg:'星梦',
|
||||
heaven_bg:'红烧',
|
||||
kyoani_bg:'京都',
|
||||
key_bg:'键社',
|
||||
xiaowu_bg:'小无',
|
||||
noname_bg:'璀璨',
|
||||
wuming_bg:'无名',
|
||||
zhulin_bg:'竹林',
|
||||
shengshi_bg:'盛世',
|
||||
taoyuan_bg:'桃园',
|
||||
zhanhuo_bg:'战火',
|
||||
huangtian_bg:'黄天',
|
||||
september_bg:'九月',
|
||||
yinxiang_bg:'印象',
|
||||
zhanyun_bg:'战云',
|
||||
beipan_bg:'背叛',
|
||||
lanting_bg:'兰亭',
|
||||
lingju_bg:'灵雎',
|
||||
sanying_bg:'三英',
|
||||
wangshi_bg:'往事',
|
||||
xiongxin_bg:'雄心',
|
||||
xinsha_bg:'新杀',
|
||||
background: {
|
||||
ol_bg: "龙纹",
|
||||
planetarian_bg: "星梦",
|
||||
heaven_bg: "红烧",
|
||||
kyoani_bg: "京都",
|
||||
key_bg: "键社",
|
||||
xiaowu_bg: "小无",
|
||||
noname_bg: "璀璨",
|
||||
wuming_bg: "无名",
|
||||
zhulin_bg: "竹林",
|
||||
shengshi_bg: "盛世",
|
||||
taoyuan_bg: "桃园",
|
||||
zhanhuo_bg: "战火",
|
||||
huangtian_bg: "黄天",
|
||||
september_bg: "九月",
|
||||
yinxiang_bg: "印象",
|
||||
zhanyun_bg: "战云",
|
||||
beipan_bg: "背叛",
|
||||
lanting_bg: "兰亭",
|
||||
lingju_bg: "灵雎",
|
||||
sanying_bg: "三英",
|
||||
wangshi_bg: "往事",
|
||||
xiongxin_bg: "雄心",
|
||||
xinsha_bg: "新杀",
|
||||
},
|
||||
music:{
|
||||
music_phliosophy:'Philosophy of ours',
|
||||
music_diaochan:'貂蝉',
|
||||
music_shezhan:'舌战群儒',
|
||||
music_danji:'千里走单骑',
|
||||
music_jifeng:'祭风',
|
||||
music_jilve:'极略',
|
||||
music: {
|
||||
music_phliosophy: "Philosophy of ours",
|
||||
music_diaochan: "貂蝉",
|
||||
music_shezhan: "舌战群儒",
|
||||
music_danji: "千里走单骑",
|
||||
music_jifeng: "祭风",
|
||||
music_jilve: "极略",
|
||||
},
|
||||
font:{
|
||||
xiaozhuan:'方正小篆体',
|
||||
xinwei:'华文新魏_GBK',
|
||||
huangcao:'方正黄草_GBK',
|
||||
yuanli:'方正北魏楷书_GBK',
|
||||
xingkai:'方正行楷_GBK',
|
||||
shousha:'方正隶变_GBK',
|
||||
font: {
|
||||
xiaozhuan: "方正小篆体",
|
||||
xinwei: "华文新魏_GBK",
|
||||
huangcao: "方正黄草_GBK",
|
||||
yuanli: "方正北魏楷书_GBK",
|
||||
xingkai: "方正行楷_GBK",
|
||||
shousha: "方正隶变_GBK",
|
||||
},
|
||||
theme: {
|
||||
woodden: "木纹",
|
||||
music: "音乐",
|
||||
simple: "简约",
|
||||
},
|
||||
theme:{
|
||||
woodden:'木纹',
|
||||
music:'音乐',
|
||||
simple:'简约'
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,29 +1,29 @@
|
|||
var fs = require('fs');
|
||||
var webpage = require('webpage')
|
||||
var load = function(id){
|
||||
var page = webpage.create();
|
||||
page.settings.userAgent = 'NonameServer';
|
||||
page.open('file://'+fs.workingDirectory+'/index.html?server='+id, function(status) {
|
||||
if(status !== 'success') {
|
||||
console.log(fs.workingDirectory);
|
||||
console.log('Unable to access network');
|
||||
}
|
||||
setInterval(function(){
|
||||
if(page.evaluate(function(){
|
||||
if(!lib.node||!lib.node.clients||!lib.node.clients.length){
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
return false;
|
||||
}
|
||||
})){
|
||||
page.close();
|
||||
load(id);
|
||||
}
|
||||
},600000);
|
||||
});
|
||||
}
|
||||
|
||||
load(1);
|
||||
load(2);
|
||||
load(3);
|
||||
var fs = require('fs');
|
||||
var webpage = require('webpage')
|
||||
var load = function(id){
|
||||
var page = webpage.create();
|
||||
page.settings.userAgent = 'NonameServer';
|
||||
page.open('file://'+fs.workingDirectory+'/index.html?server='+id, function(status) {
|
||||
if(status !== 'success') {
|
||||
console.log(fs.workingDirectory);
|
||||
console.log('Unable to access network');
|
||||
}
|
||||
setInterval(function(){
|
||||
if(page.evaluate(function(){
|
||||
if(!lib.node||!lib.node.clients||!lib.node.clients.length){
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
return false;
|
||||
}
|
||||
})){
|
||||
page.close();
|
||||
load(id);
|
||||
}
|
||||
},600000);
|
||||
});
|
||||
}
|
||||
|
||||
load(1);
|
||||
load(2);
|
||||
load(3);
|
||||
|
|
|
@ -41646,4 +41646,4 @@ var pinyin_dict_withtone = "yī,dīng zhēng,kǎo qiǎo yú,qī,shàng,xià,hǎn
|
|||
pinyinUtilx.dict = dict;
|
||||
window.pinyinUtilx = pinyinUtilx;
|
||||
|
||||
});
|
||||
});
|
||||
|
|
1152
game/pressure.js
1152
game/pressure.js
File diff suppressed because it is too large
Load Diff
508
game/server.js
508
game/server.js
|
@ -1,386 +1,402 @@
|
|||
(function(){
|
||||
var WebSocketServer=require('ws').Server;
|
||||
var wss=new WebSocketServer({port:8080});
|
||||
var bannedKeys=[];
|
||||
var bannedIps=[];
|
||||
(function () {
|
||||
var WebSocketServer = require("ws").Server;
|
||||
var wss = new WebSocketServer({ port: 8080 });
|
||||
var bannedKeys = [];
|
||||
var bannedIps = [];
|
||||
|
||||
var rooms=[];
|
||||
var events=[];
|
||||
var clients={};
|
||||
var bannedKeyWords=[];
|
||||
var messages={
|
||||
create:function(key,nickname,avatar,config,mode){
|
||||
if(this.onlineKey!=key) return;
|
||||
this.nickname=util.getNickname(nickname);
|
||||
this.avatar=avatar;
|
||||
var room={};
|
||||
var rooms = [];
|
||||
var events = [];
|
||||
var clients = {};
|
||||
var bannedKeyWords = [];
|
||||
var messages = {
|
||||
create: function (key, nickname, avatar, config, mode) {
|
||||
if (this.onlineKey != key) return;
|
||||
this.nickname = util.getNickname(nickname);
|
||||
this.avatar = avatar;
|
||||
var room = {};
|
||||
rooms.push(room);
|
||||
this.room=room;
|
||||
this.room = room;
|
||||
delete this.status;
|
||||
room.owner=this;
|
||||
room.key=key;
|
||||
this.sendl('createroom',key);
|
||||
room.owner = this;
|
||||
room.key = key;
|
||||
this.sendl("createroom", key);
|
||||
},
|
||||
enter:function(key,nickname,avatar){
|
||||
this.nickname=util.getNickname(nickname);
|
||||
this.avatar=avatar;
|
||||
var room=false;
|
||||
for(var i of rooms){
|
||||
if(i.key==key){
|
||||
room=i;
|
||||
enter: function (key, nickname, avatar) {
|
||||
this.nickname = util.getNickname(nickname);
|
||||
this.avatar = avatar;
|
||||
var room = false;
|
||||
for (var i of rooms) {
|
||||
if (i.key == key) {
|
||||
room = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!room){
|
||||
this.sendl('enterroomfailed');
|
||||
if (!room) {
|
||||
this.sendl("enterroomfailed");
|
||||
return;
|
||||
}
|
||||
this.room=room;
|
||||
this.room = room;
|
||||
delete this.status;
|
||||
if(room.owner){
|
||||
if(room.servermode&&!room.owner._onconfig&&config&&mode){
|
||||
room.owner.sendl('createroom',index,config,mode);
|
||||
room.owner._onconfig=this;
|
||||
room.owner.nickname=util.getNickname(nickname);
|
||||
room.owner.avatar=avatar;
|
||||
}
|
||||
else if(!room.config||(room.config.gameStarted&&(!room.config.observe||!room.config.observeReady))){
|
||||
this.sendl('enterroomfailed');
|
||||
}
|
||||
else{
|
||||
this.owner=room.owner;
|
||||
this.owner.sendl('onconnection',this.wsid);
|
||||
if (room.owner) {
|
||||
if (
|
||||
room.servermode &&
|
||||
!room.owner._onconfig &&
|
||||
config &&
|
||||
mode
|
||||
) {
|
||||
room.owner.sendl("createroom", index, config, mode);
|
||||
room.owner._onconfig = this;
|
||||
room.owner.nickname = util.getNickname(nickname);
|
||||
room.owner.avatar = avatar;
|
||||
} else if (
|
||||
!room.config ||
|
||||
(room.config.gameStarted &&
|
||||
(!room.config.observe || !room.config.observeReady))
|
||||
) {
|
||||
this.sendl("enterroomfailed");
|
||||
} else {
|
||||
this.owner = room.owner;
|
||||
this.owner.sendl("onconnection", this.wsid);
|
||||
}
|
||||
util.updaterooms();
|
||||
}
|
||||
},
|
||||
changeAvatar:function(nickname,avatar){
|
||||
this.nickname=util.getNickname(nickname);
|
||||
this.avatar=avatar;
|
||||
changeAvatar: function (nickname, avatar) {
|
||||
this.nickname = util.getNickname(nickname);
|
||||
this.avatar = avatar;
|
||||
util.updateclients();
|
||||
},
|
||||
server:function(cfg){
|
||||
if(cfg){
|
||||
this.servermode=true;
|
||||
var room=rooms[cfg[0]];
|
||||
if(!room||room.owner){
|
||||
this.sendl('reloadroom',true);
|
||||
server: function (cfg) {
|
||||
if (cfg) {
|
||||
this.servermode = true;
|
||||
var room = rooms[cfg[0]];
|
||||
if (!room || room.owner) {
|
||||
this.sendl("reloadroom", true);
|
||||
} else {
|
||||
room.owner = this;
|
||||
this.room = room;
|
||||
this.nickname = util.getNickname(cfg[1]);
|
||||
this.avatar = cfg[2];
|
||||
this.sendl("createroom", cfg[0], {}, "auto");
|
||||
}
|
||||
else{
|
||||
room.owner=this;
|
||||
this.room=room;
|
||||
this.nickname=util.getNickname(cfg[1]);
|
||||
this.avatar=cfg[2];
|
||||
this.sendl('createroom',cfg[0],{},'auto')
|
||||
}
|
||||
}
|
||||
else{
|
||||
for(var i=0;i<rooms.length;i++){
|
||||
if(!rooms[i].owner){
|
||||
rooms[i].owner=this;
|
||||
rooms[i].servermode=true;
|
||||
this.room=rooms[i];
|
||||
this.servermode=true;
|
||||
} else {
|
||||
for (var i = 0; i < rooms.length; i++) {
|
||||
if (!rooms[i].owner) {
|
||||
rooms[i].owner = this;
|
||||
rooms[i].servermode = true;
|
||||
this.room = rooms[i];
|
||||
this.servermode = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
util.updaterooms();
|
||||
}
|
||||
},
|
||||
key:function(id){
|
||||
if(!id||typeof id!='object'){
|
||||
this.sendl('denied','key');
|
||||
key: function (id) {
|
||||
if (!id || typeof id != "object") {
|
||||
this.sendl("denied", "key");
|
||||
this.close();
|
||||
clearTimeout(this.keyCheck);
|
||||
delete this.keyCheck;
|
||||
return;
|
||||
}
|
||||
else if(bannedKeys.indexOf(id[0])!=-1){
|
||||
} else if (bannedKeys.indexOf(id[0]) != -1) {
|
||||
bannedIps.push(this._socket.remoteAddress);
|
||||
this.close();
|
||||
}
|
||||
this.onlineKey=id[0];
|
||||
this.onlineKey = id[0];
|
||||
clearTimeout(this.keyCheck);
|
||||
delete this.keyCheck;
|
||||
},
|
||||
events:function(cfg,id,type){
|
||||
if(bannedKeys.indexOf(id)!=-1||typeof id!='string'||this.onlineKey!=id){
|
||||
events: function (cfg, id, type) {
|
||||
if (
|
||||
bannedKeys.indexOf(id) != -1 ||
|
||||
typeof id != "string" ||
|
||||
this.onlineKey != id
|
||||
) {
|
||||
bannedIps.push(this._socket.remoteAddress);
|
||||
console.log(id, this._socket.remoteAddress);
|
||||
this.close();
|
||||
return;
|
||||
}
|
||||
var changed=false;
|
||||
var time=(new Date()).getTime();
|
||||
if(cfg&&id){
|
||||
if(typeof cfg=='string'){
|
||||
for(var i=0;i<events.length;i++){
|
||||
if(events[i].id==cfg){
|
||||
if(type=='join'){
|
||||
if(events[i].members.indexOf(id)==-1){
|
||||
var changed = false;
|
||||
var time = new Date().getTime();
|
||||
if (cfg && id) {
|
||||
if (typeof cfg == "string") {
|
||||
for (var i = 0; i < events.length; i++) {
|
||||
if (events[i].id == cfg) {
|
||||
if (type == "join") {
|
||||
if (events[i].members.indexOf(id) == -1) {
|
||||
events[i].members.push(id);
|
||||
}
|
||||
changed=true;
|
||||
}
|
||||
else if(type=='leave'){
|
||||
var index=events[i].members.indexOf(id);
|
||||
if(index!=-1){
|
||||
events[i].members.splice(index,1);
|
||||
if(events[i].members.length==0){
|
||||
events.splice(i--,1);
|
||||
changed = true;
|
||||
} else if (type == "leave") {
|
||||
var index = events[i].members.indexOf(id);
|
||||
if (index != -1) {
|
||||
events[i].members.splice(index, 1);
|
||||
if (events[i].members.length == 0) {
|
||||
events.splice(i--, 1);
|
||||
}
|
||||
}
|
||||
changed=true;
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(cfg.hasOwnProperty('utc')&&
|
||||
cfg.hasOwnProperty('day')&&
|
||||
cfg.hasOwnProperty('hour')&&
|
||||
cfg.hasOwnProperty('content')){
|
||||
if(events.length>=20){
|
||||
this.sendl('eventsdenied','total');
|
||||
}
|
||||
else if(cfg.utc<=time){
|
||||
this.sendl('eventsdenied','time');
|
||||
}
|
||||
else if(util.isBanned(cfg.content)){
|
||||
this.sendl('eventsdenied','ban');
|
||||
}
|
||||
else{
|
||||
cfg.nickname=util.getNickname(cfg.nickname);
|
||||
cfg.avatar=cfg.nickname||'caocao';
|
||||
cfg.creator=id;
|
||||
cfg.id=util.getid();
|
||||
cfg.members=[id];
|
||||
} else if (
|
||||
cfg.hasOwnProperty("utc") &&
|
||||
cfg.hasOwnProperty("day") &&
|
||||
cfg.hasOwnProperty("hour") &&
|
||||
cfg.hasOwnProperty("content")
|
||||
) {
|
||||
if (events.length >= 20) {
|
||||
this.sendl("eventsdenied", "total");
|
||||
} else if (cfg.utc <= time) {
|
||||
this.sendl("eventsdenied", "time");
|
||||
} else if (util.isBanned(cfg.content)) {
|
||||
this.sendl("eventsdenied", "ban");
|
||||
} else {
|
||||
cfg.nickname = util.getNickname(cfg.nickname);
|
||||
cfg.avatar = cfg.nickname || "caocao";
|
||||
cfg.creator = id;
|
||||
cfg.id = util.getid();
|
||||
cfg.members = [id];
|
||||
events.unshift(cfg);
|
||||
changed=true;
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(changed){
|
||||
if (changed) {
|
||||
util.updateevents();
|
||||
}
|
||||
},
|
||||
config:function(config){
|
||||
var room=this.room;
|
||||
if(room&&room.owner==this){
|
||||
if(room.servermode){
|
||||
room.servermode=false;
|
||||
if(this._onconfig){
|
||||
if(clients[this._onconfig.wsid]){
|
||||
this._onconfig.owner=this;
|
||||
this.sendl('onconnection',this._onconfig.wsid);
|
||||
config: function (config) {
|
||||
var room = this.room;
|
||||
if (room && room.owner == this) {
|
||||
if (room.servermode) {
|
||||
room.servermode = false;
|
||||
if (this._onconfig) {
|
||||
if (clients[this._onconfig.wsid]) {
|
||||
this._onconfig.owner = this;
|
||||
this.sendl("onconnection", this._onconfig.wsid);
|
||||
}
|
||||
delete this._onconfig;
|
||||
}
|
||||
}
|
||||
room.config=config;
|
||||
room.config = config;
|
||||
}
|
||||
util.updaterooms();
|
||||
},
|
||||
status:function(str){
|
||||
if(typeof str=='string'){
|
||||
this.status=str;
|
||||
}
|
||||
else{
|
||||
status: function (str) {
|
||||
if (typeof str == "string") {
|
||||
this.status = str;
|
||||
} else {
|
||||
delete this.status;
|
||||
}
|
||||
util.updateclients();
|
||||
},
|
||||
send:function(id,message){
|
||||
if(clients[id]&&clients[id].owner==this){
|
||||
try{
|
||||
send: function (id, message) {
|
||||
if (clients[id] && clients[id].owner == this) {
|
||||
try {
|
||||
clients[id].send(message);
|
||||
}
|
||||
catch(e){
|
||||
} catch (e) {
|
||||
clients[id].close();
|
||||
}
|
||||
}
|
||||
},
|
||||
close:function(id){
|
||||
if(clients[id]&&clients[id].owner==this){
|
||||
close: function (id) {
|
||||
if (clients[id] && clients[id].owner == this) {
|
||||
clients[id].close();
|
||||
}
|
||||
},
|
||||
};
|
||||
var util={
|
||||
getNickname:function(str){
|
||||
return typeof str=='string'?(str.slice(0,12)):'无名玩家';
|
||||
var util = {
|
||||
getNickname: function (str) {
|
||||
return typeof str == "string" ? str.slice(0, 12) : "无名玩家";
|
||||
},
|
||||
isBanned:function(str){
|
||||
for(var i of bannedKeyWords){
|
||||
if(str.indexOf(i)!=-1) return true;
|
||||
isBanned: function (str) {
|
||||
for (var i of bannedKeyWords) {
|
||||
if (str.indexOf(i) != -1) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
sendl:function(){
|
||||
var args=[];
|
||||
for(var i=0;i<arguments.length;i++){
|
||||
sendl: function () {
|
||||
var args = [];
|
||||
for (var i = 0; i < arguments.length; i++) {
|
||||
args.push(arguments[i]);
|
||||
}
|
||||
try{
|
||||
try {
|
||||
this.send(JSON.stringify(args));
|
||||
}
|
||||
catch(e){
|
||||
} catch (e) {
|
||||
this.close();
|
||||
}
|
||||
},
|
||||
getid:function(){
|
||||
return (Math.floor(1000000000+9000000000*Math.random())).toString();
|
||||
getid: function () {
|
||||
return Math.floor(
|
||||
1000000000 + 9000000000 * Math.random()
|
||||
).toString();
|
||||
},
|
||||
getroomlist:function(){
|
||||
var roomlist=[];
|
||||
for(var i=0;i<rooms.length;i++){
|
||||
rooms[i]._num=0;
|
||||
getroomlist: function () {
|
||||
var roomlist = [];
|
||||
for (var i = 0; i < rooms.length; i++) {
|
||||
rooms[i]._num = 0;
|
||||
}
|
||||
for(var i in clients){
|
||||
if(clients[i].room&&!clients[i].servermode){
|
||||
for (var i in clients) {
|
||||
if (clients[i].room && !clients[i].servermode) {
|
||||
clients[i].room._num++;
|
||||
}
|
||||
}
|
||||
for(var i=0;i<rooms.length;i++){
|
||||
if(rooms[i].servermode){
|
||||
roomlist[i]='server';
|
||||
}
|
||||
else if(rooms[i].owner&&rooms[i].config){
|
||||
if(rooms[i]._num==0){
|
||||
rooms[i].owner.sendl('reloadroom');
|
||||
for (var i = 0; i < rooms.length; i++) {
|
||||
if (rooms[i].servermode) {
|
||||
roomlist[i] = "server";
|
||||
} else if (rooms[i].owner && rooms[i].config) {
|
||||
if (rooms[i]._num == 0) {
|
||||
rooms[i].owner.sendl("reloadroom");
|
||||
}
|
||||
roomlist.push([rooms[i].owner.nickname,rooms[i].owner.avatar,
|
||||
rooms[i].config,rooms[i]._num,rooms[i].key]);
|
||||
roomlist.push([
|
||||
rooms[i].owner.nickname,
|
||||
rooms[i].owner.avatar,
|
||||
rooms[i].config,
|
||||
rooms[i]._num,
|
||||
rooms[i].key,
|
||||
]);
|
||||
}
|
||||
delete rooms[i]._num;
|
||||
}
|
||||
return roomlist;
|
||||
},
|
||||
getclientlist:function(){
|
||||
var clientlist=[];
|
||||
for(var i in clients){
|
||||
clientlist.push([clients[i].nickname,clients[i].avatar,!clients[i].room,clients[i].status,clients[i].wsid,clients[i].onlineKey]);
|
||||
getclientlist: function () {
|
||||
var clientlist = [];
|
||||
for (var i in clients) {
|
||||
clientlist.push([
|
||||
clients[i].nickname,
|
||||
clients[i].avatar,
|
||||
!clients[i].room,
|
||||
clients[i].status,
|
||||
clients[i].wsid,
|
||||
clients[i].onlineKey,
|
||||
]);
|
||||
}
|
||||
return clientlist;
|
||||
},
|
||||
updaterooms:function(){
|
||||
var roomlist=util.getroomlist();
|
||||
var clientlist=util.getclientlist();
|
||||
for(var i in clients){
|
||||
if(!clients[i].room){
|
||||
clients[i].sendl('updaterooms',roomlist,clientlist);
|
||||
updaterooms: function () {
|
||||
var roomlist = util.getroomlist();
|
||||
var clientlist = util.getclientlist();
|
||||
for (var i in clients) {
|
||||
if (!clients[i].room) {
|
||||
clients[i].sendl("updaterooms", roomlist, clientlist);
|
||||
}
|
||||
}
|
||||
},
|
||||
updateclients:function(){
|
||||
var clientlist=util.getclientlist();
|
||||
for(var i in clients){
|
||||
if(!clients[i].room){
|
||||
clients[i].sendl('updateclients',clientlist);
|
||||
updateclients: function () {
|
||||
var clientlist = util.getclientlist();
|
||||
for (var i in clients) {
|
||||
if (!clients[i].room) {
|
||||
clients[i].sendl("updateclients", clientlist);
|
||||
}
|
||||
}
|
||||
},
|
||||
checkevents:function(){
|
||||
if(events.length){
|
||||
var time=(new Date()).getTime();
|
||||
for(var i=0;i<events.length;i++){
|
||||
if(events[i].utc<=time){
|
||||
events.splice(i--,1);
|
||||
checkevents: function () {
|
||||
if (events.length) {
|
||||
var time = new Date().getTime();
|
||||
for (var i = 0; i < events.length; i++) {
|
||||
if (events[i].utc <= time) {
|
||||
events.splice(i--, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
return events;
|
||||
},
|
||||
updateevents:function(){
|
||||
updateevents: function () {
|
||||
util.checkevents();
|
||||
for(var i in clients){
|
||||
if(!clients[i].room){
|
||||
clients[i].sendl('updateevents',events);
|
||||
for (var i in clients) {
|
||||
if (!clients[i].room) {
|
||||
clients[i].sendl("updateevents", events);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
wss.on('connection',function(ws){
|
||||
ws.sendl=util.sendl;
|
||||
if(bannedIps.indexOf(ws._socket.remoteAddress)!=-1){
|
||||
ws.sendl('denied','banned');
|
||||
setTimeout(function(){
|
||||
wss.on("connection", function (ws) {
|
||||
ws.sendl = util.sendl;
|
||||
if (bannedIps.indexOf(ws._socket.remoteAddress) != -1) {
|
||||
ws.sendl("denied", "banned");
|
||||
setTimeout(function () {
|
||||
ws.close();
|
||||
},500);
|
||||
}, 500);
|
||||
return;
|
||||
}
|
||||
ws.keyCheck=setTimeout(function(){
|
||||
ws.sendl('denied','key');
|
||||
setTimeout(function(){
|
||||
ws.keyCheck = setTimeout(function () {
|
||||
ws.sendl("denied", "key");
|
||||
setTimeout(function () {
|
||||
ws.close();
|
||||
},500);
|
||||
},2000);
|
||||
ws.wsid=util.getid();
|
||||
clients[ws.wsid]=ws;
|
||||
ws.sendl('roomlist',util.getroomlist(),util.checkevents(),util.getclientlist(ws),ws.wsid);
|
||||
ws.heartbeat=setInterval(function(){
|
||||
if(ws.beat){
|
||||
}, 500);
|
||||
}, 2000);
|
||||
ws.wsid = util.getid();
|
||||
clients[ws.wsid] = ws;
|
||||
ws.sendl(
|
||||
"roomlist",
|
||||
util.getroomlist(),
|
||||
util.checkevents(),
|
||||
util.getclientlist(ws),
|
||||
ws.wsid
|
||||
);
|
||||
ws.heartbeat = setInterval(function () {
|
||||
if (ws.beat) {
|
||||
ws.close();
|
||||
clearInterval(ws.heartbeat);
|
||||
}
|
||||
else{
|
||||
ws.beat=true;
|
||||
try{
|
||||
ws.send('heartbeat');
|
||||
}
|
||||
catch(e){
|
||||
} else {
|
||||
ws.beat = true;
|
||||
try {
|
||||
ws.send("heartbeat");
|
||||
} catch (e) {
|
||||
ws.close();
|
||||
}
|
||||
}
|
||||
},60000);
|
||||
ws.on('message',function(message){
|
||||
if(!clients[this.wsid]) return;
|
||||
if(message=='heartbeat'){
|
||||
this.beat=false;
|
||||
}
|
||||
else if(this.owner){
|
||||
this.owner.sendl('onmessage',this.wsid,message);
|
||||
}
|
||||
else{
|
||||
}, 60000);
|
||||
ws.on("message", function (message) {
|
||||
if (!clients[this.wsid]) return;
|
||||
if (message == "heartbeat") {
|
||||
this.beat = false;
|
||||
} else if (this.owner) {
|
||||
this.owner.sendl("onmessage", this.wsid, message);
|
||||
} else {
|
||||
var arr;
|
||||
try{
|
||||
arr=JSON.parse(message);
|
||||
if(!Array.isArray(arr)){
|
||||
throw('err');
|
||||
try {
|
||||
arr = JSON.parse(message);
|
||||
if (!Array.isArray(arr)) {
|
||||
throw "err";
|
||||
}
|
||||
}
|
||||
catch(e){
|
||||
this.sendl('denied','banned');
|
||||
} catch (e) {
|
||||
this.sendl("denied", "banned");
|
||||
return;
|
||||
}
|
||||
if(arr.shift()=='server'){
|
||||
var type=arr.shift();
|
||||
if(messages[type]){
|
||||
messages[type].apply(this,arr);
|
||||
if (arr.shift() == "server") {
|
||||
var type = arr.shift();
|
||||
if (messages[type]) {
|
||||
messages[type].apply(this, arr);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
ws.on('close',function(){
|
||||
for(var i=0;i<rooms.length;i++){
|
||||
if(rooms[i].owner==this){
|
||||
for(var j in clients){
|
||||
if(clients[j].room==rooms[i]&&clients[j]!=this){
|
||||
clients[j].sendl('selfclose');
|
||||
ws.on("close", function () {
|
||||
for (var i = 0; i < rooms.length; i++) {
|
||||
if (rooms[i].owner == this) {
|
||||
for (var j in clients) {
|
||||
if (clients[j].room == rooms[i] && clients[j] != this) {
|
||||
clients[j].sendl("selfclose");
|
||||
// clients[j].close();
|
||||
// delete clients[j];
|
||||
}
|
||||
}
|
||||
rooms.splice(i--,1);
|
||||
rooms.splice(i--, 1);
|
||||
}
|
||||
}
|
||||
if(clients[this.wsid]){
|
||||
if(this.owner){
|
||||
this.owner.sendl('onclose',this.wsid);
|
||||
if (clients[this.wsid]) {
|
||||
if (this.owner) {
|
||||
this.owner.sendl("onclose", this.wsid);
|
||||
}
|
||||
delete clients[this.wsid];
|
||||
}
|
||||
if(this.room) util.updaterooms();
|
||||
if (this.room) util.updaterooms();
|
||||
else util.updateclients();
|
||||
});
|
||||
});
|
||||
}());
|
||||
})();
|
||||
|
|
604
game/source.js
604
game/source.js
|
@ -1,305 +1,305 @@
|
|||
window.noname_source_list=[
|
||||
'LICENSE',
|
||||
'noname.js',
|
||||
'service-worker.js',
|
||||
window.noname_source_list = [
|
||||
"LICENSE",
|
||||
"noname.js",
|
||||
"service-worker.js",
|
||||
|
||||
'noname/ai/basic.js',
|
||||
'noname/ai/index.js',
|
||||
'noname/game/index.js',
|
||||
'noname/game/promises.js',
|
||||
'noname/game/dynamic-style/index.js',
|
||||
'noname/get/index.js',
|
||||
'noname/get/is.js',
|
||||
'noname/gnc/index.js',
|
||||
'noname/gnc/is.js',
|
||||
'noname/init/cordova.js',
|
||||
'noname/init/import.js',
|
||||
'noname/init/index.js',
|
||||
'noname/init/node.js',
|
||||
'noname/init/onload.js',
|
||||
'noname/init/polyfill.js',
|
||||
'noname/library/index.js',
|
||||
'noname/library/path.js',
|
||||
'noname/library/update-urls.js',
|
||||
'noname/library/announce/index.d.ts',
|
||||
'noname/library/announce/index.js',
|
||||
'noname/library/cache/cacheContext.js',
|
||||
'noname/library/cache/childNodesWatcher.js',
|
||||
'noname/library/channel/index.js',
|
||||
'noname/library/crypt/md5.js',
|
||||
'noname/library/element/button.js',
|
||||
'noname/library/element/card.js',
|
||||
'noname/library/element/client.js',
|
||||
'noname/library/element/content.js',
|
||||
'noname/library/element/contents.js',
|
||||
'noname/library/element/control.js',
|
||||
'noname/library/element/dialog.js',
|
||||
'noname/library/element/gameEvent.js',
|
||||
'noname/library/element/gameEventPromise.js',
|
||||
'noname/library/element/index.js',
|
||||
'noname/library/element/nodeWS.js',
|
||||
'noname/library/element/player.js',
|
||||
'noname/library/element/vcard.js',
|
||||
'noname/library/experimental/index.js',
|
||||
'noname/library/experimental/symbol.js',
|
||||
'noname/library/init/index.js',
|
||||
'noname/library/init/promises.js',
|
||||
'noname/status/index.js',
|
||||
'noname/ui/index.js',
|
||||
'noname/ui/click/index.js',
|
||||
'noname/ui/create/index.js',
|
||||
'noname/ui/create/menu/index.js',
|
||||
'noname/ui/create/menu/pages/cardPackMenu.js',
|
||||
'noname/ui/create/menu/pages/characterPackMenu.js',
|
||||
'noname/ui/create/menu/pages/exetensionMenu.js',
|
||||
'noname/ui/create/menu/pages/optionsMenu.js',
|
||||
'noname/ui/create/menu/pages/otherMenu.js',
|
||||
'noname/ui/create/menu/pages/startMenu.js',
|
||||
'noname/util/browser.js',
|
||||
'noname/util/config.js',
|
||||
'noname/util/index.js',
|
||||
'noname/util/mutex.js',
|
||||
'noname/util/struct/index.js',
|
||||
'noname/util/struct/interface/index.d.ts',
|
||||
'noname/util/struct/interface/promise-error-handler.d.ts',
|
||||
'noname/util/struct/promise-error-handler/chrome.js',
|
||||
'noname/util/struct/promise-error-handler/firefox.js',
|
||||
'noname/util/struct/promise-error-handler/index.js',
|
||||
'noname/util/struct/promise-error-handler/unknown.js',
|
||||
"noname/ai/basic.js",
|
||||
"noname/ai/index.js",
|
||||
"noname/game/index.js",
|
||||
"noname/game/promises.js",
|
||||
"noname/game/dynamic-style/index.js",
|
||||
"noname/get/index.js",
|
||||
"noname/get/is.js",
|
||||
"noname/gnc/index.js",
|
||||
"noname/gnc/is.js",
|
||||
"noname/init/cordova.js",
|
||||
"noname/init/import.js",
|
||||
"noname/init/index.js",
|
||||
"noname/init/node.js",
|
||||
"noname/init/onload.js",
|
||||
"noname/init/polyfill.js",
|
||||
"noname/library/index.js",
|
||||
"noname/library/path.js",
|
||||
"noname/library/update-urls.js",
|
||||
"noname/library/announce/index.d.ts",
|
||||
"noname/library/announce/index.js",
|
||||
"noname/library/cache/cacheContext.js",
|
||||
"noname/library/cache/childNodesWatcher.js",
|
||||
"noname/library/channel/index.js",
|
||||
"noname/library/crypt/md5.js",
|
||||
"noname/library/element/button.js",
|
||||
"noname/library/element/card.js",
|
||||
"noname/library/element/client.js",
|
||||
"noname/library/element/content.js",
|
||||
"noname/library/element/contents.js",
|
||||
"noname/library/element/control.js",
|
||||
"noname/library/element/dialog.js",
|
||||
"noname/library/element/gameEvent.js",
|
||||
"noname/library/element/gameEventPromise.js",
|
||||
"noname/library/element/index.js",
|
||||
"noname/library/element/nodeWS.js",
|
||||
"noname/library/element/player.js",
|
||||
"noname/library/element/vcard.js",
|
||||
"noname/library/experimental/index.js",
|
||||
"noname/library/experimental/symbol.js",
|
||||
"noname/library/init/index.js",
|
||||
"noname/library/init/promises.js",
|
||||
"noname/status/index.js",
|
||||
"noname/ui/index.js",
|
||||
"noname/ui/click/index.js",
|
||||
"noname/ui/create/index.js",
|
||||
"noname/ui/create/menu/index.js",
|
||||
"noname/ui/create/menu/pages/cardPackMenu.js",
|
||||
"noname/ui/create/menu/pages/characterPackMenu.js",
|
||||
"noname/ui/create/menu/pages/exetensionMenu.js",
|
||||
"noname/ui/create/menu/pages/optionsMenu.js",
|
||||
"noname/ui/create/menu/pages/otherMenu.js",
|
||||
"noname/ui/create/menu/pages/startMenu.js",
|
||||
"noname/util/browser.js",
|
||||
"noname/util/config.js",
|
||||
"noname/util/index.js",
|
||||
"noname/util/mutex.js",
|
||||
"noname/util/struct/index.js",
|
||||
"noname/util/struct/interface/index.d.ts",
|
||||
"noname/util/struct/interface/promise-error-handler.d.ts",
|
||||
"noname/util/struct/promise-error-handler/chrome.js",
|
||||
"noname/util/struct/promise-error-handler/firefox.js",
|
||||
"noname/util/struct/promise-error-handler/index.js",
|
||||
"noname/util/struct/promise-error-handler/unknown.js",
|
||||
|
||||
'card/extra.js',
|
||||
'card/gujian.js',
|
||||
'card/guozhan.js',
|
||||
'card/gwent.js',
|
||||
'card/hearth.js',
|
||||
'card/huanlekapai.js',
|
||||
'card/mtg.js',
|
||||
'card/sp.js',
|
||||
'card/standard.js',
|
||||
'card/swd.js',
|
||||
'card/yingbian.js',
|
||||
'card/yongjian.js',
|
||||
'card/yunchou.js',
|
||||
'card/zhenfa.js',
|
||||
'card/zhulu.js',
|
||||
|
||||
'character/clan.js',
|
||||
'character/collab.js',
|
||||
'character/ddd.js',
|
||||
'character/diy.js',
|
||||
'character/extra.js',
|
||||
'character/gujian.js',
|
||||
'character/gwent.js',
|
||||
'character/hearth.js',
|
||||
'character/huicui.js',
|
||||
'character/jiange.js',
|
||||
'character/jsrg.js',
|
||||
'character/mobile.js',
|
||||
'character/mtg.js',
|
||||
'character/offline.js',
|
||||
'character/old.js',
|
||||
'character/onlyOL.js',
|
||||
'character/ow.js',
|
||||
'character/rank.js',
|
||||
'character/refresh.js',
|
||||
'character/sb.js',
|
||||
'character/shenhua.js',
|
||||
'character/shiji.js',
|
||||
'character/sp.js',
|
||||
'character/sp2.js',
|
||||
'character/standard.js',
|
||||
'character/swd.js',
|
||||
'character/tw.js',
|
||||
'character/xiake.js',
|
||||
'character/xianding.js',
|
||||
'character/xianjian.js',
|
||||
'character/xinghuoliaoyuan.js',
|
||||
'character/yijiang.js',
|
||||
'character/yingbian.js',
|
||||
'character/yxs.js',
|
||||
'character/zhuogui.js',
|
||||
|
||||
'font/motoyamaru.woff2',
|
||||
'font/suits.woff2',
|
||||
|
||||
'game/asset.js',
|
||||
'game/codemirror.js',
|
||||
'game/compiler-sfc.browser.js',
|
||||
'game/config.js',
|
||||
'game/core-js-bundle.js',
|
||||
'game/directory.js',
|
||||
'game/entry.js',
|
||||
'game/game.js',
|
||||
'game/http.js',
|
||||
'game/jszip.js',
|
||||
'game/keyWords.js',
|
||||
'game/NoSleep.js',
|
||||
'game/package.js',
|
||||
'game/phantom.js',
|
||||
'game/pinyinjs.js',
|
||||
'game/pressure.js',
|
||||
'game/server.js',
|
||||
'game/source.js',
|
||||
'game/update.js',
|
||||
'game/vue.esm-browser.js',
|
||||
|
||||
'image/card/cardtempname_bg.png',
|
||||
'image/flappybird/BG.png',
|
||||
'image/flappybird/botpipe.png',
|
||||
'image/flappybird/gameclear.png',
|
||||
'image/flappybird/gameover.png',
|
||||
'image/flappybird/getready.png',
|
||||
'image/flappybird/ground.png',
|
||||
'image/flappybird/toppipe.png',
|
||||
'image/flappybird/bird/b0.png',
|
||||
'image/flappybird/bird/b1.png',
|
||||
'image/flappybird/bird/b2.png',
|
||||
'image/flappybird/ground/g0.png',
|
||||
'image/flappybird/ground/g1.png',
|
||||
'image/flappybird/tap/t0.png',
|
||||
'image/flappybird/tap/t1.png',
|
||||
|
||||
'layout/default/codemirror.css',
|
||||
'layout/default/layout.css',
|
||||
'layout/default/menu.css',
|
||||
'layout/default/phone.css',
|
||||
'layout/long/layout.css',
|
||||
'layout/long2/layout.css',
|
||||
'layout/mobile/equip.css',
|
||||
'layout/mobile/layout.css',
|
||||
'layout/mode/boss.css',
|
||||
'layout/mode/chess.css',
|
||||
'layout/mode/stone.css',
|
||||
'layout/mode/tafang.css',
|
||||
'layout/newlayout/equip.css',
|
||||
'layout/newlayout/global.css',
|
||||
'layout/newlayout/layout.css',
|
||||
'layout/nova/layout.css',
|
||||
|
||||
'mode/boss.js',
|
||||
'mode/chess.js',
|
||||
'mode/doudizhu.js',
|
||||
'mode/guozhan.js',
|
||||
'mode/identity.js',
|
||||
'mode/tafang.js',
|
||||
'mode/single.js',
|
||||
'mode/stone.js',
|
||||
'mode/brawl.js',
|
||||
'mode/versus.js',
|
||||
'mode/connect.js',
|
||||
|
||||
'extension/boss/extension.js',
|
||||
'extension/cardpile/extension.js',
|
||||
'extension/coin/extension.js',
|
||||
'extension/wuxing/extension.js',
|
||||
|
||||
'theme/music/grid.png',
|
||||
'theme/music/style.css',
|
||||
'theme/music/wood.png',
|
||||
'theme/music/wood3.png',
|
||||
'theme/simple/card.png',
|
||||
'theme/simple/grid.png',
|
||||
'theme/simple/style.css',
|
||||
'theme/simple/unknown.png',
|
||||
'theme/simple/wood.png',
|
||||
'theme/simple/wood3.png',
|
||||
'theme/woodden/grid.png',
|
||||
'theme/woodden/style.css',
|
||||
'theme/woodden/wood.jpg',
|
||||
'theme/woodden/wood.png',
|
||||
'theme/woodden/wood2.jpg',
|
||||
'theme/woodden/wood2.png',
|
||||
'theme/style/card/custom.css',
|
||||
'theme/style/card/default.css',
|
||||
'theme/style/card/music.css',
|
||||
'theme/style/card/simple.css',
|
||||
'theme/style/card/wood.css',
|
||||
'theme/style/card/new.css',
|
||||
'theme/style/card/ol.css',
|
||||
'theme/style/card/image/new.png',
|
||||
'theme/style/card/image/ol.png',
|
||||
'theme/style/cardback/custom.css',
|
||||
'theme/style/cardback/default.css',
|
||||
'theme/style/cardback/feicheng.css',
|
||||
'theme/style/cardback/liusha.css',
|
||||
'theme/style/cardback/music.css',
|
||||
'theme/style/cardback/new.css',
|
||||
'theme/style/cardback/ol.css',
|
||||
'theme/style/cardback/official.css',
|
||||
'theme/style/cardback/wood.css',
|
||||
'theme/style/cardback/image/feicheng.png',
|
||||
'theme/style/cardback/image/feicheng2.png',
|
||||
'theme/style/cardback/image/liusha.png',
|
||||
'theme/style/cardback/image/liusha2.png',
|
||||
'theme/style/cardback/image/new.png',
|
||||
'theme/style/cardback/image/new2.png',
|
||||
'theme/style/cardback/image/official.png',
|
||||
'theme/style/cardback/image/official2.png',
|
||||
'theme/style/cardback/image/ol.png',
|
||||
'theme/style/cardback/image/ol2.png',
|
||||
'theme/style/hp/custom.css',
|
||||
'theme/style/hp/default.css',
|
||||
'theme/style/hp/emotion.css',
|
||||
'theme/style/hp/glass.css',
|
||||
'theme/style/hp/official.css',
|
||||
'theme/style/hp/ol.css',
|
||||
'theme/style/hp/round.css',
|
||||
'theme/style/hp/xinglass.css',
|
||||
'theme/style/hp/xinround.css',
|
||||
'theme/style/hp/image/emotion1.png',
|
||||
'theme/style/hp/image/emotion2.png',
|
||||
'theme/style/hp/image/emotion3.png',
|
||||
'theme/style/hp/image/emotion4.png',
|
||||
'theme/style/hp/image/glass1.png',
|
||||
'theme/style/hp/image/glass2.png',
|
||||
'theme/style/hp/image/glass3.png',
|
||||
'theme/style/hp/image/glass4.png',
|
||||
'theme/style/hp/image/official1.png',
|
||||
'theme/style/hp/image/official2.png',
|
||||
'theme/style/hp/image/official3.png',
|
||||
'theme/style/hp/image/official4.png',
|
||||
'theme/style/hp/image/ol1.png',
|
||||
'theme/style/hp/image/ol2.png',
|
||||
'theme/style/hp/image/ol3.png',
|
||||
'theme/style/hp/image/ol4.png',
|
||||
'theme/style/hp/image/round1.png',
|
||||
'theme/style/hp/image/round2.png',
|
||||
'theme/style/hp/image/round3.png',
|
||||
'theme/style/hp/image/round4.png',
|
||||
'theme/style/hp/image/shield.png',
|
||||
'theme/style/hp/image/xinglass1.png',
|
||||
'theme/style/hp/image/xinglass2.png',
|
||||
'theme/style/hp/image/xinglass3.png',
|
||||
'theme/style/hp/image/xinglass4.png',
|
||||
'theme/style/hp/image/xinround1.png',
|
||||
'theme/style/hp/image/xinround2.png',
|
||||
'theme/style/hp/image/xinround3.png',
|
||||
'theme/style/hp/image/xinround4.png',
|
||||
|
||||
'node_modules/options/.npmignore',
|
||||
'node_modules/options/lib/options.js',
|
||||
'node_modules/options/package.json',
|
||||
'node_modules/ultron/.npmignore',
|
||||
'node_modules/ultron/.travis.yml',
|
||||
'node_modules/ultron/index.js',
|
||||
'node_modules/ultron/package.json',
|
||||
'node_modules/ultron/test.js',
|
||||
'node_modules/ws/.npmignore',
|
||||
'node_modules/ws/.travis.yml',
|
||||
'node_modules/ws/index.js',
|
||||
'node_modules/ws/lib/BufferPool.js',
|
||||
'node_modules/ws/lib/BufferUtil.fallback.js',
|
||||
'node_modules/ws/lib/BufferUtil.js',
|
||||
'node_modules/ws/lib/ErrorCodes.js',
|
||||
'node_modules/ws/lib/Extensions.js',
|
||||
'node_modules/ws/lib/PerMessageDeflate.js',
|
||||
'node_modules/ws/lib/Receiver.hixie.js',
|
||||
'node_modules/ws/lib/Receiver.js',
|
||||
'node_modules/ws/lib/Sender.hixie.js',
|
||||
'node_modules/ws/lib/Sender.js',
|
||||
'node_modules/ws/lib/Validation.fallback.js',
|
||||
'node_modules/ws/lib/Validation.js',
|
||||
'node_modules/ws/lib/WebSocket.js',
|
||||
'node_modules/ws/lib/WebSocketServer.js',
|
||||
'node_modules/ws/package.json'
|
||||
"card/extra.js",
|
||||
"card/gujian.js",
|
||||
"card/guozhan.js",
|
||||
"card/gwent.js",
|
||||
"card/hearth.js",
|
||||
"card/huanlekapai.js",
|
||||
"card/mtg.js",
|
||||
"card/sp.js",
|
||||
"card/standard.js",
|
||||
"card/swd.js",
|
||||
"card/yingbian.js",
|
||||
"card/yongjian.js",
|
||||
"card/yunchou.js",
|
||||
"card/zhenfa.js",
|
||||
"card/zhulu.js",
|
||||
|
||||
"character/clan.js",
|
||||
"character/collab.js",
|
||||
"character/ddd.js",
|
||||
"character/diy.js",
|
||||
"character/extra.js",
|
||||
"character/gujian.js",
|
||||
"character/gwent.js",
|
||||
"character/hearth.js",
|
||||
"character/huicui.js",
|
||||
"character/jiange.js",
|
||||
"character/jsrg.js",
|
||||
"character/mobile.js",
|
||||
"character/mtg.js",
|
||||
"character/offline.js",
|
||||
"character/old.js",
|
||||
"character/onlyOL.js",
|
||||
"character/ow.js",
|
||||
"character/rank.js",
|
||||
"character/refresh.js",
|
||||
"character/sb.js",
|
||||
"character/shenhua.js",
|
||||
"character/shiji.js",
|
||||
"character/sp.js",
|
||||
"character/sp2.js",
|
||||
"character/standard.js",
|
||||
"character/swd.js",
|
||||
"character/tw.js",
|
||||
"character/xiake.js",
|
||||
"character/xianding.js",
|
||||
"character/xianjian.js",
|
||||
"character/xinghuoliaoyuan.js",
|
||||
"character/yijiang.js",
|
||||
"character/yingbian.js",
|
||||
"character/yxs.js",
|
||||
"character/zhuogui.js",
|
||||
|
||||
"font/motoyamaru.woff2",
|
||||
"font/suits.woff2",
|
||||
|
||||
"game/asset.js",
|
||||
"game/codemirror.js",
|
||||
"game/compiler-sfc.browser.js",
|
||||
"game/config.js",
|
||||
"game/core-js-bundle.js",
|
||||
"game/directory.js",
|
||||
"game/entry.js",
|
||||
"game/game.js",
|
||||
"game/http.js",
|
||||
"game/jszip.js",
|
||||
"game/keyWords.js",
|
||||
"game/NoSleep.js",
|
||||
"game/package.js",
|
||||
"game/phantom.js",
|
||||
"game/pinyinjs.js",
|
||||
"game/pressure.js",
|
||||
"game/server.js",
|
||||
"game/source.js",
|
||||
"game/update.js",
|
||||
"game/vue.esm-browser.js",
|
||||
|
||||
"image/card/cardtempname_bg.png",
|
||||
"image/flappybird/BG.png",
|
||||
"image/flappybird/botpipe.png",
|
||||
"image/flappybird/gameclear.png",
|
||||
"image/flappybird/gameover.png",
|
||||
"image/flappybird/getready.png",
|
||||
"image/flappybird/ground.png",
|
||||
"image/flappybird/toppipe.png",
|
||||
"image/flappybird/bird/b0.png",
|
||||
"image/flappybird/bird/b1.png",
|
||||
"image/flappybird/bird/b2.png",
|
||||
"image/flappybird/ground/g0.png",
|
||||
"image/flappybird/ground/g1.png",
|
||||
"image/flappybird/tap/t0.png",
|
||||
"image/flappybird/tap/t1.png",
|
||||
|
||||
"layout/default/codemirror.css",
|
||||
"layout/default/layout.css",
|
||||
"layout/default/menu.css",
|
||||
"layout/default/phone.css",
|
||||
"layout/long/layout.css",
|
||||
"layout/long2/layout.css",
|
||||
"layout/mobile/equip.css",
|
||||
"layout/mobile/layout.css",
|
||||
"layout/mode/boss.css",
|
||||
"layout/mode/chess.css",
|
||||
"layout/mode/stone.css",
|
||||
"layout/mode/tafang.css",
|
||||
"layout/newlayout/equip.css",
|
||||
"layout/newlayout/global.css",
|
||||
"layout/newlayout/layout.css",
|
||||
"layout/nova/layout.css",
|
||||
|
||||
"mode/boss.js",
|
||||
"mode/chess.js",
|
||||
"mode/doudizhu.js",
|
||||
"mode/guozhan.js",
|
||||
"mode/identity.js",
|
||||
"mode/tafang.js",
|
||||
"mode/single.js",
|
||||
"mode/stone.js",
|
||||
"mode/brawl.js",
|
||||
"mode/versus.js",
|
||||
"mode/connect.js",
|
||||
|
||||
"extension/boss/extension.js",
|
||||
"extension/cardpile/extension.js",
|
||||
"extension/coin/extension.js",
|
||||
"extension/wuxing/extension.js",
|
||||
|
||||
"theme/music/grid.png",
|
||||
"theme/music/style.css",
|
||||
"theme/music/wood.png",
|
||||
"theme/music/wood3.png",
|
||||
"theme/simple/card.png",
|
||||
"theme/simple/grid.png",
|
||||
"theme/simple/style.css",
|
||||
"theme/simple/unknown.png",
|
||||
"theme/simple/wood.png",
|
||||
"theme/simple/wood3.png",
|
||||
"theme/woodden/grid.png",
|
||||
"theme/woodden/style.css",
|
||||
"theme/woodden/wood.jpg",
|
||||
"theme/woodden/wood.png",
|
||||
"theme/woodden/wood2.jpg",
|
||||
"theme/woodden/wood2.png",
|
||||
"theme/style/card/custom.css",
|
||||
"theme/style/card/default.css",
|
||||
"theme/style/card/music.css",
|
||||
"theme/style/card/simple.css",
|
||||
"theme/style/card/wood.css",
|
||||
"theme/style/card/new.css",
|
||||
"theme/style/card/ol.css",
|
||||
"theme/style/card/image/new.png",
|
||||
"theme/style/card/image/ol.png",
|
||||
"theme/style/cardback/custom.css",
|
||||
"theme/style/cardback/default.css",
|
||||
"theme/style/cardback/feicheng.css",
|
||||
"theme/style/cardback/liusha.css",
|
||||
"theme/style/cardback/music.css",
|
||||
"theme/style/cardback/new.css",
|
||||
"theme/style/cardback/ol.css",
|
||||
"theme/style/cardback/official.css",
|
||||
"theme/style/cardback/wood.css",
|
||||
"theme/style/cardback/image/feicheng.png",
|
||||
"theme/style/cardback/image/feicheng2.png",
|
||||
"theme/style/cardback/image/liusha.png",
|
||||
"theme/style/cardback/image/liusha2.png",
|
||||
"theme/style/cardback/image/new.png",
|
||||
"theme/style/cardback/image/new2.png",
|
||||
"theme/style/cardback/image/official.png",
|
||||
"theme/style/cardback/image/official2.png",
|
||||
"theme/style/cardback/image/ol.png",
|
||||
"theme/style/cardback/image/ol2.png",
|
||||
"theme/style/hp/custom.css",
|
||||
"theme/style/hp/default.css",
|
||||
"theme/style/hp/emotion.css",
|
||||
"theme/style/hp/glass.css",
|
||||
"theme/style/hp/official.css",
|
||||
"theme/style/hp/ol.css",
|
||||
"theme/style/hp/round.css",
|
||||
"theme/style/hp/xinglass.css",
|
||||
"theme/style/hp/xinround.css",
|
||||
"theme/style/hp/image/emotion1.png",
|
||||
"theme/style/hp/image/emotion2.png",
|
||||
"theme/style/hp/image/emotion3.png",
|
||||
"theme/style/hp/image/emotion4.png",
|
||||
"theme/style/hp/image/glass1.png",
|
||||
"theme/style/hp/image/glass2.png",
|
||||
"theme/style/hp/image/glass3.png",
|
||||
"theme/style/hp/image/glass4.png",
|
||||
"theme/style/hp/image/official1.png",
|
||||
"theme/style/hp/image/official2.png",
|
||||
"theme/style/hp/image/official3.png",
|
||||
"theme/style/hp/image/official4.png",
|
||||
"theme/style/hp/image/ol1.png",
|
||||
"theme/style/hp/image/ol2.png",
|
||||
"theme/style/hp/image/ol3.png",
|
||||
"theme/style/hp/image/ol4.png",
|
||||
"theme/style/hp/image/round1.png",
|
||||
"theme/style/hp/image/round2.png",
|
||||
"theme/style/hp/image/round3.png",
|
||||
"theme/style/hp/image/round4.png",
|
||||
"theme/style/hp/image/shield.png",
|
||||
"theme/style/hp/image/xinglass1.png",
|
||||
"theme/style/hp/image/xinglass2.png",
|
||||
"theme/style/hp/image/xinglass3.png",
|
||||
"theme/style/hp/image/xinglass4.png",
|
||||
"theme/style/hp/image/xinround1.png",
|
||||
"theme/style/hp/image/xinround2.png",
|
||||
"theme/style/hp/image/xinround3.png",
|
||||
"theme/style/hp/image/xinround4.png",
|
||||
|
||||
"node_modules/options/.npmignore",
|
||||
"node_modules/options/lib/options.js",
|
||||
"node_modules/options/package.json",
|
||||
"node_modules/ultron/.npmignore",
|
||||
"node_modules/ultron/.travis.yml",
|
||||
"node_modules/ultron/index.js",
|
||||
"node_modules/ultron/package.json",
|
||||
"node_modules/ultron/test.js",
|
||||
"node_modules/ws/.npmignore",
|
||||
"node_modules/ws/.travis.yml",
|
||||
"node_modules/ws/index.js",
|
||||
"node_modules/ws/lib/BufferPool.js",
|
||||
"node_modules/ws/lib/BufferUtil.fallback.js",
|
||||
"node_modules/ws/lib/BufferUtil.js",
|
||||
"node_modules/ws/lib/ErrorCodes.js",
|
||||
"node_modules/ws/lib/Extensions.js",
|
||||
"node_modules/ws/lib/PerMessageDeflate.js",
|
||||
"node_modules/ws/lib/Receiver.hixie.js",
|
||||
"node_modules/ws/lib/Receiver.js",
|
||||
"node_modules/ws/lib/Sender.hixie.js",
|
||||
"node_modules/ws/lib/Sender.js",
|
||||
"node_modules/ws/lib/Validation.fallback.js",
|
||||
"node_modules/ws/lib/Validation.js",
|
||||
"node_modules/ws/lib/WebSocket.js",
|
||||
"node_modules/ws/lib/WebSocketServer.js",
|
||||
"node_modules/ws/package.json",
|
||||
];
|
||||
|
|
126
game/update.js
126
game/update.js
|
@ -1,63 +1,63 @@
|
|||
window.noname_update={
|
||||
version:'1.10.10',
|
||||
update:'1.10.9',
|
||||
changeLog:[
|
||||
'整合@kuangshen04 @mengxinzxz @lieren2023 @nonameShijian @PZ157 @XboxSoldier @universe-st @copcap 的Pull Request',
|
||||
'OL界程普、界虞翻',
|
||||
'手杀杨奉、谋夏侯惇、谋高顺',
|
||||
'引入Vue框架和新的换肤机制',
|
||||
'其他AI优化与bug修复',
|
||||
],
|
||||
files:[
|
||||
'service-worker.js',
|
||||
|
||||
'card/mtg.js',
|
||||
'card/standard.js',
|
||||
|
||||
'character/diy.js',
|
||||
'character/extra.js',
|
||||
'character/gwent.js',
|
||||
'character/huicui.js',
|
||||
'character/mobile.js',
|
||||
'character/offline.js',
|
||||
'character/onlyOL.js',
|
||||
'character/ow.js',
|
||||
'character/rank.js',
|
||||
'character/refresh.js',
|
||||
'character/sb.js',
|
||||
'character/shenhua.js',
|
||||
'character/shiji.js',
|
||||
'character/sp.js',
|
||||
'character/sp2.js',
|
||||
'character/standard.js',
|
||||
'character/swd.js',
|
||||
'character/tw.js',
|
||||
'character/xianding.js',
|
||||
'character/xinghuoliaoyuan.js',
|
||||
'character/yijiang.js',
|
||||
'character/yingbian.js',
|
||||
'character/yxs.js',
|
||||
|
||||
'game/compiler-sfc.browser.js',
|
||||
'game/game.js',
|
||||
'game/pinyinjs.js',
|
||||
'game/vue.esm-browser.js',
|
||||
|
||||
'layout/default/layout.css',
|
||||
|
||||
'mode/boss.js',
|
||||
'mode/versus.js',
|
||||
|
||||
'noname/game/index.js',
|
||||
|
||||
'noname/get/index.js',
|
||||
'noname/get/is.js',
|
||||
|
||||
'noname/library/index.js',
|
||||
|
||||
'noname/library/element/content.js',
|
||||
'noname/library/element/player.js',
|
||||
|
||||
'noname/library/init/index.js',
|
||||
]
|
||||
};
|
||||
window.noname_update = {
|
||||
version: "1.10.10",
|
||||
update: "1.10.9",
|
||||
changeLog: [
|
||||
"整合@kuangshen04 @mengxinzxz @lieren2023 @nonameShijian @PZ157 @XboxSoldier @universe-st @copcap 的Pull Request",
|
||||
"OL界程普、界虞翻",
|
||||
"手杀杨奉、谋夏侯惇、谋高顺",
|
||||
"引入Vue框架和新的换肤机制",
|
||||
"其他AI优化与bug修复",
|
||||
],
|
||||
files: [
|
||||
"service-worker.js",
|
||||
|
||||
"card/mtg.js",
|
||||
"card/standard.js",
|
||||
|
||||
"character/diy.js",
|
||||
"character/extra.js",
|
||||
"character/gwent.js",
|
||||
"character/huicui.js",
|
||||
"character/mobile.js",
|
||||
"character/offline.js",
|
||||
"character/onlyOL.js",
|
||||
"character/ow.js",
|
||||
"character/rank.js",
|
||||
"character/refresh.js",
|
||||
"character/sb.js",
|
||||
"character/shenhua.js",
|
||||
"character/shiji.js",
|
||||
"character/sp.js",
|
||||
"character/sp2.js",
|
||||
"character/standard.js",
|
||||
"character/swd.js",
|
||||
"character/tw.js",
|
||||
"character/xianding.js",
|
||||
"character/xinghuoliaoyuan.js",
|
||||
"character/yijiang.js",
|
||||
"character/yingbian.js",
|
||||
"character/yxs.js",
|
||||
|
||||
"game/compiler-sfc.browser.js",
|
||||
"game/game.js",
|
||||
"game/pinyinjs.js",
|
||||
"game/vue.esm-browser.js",
|
||||
|
||||
"layout/default/layout.css",
|
||||
|
||||
"mode/boss.js",
|
||||
"mode/versus.js",
|
||||
|
||||
"noname/game/index.js",
|
||||
|
||||
"noname/get/index.js",
|
||||
"noname/get/is.js",
|
||||
|
||||
"noname/library/index.js",
|
||||
|
||||
"noname/library/element/content.js",
|
||||
"noname/library/element/player.js",
|
||||
|
||||
"noname/library/init/index.js",
|
||||
],
|
||||
};
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,118 +1,120 @@
|
|||
#arena{
|
||||
height: calc(97% + 30px);
|
||||
top:3%
|
||||
}
|
||||
#arena.mobile>#control{
|
||||
top:calc(100% - 205px);
|
||||
}
|
||||
#arena.chess.mobile>#control{
|
||||
top:calc(100% - 175px);
|
||||
}
|
||||
#control>div,#system>div>div{
|
||||
height: 40px;
|
||||
font-family: 'xinwei';
|
||||
font-size: 30px;
|
||||
line-height: 34px;
|
||||
}
|
||||
#historybar{
|
||||
top:14px;
|
||||
height: calc(100% - 150px);
|
||||
}
|
||||
#window.oblongcard #historybar{
|
||||
height: calc(100% - 170px);
|
||||
}
|
||||
#time{
|
||||
visibility: hidden;
|
||||
}
|
||||
#system{
|
||||
z-index: 31 !important;
|
||||
}
|
||||
#window>.dialog.popped{
|
||||
z-index: 21 !important;
|
||||
}
|
||||
#system>div{
|
||||
position: absolute;
|
||||
height: 60px;
|
||||
}
|
||||
#system>div:first-child{
|
||||
left:5px;
|
||||
}
|
||||
#system>div:last-child{
|
||||
right:5px;
|
||||
}
|
||||
#system>div>div{
|
||||
line-height: 40px;
|
||||
}
|
||||
#system{
|
||||
z-index: 5;
|
||||
}
|
||||
#system>div{
|
||||
transition-duration: 0.3s;
|
||||
}
|
||||
#system>div:not(.shown){
|
||||
transform: translateY(-80px);
|
||||
}
|
||||
.statusbar #system>div:not(.shown){
|
||||
transform: translateY(-120px);
|
||||
}
|
||||
#system>#system1{
|
||||
width: 140px;
|
||||
}
|
||||
#system>#system2{
|
||||
width: calc(100% - 140px);
|
||||
}
|
||||
#system>div:not(.shown)>div{
|
||||
pointer-events: none;
|
||||
}
|
||||
#pausebutton,#autobutton,#restartbutton{
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.menu-container>.menu.main,
|
||||
.popup-container>.menu{
|
||||
zoom:1.3;
|
||||
}
|
||||
.popup-container>.menu{
|
||||
max-height: 307px;
|
||||
}
|
||||
.popup-container>.menu.visual.withbar{
|
||||
max-height: 360px;
|
||||
}
|
||||
.menu-container>.menu.main:not(.center){
|
||||
top: 12px !important;
|
||||
left: 10px !important;
|
||||
}
|
||||
|
||||
#system{
|
||||
width: calc(100% - 12px) !important;
|
||||
left: 0 !important;
|
||||
}
|
||||
|
||||
#arena.phonetop{
|
||||
top:80px !important;
|
||||
}
|
||||
.player>.identity{
|
||||
transform: scale(1.3);
|
||||
}
|
||||
#window>.dialog.popped.hoverdialog{
|
||||
transform: scale(1.3);
|
||||
transform-origin: left top;
|
||||
}
|
||||
.player:not([data-position='0']).linked .identity,
|
||||
#arena.chess .player.linked .identity{
|
||||
transform:scale(1.3) rotate(90deg);
|
||||
}
|
||||
|
||||
/*br.finish_game{
|
||||
display: inline !important;
|
||||
}*/
|
||||
div:not(.shown)>div.finish_game{
|
||||
opacity: 0 !important;
|
||||
}
|
||||
div.finish_game{
|
||||
transition: all 0.2s !important;
|
||||
}
|
||||
|
||||
@media screen and (orientation:portrait) {
|
||||
|
||||
}
|
||||
#arena {
|
||||
height: calc(97% + 30px);
|
||||
top: 3%;
|
||||
}
|
||||
#arena.mobile > #control {
|
||||
top: calc(100% - 205px);
|
||||
}
|
||||
#arena.chess.mobile > #control {
|
||||
top: calc(100% - 175px);
|
||||
}
|
||||
#control > div,
|
||||
#system > div > div {
|
||||
height: 40px;
|
||||
font-family: "xinwei";
|
||||
font-size: 30px;
|
||||
line-height: 34px;
|
||||
}
|
||||
#historybar {
|
||||
top: 14px;
|
||||
height: calc(100% - 150px);
|
||||
}
|
||||
#window.oblongcard #historybar {
|
||||
height: calc(100% - 170px);
|
||||
}
|
||||
#time {
|
||||
visibility: hidden;
|
||||
}
|
||||
#system {
|
||||
z-index: 31 !important;
|
||||
}
|
||||
#window > .dialog.popped {
|
||||
z-index: 21 !important;
|
||||
}
|
||||
#system > div {
|
||||
position: absolute;
|
||||
height: 60px;
|
||||
}
|
||||
#system > div:first-child {
|
||||
left: 5px;
|
||||
}
|
||||
#system > div:last-child {
|
||||
right: 5px;
|
||||
}
|
||||
#system > div > div {
|
||||
line-height: 40px;
|
||||
}
|
||||
#system {
|
||||
z-index: 5;
|
||||
}
|
||||
#system > div {
|
||||
transition-duration: 0.3s;
|
||||
}
|
||||
#system > div:not(.shown) {
|
||||
transform: translateY(-80px);
|
||||
}
|
||||
.statusbar #system > div:not(.shown) {
|
||||
transform: translateY(-120px);
|
||||
}
|
||||
#system > #system1 {
|
||||
width: 140px;
|
||||
}
|
||||
#system > #system2 {
|
||||
width: calc(100% - 140px);
|
||||
}
|
||||
#system > div:not(.shown) > div {
|
||||
pointer-events: none;
|
||||
}
|
||||
#pausebutton,
|
||||
#autobutton,
|
||||
#restartbutton {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.menu-container > .menu.main,
|
||||
.popup-container > .menu {
|
||||
zoom: 1.3;
|
||||
}
|
||||
.popup-container > .menu {
|
||||
max-height: 307px;
|
||||
}
|
||||
.popup-container > .menu.visual.withbar {
|
||||
max-height: 360px;
|
||||
}
|
||||
.menu-container > .menu.main:not(.center) {
|
||||
top: 12px !important;
|
||||
left: 10px !important;
|
||||
}
|
||||
|
||||
#system {
|
||||
width: calc(100% - 12px) !important;
|
||||
left: 0 !important;
|
||||
}
|
||||
|
||||
#arena.phonetop {
|
||||
top: 80px !important;
|
||||
}
|
||||
.player > .identity {
|
||||
transform: scale(1.3);
|
||||
}
|
||||
#window > .dialog.popped.hoverdialog {
|
||||
transform: scale(1.3);
|
||||
transform-origin: left top;
|
||||
}
|
||||
.player:not([data-position="0"]).linked .identity,
|
||||
#arena.chess .player.linked .identity {
|
||||
transform: scale(1.3) rotate(90deg);
|
||||
}
|
||||
|
||||
/*br.finish_game{
|
||||
display: inline !important;
|
||||
}*/
|
||||
div:not(.shown) > div.finish_game {
|
||||
opacity: 0 !important;
|
||||
}
|
||||
div.finish_game {
|
||||
transition: all 0.2s !important;
|
||||
}
|
||||
|
||||
@media screen and (orientation: portrait) {
|
||||
}
|
||||
|
|
|
@ -1,257 +1,410 @@
|
|||
@import "../mobile/layout.css";
|
||||
|
||||
|
||||
#window.rightbar #system,
|
||||
#window.leftbar #system{
|
||||
width: calc(100% - 62px);
|
||||
}
|
||||
#window.leftbar #system{
|
||||
left: 50px;
|
||||
}
|
||||
#window.rightbar #historybar{
|
||||
left: calc(100% - 50px);
|
||||
}
|
||||
#window.leftbar #historybar{
|
||||
left: 0;
|
||||
}
|
||||
#historybar{
|
||||
left: calc(100% - 50px);
|
||||
border-radius: 0;
|
||||
top: 0;
|
||||
height: calc(100% - 121px);
|
||||
z-index: 1;
|
||||
}
|
||||
#window.oblongcard #historybar{
|
||||
height: calc(100% - 141px);
|
||||
}
|
||||
|
||||
#arena:not(.fewplayer)>.player:not(.minskin):not(*[data-position='0'])>.name.name2{
|
||||
left: auto;
|
||||
right: 13px;
|
||||
}
|
||||
|
||||
#arena:not(.fewplayer)>.player:not(.minskin):not(*[data-position='0']){
|
||||
width: 120px !important;
|
||||
height: 220px !important;
|
||||
}
|
||||
#arena:not(.fewplayer)>.player:not(.minskin):not(*[data-position='0'])>.marks{
|
||||
left: -15px;
|
||||
}
|
||||
#arena:not(.fewplayer)>.player:not(.minskin):not(*[data-position='0'])>.judges{
|
||||
right: -27px;
|
||||
}
|
||||
#arena:not(.fewplayer)[data-player_height='default']>.player:not(.minskin):not(*[data-position='0']){
|
||||
height: 200px !important;
|
||||
}
|
||||
#arena:not(.fewplayer)[data-player_height='short']>.player:not(.minskin):not(*[data-position='0']){
|
||||
height: 180px !important;
|
||||
}
|
||||
#arena:not(.fewplayer)>.player:not(.minskin):not(*[data-position='0'])>.equips{
|
||||
transform: scale(0.8);
|
||||
transform-origin: bottom left;
|
||||
}
|
||||
#arena:not(.fewplayer).lslim_player .player .equips{
|
||||
left: 5px;
|
||||
}
|
||||
#arena:not(.fewplayer)>.player:not(.minskin):not(*[data-position='0'])>.avatar,
|
||||
#arena:not(.fewplayer)>.player:not(.minskin):not(*[data-position='0'])>.avatar2{
|
||||
width: calc(100% - 14px) !important;
|
||||
height: calc(100% - 14px) !important;
|
||||
background-position: 50% !important;
|
||||
}
|
||||
#arena.uslim_player:not(.fewplayer)>.player:not(.minskin):not(*[data-position='0'])>.avatar,
|
||||
#arena.uslim_player:not(.fewplayer)>.player:not(.minskin):not(*[data-position='0'])>.avatar2{
|
||||
width: calc(100% - 6px) !important;
|
||||
height: calc(100% - 6px) !important;
|
||||
background-position: 50% !important;
|
||||
}
|
||||
#arena.lslim_player:not(.fewplayer)>.player:not(.minskin):not(*[data-position='0'])>.avatar,
|
||||
#arena.lslim_player:not(.fewplayer)>.player:not(.minskin):not(*[data-position='0'])>.avatar2{
|
||||
width: calc(100% - 10px) !important;
|
||||
height: calc(100% - 10px) !important;
|
||||
background-position: 50% !important;
|
||||
}
|
||||
#arena:not(.fewplayer)>.player.fullskin2:not(.minskin):not(*[data-position='0'])>.avatar,
|
||||
#arena:not(.fewplayer)>.player.fullskin2:not(.minskin):not(*[data-position='0'])>.avatar2{
|
||||
height: 50% !important;
|
||||
background-position: 0 0 !important;
|
||||
border-radius: 8px !important;
|
||||
}
|
||||
#arena.uslim_player:not(.fewplayer)>.player.fullskin2:not(.minskin):not(*[data-position='0'])>.avatar,
|
||||
#arena.uslim_player:not(.fewplayer)>.player.fullskin2:not(.minskin):not(*[data-position='0'])>.avatar2{
|
||||
height: calc(50% + 4px) !important;
|
||||
}
|
||||
#arena.lslim_player:not(.fewplayer)>.player.fullskin2:not(.minskin):not(*[data-position='0'])>.avatar,
|
||||
#arena.lslim_player:not(.fewplayer)>.player.fullskin2:not(.minskin):not(*[data-position='0'])>.avatar2{
|
||||
height: calc(50% + 2px) !important;
|
||||
}
|
||||
#window[data-radius_size='reduce'] #arena:not(.fewplayer)>.player.fullskin2:not(.minskin):not(*[data-position='0'])>.avatar,
|
||||
#window[data-radius_size='reduce'] #arena:not(.fewplayer)>.player.fullskin2:not(.minskin):not(*[data-position='0'])>.avatar2{
|
||||
border-radius: 4px !important;
|
||||
}
|
||||
#window[data-radius_size='off'] #arena:not(.fewplayer)>.player.fullskin2:not(.minskin):not(*[data-position='0'])>.avatar,
|
||||
#window[data-radius_size='off'] #arena:not(.fewplayer)>.player.fullskin2:not(.minskin):not(*[data-position='0'])>.avatar2{
|
||||
border-radius: 0px !important;
|
||||
}
|
||||
#window[data-radius_size='increase'] #arena:not(.fewplayer)>.player.fullskin2:not(.minskin):not(*[data-position='0'])>.avatar,
|
||||
#window[data-radius_size='increase'] #arena:not(.fewplayer)>.player.fullskin2:not(.minskin):not(*[data-position='0'])>.avatar2{
|
||||
border-radius: 16px !important;
|
||||
}
|
||||
#arena:not(.fewplayer)>.player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position='0'])>.avatar{
|
||||
border-radius: 8px 8px 0 0 !important;
|
||||
height: calc(50% + 14px) !important;
|
||||
clip-path: polygon(-10px -10px, 116px -10px, 116px 92px, 106px 92px, 0px 114px, -10px 114px);
|
||||
-webkit-clip-path: polygon(-10px -10px, 116px -10px, 116px 92px, 106px 92px, 0px 114px, -10px 114px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-player_height='default']>.player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position='0'])>.avatar{
|
||||
clip-path: polygon(-10px -10px, 116px -10px, 116px 82px, 106px 82px, 0px 104px, -10px 104px);
|
||||
-webkit-clip-path: polygon(-10px -10px, 116px -10px, 116px 82px, 106px 82px, 0px 104px, -10px 104px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-player_height='short']>.player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position='0'])>.avatar{
|
||||
clip-path: polygon(-10px -10px, 116px -10px, 116px 72px, 106px 72px, 0px 94px, -10px 94px);
|
||||
-webkit-clip-path: polygon(-10px -10px, 116px -10px, 116px 72px, 106px 72px, 0px 94px, -10px 94px);
|
||||
}
|
||||
#arena.uslim_player:not(.fewplayer)>.player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position='0'])>.avatar{
|
||||
height: calc(50% + 18px) !important;
|
||||
clip-path: polygon(-10px -10px, 124px -10px, 124px 96px, 114px 96px, 0px 118px, -10px 118px);
|
||||
-webkit-clip-path: polygon(-10px -10px, 124px -10px, 124px 96px, 114px 96px, 0px 118px, -10px 118px);
|
||||
}
|
||||
#arena.uslim_player:not(.fewplayer)[data-player_height='default']>.player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position='0'])>.avatar{
|
||||
clip-path: polygon(-10px -10px, 124px -10px, 124px 86px, 114px 86px, 0px 108px, -10px 108px);
|
||||
-webkit-clip-path: polygon(-10px -10px, 124px -10px, 124px 86px, 114px 86px, 0px 108px, -10px 108px);
|
||||
}
|
||||
#arena.uslim_player:not(.fewplayer)[data-player_height='short']>.player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position='0'])>.avatar{
|
||||
clip-path: polygon(-10px -10px, 124px -10px, 124px 76px, 114px 76px, 0px 98px, -10px 98px);
|
||||
-webkit-clip-path: polygon(-10px -10px, 124px -10px, 124px 76px, 114px 76px, 0px 98px, -10px 98px);
|
||||
}
|
||||
#arena.lslim_player:not(.fewplayer)>.player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position='0'])>.avatar{
|
||||
height: calc(50% + 18px) !important;
|
||||
clip-path: polygon(-10px -10px, 120px -10px, 120px 94px, 110px 94px, 0px 116px, -10px 116px);
|
||||
-webkit-clip-path: polygon(-10px -10px, 120px -10px, 120px 94px, 110px 94px, 0px 116px, -10px 116px);
|
||||
}
|
||||
#arena.lslim_player:not(.fewplayer)[data-player_height='default']>.player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position='0'])>.avatar{
|
||||
clip-path: polygon(-10px -10px, 120px -10px, 120px 84px, 110px 84px, 0px 106px, -10px 106px);
|
||||
-webkit-clip-path: polygon(-10px -10px, 120px -10px, 120px 84px, 110px 84px, 0px 106px, -10px 106px);
|
||||
}
|
||||
#arena.lslim_player:not(.fewplayer)[data-player_height='short']>.player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position='0'])>.avatar{
|
||||
clip-path: polygon(-10px -10px, 120px -10px, 120px 74px, 110px 74px, 0px 96px, -10px 96px);
|
||||
-webkit-clip-path: polygon(-10px -10px, 120px -10px, 120px 74px, 110px 74px, 0px 96px, -10px 96px);
|
||||
}
|
||||
#window[data-radius_size='reduce'] #arena:not(.fewplayer)>.player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position='0'])>.avatar{
|
||||
border-radius: 4px 4px 0 0 !important;
|
||||
}
|
||||
#window[data-radius_size='off'] #arena:not(.fewplayer)>.player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position='0'])>.avatar{
|
||||
border-radius: 0 0 0 0 !important;
|
||||
}
|
||||
#window[data-radius_size='increase'] #arena:not(.fewplayer)>.player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position='0'])>.avatar{
|
||||
border-radius: 16px 16px 0 0 !important;
|
||||
}
|
||||
#arena:not(.fewplayer)>.player.fullskin2:not(.minskin):not(.unseen):not(*[data-position='0'])>.avatar2{
|
||||
border-radius: 0 0 8px 8px !important;
|
||||
top: calc(50% - 21px) !important;
|
||||
height: calc(50% + 14px) !important;
|
||||
background-position: 0 10px !important;
|
||||
clip-path: polygon(-10px 32px, 0 32px, 106px 10px, 116px 10px, 116px 134px, -10px 134px);
|
||||
-webkit-clip-path: polygon(-10px 32px, 0 32px, 106px 10px, 116px 10px, 116px 134px, -10px 134px);
|
||||
}
|
||||
#arena.uslim_player:not(.fewplayer)>.player.fullskin2:not(.minskin):not(.unseen):not(*[data-position='0'])>.avatar2{
|
||||
top: calc(50% - 21px) !important;
|
||||
height: calc(50% + 18px) !important;
|
||||
clip-path: polygon(-10px 32px, 0 32px, 114px 10px, 124px 10px, 124px 138px, -10px 138px);
|
||||
-webkit-clip-path: polygon(-10px 32px, 0 32px, 114px 10px, 124px 10px, 124px 138px, -10px 138px);
|
||||
}
|
||||
#arena.lslim_player:not(.fewplayer)>.player.fullskin2:not(.minskin):not(.unseen):not(*[data-position='0'])>.avatar2{
|
||||
top: calc(50% - 21px) !important;
|
||||
height: calc(50% + 16px) !important;
|
||||
clip-path: polygon(-10px 32px, 0 32px, 110px 10px, 120px 10px, 120px 136px, -10px 136px);
|
||||
-webkit-clip-path: polygon(-10px 32px, 0 32px, 110px 10px, 120px 10px, 120px 136px, -10px 136px);
|
||||
}
|
||||
#window[data-radius_size='reduce'] #arena:not(.fewplayer)>.player.fullskin2:not(.minskin):not(.unseen):not(*[data-position='0'])>.avatar2{
|
||||
border-radius: 0 0 4px 4px !important;
|
||||
}
|
||||
#window[data-radius_size='off'] #arena:not(.fewplayer)>.player.fullskin2:not(.minskin):not(.unseen):not(*[data-position='0'])>.avatar2{
|
||||
border-radius: 0 0 0 0 !important;
|
||||
}
|
||||
#window[data-radius_size='increase'] #arena:not(.fewplayer)>.player.fullskin2:not(.minskin):not(.unseen):not(*[data-position='0'])>.avatar2{
|
||||
border-radius: 0 0 16px 16px !important;
|
||||
}
|
||||
#arena:not(.fewplayer)>.player.fullskin2:not(.minskin):not(*[data-position='0'])>.avatar2{
|
||||
top: calc(50% - 7px) !important;
|
||||
}
|
||||
#arena:not(.fewplayer)>.player:not(.minskin):not(*[data-position='0'])>.identity{
|
||||
left: 102px;
|
||||
}
|
||||
#arena:not(.fewplayer)>.player:not(.minskin):not(*[data-position='0'])>.hp:not(.actcount){
|
||||
left: 93px;
|
||||
}
|
||||
/*#arena:not(.fewplayer)>.player:not(.minskin):not(*[data-position='0'])>.hp:not(.actcount).text{
|
||||
left: 89px;
|
||||
}*/
|
||||
#arena:not(.fewplayer)>.player.fullskin2 .avatar2{
|
||||
z-index: 2;
|
||||
}
|
||||
#arena:not(.fewplayer)>.player.unseen:not(.unseen2) .count{
|
||||
text-align: left;
|
||||
border-radius:3px 0 0 3px;
|
||||
}
|
||||
#arena:not(.fewplayer)>.player.unseen2 .count{
|
||||
border-radius: 3px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#arena:not(.fewplayer) .timerbar>div{
|
||||
top: 205px;
|
||||
width: 96px;
|
||||
left: 12px;
|
||||
}
|
||||
#arena:not(.fewplayer)[data-player_height='default'] .timerbar>div{
|
||||
top: 185px;
|
||||
}
|
||||
#arena:not(.fewplayer)[data-player_height='short'] .timerbar>div{
|
||||
top: 165px;
|
||||
}
|
||||
|
||||
/*--------位置(8人)------*/
|
||||
#arena:not(.fewplayer)[data-number='8']>.player[data-position='1']{top:calc(30% - 120px);left:calc(-300% / 94 + 4375% / 47 - 735px + 720px);}
|
||||
#arena:not(.fewplayer)[data-number='8']>.player[data-position='2']{top:calc(8% - 32px);left:calc(-300% / 94 + 3750% / 47 - 630px + 600px);}
|
||||
#arena:not(.fewplayer)[data-number='8']>.player[data-position='3']{top:0;left:calc(-300% / 94 + 3125% / 47 - 525px + 480px);}
|
||||
#arena:not(.fewplayer)[data-number='8']>.player[data-position='4']{top:0;left:calc(-300% / 94 + 2500% / 47 - 420px + 360px);}
|
||||
#arena:not(.fewplayer)[data-number='8']>.player[data-position='5']{top:0;left:calc(-300% / 94 + 1875% / 47 - 315px + 240px);}
|
||||
#arena:not(.fewplayer)[data-number='8']>.player[data-position='6']{top:calc(8% - 32px);left:calc(-300% / 94 + 1250% / 47 - 210px + 120px);}
|
||||
#arena:not(.fewplayer)[data-number='8']>.player[data-position='7']{top:calc(30% - 120px);left:calc(-300% / 94 + 625% / 47 - 105px);}
|
||||
@media screen and (min-width: 1105px){
|
||||
#arena:not(.fewplayer)[data-number='8']>.player[data-position='1']{left:calc(100% - 120px);}
|
||||
#arena:not(.fewplayer)[data-number='8']>.player[data-position='2']{left:calc(500% / 6 - 100px);}
|
||||
#arena:not(.fewplayer)[data-number='8']>.player[data-position='3']{left:calc(400% / 6 - 80px);}
|
||||
#arena:not(.fewplayer)[data-number='8']>.player[data-position='4']{left:calc(300% / 6 - 60px);}
|
||||
#arena:not(.fewplayer)[data-number='8']>.player[data-position='5']{left:calc(200% / 6 - 40px);}
|
||||
#arena:not(.fewplayer)[data-number='8']>.player[data-position='6']{left:calc(100% / 6 - 20px);}
|
||||
#arena:not(.fewplayer)[data-number='8']>.player[data-position='7']{left:0;}
|
||||
}
|
||||
/*--------位置(7人)------*/
|
||||
#arena:not(.fewplayer)[data-number='7']>.player[data-position='1']{top:calc(30% - 120px);left:calc(100% - 120px);}
|
||||
#arena:not(.fewplayer)[data-number='7']>.player[data-position='2']{top:calc(8% - 32px);left:calc(80% - 96px);}
|
||||
#arena:not(.fewplayer)[data-number='7']>.player[data-position='3']{top:0;left:calc(60% - 72px);}
|
||||
#arena:not(.fewplayer)[data-number='7']>.player[data-position='4']{top:0;left:calc(40% - 48px);}
|
||||
#arena:not(.fewplayer)[data-number='7']>.player[data-position='5']{top:calc(8% - 32px);left:calc(20% - 24px);}
|
||||
#arena:not(.fewplayer)[data-number='7']>.player[data-position='6']{top:calc(30% - 120px);left:0;}
|
||||
/*--------位置(6人)------*/
|
||||
#arena:not(.fewplayer)[data-number='6']>.player[data-position='1']{top:calc(30% - 120px);left:calc(100% - 120px);}
|
||||
#arena:not(.fewplayer)[data-number='6']>.player[data-position='2']{top:0px;left:calc(75% - 90px);}
|
||||
#arena:not(.fewplayer)[data-number='6']>.player[data-position='3']{top:0;left:calc(50% - 60px);}
|
||||
#arena:not(.fewplayer)[data-number='6']>.player[data-position='4']{top:0px;left:calc(25% - 30px);}
|
||||
#arena:not(.fewplayer)[data-number='6']>.player[data-position='5']{top:calc(30% - 120px);left:0;}
|
||||
/*--------位置(5人)------*/
|
||||
#arena:not(.fewplayer)[data-number='5']>.player[data-position='1']{top:calc(30% - 120px);left:calc(100% - 120px);}
|
||||
#arena:not(.fewplayer)[data-number='5']>.player[data-position='2']{top:0;left:calc(200% / 3 - 80px);}
|
||||
#arena:not(.fewplayer)[data-number='5']>.player[data-position='3']{top:0;left:calc(100% / 3 - 40px);}
|
||||
#arena:not(.fewplayer)[data-number='5']>.player[data-position='4']{top:calc(30% - 120px);left:0;}
|
||||
/*--------位置(4人)------*/
|
||||
#arena:not(.fewplayer)[data-number='4']>.player[data-position='1']{top:calc(30% - 120px);left:calc(100% - 120px);}
|
||||
#arena:not(.fewplayer)[data-number='4']>.player[data-position='2']{top:0;left:calc(50% - 60px);}
|
||||
#arena:not(.fewplayer)[data-number='4']>.player[data-position='3']{top:calc(30% - 120px);left:0;}
|
||||
/*--------位置(3人)------*/
|
||||
#arena:not(.fewplayer)[data-number='3']>.player[data-position='1']{top:calc(60% / 3 - 88px);left:calc(75% + 80px);}
|
||||
#arena:not(.fewplayer)[data-number='3']>.player[data-position='2']{top:calc(60% / 3 - 88px);left:calc(25% - 200px);}
|
||||
/*--------位置(2人)------*/
|
||||
#arena:not(.fewplayer)[data-number='2']>.player[data-position='1']{top:0;left:calc(50% - 60px);}
|
||||
@import "../mobile/layout.css";
|
||||
|
||||
#window.rightbar #system,
|
||||
#window.leftbar #system {
|
||||
width: calc(100% - 62px);
|
||||
}
|
||||
#window.leftbar #system {
|
||||
left: 50px;
|
||||
}
|
||||
#window.rightbar #historybar {
|
||||
left: calc(100% - 50px);
|
||||
}
|
||||
#window.leftbar #historybar {
|
||||
left: 0;
|
||||
}
|
||||
#historybar {
|
||||
left: calc(100% - 50px);
|
||||
border-radius: 0;
|
||||
top: 0;
|
||||
height: calc(100% - 121px);
|
||||
z-index: 1;
|
||||
}
|
||||
#window.oblongcard #historybar {
|
||||
height: calc(100% - 141px);
|
||||
}
|
||||
|
||||
#arena:not(.fewplayer) > .player:not(.minskin):not(*[data-position="0"]) > .name.name2 {
|
||||
left: auto;
|
||||
right: 13px;
|
||||
}
|
||||
|
||||
#arena:not(.fewplayer) > .player:not(.minskin):not(*[data-position="0"]) {
|
||||
width: 120px !important;
|
||||
height: 220px !important;
|
||||
}
|
||||
#arena:not(.fewplayer) > .player:not(.minskin):not(*[data-position="0"]) > .marks {
|
||||
left: -15px;
|
||||
}
|
||||
#arena:not(.fewplayer) > .player:not(.minskin):not(*[data-position="0"]) > .judges {
|
||||
right: -27px;
|
||||
}
|
||||
#arena:not(.fewplayer)[data-player_height="default"] > .player:not(.minskin):not(*[data-position="0"]) {
|
||||
height: 200px !important;
|
||||
}
|
||||
#arena:not(.fewplayer)[data-player_height="short"] > .player:not(.minskin):not(*[data-position="0"]) {
|
||||
height: 180px !important;
|
||||
}
|
||||
#arena:not(.fewplayer) > .player:not(.minskin):not(*[data-position="0"]) > .equips {
|
||||
transform: scale(0.8);
|
||||
transform-origin: bottom left;
|
||||
}
|
||||
#arena:not(.fewplayer).lslim_player .player .equips {
|
||||
left: 5px;
|
||||
}
|
||||
#arena:not(.fewplayer) > .player:not(.minskin):not(*[data-position="0"]) > .avatar,
|
||||
#arena:not(.fewplayer) > .player:not(.minskin):not(*[data-position="0"]) > .avatar2 {
|
||||
width: calc(100% - 14px) !important;
|
||||
height: calc(100% - 14px) !important;
|
||||
background-position: 50% !important;
|
||||
}
|
||||
#arena.uslim_player:not(.fewplayer) > .player:not(.minskin):not(*[data-position="0"]) > .avatar,
|
||||
#arena.uslim_player:not(.fewplayer) > .player:not(.minskin):not(*[data-position="0"]) > .avatar2 {
|
||||
width: calc(100% - 6px) !important;
|
||||
height: calc(100% - 6px) !important;
|
||||
background-position: 50% !important;
|
||||
}
|
||||
#arena.lslim_player:not(.fewplayer) > .player:not(.minskin):not(*[data-position="0"]) > .avatar,
|
||||
#arena.lslim_player:not(.fewplayer) > .player:not(.minskin):not(*[data-position="0"]) > .avatar2 {
|
||||
width: calc(100% - 10px) !important;
|
||||
height: calc(100% - 10px) !important;
|
||||
background-position: 50% !important;
|
||||
}
|
||||
#arena:not(.fewplayer) > .player.fullskin2:not(.minskin):not(*[data-position="0"]) > .avatar,
|
||||
#arena:not(.fewplayer) > .player.fullskin2:not(.minskin):not(*[data-position="0"]) > .avatar2 {
|
||||
height: 50% !important;
|
||||
background-position: 0 0 !important;
|
||||
border-radius: 8px !important;
|
||||
}
|
||||
#arena.uslim_player:not(.fewplayer) > .player.fullskin2:not(.minskin):not(*[data-position="0"]) > .avatar,
|
||||
#arena.uslim_player:not(.fewplayer) > .player.fullskin2:not(.minskin):not(*[data-position="0"]) > .avatar2 {
|
||||
height: calc(50% + 4px) !important;
|
||||
}
|
||||
#arena.lslim_player:not(.fewplayer) > .player.fullskin2:not(.minskin):not(*[data-position="0"]) > .avatar,
|
||||
#arena.lslim_player:not(.fewplayer) > .player.fullskin2:not(.minskin):not(*[data-position="0"]) > .avatar2 {
|
||||
height: calc(50% + 2px) !important;
|
||||
}
|
||||
#window[data-radius_size="reduce"]
|
||||
#arena:not(.fewplayer)
|
||||
> .player.fullskin2:not(.minskin):not(*[data-position="0"])
|
||||
> .avatar,
|
||||
#window[data-radius_size="reduce"]
|
||||
#arena:not(.fewplayer)
|
||||
> .player.fullskin2:not(.minskin):not(*[data-position="0"])
|
||||
> .avatar2 {
|
||||
border-radius: 4px !important;
|
||||
}
|
||||
#window[data-radius_size="off"]
|
||||
#arena:not(.fewplayer)
|
||||
> .player.fullskin2:not(.minskin):not(*[data-position="0"])
|
||||
> .avatar,
|
||||
#window[data-radius_size="off"]
|
||||
#arena:not(.fewplayer)
|
||||
> .player.fullskin2:not(.minskin):not(*[data-position="0"])
|
||||
> .avatar2 {
|
||||
border-radius: 0px !important;
|
||||
}
|
||||
#window[data-radius_size="increase"]
|
||||
#arena:not(.fewplayer)
|
||||
> .player.fullskin2:not(.minskin):not(*[data-position="0"])
|
||||
> .avatar,
|
||||
#window[data-radius_size="increase"]
|
||||
#arena:not(.fewplayer)
|
||||
> .player.fullskin2:not(.minskin):not(*[data-position="0"])
|
||||
> .avatar2 {
|
||||
border-radius: 16px !important;
|
||||
}
|
||||
#arena:not(.fewplayer) > .player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position="0"]) > .avatar {
|
||||
border-radius: 8px 8px 0 0 !important;
|
||||
height: calc(50% + 14px) !important;
|
||||
clip-path: polygon(-10px -10px, 116px -10px, 116px 92px, 106px 92px, 0px 114px, -10px 114px);
|
||||
-webkit-clip-path: polygon(-10px -10px, 116px -10px, 116px 92px, 106px 92px, 0px 114px, -10px 114px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-player_height="default"]
|
||||
> .player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position="0"])
|
||||
> .avatar {
|
||||
clip-path: polygon(-10px -10px, 116px -10px, 116px 82px, 106px 82px, 0px 104px, -10px 104px);
|
||||
-webkit-clip-path: polygon(-10px -10px, 116px -10px, 116px 82px, 106px 82px, 0px 104px, -10px 104px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-player_height="short"]
|
||||
> .player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position="0"])
|
||||
> .avatar {
|
||||
clip-path: polygon(-10px -10px, 116px -10px, 116px 72px, 106px 72px, 0px 94px, -10px 94px);
|
||||
-webkit-clip-path: polygon(-10px -10px, 116px -10px, 116px 72px, 106px 72px, 0px 94px, -10px 94px);
|
||||
}
|
||||
#arena.uslim_player:not(.fewplayer)
|
||||
> .player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position="0"])
|
||||
> .avatar {
|
||||
height: calc(50% + 18px) !important;
|
||||
clip-path: polygon(-10px -10px, 124px -10px, 124px 96px, 114px 96px, 0px 118px, -10px 118px);
|
||||
-webkit-clip-path: polygon(-10px -10px, 124px -10px, 124px 96px, 114px 96px, 0px 118px, -10px 118px);
|
||||
}
|
||||
#arena.uslim_player:not(.fewplayer)[data-player_height="default"]
|
||||
> .player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position="0"])
|
||||
> .avatar {
|
||||
clip-path: polygon(-10px -10px, 124px -10px, 124px 86px, 114px 86px, 0px 108px, -10px 108px);
|
||||
-webkit-clip-path: polygon(-10px -10px, 124px -10px, 124px 86px, 114px 86px, 0px 108px, -10px 108px);
|
||||
}
|
||||
#arena.uslim_player:not(.fewplayer)[data-player_height="short"]
|
||||
> .player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position="0"])
|
||||
> .avatar {
|
||||
clip-path: polygon(-10px -10px, 124px -10px, 124px 76px, 114px 76px, 0px 98px, -10px 98px);
|
||||
-webkit-clip-path: polygon(-10px -10px, 124px -10px, 124px 76px, 114px 76px, 0px 98px, -10px 98px);
|
||||
}
|
||||
#arena.lslim_player:not(.fewplayer)
|
||||
> .player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position="0"])
|
||||
> .avatar {
|
||||
height: calc(50% + 18px) !important;
|
||||
clip-path: polygon(-10px -10px, 120px -10px, 120px 94px, 110px 94px, 0px 116px, -10px 116px);
|
||||
-webkit-clip-path: polygon(-10px -10px, 120px -10px, 120px 94px, 110px 94px, 0px 116px, -10px 116px);
|
||||
}
|
||||
#arena.lslim_player:not(.fewplayer)[data-player_height="default"]
|
||||
> .player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position="0"])
|
||||
> .avatar {
|
||||
clip-path: polygon(-10px -10px, 120px -10px, 120px 84px, 110px 84px, 0px 106px, -10px 106px);
|
||||
-webkit-clip-path: polygon(-10px -10px, 120px -10px, 120px 84px, 110px 84px, 0px 106px, -10px 106px);
|
||||
}
|
||||
#arena.lslim_player:not(.fewplayer)[data-player_height="short"]
|
||||
> .player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position="0"])
|
||||
> .avatar {
|
||||
clip-path: polygon(-10px -10px, 120px -10px, 120px 74px, 110px 74px, 0px 96px, -10px 96px);
|
||||
-webkit-clip-path: polygon(-10px -10px, 120px -10px, 120px 74px, 110px 74px, 0px 96px, -10px 96px);
|
||||
}
|
||||
#window[data-radius_size="reduce"]
|
||||
#arena:not(.fewplayer)
|
||||
> .player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position="0"])
|
||||
> .avatar {
|
||||
border-radius: 4px 4px 0 0 !important;
|
||||
}
|
||||
#window[data-radius_size="off"]
|
||||
#arena:not(.fewplayer)
|
||||
> .player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position="0"])
|
||||
> .avatar {
|
||||
border-radius: 0 0 0 0 !important;
|
||||
}
|
||||
#window[data-radius_size="increase"]
|
||||
#arena:not(.fewplayer)
|
||||
> .player.fullskin2:not(.minskin):not(.unseen2):not(*[data-position="0"])
|
||||
> .avatar {
|
||||
border-radius: 16px 16px 0 0 !important;
|
||||
}
|
||||
#arena:not(.fewplayer) > .player.fullskin2:not(.minskin):not(.unseen):not(*[data-position="0"]) > .avatar2 {
|
||||
border-radius: 0 0 8px 8px !important;
|
||||
top: calc(50% - 21px) !important;
|
||||
height: calc(50% + 14px) !important;
|
||||
background-position: 0 10px !important;
|
||||
clip-path: polygon(-10px 32px, 0 32px, 106px 10px, 116px 10px, 116px 134px, -10px 134px);
|
||||
-webkit-clip-path: polygon(-10px 32px, 0 32px, 106px 10px, 116px 10px, 116px 134px, -10px 134px);
|
||||
}
|
||||
#arena.uslim_player:not(.fewplayer)
|
||||
> .player.fullskin2:not(.minskin):not(.unseen):not(*[data-position="0"])
|
||||
> .avatar2 {
|
||||
top: calc(50% - 21px) !important;
|
||||
height: calc(50% + 18px) !important;
|
||||
clip-path: polygon(-10px 32px, 0 32px, 114px 10px, 124px 10px, 124px 138px, -10px 138px);
|
||||
-webkit-clip-path: polygon(-10px 32px, 0 32px, 114px 10px, 124px 10px, 124px 138px, -10px 138px);
|
||||
}
|
||||
#arena.lslim_player:not(.fewplayer)
|
||||
> .player.fullskin2:not(.minskin):not(.unseen):not(*[data-position="0"])
|
||||
> .avatar2 {
|
||||
top: calc(50% - 21px) !important;
|
||||
height: calc(50% + 16px) !important;
|
||||
clip-path: polygon(-10px 32px, 0 32px, 110px 10px, 120px 10px, 120px 136px, -10px 136px);
|
||||
-webkit-clip-path: polygon(-10px 32px, 0 32px, 110px 10px, 120px 10px, 120px 136px, -10px 136px);
|
||||
}
|
||||
#window[data-radius_size="reduce"]
|
||||
#arena:not(.fewplayer)
|
||||
> .player.fullskin2:not(.minskin):not(.unseen):not(*[data-position="0"])
|
||||
> .avatar2 {
|
||||
border-radius: 0 0 4px 4px !important;
|
||||
}
|
||||
#window[data-radius_size="off"]
|
||||
#arena:not(.fewplayer)
|
||||
> .player.fullskin2:not(.minskin):not(.unseen):not(*[data-position="0"])
|
||||
> .avatar2 {
|
||||
border-radius: 0 0 0 0 !important;
|
||||
}
|
||||
#window[data-radius_size="increase"]
|
||||
#arena:not(.fewplayer)
|
||||
> .player.fullskin2:not(.minskin):not(.unseen):not(*[data-position="0"])
|
||||
> .avatar2 {
|
||||
border-radius: 0 0 16px 16px !important;
|
||||
}
|
||||
#arena:not(.fewplayer) > .player.fullskin2:not(.minskin):not(*[data-position="0"]) > .avatar2 {
|
||||
top: calc(50% - 7px) !important;
|
||||
}
|
||||
#arena:not(.fewplayer) > .player:not(.minskin):not(*[data-position="0"]) > .identity {
|
||||
left: 102px;
|
||||
}
|
||||
#arena:not(.fewplayer) > .player:not(.minskin):not(*[data-position="0"]) > .hp:not(.actcount) {
|
||||
left: 93px;
|
||||
}
|
||||
/*#arena:not(.fewplayer)>.player:not(.minskin):not(*[data-position='0'])>.hp:not(.actcount).text{
|
||||
left: 89px;
|
||||
}*/
|
||||
#arena:not(.fewplayer) > .player.fullskin2 .avatar2 {
|
||||
z-index: 2;
|
||||
}
|
||||
#arena:not(.fewplayer) > .player.unseen:not(.unseen2) .count {
|
||||
text-align: left;
|
||||
border-radius: 3px 0 0 3px;
|
||||
}
|
||||
#arena:not(.fewplayer) > .player.unseen2 .count {
|
||||
border-radius: 3px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#arena:not(.fewplayer) .timerbar > div {
|
||||
top: 205px;
|
||||
width: 96px;
|
||||
left: 12px;
|
||||
}
|
||||
#arena:not(.fewplayer)[data-player_height="default"] .timerbar > div {
|
||||
top: 185px;
|
||||
}
|
||||
#arena:not(.fewplayer)[data-player_height="short"] .timerbar > div {
|
||||
top: 165px;
|
||||
}
|
||||
|
||||
/*--------位置(8人)------*/
|
||||
#arena:not(.fewplayer)[data-number="8"] > .player[data-position="1"] {
|
||||
top: calc(30% - 120px);
|
||||
left: calc(-300% / 94 + 4375% / 47 - 735px + 720px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="8"] > .player[data-position="2"] {
|
||||
top: calc(8% - 32px);
|
||||
left: calc(-300% / 94 + 3750% / 47 - 630px + 600px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="8"] > .player[data-position="3"] {
|
||||
top: 0;
|
||||
left: calc(-300% / 94 + 3125% / 47 - 525px + 480px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="8"] > .player[data-position="4"] {
|
||||
top: 0;
|
||||
left: calc(-300% / 94 + 2500% / 47 - 420px + 360px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="8"] > .player[data-position="5"] {
|
||||
top: 0;
|
||||
left: calc(-300% / 94 + 1875% / 47 - 315px + 240px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="8"] > .player[data-position="6"] {
|
||||
top: calc(8% - 32px);
|
||||
left: calc(-300% / 94 + 1250% / 47 - 210px + 120px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="8"] > .player[data-position="7"] {
|
||||
top: calc(30% - 120px);
|
||||
left: calc(-300% / 94 + 625% / 47 - 105px);
|
||||
}
|
||||
@media screen and (min-width: 1105px) {
|
||||
#arena:not(.fewplayer)[data-number="8"] > .player[data-position="1"] {
|
||||
left: calc(100% - 120px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="8"] > .player[data-position="2"] {
|
||||
left: calc(500% / 6 - 100px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="8"] > .player[data-position="3"] {
|
||||
left: calc(400% / 6 - 80px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="8"] > .player[data-position="4"] {
|
||||
left: calc(300% / 6 - 60px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="8"] > .player[data-position="5"] {
|
||||
left: calc(200% / 6 - 40px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="8"] > .player[data-position="6"] {
|
||||
left: calc(100% / 6 - 20px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="8"] > .player[data-position="7"] {
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
/*--------位置(7人)------*/
|
||||
#arena:not(.fewplayer)[data-number="7"] > .player[data-position="1"] {
|
||||
top: calc(30% - 120px);
|
||||
left: calc(100% - 120px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="7"] > .player[data-position="2"] {
|
||||
top: calc(8% - 32px);
|
||||
left: calc(80% - 96px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="7"] > .player[data-position="3"] {
|
||||
top: 0;
|
||||
left: calc(60% - 72px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="7"] > .player[data-position="4"] {
|
||||
top: 0;
|
||||
left: calc(40% - 48px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="7"] > .player[data-position="5"] {
|
||||
top: calc(8% - 32px);
|
||||
left: calc(20% - 24px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="7"] > .player[data-position="6"] {
|
||||
top: calc(30% - 120px);
|
||||
left: 0;
|
||||
}
|
||||
/*--------位置(6人)------*/
|
||||
#arena:not(.fewplayer)[data-number="6"] > .player[data-position="1"] {
|
||||
top: calc(30% - 120px);
|
||||
left: calc(100% - 120px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="6"] > .player[data-position="2"] {
|
||||
top: 0px;
|
||||
left: calc(75% - 90px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="6"] > .player[data-position="3"] {
|
||||
top: 0;
|
||||
left: calc(50% - 60px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="6"] > .player[data-position="4"] {
|
||||
top: 0px;
|
||||
left: calc(25% - 30px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="6"] > .player[data-position="5"] {
|
||||
top: calc(30% - 120px);
|
||||
left: 0;
|
||||
}
|
||||
/*--------位置(5人)------*/
|
||||
#arena:not(.fewplayer)[data-number="5"] > .player[data-position="1"] {
|
||||
top: calc(30% - 120px);
|
||||
left: calc(100% - 120px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="5"] > .player[data-position="2"] {
|
||||
top: 0;
|
||||
left: calc(200% / 3 - 80px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="5"] > .player[data-position="3"] {
|
||||
top: 0;
|
||||
left: calc(100% / 3 - 40px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="5"] > .player[data-position="4"] {
|
||||
top: calc(30% - 120px);
|
||||
left: 0;
|
||||
}
|
||||
/*--------位置(4人)------*/
|
||||
#arena:not(.fewplayer)[data-number="4"] > .player[data-position="1"] {
|
||||
top: calc(30% - 120px);
|
||||
left: calc(100% - 120px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="4"] > .player[data-position="2"] {
|
||||
top: 0;
|
||||
left: calc(50% - 60px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="4"] > .player[data-position="3"] {
|
||||
top: calc(30% - 120px);
|
||||
left: 0;
|
||||
}
|
||||
/*--------位置(3人)------*/
|
||||
#arena:not(.fewplayer)[data-number="3"] > .player[data-position="1"] {
|
||||
top: calc(60% / 3 - 88px);
|
||||
left: calc(75% + 80px);
|
||||
}
|
||||
#arena:not(.fewplayer)[data-number="3"] > .player[data-position="2"] {
|
||||
top: calc(60% / 3 - 88px);
|
||||
left: calc(25% - 200px);
|
||||
}
|
||||
/*--------位置(2人)------*/
|
||||
#arena:not(.fewplayer)[data-number="2"] > .player[data-position="1"] {
|
||||
top: 0;
|
||||
left: calc(50% - 60px);
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,227 +1,225 @@
|
|||
#arena:not(.chess).textequip .player[data-position='0'] .equips,
|
||||
.player:not([data-position='0']) .equips,
|
||||
#arena.chess .player .equips{
|
||||
width:120px;
|
||||
height:auto;
|
||||
top:auto;
|
||||
right:auto;
|
||||
bottom:18px;
|
||||
left:10px;
|
||||
text-align:left;
|
||||
}
|
||||
#arena.slim_player .player:not([data-position='0']) .equips,
|
||||
#arena.chess.slim_player .player .equips{
|
||||
left:7px;
|
||||
}
|
||||
#arena.chess.lslim_player.slim_player .player .equips{
|
||||
left:5px;
|
||||
bottom: 17px;
|
||||
}
|
||||
#arena.chess.lslim_player.slim_player .player.minskin.linked .equips{
|
||||
transform: rotate(90deg) translate(-98px,-5px) scale(0.73)
|
||||
}
|
||||
#arena.uslim_player .player:not([data-position='0']) .equips,
|
||||
#arena.chess.uslim_player .player .equips{
|
||||
left:3px;
|
||||
}
|
||||
#arena.mslim_player .player:not([data-position='0']) .equips,
|
||||
#arena.chess.mslim_player .player .equips{
|
||||
left:5px;
|
||||
}
|
||||
.player:not([data-position='0']).minskin .equips,
|
||||
#arena.chess .player.minskin .equips{
|
||||
transform:scale(0.73);
|
||||
transform-origin:bottom left;
|
||||
}
|
||||
|
||||
|
||||
#arena:not(.chess).textequip .player[data-position='0'] .equips>.card::after,
|
||||
#arena:not(.chess).textequip .player[data-position='0'] .equips>.card::before,
|
||||
.player:not([data-position='0']) .equips>.card::after,
|
||||
.player:not([data-position='0']) .equips>.card::before,
|
||||
#arena.chess .player .equips>.card::after,
|
||||
#arena.chess .player .equips>.card::before{
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
#arena:not(.chess).textequip .player[data-position='0'] .equips>.card,
|
||||
.player:not([data-position='0']) .equips>.card,
|
||||
#arena.chess .player .equips>.card{
|
||||
position:relative;
|
||||
width:100%;
|
||||
height:22px;
|
||||
line-height:22px;
|
||||
margin-top:0;
|
||||
margin-bottom:0;
|
||||
animation: card_start2x 0.5s;
|
||||
-webkit-animation: card_start2x 0.5s;
|
||||
display:block;
|
||||
left:0;
|
||||
top:0;
|
||||
transition:all 0.5s;
|
||||
|
||||
color:white;
|
||||
border-radius:0;
|
||||
text-shadow:black 0 0 2px;
|
||||
}
|
||||
.player:not([data-position='0']) .equips>.card,
|
||||
#arena.chess .player .equips>.card{
|
||||
border-width: 1px 0 0;
|
||||
border-style:solid;
|
||||
border-image:linear-gradient(to right, rgba(0, 0, 0,0.4) 70%,transparent) 100% 0 0;
|
||||
background:linear-gradient(to right,rgba(0,0,0,0.3),transparent),
|
||||
linear-gradient(135deg,rgba(0,0,0,0.5) ,transparent 80%,transparent) !important;
|
||||
box-shadow:none;
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position='0'] .equips>.card>.image,
|
||||
.player:not([data-position='0']) .equips>.card>.image,
|
||||
#arena.chess .player .equips>.card>.image{
|
||||
display:none;
|
||||
}
|
||||
|
||||
/*#arena:not(.chess).textequip .player[data-position='0'].unseen .equips>.card,
|
||||
.player:not([data-position='0']).unseen .equips>.card,
|
||||
#arena.chess .player.unseen .equips>.card{
|
||||
background:none;
|
||||
border-image:linear-gradient(to right, transparent,rgba(0,0,0,0.4) 10%,rgba(0, 0, 0,0.4) 70%,transparent) 100% 0 0;
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position='0'].unseen .equips>.card,
|
||||
.player:not([data-position='0']).unseen .equips>.card,
|
||||
#arena.chess .player.unseen .equips>.card{
|
||||
border-image:linear-gradient(to right, transparent,rgba(0,0,0,0.4) 10%,rgba(0, 0, 0,0.4) 70%,transparent) 100% 0 0;
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position='0'].unseen .equips>.card:first-child,
|
||||
.player:not([data-position='0']).unseen .equips>.card:first-child,
|
||||
#arena.chess .player.unseen .equips>.card:first-child{
|
||||
border-image:linear-gradient(transparent,transparent);
|
||||
}*/
|
||||
.player:not([data-position='0']) .equips>.card.selected,
|
||||
#arena.chess .player .equips>.card.selected{
|
||||
background:linear-gradient(to right,rgba(0, 133, 255,0.3),transparent),
|
||||
linear-gradient(135deg,rgba(0, 133, 255,0.5) ,transparent 80%,transparent) !important;
|
||||
box-shadow:none !important;
|
||||
border-width: 1px 0 0;
|
||||
border-style:solid;
|
||||
border-image:linear-gradient(to right, rgba(0, 103, 205,0.4) 70%,transparent) 100% 0 0;
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position='0'] .equips>.card.selected{
|
||||
background:linear-gradient(rgba(0, 133, 255,0.6),rgba(0, 133, 255,0.5)) !important;
|
||||
box-shadow: rgba(0,0,0,0.4) 0 1px 0 0 !important;
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position='0'] .equips>.card.fire,
|
||||
.player:not([data-position='0']) .equips>.card.fire,
|
||||
#arena.chess .player .equips>.card.fire{
|
||||
color: rgb(255,119,63);
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position='0'] .equips>.card.thunder,
|
||||
.player:not([data-position='0']) .equips>.card.thunder,
|
||||
#arena.chess .player .equips>.card.thunder{
|
||||
color: rgb(117,186,255);
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position='0'] .equips>.card.poison,
|
||||
.player:not([data-position='0']) .equips>.card.poison,
|
||||
#arena.chess .player .equips>.card.poison{
|
||||
color: rgb(104,221,127);
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position='0'] .equips>.card.brown,
|
||||
.player:not([data-position='0']) .equips>.card.brown,
|
||||
#arena.chess .player .equips>.card.brown{
|
||||
color: rgb(195,161,223);
|
||||
}
|
||||
|
||||
#arena:not(.chess).textequip .player[data-position='0'] .equips>.card>.background,
|
||||
.player:not([data-position='0']) .equips>.card>.background,
|
||||
#arena.chess .player .equips>.card>.background{
|
||||
display:none !important;
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position='0'] .equips>.card>.name2,
|
||||
.player:not([data-position='0']) .equips>.card>.name2,
|
||||
#arena.chess .player .equips>.card>.name2{
|
||||
display:block;
|
||||
margin-left:5px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
#arena.oblongcard:not(.chess).textequip .player[data-position='0'] .equips>.card>.name2{
|
||||
line-height: 29px;
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position='0'] .equips>.card>div,
|
||||
.player:not([data-position='0']) .equips>.card>div,
|
||||
#arena.chess .player .equips>.card>div{
|
||||
animation:none !important;
|
||||
-webkit-animation:none !important;
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position='0'] .equips>.card>.name,
|
||||
#arena:not(.chess).textequip .player[data-position='0'] .equips>.card>.info,
|
||||
.player:not([data-position='0']) .equips>.card>.name,
|
||||
.player:not([data-position='0']) .equips>.card>.info,
|
||||
#arena.chess .player .equips>.card>.name,
|
||||
#arena.chess .player .equips>.card>.info{
|
||||
display:none !important;
|
||||
}
|
||||
|
||||
#arena:not(.chess).textequip .player[data-position='0'] .equips>.removing,
|
||||
.player:not([data-position='0']) .equips>.removing,
|
||||
#arena.chess .player .equips>.removing{
|
||||
margin-top:-12px !important;
|
||||
margin-bottom:-11px !important;
|
||||
transform:scale(1);
|
||||
}
|
||||
|
||||
#arena:not(.chess).textequip .player[data-position='0'] .equips>.removing+.removing,
|
||||
.player:not([data-position='0']) .equips>.removing+.removing,
|
||||
#arena.chess .player .equips>.removing+.removing{
|
||||
margin-top:-23px !important;
|
||||
}
|
||||
|
||||
|
||||
#arena:not(.textequip):not(.chess).textequip .player[data-position='0'].linked .equips,
|
||||
.player:not([data-position='0']).linked .equips,
|
||||
#arena.chess .player.linked .equips{
|
||||
transform:rotate(90deg) translate(-152px,-6px);
|
||||
transform-origin:bottom left;
|
||||
}
|
||||
#arena.slim_player .player:not([data-position='0']).linked .equips,
|
||||
#arena.chess.slim_player .player.linked .equips{
|
||||
transform:rotate(90deg) translate(-155px,-6px);
|
||||
}
|
||||
#arena.uslim_player .player:not([data-position='0']).linked .equips,
|
||||
#arena.chess.uslim_player .player.linked .equips{
|
||||
transform:rotate(90deg) translate(-159px,-6px);
|
||||
}
|
||||
#arena.mslim_player .player:not([data-position='0']).linked .equips,
|
||||
#arena.chess.mslim_player .player.linked .equips{
|
||||
transform:rotate(90deg) translate(-157px,-6px);
|
||||
}
|
||||
.player:not([data-position='0']).minskin.linked .equips,
|
||||
#arena.chess .player.minskin.linked .equips{
|
||||
transform:rotate(90deg) translate(-92px,-6px) scale(0.73);
|
||||
}
|
||||
#arena.slim_player .player:not([data-position='0']).minskin.linked .equips,
|
||||
#arena.chess.slim_player .player.minskin.linked .equips{
|
||||
transform:rotate(90deg) translate(-95px,-6px) scale(0.73);
|
||||
}
|
||||
#arena.uslim_player .player:not([data-position='0']).minskin.linked .equips,
|
||||
#arena.chess.uslim_player .player.minskin.linked .equips{
|
||||
transform:rotate(90deg) translate(-99px,-6px) scale(0.73);
|
||||
}
|
||||
#arena.mslim_player .player:not([data-position='0']).minskin.linked .equips,
|
||||
#arena.chess.mslim_player .player.minskin.linked .equips{
|
||||
transform:rotate(90deg) translate(-97px,-6px) scale(0.73);
|
||||
}
|
||||
.player:not([data-position='0']).linked .identity,
|
||||
#arena.chess .player.linked .identity{
|
||||
transform:rotate(90deg);
|
||||
}
|
||||
|
||||
#arena:not(.chess).textequip .player[data-position='0'] .equips>.card{
|
||||
border-radius: 0px !important;
|
||||
left:0 !important;
|
||||
right: auto !important;
|
||||
top:0 !important;
|
||||
bottom: auto !important;
|
||||
position: relative !important;
|
||||
height: 20% !important;
|
||||
|
||||
background:none !important;
|
||||
box-shadow: rgba(0,0,0,0.4) 0 1px 0 0;
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position="0"] .equips,
|
||||
.player:not([data-position="0"]) .equips,
|
||||
#arena.chess .player .equips {
|
||||
width: 120px;
|
||||
height: auto;
|
||||
top: auto;
|
||||
right: auto;
|
||||
bottom: 18px;
|
||||
left: 10px;
|
||||
text-align: left;
|
||||
}
|
||||
#arena.slim_player .player:not([data-position="0"]) .equips,
|
||||
#arena.chess.slim_player .player .equips {
|
||||
left: 7px;
|
||||
}
|
||||
#arena.chess.lslim_player.slim_player .player .equips {
|
||||
left: 5px;
|
||||
bottom: 17px;
|
||||
}
|
||||
#arena.chess.lslim_player.slim_player .player.minskin.linked .equips {
|
||||
transform: rotate(90deg) translate(-98px, -5px) scale(0.73);
|
||||
}
|
||||
#arena.uslim_player .player:not([data-position="0"]) .equips,
|
||||
#arena.chess.uslim_player .player .equips {
|
||||
left: 3px;
|
||||
}
|
||||
#arena.mslim_player .player:not([data-position="0"]) .equips,
|
||||
#arena.chess.mslim_player .player .equips {
|
||||
left: 5px;
|
||||
}
|
||||
.player:not([data-position="0"]).minskin .equips,
|
||||
#arena.chess .player.minskin .equips {
|
||||
transform: scale(0.73);
|
||||
transform-origin: bottom left;
|
||||
}
|
||||
|
||||
#arena:not(.chess).textequip .player[data-position="0"] .equips > .card::after,
|
||||
#arena:not(.chess).textequip .player[data-position="0"] .equips > .card::before,
|
||||
.player:not([data-position="0"]) .equips > .card::after,
|
||||
.player:not([data-position="0"]) .equips > .card::before,
|
||||
#arena.chess .player .equips > .card::after,
|
||||
#arena.chess .player .equips > .card::before {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
#arena:not(.chess).textequip .player[data-position="0"] .equips > .card,
|
||||
.player:not([data-position="0"]) .equips > .card,
|
||||
#arena.chess .player .equips > .card {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 22px;
|
||||
line-height: 22px;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
animation: card_start2x 0.5s;
|
||||
-webkit-animation: card_start2x 0.5s;
|
||||
display: block;
|
||||
left: 0;
|
||||
top: 0;
|
||||
transition: all 0.5s;
|
||||
|
||||
color: white;
|
||||
border-radius: 0;
|
||||
text-shadow: black 0 0 2px;
|
||||
}
|
||||
.player:not([data-position="0"]) .equips > .card,
|
||||
#arena.chess .player .equips > .card {
|
||||
border-width: 1px 0 0;
|
||||
border-style: solid;
|
||||
border-image: linear-gradient(to right, rgba(0, 0, 0, 0.4) 70%, transparent) 100% 0 0;
|
||||
background: linear-gradient(to right, rgba(0, 0, 0, 0.3), transparent),
|
||||
linear-gradient(135deg, rgba(0, 0, 0, 0.5), transparent 80%, transparent) !important;
|
||||
box-shadow: none;
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position="0"] .equips > .card > .image,
|
||||
.player:not([data-position="0"]) .equips > .card > .image,
|
||||
#arena.chess .player .equips > .card > .image {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/*#arena:not(.chess).textequip .player[data-position='0'].unseen .equips>.card,
|
||||
.player:not([data-position='0']).unseen .equips>.card,
|
||||
#arena.chess .player.unseen .equips>.card{
|
||||
background:none;
|
||||
border-image:linear-gradient(to right, transparent,rgba(0,0,0,0.4) 10%,rgba(0, 0, 0,0.4) 70%,transparent) 100% 0 0;
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position='0'].unseen .equips>.card,
|
||||
.player:not([data-position='0']).unseen .equips>.card,
|
||||
#arena.chess .player.unseen .equips>.card{
|
||||
border-image:linear-gradient(to right, transparent,rgba(0,0,0,0.4) 10%,rgba(0, 0, 0,0.4) 70%,transparent) 100% 0 0;
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position='0'].unseen .equips>.card:first-child,
|
||||
.player:not([data-position='0']).unseen .equips>.card:first-child,
|
||||
#arena.chess .player.unseen .equips>.card:first-child{
|
||||
border-image:linear-gradient(transparent,transparent);
|
||||
}*/
|
||||
.player:not([data-position="0"]) .equips > .card.selected,
|
||||
#arena.chess .player .equips > .card.selected {
|
||||
background: linear-gradient(to right, rgba(0, 133, 255, 0.3), transparent),
|
||||
linear-gradient(135deg, rgba(0, 133, 255, 0.5), transparent 80%, transparent) !important;
|
||||
box-shadow: none !important;
|
||||
border-width: 1px 0 0;
|
||||
border-style: solid;
|
||||
border-image: linear-gradient(to right, rgba(0, 103, 205, 0.4) 70%, transparent) 100% 0 0;
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position="0"] .equips > .card.selected {
|
||||
background: linear-gradient(rgba(0, 133, 255, 0.6), rgba(0, 133, 255, 0.5)) !important;
|
||||
box-shadow: rgba(0, 0, 0, 0.4) 0 1px 0 0 !important;
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position="0"] .equips > .card.fire,
|
||||
.player:not([data-position="0"]) .equips > .card.fire,
|
||||
#arena.chess .player .equips > .card.fire {
|
||||
color: rgb(255, 119, 63);
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position="0"] .equips > .card.thunder,
|
||||
.player:not([data-position="0"]) .equips > .card.thunder,
|
||||
#arena.chess .player .equips > .card.thunder {
|
||||
color: rgb(117, 186, 255);
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position="0"] .equips > .card.poison,
|
||||
.player:not([data-position="0"]) .equips > .card.poison,
|
||||
#arena.chess .player .equips > .card.poison {
|
||||
color: rgb(104, 221, 127);
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position="0"] .equips > .card.brown,
|
||||
.player:not([data-position="0"]) .equips > .card.brown,
|
||||
#arena.chess .player .equips > .card.brown {
|
||||
color: rgb(195, 161, 223);
|
||||
}
|
||||
|
||||
#arena:not(.chess).textequip .player[data-position="0"] .equips > .card > .background,
|
||||
.player:not([data-position="0"]) .equips > .card > .background,
|
||||
#arena.chess .player .equips > .card > .background {
|
||||
display: none !important;
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position="0"] .equips > .card > .name2,
|
||||
.player:not([data-position="0"]) .equips > .card > .name2,
|
||||
#arena.chess .player .equips > .card > .name2 {
|
||||
display: block;
|
||||
margin-left: 5px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
#arena.oblongcard:not(.chess).textequip .player[data-position="0"] .equips > .card > .name2 {
|
||||
line-height: 29px;
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position="0"] .equips > .card > div,
|
||||
.player:not([data-position="0"]) .equips > .card > div,
|
||||
#arena.chess .player .equips > .card > div {
|
||||
animation: none !important;
|
||||
-webkit-animation: none !important;
|
||||
}
|
||||
#arena:not(.chess).textequip .player[data-position="0"] .equips > .card > .name,
|
||||
#arena:not(.chess).textequip .player[data-position="0"] .equips > .card > .info,
|
||||
.player:not([data-position="0"]) .equips > .card > .name,
|
||||
.player:not([data-position="0"]) .equips > .card > .info,
|
||||
#arena.chess .player .equips > .card > .name,
|
||||
#arena.chess .player .equips > .card > .info {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#arena:not(.chess).textequip .player[data-position="0"] .equips > .removing,
|
||||
.player:not([data-position="0"]) .equips > .removing,
|
||||
#arena.chess .player .equips > .removing {
|
||||
margin-top: -12px !important;
|
||||
margin-bottom: -11px !important;
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
#arena:not(.chess).textequip .player[data-position="0"] .equips > .removing + .removing,
|
||||
.player:not([data-position="0"]) .equips > .removing + .removing,
|
||||
#arena.chess .player .equips > .removing + .removing {
|
||||
margin-top: -23px !important;
|
||||
}
|
||||
|
||||
#arena:not(.textequip):not(.chess).textequip .player[data-position="0"].linked .equips,
|
||||
.player:not([data-position="0"]).linked .equips,
|
||||
#arena.chess .player.linked .equips {
|
||||
transform: rotate(90deg) translate(-152px, -6px);
|
||||
transform-origin: bottom left;
|
||||
}
|
||||
#arena.slim_player .player:not([data-position="0"]).linked .equips,
|
||||
#arena.chess.slim_player .player.linked .equips {
|
||||
transform: rotate(90deg) translate(-155px, -6px);
|
||||
}
|
||||
#arena.uslim_player .player:not([data-position="0"]).linked .equips,
|
||||
#arena.chess.uslim_player .player.linked .equips {
|
||||
transform: rotate(90deg) translate(-159px, -6px);
|
||||
}
|
||||
#arena.mslim_player .player:not([data-position="0"]).linked .equips,
|
||||
#arena.chess.mslim_player .player.linked .equips {
|
||||
transform: rotate(90deg) translate(-157px, -6px);
|
||||
}
|
||||
.player:not([data-position="0"]).minskin.linked .equips,
|
||||
#arena.chess .player.minskin.linked .equips {
|
||||
transform: rotate(90deg) translate(-92px, -6px) scale(0.73);
|
||||
}
|
||||
#arena.slim_player .player:not([data-position="0"]).minskin.linked .equips,
|
||||
#arena.chess.slim_player .player.minskin.linked .equips {
|
||||
transform: rotate(90deg) translate(-95px, -6px) scale(0.73);
|
||||
}
|
||||
#arena.uslim_player .player:not([data-position="0"]).minskin.linked .equips,
|
||||
#arena.chess.uslim_player .player.minskin.linked .equips {
|
||||
transform: rotate(90deg) translate(-99px, -6px) scale(0.73);
|
||||
}
|
||||
#arena.mslim_player .player:not([data-position="0"]).minskin.linked .equips,
|
||||
#arena.chess.mslim_player .player.minskin.linked .equips {
|
||||
transform: rotate(90deg) translate(-97px, -6px) scale(0.73);
|
||||
}
|
||||
.player:not([data-position="0"]).linked .identity,
|
||||
#arena.chess .player.linked .identity {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
#arena:not(.chess).textequip .player[data-position="0"] .equips > .card {
|
||||
border-radius: 0px !important;
|
||||
left: 0 !important;
|
||||
right: auto !important;
|
||||
top: 0 !important;
|
||||
bottom: auto !important;
|
||||
position: relative !important;
|
||||
height: 20% !important;
|
||||
|
||||
background: none !important;
|
||||
box-shadow: rgba(0, 0, 0, 0.4) 0 1px 0 0;
|
||||
}
|
||||
|
|
|
@ -1,362 +1,373 @@
|
|||
@import "../newlayout/global.css";
|
||||
@import "equip.css";
|
||||
|
||||
#arena{
|
||||
height: calc(95% + 20px);
|
||||
}
|
||||
#arena.oblongcard:not(.chess):not(.nome){
|
||||
height: 95%;
|
||||
}
|
||||
#arena.oblongcard:not(.chess):not(.nome) #me,
|
||||
#arena.oblongcard:not(.chess):not(.nome) #mebg{
|
||||
height: 140px;
|
||||
bottom: 10px;
|
||||
}
|
||||
#historybar{
|
||||
height: calc(95% - 160px);
|
||||
}
|
||||
#window.oblongcard #historybar{
|
||||
height: calc(95% - 180px);
|
||||
}
|
||||
#control{
|
||||
width: calc(5000% / 47 - 240px);
|
||||
left:calc(-150% / 47 + 120px);
|
||||
bottom:150px;
|
||||
height: 40px;
|
||||
}
|
||||
#arena.choose-to-move>#control,
|
||||
#arena.discard-player-card>#control,
|
||||
#arena.gain-player-card>#control,
|
||||
#arena.choose-player-card>#control{
|
||||
bottom: 30px;
|
||||
transition: all 0s;
|
||||
}
|
||||
|
||||
#arena.phone.discard-player-card>#control,
|
||||
#arena.phone.gain-player-card>#control,
|
||||
#arena.phone.choose-player-card>#control,
|
||||
#arena.phone.choose-to-move>#control{
|
||||
bottom: 43px;
|
||||
}
|
||||
|
||||
#arena.ipad.discard-player-card>#control,
|
||||
#arena.ipad.gain-player-card>#control,
|
||||
#arena.ipad.choose-player-card>#control,
|
||||
#arena.ipad.choose-to-move>#control{
|
||||
bottom: 45px;
|
||||
}
|
||||
#arena:not(.chess)>#me,
|
||||
#arena:not(.chess)>#mebg,
|
||||
#arena:not(.chess)>#autonode{
|
||||
bottom:30px;
|
||||
width: calc(5000% / 47);
|
||||
left:calc(-150% / 47);
|
||||
top:auto;
|
||||
border-radius:0 !important;
|
||||
height:120px;
|
||||
}
|
||||
#arena:not(.chess)>#autonode{
|
||||
width: calc(5000% / 47 - 240px);
|
||||
left:calc(-150% / 47 + 120px);
|
||||
}
|
||||
#window.leftbar #arena:not(.chess)>#me,
|
||||
#window.leftbar #arena:not(.chess)>#mebg,
|
||||
#window.leftbar #arena:not(.chess)>#autonode,
|
||||
#window.leftbar #arena:not(.chess) .player[data-position='0']{
|
||||
width: calc(5000% / 47 + 2500px / 47);
|
||||
left:calc(-150% / 47 - 50px - 75px / 47);
|
||||
}
|
||||
#window.leftbar #arena:not(.chess)>#autonode{
|
||||
width: calc(5000% / 47 + 2500px / 47 - 240px);
|
||||
left:calc(-150% / 47 - 50px - 75px / 47 + 120px);
|
||||
}
|
||||
#window.rightbar #arena:not(.chess)>#me,
|
||||
#window.rightbar #arena:not(.chess)>#mebg,
|
||||
#window.rightbar #arena:not(.chess)>#autonode,
|
||||
#window.rightbar #arena:not(.chess) .player[data-position='0']{
|
||||
width: calc(5000% / 47 + 2500px / 47);
|
||||
left:calc(-150% / 47 - 75px / 47);
|
||||
}
|
||||
#window.rightbar #arena:not(.chess)>#autonode{
|
||||
width: calc(5000% / 47 + 2500px / 47 - 240px);
|
||||
left:calc(-150% / 47 - 75px / 47 + 120px);
|
||||
}
|
||||
#arena:not(.chess) #handcards1{
|
||||
height:120px;
|
||||
padding:0;
|
||||
top:calc(100% - 120px);
|
||||
}
|
||||
#arena:not(.chess):not(.single-handcard) #handcards1{
|
||||
width:calc(100% - 240px);
|
||||
left:120px;
|
||||
}
|
||||
#handcards2{
|
||||
display:none;
|
||||
}
|
||||
/*#arena:not(.chess) .player[data-position='0']>.playerjiu{
|
||||
width: 120px;
|
||||
border-radius: 0px;
|
||||
}*/
|
||||
#arena:not(.chess) .player[data-position='0'].playerfocus{
|
||||
transform: scale(1);
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']>.equips>div:not(.equip5){
|
||||
width: 45px;
|
||||
height: 45px;
|
||||
margin: 0;
|
||||
border-radius: 4px;
|
||||
position: absolute;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']>.equips>div:not(.equip5)>.image{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']>.equips>div:not(.equip5)>.name{
|
||||
display: block;
|
||||
transform: scale(0.43) !important;
|
||||
transform-origin: left top;
|
||||
left: 2px;
|
||||
top: 3px;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']>.equips>div:not(.equip5)>.name.long{
|
||||
top: 2px;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']>.equips>div:not(.equip5)>.info{
|
||||
display: block;
|
||||
transform: scale(0.43) !important;
|
||||
transform-origin: right top;
|
||||
right: 3px;
|
||||
top: 3px;
|
||||
}
|
||||
/*#arena.oblongcard:not(.chess) .player[data-position='0']>.equips>div:not(.equip5){
|
||||
height: 54px;
|
||||
}
|
||||
#arena.oblongcard:not(.chess) .player[data-position='0']>.equips>div:not(.equip5)>.image{
|
||||
width: 120%;
|
||||
height: 100%;
|
||||
left: -20%;
|
||||
top: 0%;
|
||||
}*/
|
||||
#arena:not(.chess):not(.textequip) .player[data-position='0']>.equips>div.legend{
|
||||
border: 1px solid rgb(192, 90, 255);
|
||||
}
|
||||
#arena:not(.chess):not(.textequip) .player[data-position='0']>.equips>div.epic{
|
||||
border: 1px solid rgb(90, 171, 255);
|
||||
}
|
||||
#arena.mobile:not(.chess) .player[data-position='0']>.equips>.equip5{
|
||||
border-radius: 100%;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']{
|
||||
width: calc(5000% / 47);
|
||||
left:calc(-150% / 47);
|
||||
height: 120px;
|
||||
top: calc(100% - 150px);
|
||||
background: none !important;
|
||||
border:none !important;
|
||||
border-radius: 0 !important;
|
||||
pointer-events: none;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']>.turned{
|
||||
width: 120px;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']>.chain{
|
||||
width: 120px
|
||||
}
|
||||
#arena.oblongcard:not(.chess) .player[data-position='0']{
|
||||
height: 140px;
|
||||
}
|
||||
|
||||
#arena:not(.chess) .player[data-position='0'].linked>.damage{
|
||||
transform:scale(0.7) rotate(0);
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0'].linked>.damage.damageadded{
|
||||
transform:scale(1) rotate(0);
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']:not(.selected):not(.selectedx):not(.selectable):not(.glow){
|
||||
box-shadow: none !important;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']:not(.minskin)>.avatar,
|
||||
#arena:not(.chess) .player[data-position='0']:not(.minskin)>.avatar2,
|
||||
#arena:not(.chess) .player[data-position='0']:not(.minskin)>.equips{
|
||||
width:120px;
|
||||
height:100%;
|
||||
border-radius:0px !important;
|
||||
top:0;
|
||||
left:0;
|
||||
transition-property: opacity,transform;
|
||||
transition-duration: 0.5s;
|
||||
pointer-events: auto;
|
||||
/*-webkit-clip-path: polygon(-10px 0, 130px 0, 130px 180px, -10px 180px);*/
|
||||
}
|
||||
/*#window.compatiblemode #arena:not(.chess) .player[data-position='0']:not(.minskin)>.avatar,
|
||||
#window.compatiblemode #arena:not(.chess) .player[data-position='0']:not(.minskin)>.avatar2,
|
||||
#window.compatiblemode #arena:not(.chess) .player[data-position='0']:not(.minskin)>.equips{
|
||||
-webkit-clip-path: none;
|
||||
}*/
|
||||
#arena:not(.chess) .player[data-position='0']:not(.minskin)>.identity{
|
||||
pointer-events: auto;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']:not(.minskin)>.judges,
|
||||
#arena:not(.chess) .player[data-position='0']:not(.minskin)>.marks{
|
||||
pointer-events: auto;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']:not(.minskin)>.equips{
|
||||
left:calc(100% - 120px);
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']>.equips>.equip1{top: 10px;left: 10px;}
|
||||
#arena:not(.chess) .player[data-position='0']>.equips>.equip2{top: 10px;right: 10px;}
|
||||
#arena:not(.chess) .player[data-position='0']>.equips>.equip3{bottom: 10px;left: 10px;}
|
||||
#arena:not(.chess) .player[data-position='0']>.equips>.equip4{bottom: 10px;right: 10px;}
|
||||
#arena:not(.chess) .player[data-position='0']>.equips>.equip6{bottom: 10px;right: 10px;}
|
||||
|
||||
#arena:not(.chess) .player[data-position='0']>.name,
|
||||
#arena:not(.chess) .player[data-position='0'].linked>.name{
|
||||
left:4px;
|
||||
top:10px;
|
||||
transform: none;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']>.nameol{
|
||||
display: none;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']>.name.name2,
|
||||
#arena:not(.chess) .player[data-position='0'].linked>.name.name2{
|
||||
left:69px;
|
||||
}
|
||||
#arena:not(.chess):not(.stone) .player[data-position='0']>.identity{
|
||||
left: 0;
|
||||
width: 130px;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']>.damage{
|
||||
width: 120px;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0'].target{
|
||||
transform:none !important;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']>.hp:not(.actcount){
|
||||
bottom: 5px;
|
||||
left: 100px;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']:not(.minskin)>.count{
|
||||
bottom:10px;
|
||||
border-radius: 0 2px 2px 0;
|
||||
left:-1px;
|
||||
z-index: 3;
|
||||
text-align: right;
|
||||
}
|
||||
#arena:not(.chess).slim_player .player[data-position='0']:not(.minskin)>.count{
|
||||
border-radius: 0 2px 2px 0;
|
||||
left:-1px;
|
||||
z-index: 3;
|
||||
text-align: right;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']>.hp.actcount{
|
||||
top:10px;
|
||||
left:2px;
|
||||
}
|
||||
|
||||
#arena:not(.chess) .player.fullskin2[data-position='0']:not(.minskin)>.avatar,
|
||||
#arena:not(.chess) .player.fullskin2[data-position='0']:not(.minskin)>.avatar2{
|
||||
width:60px;
|
||||
background-position:50%;
|
||||
}
|
||||
#arena:not(.chess) .player.fullskin2[data-position='0']:not(.minskin)>.avatar2{
|
||||
left:60px;
|
||||
top:0;
|
||||
z-index:1;
|
||||
}
|
||||
|
||||
.popup[data-position='0']{
|
||||
top:calc(100% - 187px);
|
||||
left:calc(-150% / 47 + 15px);
|
||||
}
|
||||
|
||||
#arena:not(.chess) .player[data-position='0']>.judges{
|
||||
left: 6px;
|
||||
top: -16px;
|
||||
transform: none;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0']>.marks {
|
||||
right: -6px;
|
||||
left:auto;
|
||||
top: -16px;
|
||||
transform: none;
|
||||
}
|
||||
|
||||
#arena:not(.chess) .player[data-position='0'].linked{
|
||||
transform: none;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0'].linked .avatar,
|
||||
#arena:not(.chess) .player[data-position='0'].linked .avatar2{
|
||||
transform: rotate(-90deg);
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0'].fullskin2 .avatar{
|
||||
transform-origin: right center;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position='0'].fullskin2 .avatar2{
|
||||
transform-origin: left center;
|
||||
}
|
||||
|
||||
.dialog{
|
||||
height:calc(100% - 370px);
|
||||
bottom:170px;
|
||||
}
|
||||
.dialog.fullheight {
|
||||
height: calc(100% - 123px) !important;
|
||||
top: 40px !important;
|
||||
}
|
||||
|
||||
#me>.fakeme.avatar{
|
||||
width:120px;
|
||||
height:100%;
|
||||
border-radius:0px;
|
||||
top:0;
|
||||
left:0;
|
||||
background-size:cover;
|
||||
clip-path: polygon(-10px 0, 130px 0, 130px 150px, -10px 150px);
|
||||
-webkit-clip-path: polygon(-10px 0, 130px 0, 130px 150px, -10px 150px);
|
||||
}
|
||||
#window[data-radius_size='increase'] #me>.fakeme.avatar,
|
||||
#window[data-radius_size='reduce'] #me>.fakeme.avatar{
|
||||
border-radius:0px;
|
||||
}
|
||||
|
||||
#arena.mobile.oblongcard:not(.chess):not(.textequip) .player[data-position='0']>.equips>.equip1,
|
||||
#arena.mobile.oblongcard:not(.chess):not(.textequip) .player[data-position='0']>.equips>.equip2{
|
||||
top:20px;
|
||||
}
|
||||
#arena.mobile.oblongcard:not(.chess):not(.textequip) .player[data-position='0']>.equips>.equip3,
|
||||
#arena.mobile.oblongcard:not(.chess):not(.textequip) .player[data-position='0']>.equips>.equip4,
|
||||
#arena.mobile.oblongcard:not(.chess):not(.textequip) .player[data-position='0']>.equips>.equip6{
|
||||
bottom:20px;
|
||||
}
|
||||
|
||||
|
||||
#arena.mobile.oblongcard.textequip:not(.chess) .player[data-position='0'] .equips>.removing{
|
||||
margin-top:-14px !important;
|
||||
margin-bottom:-14px !important;
|
||||
transform:scale(1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#arena.mobile.oblongcard:not(.chess) #handcards1{
|
||||
height: 100%;
|
||||
top: 2px;
|
||||
}
|
||||
#arena.mobile.oblongcard:not(.chess)>.card,
|
||||
#arena.mobile.oblongcard:not(.chess) .handcards>.card{
|
||||
height: 120px;
|
||||
}
|
||||
#arena.mobile.oblongcard:not(.chess)>.card>.image,
|
||||
#arena.mobile.oblongcard:not(.chess) .handcards>.card>.image{
|
||||
height: 110px;
|
||||
top: 8px;
|
||||
background-position-x: -3px;
|
||||
}
|
||||
|
||||
|
||||
#arena.phone.oblongcard:not(.chess):not(.nome){
|
||||
height: calc(97% + 10px);
|
||||
}
|
||||
@import "../newlayout/global.css";
|
||||
@import "equip.css";
|
||||
|
||||
#arena {
|
||||
height: calc(95% + 20px);
|
||||
}
|
||||
#arena.oblongcard:not(.chess):not(.nome) {
|
||||
height: 95%;
|
||||
}
|
||||
#arena.oblongcard:not(.chess):not(.nome) #me,
|
||||
#arena.oblongcard:not(.chess):not(.nome) #mebg {
|
||||
height: 140px;
|
||||
bottom: 10px;
|
||||
}
|
||||
#historybar {
|
||||
height: calc(95% - 160px);
|
||||
}
|
||||
#window.oblongcard #historybar {
|
||||
height: calc(95% - 180px);
|
||||
}
|
||||
#control {
|
||||
width: calc(5000% / 47 - 240px);
|
||||
left: calc(-150% / 47 + 120px);
|
||||
bottom: 150px;
|
||||
height: 40px;
|
||||
}
|
||||
#arena.choose-to-move > #control,
|
||||
#arena.discard-player-card > #control,
|
||||
#arena.gain-player-card > #control,
|
||||
#arena.choose-player-card > #control {
|
||||
bottom: 30px;
|
||||
transition: all 0s;
|
||||
}
|
||||
|
||||
#arena.phone.discard-player-card > #control,
|
||||
#arena.phone.gain-player-card > #control,
|
||||
#arena.phone.choose-player-card > #control,
|
||||
#arena.phone.choose-to-move > #control {
|
||||
bottom: 43px;
|
||||
}
|
||||
|
||||
#arena.ipad.discard-player-card > #control,
|
||||
#arena.ipad.gain-player-card > #control,
|
||||
#arena.ipad.choose-player-card > #control,
|
||||
#arena.ipad.choose-to-move > #control {
|
||||
bottom: 45px;
|
||||
}
|
||||
#arena:not(.chess) > #me,
|
||||
#arena:not(.chess) > #mebg,
|
||||
#arena:not(.chess) > #autonode {
|
||||
bottom: 30px;
|
||||
width: calc(5000% / 47);
|
||||
left: calc(-150% / 47);
|
||||
top: auto;
|
||||
border-radius: 0 !important;
|
||||
height: 120px;
|
||||
}
|
||||
#arena:not(.chess) > #autonode {
|
||||
width: calc(5000% / 47 - 240px);
|
||||
left: calc(-150% / 47 + 120px);
|
||||
}
|
||||
#window.leftbar #arena:not(.chess) > #me,
|
||||
#window.leftbar #arena:not(.chess) > #mebg,
|
||||
#window.leftbar #arena:not(.chess) > #autonode,
|
||||
#window.leftbar #arena:not(.chess) .player[data-position="0"] {
|
||||
width: calc(5000% / 47 + 2500px / 47);
|
||||
left: calc(-150% / 47 - 50px - 75px / 47);
|
||||
}
|
||||
#window.leftbar #arena:not(.chess) > #autonode {
|
||||
width: calc(5000% / 47 + 2500px / 47 - 240px);
|
||||
left: calc(-150% / 47 - 50px - 75px / 47 + 120px);
|
||||
}
|
||||
#window.rightbar #arena:not(.chess) > #me,
|
||||
#window.rightbar #arena:not(.chess) > #mebg,
|
||||
#window.rightbar #arena:not(.chess) > #autonode,
|
||||
#window.rightbar #arena:not(.chess) .player[data-position="0"] {
|
||||
width: calc(5000% / 47 + 2500px / 47);
|
||||
left: calc(-150% / 47 - 75px / 47);
|
||||
}
|
||||
#window.rightbar #arena:not(.chess) > #autonode {
|
||||
width: calc(5000% / 47 + 2500px / 47 - 240px);
|
||||
left: calc(-150% / 47 - 75px / 47 + 120px);
|
||||
}
|
||||
#arena:not(.chess) #handcards1 {
|
||||
height: 120px;
|
||||
padding: 0;
|
||||
top: calc(100% - 120px);
|
||||
}
|
||||
#arena:not(.chess):not(.single-handcard) #handcards1 {
|
||||
width: calc(100% - 240px);
|
||||
left: 120px;
|
||||
}
|
||||
#handcards2 {
|
||||
display: none;
|
||||
}
|
||||
/*#arena:not(.chess) .player[data-position='0']>.playerjiu{
|
||||
width: 120px;
|
||||
border-radius: 0px;
|
||||
}*/
|
||||
#arena:not(.chess) .player[data-position="0"].playerfocus {
|
||||
transform: scale(1);
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] > .equips > div:not(.equip5) {
|
||||
width: 45px;
|
||||
height: 45px;
|
||||
margin: 0;
|
||||
border-radius: 4px;
|
||||
position: absolute;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] > .equips > div:not(.equip5) > .image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] > .equips > div:not(.equip5) > .name {
|
||||
display: block;
|
||||
transform: scale(0.43) !important;
|
||||
transform-origin: left top;
|
||||
left: 2px;
|
||||
top: 3px;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] > .equips > div:not(.equip5) > .name.long {
|
||||
top: 2px;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] > .equips > div:not(.equip5) > .info {
|
||||
display: block;
|
||||
transform: scale(0.43) !important;
|
||||
transform-origin: right top;
|
||||
right: 3px;
|
||||
top: 3px;
|
||||
}
|
||||
/*#arena.oblongcard:not(.chess) .player[data-position='0']>.equips>div:not(.equip5){
|
||||
height: 54px;
|
||||
}
|
||||
#arena.oblongcard:not(.chess) .player[data-position='0']>.equips>div:not(.equip5)>.image{
|
||||
width: 120%;
|
||||
height: 100%;
|
||||
left: -20%;
|
||||
top: 0%;
|
||||
}*/
|
||||
#arena:not(.chess):not(.textequip) .player[data-position="0"] > .equips > div.legend {
|
||||
border: 1px solid rgb(192, 90, 255);
|
||||
}
|
||||
#arena:not(.chess):not(.textequip) .player[data-position="0"] > .equips > div.epic {
|
||||
border: 1px solid rgb(90, 171, 255);
|
||||
}
|
||||
#arena.mobile:not(.chess) .player[data-position="0"] > .equips > .equip5 {
|
||||
border-radius: 100%;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] {
|
||||
width: calc(5000% / 47);
|
||||
left: calc(-150% / 47);
|
||||
height: 120px;
|
||||
top: calc(100% - 150px);
|
||||
background: none !important;
|
||||
border: none !important;
|
||||
border-radius: 0 !important;
|
||||
pointer-events: none;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] > .turned {
|
||||
width: 120px;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] > .chain {
|
||||
width: 120px;
|
||||
}
|
||||
#arena.oblongcard:not(.chess) .player[data-position="0"] {
|
||||
height: 140px;
|
||||
}
|
||||
|
||||
#arena:not(.chess) .player[data-position="0"].linked > .damage {
|
||||
transform: scale(0.7) rotate(0);
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"].linked > .damage.damageadded {
|
||||
transform: scale(1) rotate(0);
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"]:not(.selected):not(.selectedx):not(.selectable):not(.glow) {
|
||||
box-shadow: none !important;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"]:not(.minskin) > .avatar,
|
||||
#arena:not(.chess) .player[data-position="0"]:not(.minskin) > .avatar2,
|
||||
#arena:not(.chess) .player[data-position="0"]:not(.minskin) > .equips {
|
||||
width: 120px;
|
||||
height: 100%;
|
||||
border-radius: 0px !important;
|
||||
top: 0;
|
||||
left: 0;
|
||||
transition-property: opacity, transform;
|
||||
transition-duration: 0.5s;
|
||||
pointer-events: auto;
|
||||
/*-webkit-clip-path: polygon(-10px 0, 130px 0, 130px 180px, -10px 180px);*/
|
||||
}
|
||||
/*#window.compatiblemode #arena:not(.chess) .player[data-position='0']:not(.minskin)>.avatar,
|
||||
#window.compatiblemode #arena:not(.chess) .player[data-position='0']:not(.minskin)>.avatar2,
|
||||
#window.compatiblemode #arena:not(.chess) .player[data-position='0']:not(.minskin)>.equips{
|
||||
-webkit-clip-path: none;
|
||||
}*/
|
||||
#arena:not(.chess) .player[data-position="0"]:not(.minskin) > .identity {
|
||||
pointer-events: auto;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"]:not(.minskin) > .judges,
|
||||
#arena:not(.chess) .player[data-position="0"]:not(.minskin) > .marks {
|
||||
pointer-events: auto;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"]:not(.minskin) > .equips {
|
||||
left: calc(100% - 120px);
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] > .equips > .equip1 {
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] > .equips > .equip2 {
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] > .equips > .equip3 {
|
||||
bottom: 10px;
|
||||
left: 10px;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] > .equips > .equip4 {
|
||||
bottom: 10px;
|
||||
right: 10px;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] > .equips > .equip6 {
|
||||
bottom: 10px;
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
#arena:not(.chess) .player[data-position="0"] > .name,
|
||||
#arena:not(.chess) .player[data-position="0"].linked > .name {
|
||||
left: 4px;
|
||||
top: 10px;
|
||||
transform: none;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] > .nameol {
|
||||
display: none;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] > .name.name2,
|
||||
#arena:not(.chess) .player[data-position="0"].linked > .name.name2 {
|
||||
left: 69px;
|
||||
}
|
||||
#arena:not(.chess):not(.stone) .player[data-position="0"] > .identity {
|
||||
left: 0;
|
||||
width: 130px;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] > .damage {
|
||||
width: 120px;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"].target {
|
||||
transform: none !important;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] > .hp:not(.actcount) {
|
||||
bottom: 5px;
|
||||
left: 100px;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"]:not(.minskin) > .count {
|
||||
bottom: 10px;
|
||||
border-radius: 0 2px 2px 0;
|
||||
left: -1px;
|
||||
z-index: 3;
|
||||
text-align: right;
|
||||
}
|
||||
#arena:not(.chess).slim_player .player[data-position="0"]:not(.minskin) > .count {
|
||||
border-radius: 0 2px 2px 0;
|
||||
left: -1px;
|
||||
z-index: 3;
|
||||
text-align: right;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] > .hp.actcount {
|
||||
top: 10px;
|
||||
left: 2px;
|
||||
}
|
||||
|
||||
#arena:not(.chess) .player.fullskin2[data-position="0"]:not(.minskin) > .avatar,
|
||||
#arena:not(.chess) .player.fullskin2[data-position="0"]:not(.minskin) > .avatar2 {
|
||||
width: 60px;
|
||||
background-position: 50%;
|
||||
}
|
||||
#arena:not(.chess) .player.fullskin2[data-position="0"]:not(.minskin) > .avatar2 {
|
||||
left: 60px;
|
||||
top: 0;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.popup[data-position="0"] {
|
||||
top: calc(100% - 187px);
|
||||
left: calc(-150% / 47 + 15px);
|
||||
}
|
||||
|
||||
#arena:not(.chess) .player[data-position="0"] > .judges {
|
||||
left: 6px;
|
||||
top: -16px;
|
||||
transform: none;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"] > .marks {
|
||||
right: -6px;
|
||||
left: auto;
|
||||
top: -16px;
|
||||
transform: none;
|
||||
}
|
||||
|
||||
#arena:not(.chess) .player[data-position="0"].linked {
|
||||
transform: none;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"].linked .avatar,
|
||||
#arena:not(.chess) .player[data-position="0"].linked .avatar2 {
|
||||
transform: rotate(-90deg);
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"].fullskin2 .avatar {
|
||||
transform-origin: right center;
|
||||
}
|
||||
#arena:not(.chess) .player[data-position="0"].fullskin2 .avatar2 {
|
||||
transform-origin: left center;
|
||||
}
|
||||
|
||||
.dialog {
|
||||
height: calc(100% - 370px);
|
||||
bottom: 170px;
|
||||
}
|
||||
.dialog.fullheight {
|
||||
height: calc(100% - 123px) !important;
|
||||
top: 40px !important;
|
||||
}
|
||||
|
||||
#me > .fakeme.avatar {
|
||||
width: 120px;
|
||||
height: 100%;
|
||||
border-radius: 0px;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background-size: cover;
|
||||
clip-path: polygon(-10px 0, 130px 0, 130px 150px, -10px 150px);
|
||||
-webkit-clip-path: polygon(-10px 0, 130px 0, 130px 150px, -10px 150px);
|
||||
}
|
||||
#window[data-radius_size="increase"] #me > .fakeme.avatar,
|
||||
#window[data-radius_size="reduce"] #me > .fakeme.avatar {
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
#arena.mobile.oblongcard:not(.chess):not(.textequip) .player[data-position="0"] > .equips > .equip1,
|
||||
#arena.mobile.oblongcard:not(.chess):not(.textequip) .player[data-position="0"] > .equips > .equip2 {
|
||||
top: 20px;
|
||||
}
|
||||
#arena.mobile.oblongcard:not(.chess):not(.textequip) .player[data-position="0"] > .equips > .equip3,
|
||||
#arena.mobile.oblongcard:not(.chess):not(.textequip) .player[data-position="0"] > .equips > .equip4,
|
||||
#arena.mobile.oblongcard:not(.chess):not(.textequip) .player[data-position="0"] > .equips > .equip6 {
|
||||
bottom: 20px;
|
||||
}
|
||||
|
||||
#arena.mobile.oblongcard.textequip:not(.chess) .player[data-position="0"] .equips > .removing {
|
||||
margin-top: -14px !important;
|
||||
margin-bottom: -14px !important;
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
#arena.mobile.oblongcard:not(.chess) #handcards1 {
|
||||
height: 100%;
|
||||
top: 2px;
|
||||
}
|
||||
#arena.mobile.oblongcard:not(.chess) > .card,
|
||||
#arena.mobile.oblongcard:not(.chess) .handcards > .card {
|
||||
height: 120px;
|
||||
}
|
||||
#arena.mobile.oblongcard:not(.chess) > .card > .image,
|
||||
#arena.mobile.oblongcard:not(.chess) .handcards > .card > .image {
|
||||
height: 110px;
|
||||
top: 8px;
|
||||
background-position-x: -3px;
|
||||
}
|
||||
|
||||
#arena.phone.oblongcard:not(.chess):not(.nome) {
|
||||
height: calc(97% + 10px);
|
||||
}
|
||||
|
|
|
@ -1,184 +1,184 @@
|
|||
#bosslist {
|
||||
width: 100%;
|
||||
height: 260px;
|
||||
text-align: center;
|
||||
top: calc(50% - 200px);
|
||||
top: 60px;
|
||||
white-space: nowrap;
|
||||
z-index: 1;
|
||||
overflow-x: scroll;
|
||||
}
|
||||
|
||||
#window[data-radius_size='reduce'] #bosslist>.player {
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
#window[data-radius_size='off'] #bosslist>.player {
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
#window[data-radius_size='increase'] #bosslist>.player {
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
||||
#window #bosslist>.player {
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
#window[data-player_border='normal'] #bosslist>.player>.avatar {
|
||||
left: 8px;
|
||||
top: 8px;
|
||||
width: 164px;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
#window[data-player_border='slim'] #bosslist>.player>.avatar {
|
||||
left: 4px;
|
||||
top: 4px;
|
||||
width: 172px;
|
||||
height: 208px;
|
||||
}
|
||||
|
||||
.bosspaused>#bosslist,
|
||||
.bosspaused>#control,
|
||||
.bosspaused>.dialog.bosscharacter {
|
||||
opacity: 0.2 !important;
|
||||
}
|
||||
|
||||
#bosslist.hidden>.player {
|
||||
transition: all 0s;
|
||||
}
|
||||
|
||||
#bosslist>div:first-child,
|
||||
#bosslist>div:last-child {
|
||||
width: 20px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#bosslist>.player .identity {
|
||||
align-items: flex-start;
|
||||
width: min-content;
|
||||
}
|
||||
|
||||
#bosslist>.player .identity>div {
|
||||
writing-mode: vertical-rl;
|
||||
-webkit-writing-mode: vertical-rl;
|
||||
}
|
||||
|
||||
#window:not(.nopointer) #bosslist>.player {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dialog.bosscharacter .buttons .button.selectable {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dialog.bosscharacter .buttons .button:not(.selectable) {
|
||||
opacity: 0.6
|
||||
}
|
||||
|
||||
.player.bossplayer.bossing {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.player.bossing .avatar {
|
||||
transition: all 0.5s;
|
||||
}
|
||||
|
||||
.player.bossplayer.highlight {
|
||||
transform: scale(1.1);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
#bosslist.removing>.player.bossplayer.highlight {
|
||||
transition: all 0s;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.player.bossplayer {
|
||||
position: relative;
|
||||
margin: 10px;
|
||||
left: 0;
|
||||
top: 4px;
|
||||
width: 180px;
|
||||
height: 216px;
|
||||
transition: all 0.3s;
|
||||
opacity: 0.6;
|
||||
animation: game_start 0.5s;
|
||||
-webkit-animation: game_start 0.5s;
|
||||
}
|
||||
|
||||
.player.bossplayer>div:not(.hp):not(.identity):not(.avatar):not(.framebg) {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.player.bossplayer>.identity {
|
||||
left: 16px;
|
||||
top: 18px;
|
||||
line-height: 24px;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.player.bossplayer>.hp {
|
||||
top: 22px;
|
||||
left: 144px;
|
||||
}
|
||||
|
||||
.player.bossplayer>.avatar {
|
||||
width: 160px;
|
||||
height: 196px;
|
||||
}
|
||||
|
||||
#control.bosslist {
|
||||
top: calc(100% - 50px) !important;
|
||||
position: fixed;
|
||||
}
|
||||
|
||||
.dialog.bosscharacter {
|
||||
top: auto;
|
||||
bottom: 65px;
|
||||
height: calc(100% - 383px);
|
||||
animation: dialog_start2 0.5s;
|
||||
-webkit-animation: dialog_start2 0.5s;
|
||||
}
|
||||
|
||||
.bosschongzheng {
|
||||
width: calc(100% - 20px);
|
||||
white-space: nowrap;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.bosschongzheng div {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.bosschongzheng>div {
|
||||
width: 100%;
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.bosschongzheng>div>div:first-child {
|
||||
text-align: left;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
.bosschongzheng>div>div:last-child {
|
||||
text-align: right;
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
@media screen and (min-height: 800px) {
|
||||
.dialog.bosscharacter {
|
||||
height: 417px;
|
||||
bottom: calc(50% - 335px);
|
||||
}
|
||||
|
||||
#control.bosslist {
|
||||
top: calc(50% + 350px) !important;
|
||||
}
|
||||
|
||||
#bosslist {
|
||||
top: calc(40% - 260px);
|
||||
}
|
||||
}
|
||||
#bosslist {
|
||||
width: 100%;
|
||||
height: 260px;
|
||||
text-align: center;
|
||||
top: calc(50% - 200px);
|
||||
top: 60px;
|
||||
white-space: nowrap;
|
||||
z-index: 1;
|
||||
overflow-x: scroll;
|
||||
}
|
||||
|
||||
#window[data-radius_size="reduce"] #bosslist > .player {
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
#window[data-radius_size="off"] #bosslist > .player {
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
#window[data-radius_size="increase"] #bosslist > .player {
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
||||
#window #bosslist > .player {
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
#window[data-player_border="normal"] #bosslist > .player > .avatar {
|
||||
left: 8px;
|
||||
top: 8px;
|
||||
width: 164px;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
#window[data-player_border="slim"] #bosslist > .player > .avatar {
|
||||
left: 4px;
|
||||
top: 4px;
|
||||
width: 172px;
|
||||
height: 208px;
|
||||
}
|
||||
|
||||
.bosspaused > #bosslist,
|
||||
.bosspaused > #control,
|
||||
.bosspaused > .dialog.bosscharacter {
|
||||
opacity: 0.2 !important;
|
||||
}
|
||||
|
||||
#bosslist.hidden > .player {
|
||||
transition: all 0s;
|
||||
}
|
||||
|
||||
#bosslist > div:first-child,
|
||||
#bosslist > div:last-child {
|
||||
width: 20px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#bosslist > .player .identity {
|
||||
align-items: flex-start;
|
||||
width: min-content;
|
||||
}
|
||||
|
||||
#bosslist > .player .identity > div {
|
||||
writing-mode: vertical-rl;
|
||||
-webkit-writing-mode: vertical-rl;
|
||||
}
|
||||
|
||||
#window:not(.nopointer) #bosslist > .player {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dialog.bosscharacter .buttons .button.selectable {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dialog.bosscharacter .buttons .button:not(.selectable) {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.player.bossplayer.bossing {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.player.bossing .avatar {
|
||||
transition: all 0.5s;
|
||||
}
|
||||
|
||||
.player.bossplayer.highlight {
|
||||
transform: scale(1.1);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
#bosslist.removing > .player.bossplayer.highlight {
|
||||
transition: all 0s;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.player.bossplayer {
|
||||
position: relative;
|
||||
margin: 10px;
|
||||
left: 0;
|
||||
top: 4px;
|
||||
width: 180px;
|
||||
height: 216px;
|
||||
transition: all 0.3s;
|
||||
opacity: 0.6;
|
||||
animation: game_start 0.5s;
|
||||
-webkit-animation: game_start 0.5s;
|
||||
}
|
||||
|
||||
.player.bossplayer > div:not(.hp):not(.identity):not(.avatar):not(.framebg) {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.player.bossplayer > .identity {
|
||||
left: 16px;
|
||||
top: 18px;
|
||||
line-height: 24px;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.player.bossplayer > .hp {
|
||||
top: 22px;
|
||||
left: 144px;
|
||||
}
|
||||
|
||||
.player.bossplayer > .avatar {
|
||||
width: 160px;
|
||||
height: 196px;
|
||||
}
|
||||
|
||||
#control.bosslist {
|
||||
top: calc(100% - 50px) !important;
|
||||
position: fixed;
|
||||
}
|
||||
|
||||
.dialog.bosscharacter {
|
||||
top: auto;
|
||||
bottom: 65px;
|
||||
height: calc(100% - 383px);
|
||||
animation: dialog_start2 0.5s;
|
||||
-webkit-animation: dialog_start2 0.5s;
|
||||
}
|
||||
|
||||
.bosschongzheng {
|
||||
width: calc(100% - 20px);
|
||||
white-space: nowrap;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.bosschongzheng div {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.bosschongzheng > div {
|
||||
width: 100%;
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.bosschongzheng > div > div:first-child {
|
||||
text-align: left;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
.bosschongzheng > div > div:last-child {
|
||||
text-align: right;
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
@media screen and (min-height: 800px) {
|
||||
.dialog.bosscharacter {
|
||||
height: 417px;
|
||||
bottom: calc(50% - 335px);
|
||||
}
|
||||
|
||||
#control.bosslist {
|
||||
top: calc(50% + 350px) !important;
|
||||
}
|
||||
|
||||
#bosslist {
|
||||
top: calc(40% - 260px);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,345 +1,346 @@
|
|||
#arena.chess{
|
||||
width:100% !important;
|
||||
height:100% !important;
|
||||
left:0 !important;
|
||||
top:0 !important;
|
||||
transition:all 0s !important;
|
||||
}
|
||||
#arena.chess>#me,
|
||||
#arena.chess>#mebg,
|
||||
#arena.chess>#autonode{
|
||||
bottom:0;
|
||||
top:auto;
|
||||
border-radius:0;
|
||||
}
|
||||
#arena.chess>#autonode{
|
||||
width: calc(100% - 240px);
|
||||
left: 120px;
|
||||
}
|
||||
#me>.fakeme.avatar {
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
border-radius: 0px;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background-size: cover;
|
||||
clip-path: polygon(-10px 0, 130px 0, 130px 130px, -10px 130px);
|
||||
-webkit-clip-path: polygon(-10px 0, 130px 0, 130px 130px, -10px 130px);
|
||||
}
|
||||
#window:not(.nopointer) .dialog.fullheight .buttons .button.character:not(.squarebutton):not(.selectable){
|
||||
cursor: default;
|
||||
}
|
||||
#window:not(.nopointer) .obstacle.glow,
|
||||
#window:not(.nopointer) .player.playerblank.glow{
|
||||
cursor: pointer;
|
||||
}
|
||||
#chess-container{
|
||||
width:100%;
|
||||
height :calc(100% - 121px);
|
||||
left:0;
|
||||
top:0;
|
||||
overflow:hidden;
|
||||
text-align:center;
|
||||
position: absolute;
|
||||
}
|
||||
#chess{
|
||||
margin-top:36px;
|
||||
margin-bottom:36px;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
transition: all 0s;
|
||||
}
|
||||
#arena .card.thrown{
|
||||
z-index:4;
|
||||
}
|
||||
#canvas2{
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
#handcards1{
|
||||
height:120px;
|
||||
padding:0;
|
||||
top:calc(100% - 120px);
|
||||
width:calc(100% - 240px);
|
||||
left:120px;
|
||||
}
|
||||
#handcards2{
|
||||
display:none;
|
||||
}
|
||||
#mebg,#me,#autonode{
|
||||
height:120px;
|
||||
}
|
||||
#window:not(.nopointer) .dialog.pointerbutton .buttons .button:not(.unselectable){
|
||||
cursor: pointer !important;
|
||||
}
|
||||
#system{
|
||||
z-index:5;
|
||||
}
|
||||
#arena>.dialog{
|
||||
width:400px;
|
||||
height:240px;
|
||||
left:calc(50% - 200px);
|
||||
top:calc(50% - 120px);
|
||||
background: rgba(0,0,0,0.2);
|
||||
box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px;
|
||||
border-radius:8px;
|
||||
}
|
||||
#arena.chess>.dialog{
|
||||
height: calc(50% - 20px);
|
||||
max-height: 240px;
|
||||
}
|
||||
#window[data-radius_size='reduce']>.dialog{
|
||||
border-radius:4px;
|
||||
}
|
||||
#window[data-radius_size='off']>.dialog{
|
||||
border-radius:0px;
|
||||
}
|
||||
#window[data-radius_size='increase']>.dialog{
|
||||
border-radius:16px;
|
||||
}
|
||||
#arena>.dialog.slim:not(.center){
|
||||
top:40px;
|
||||
pointer-events: none;
|
||||
}
|
||||
#control{
|
||||
top:calc(100% - 155px);
|
||||
}
|
||||
#arena.ipad #control{
|
||||
top:calc(100% - 165px);
|
||||
}
|
||||
.fakeme{
|
||||
width:120px;
|
||||
height:120px;
|
||||
border-radius:0px !important;
|
||||
top:0;
|
||||
}
|
||||
#window[data-radius_size='increase'] .fakeme,
|
||||
#window[data-radius_size='reduce'] .fakeme{
|
||||
border-radius:0px;
|
||||
}
|
||||
.fakeme.avatar{
|
||||
left:0;
|
||||
background-size:cover;
|
||||
}
|
||||
.fakeme.player{
|
||||
left:calc(100% - 120px);
|
||||
text-align:center;
|
||||
transition: all 0s;
|
||||
clip-path: polygon(-10px 0, 130px 0, 130px 130px, -10px 130px);
|
||||
-webkit-clip-path: polygon(-10px 0, 130px 0, 130px 130px, -10px 130px);
|
||||
}
|
||||
.fakeme.player.zoomed{
|
||||
width: 240px;
|
||||
height: 240px;
|
||||
left:calc(100% - 240px);
|
||||
top:calc(100% - 240px);
|
||||
background-size:200%;
|
||||
}
|
||||
.fakeme.player>div{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow: scroll;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.fakeme.player.zoomed>div>div{
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
left: 0;
|
||||
top: 16px;
|
||||
margin-left: 8px;
|
||||
margin-right: 8px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
.fakeme.player>div>div{
|
||||
width:45px;
|
||||
height:45px;
|
||||
background-size:cover;
|
||||
border-radius:4px;
|
||||
position:relative;
|
||||
left:0;
|
||||
top:8px;
|
||||
margin-left: 4px;
|
||||
margin-right: 4px;
|
||||
margin-bottom: 8px;
|
||||
transition:box-shadow 0.5s;
|
||||
}
|
||||
#window:not(.nopointer) .fakeme.player>div>div{
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.fakeme.player>div>.selectable{
|
||||
box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px, rgba(0, 133, 255, 1) 0 0 5px, rgba(0, 133, 255, 1) 0 0 10px;
|
||||
}
|
||||
.fakeme.player>div>.selected{
|
||||
box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px, rgba(255, 0, 0, 1) 0 0 5px, rgba(255, 0, 0, 1) 0 0 10px !important;
|
||||
}
|
||||
.fakeme.player>div>.dead{
|
||||
filter:grayscale(1);
|
||||
-webkit-filter:grayscale(1);
|
||||
opacity:0.5;
|
||||
}
|
||||
.card.drawing{
|
||||
animation: drawing2 1s;
|
||||
animation-fill-mode: forwards;
|
||||
-webkit-animation: drawing2 1s;
|
||||
-webkit-animation-fill-mode: forwards;
|
||||
}
|
||||
|
||||
.player.playergrid,.player.obstacle{
|
||||
background: rgba(0,0,0,0.2);
|
||||
box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px;
|
||||
border-radius:8px;
|
||||
}
|
||||
#window[data-radius_size='reduce'] .player.playergrid,
|
||||
#window[data-radius_size='reduce'] .player.obstacle{
|
||||
border-radius:4px;
|
||||
}
|
||||
#window[data-radius_size='off'] .player.playergrid,
|
||||
#window[data-radius_size='off'] .player.obstacle{
|
||||
border-radius:0px;
|
||||
}
|
||||
#window[data-radius_size='increase'] .player.playergrid,
|
||||
#window[data-radius_size='increase'] .player.obstacle{
|
||||
border-radius:16px;
|
||||
}
|
||||
.player.playerblank{
|
||||
background: none;
|
||||
}
|
||||
#window .player.obstacle{
|
||||
background: repeating-linear-gradient(
|
||||
135deg,
|
||||
rgba(0,0,0,0.2),
|
||||
rgba(0,0,0,0.2) 10px,
|
||||
rgba(0,0,0,0.1) 10px,
|
||||
rgba(0,0,0,0.1) 20px
|
||||
);
|
||||
}
|
||||
#window .player.obstacle[data-obscolor='blue']{
|
||||
background: repeating-linear-gradient(
|
||||
135deg,
|
||||
rgba(0, 64, 162, 0.4),
|
||||
rgba(0, 64, 162, 0.4) 10px,
|
||||
rgba(0, 0, 0, 0) 10px,
|
||||
rgba(0, 0, 0, 0) 20px
|
||||
);
|
||||
box-shadow: rgba(0, 64, 162, 0.6) 0 0 0 1px;
|
||||
}
|
||||
|
||||
.playergrid.temp{
|
||||
opacity:0.3;
|
||||
}
|
||||
.chessscroll{
|
||||
height:calc(100% - 162px);
|
||||
width:20px;
|
||||
top:42px;
|
||||
z-index:1;
|
||||
position:fixed;
|
||||
}
|
||||
.chessscroll.left{
|
||||
left:0;
|
||||
}
|
||||
.chessscroll.right{
|
||||
right:0;
|
||||
}
|
||||
.button.forbidden{
|
||||
opacity:0.6
|
||||
}
|
||||
#arena.leaderhide>*:not(canvas){
|
||||
opacity:0 !important;
|
||||
transition: all 0.5s !important;
|
||||
pointer-events: none;
|
||||
}
|
||||
#arena.leadercontrol>#control{
|
||||
transition: all 0.5s !important;
|
||||
}
|
||||
/* .player.treasure{ */
|
||||
/*box-shadow: none;*/
|
||||
/* } */
|
||||
.player.treasure .count,
|
||||
.player.treasure .identity{
|
||||
display: none;
|
||||
}
|
||||
.player.treasure .avatar{
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.player.minskin .action{
|
||||
text-shadow: black 0 0 1px !important;
|
||||
font-size: 16px !important;
|
||||
left:0;
|
||||
}
|
||||
.player .action.thunder{
|
||||
color: rgb(117,186,255);
|
||||
}
|
||||
#arena.selecting .player .action:not(.hidden){
|
||||
opacity: 1 !important;
|
||||
}
|
||||
.button .intro.showintro.tafang{
|
||||
font-family: 'xinwei';
|
||||
font-size: 20px;
|
||||
top: 66px;
|
||||
right: 5px;
|
||||
left:auto;
|
||||
}
|
||||
.button.newstyle .intro.showintro.tafang{
|
||||
top: 6px;
|
||||
}
|
||||
.dialog .buttons>.button.character.squarebutton{
|
||||
height:90px;
|
||||
}
|
||||
.dialog .buttons>.button.character.squarebutton>.hp.text{
|
||||
/*left:22px;*/
|
||||
right: 4px;
|
||||
text-align: right;
|
||||
bottom: 4px;
|
||||
top: auto;
|
||||
left: auto;
|
||||
}
|
||||
.dialog .buttons>.button.character.squarebutton>.name{
|
||||
top:8px;
|
||||
}
|
||||
br.finish_game{
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
#arena.chess.slim_player.lslim_player .player.minskin:not(.fakeme)>.avatar:not(.fakeme){
|
||||
left: 5px;
|
||||
top: 5px;
|
||||
width: calc(100% - 10px);
|
||||
height: calc(100% - 10px);
|
||||
}
|
||||
|
||||
#arena.chess #chess>.player{
|
||||
left: 14px;
|
||||
top: 14px;
|
||||
}
|
||||
|
||||
|
||||
#window.rightbar #system,
|
||||
#window.leftbar #system{
|
||||
width: calc(100% - 62px);
|
||||
}
|
||||
#window.leftbar #system{
|
||||
left: 50px;
|
||||
}
|
||||
|
||||
#historybar {
|
||||
border-radius: 0;
|
||||
top: 0;
|
||||
height: calc(100% - 121px);
|
||||
}
|
||||
#window.rightbar #historybar{
|
||||
left: calc(100% - 50px);
|
||||
}
|
||||
#window.leftbar #historybar{
|
||||
left: 0;
|
||||
}
|
||||
#arena.chess {
|
||||
width: 100% !important;
|
||||
height: 100% !important;
|
||||
left: 0 !important;
|
||||
top: 0 !important;
|
||||
transition: all 0s !important;
|
||||
}
|
||||
#arena.chess > #me,
|
||||
#arena.chess > #mebg,
|
||||
#arena.chess > #autonode {
|
||||
bottom: 0;
|
||||
top: auto;
|
||||
border-radius: 0;
|
||||
}
|
||||
#arena.chess > #autonode {
|
||||
width: calc(100% - 240px);
|
||||
left: 120px;
|
||||
}
|
||||
#me > .fakeme.avatar {
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
border-radius: 0px;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background-size: cover;
|
||||
clip-path: polygon(-10px 0, 130px 0, 130px 130px, -10px 130px);
|
||||
-webkit-clip-path: polygon(-10px 0, 130px 0, 130px 130px, -10px 130px);
|
||||
}
|
||||
#window:not(.nopointer) .dialog.fullheight .buttons .button.character:not(.squarebutton):not(.selectable) {
|
||||
cursor: default;
|
||||
}
|
||||
#window:not(.nopointer) .obstacle.glow,
|
||||
#window:not(.nopointer) .player.playerblank.glow {
|
||||
cursor: pointer;
|
||||
}
|
||||
#chess-container {
|
||||
width: 100%;
|
||||
height: calc(100% - 121px);
|
||||
left: 0;
|
||||
top: 0;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
}
|
||||
#chess {
|
||||
margin-top: 36px;
|
||||
margin-bottom: 36px;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
transition: all 0s;
|
||||
}
|
||||
#arena .card.thrown {
|
||||
z-index: 4;
|
||||
}
|
||||
#canvas2 {
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
#handcards1 {
|
||||
height: 120px;
|
||||
padding: 0;
|
||||
top: calc(100% - 120px);
|
||||
width: calc(100% - 240px);
|
||||
left: 120px;
|
||||
}
|
||||
#handcards2 {
|
||||
display: none;
|
||||
}
|
||||
#mebg,
|
||||
#me,
|
||||
#autonode {
|
||||
height: 120px;
|
||||
}
|
||||
#window:not(.nopointer) .dialog.pointerbutton .buttons .button:not(.unselectable) {
|
||||
cursor: pointer !important;
|
||||
}
|
||||
#system {
|
||||
z-index: 5;
|
||||
}
|
||||
#arena > .dialog {
|
||||
width: 400px;
|
||||
height: 240px;
|
||||
left: calc(50% - 200px);
|
||||
top: calc(50% - 120px);
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
#arena.chess > .dialog {
|
||||
height: calc(50% - 20px);
|
||||
max-height: 240px;
|
||||
}
|
||||
#window[data-radius_size="reduce"] > .dialog {
|
||||
border-radius: 4px;
|
||||
}
|
||||
#window[data-radius_size="off"] > .dialog {
|
||||
border-radius: 0px;
|
||||
}
|
||||
#window[data-radius_size="increase"] > .dialog {
|
||||
border-radius: 16px;
|
||||
}
|
||||
#arena > .dialog.slim:not(.center) {
|
||||
top: 40px;
|
||||
pointer-events: none;
|
||||
}
|
||||
#control {
|
||||
top: calc(100% - 155px);
|
||||
}
|
||||
#arena.ipad #control {
|
||||
top: calc(100% - 165px);
|
||||
}
|
||||
.fakeme {
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
border-radius: 0px !important;
|
||||
top: 0;
|
||||
}
|
||||
#window[data-radius_size="increase"] .fakeme,
|
||||
#window[data-radius_size="reduce"] .fakeme {
|
||||
border-radius: 0px;
|
||||
}
|
||||
.fakeme.avatar {
|
||||
left: 0;
|
||||
background-size: cover;
|
||||
}
|
||||
.fakeme.player {
|
||||
left: calc(100% - 120px);
|
||||
text-align: center;
|
||||
transition: all 0s;
|
||||
clip-path: polygon(-10px 0, 130px 0, 130px 130px, -10px 130px);
|
||||
-webkit-clip-path: polygon(-10px 0, 130px 0, 130px 130px, -10px 130px);
|
||||
}
|
||||
.fakeme.player.zoomed {
|
||||
width: 240px;
|
||||
height: 240px;
|
||||
left: calc(100% - 240px);
|
||||
top: calc(100% - 240px);
|
||||
background-size: 200%;
|
||||
}
|
||||
.fakeme.player > div {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow: scroll;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.fakeme.player.zoomed > div > div {
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
left: 0;
|
||||
top: 16px;
|
||||
margin-left: 8px;
|
||||
margin-right: 8px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
.fakeme.player > div > div {
|
||||
width: 45px;
|
||||
height: 45px;
|
||||
background-size: cover;
|
||||
border-radius: 4px;
|
||||
position: relative;
|
||||
left: 0;
|
||||
top: 8px;
|
||||
margin-left: 4px;
|
||||
margin-right: 4px;
|
||||
margin-bottom: 8px;
|
||||
transition: box-shadow 0.5s;
|
||||
}
|
||||
#window:not(.nopointer) .fakeme.player > div > div {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.fakeme.player > div > .selectable {
|
||||
box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px, rgba(0, 133, 255, 1) 0 0 5px, rgba(0, 133, 255, 1) 0 0 10px;
|
||||
}
|
||||
.fakeme.player > div > .selected {
|
||||
box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px, rgba(255, 0, 0, 1) 0 0 5px, rgba(255, 0, 0, 1) 0 0 10px !important;
|
||||
}
|
||||
.fakeme.player > div > .dead {
|
||||
filter: grayscale(1);
|
||||
-webkit-filter: grayscale(1);
|
||||
opacity: 0.5;
|
||||
}
|
||||
.card.drawing {
|
||||
animation: drawing2 1s;
|
||||
animation-fill-mode: forwards;
|
||||
-webkit-animation: drawing2 1s;
|
||||
-webkit-animation-fill-mode: forwards;
|
||||
}
|
||||
|
||||
.player.playergrid,
|
||||
.player.obstacle {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
#window[data-radius_size="reduce"] .player.playergrid,
|
||||
#window[data-radius_size="reduce"] .player.obstacle {
|
||||
border-radius: 4px;
|
||||
}
|
||||
#window[data-radius_size="off"] .player.playergrid,
|
||||
#window[data-radius_size="off"] .player.obstacle {
|
||||
border-radius: 0px;
|
||||
}
|
||||
#window[data-radius_size="increase"] .player.playergrid,
|
||||
#window[data-radius_size="increase"] .player.obstacle {
|
||||
border-radius: 16px;
|
||||
}
|
||||
.player.playerblank {
|
||||
background: none;
|
||||
}
|
||||
#window .player.obstacle {
|
||||
background: repeating-linear-gradient(
|
||||
135deg,
|
||||
rgba(0, 0, 0, 0.2),
|
||||
rgba(0, 0, 0, 0.2) 10px,
|
||||
rgba(0, 0, 0, 0.1) 10px,
|
||||
rgba(0, 0, 0, 0.1) 20px
|
||||
);
|
||||
}
|
||||
#window .player.obstacle[data-obscolor="blue"] {
|
||||
background: repeating-linear-gradient(
|
||||
135deg,
|
||||
rgba(0, 64, 162, 0.4),
|
||||
rgba(0, 64, 162, 0.4) 10px,
|
||||
rgba(0, 0, 0, 0) 10px,
|
||||
rgba(0, 0, 0, 0) 20px
|
||||
);
|
||||
box-shadow: rgba(0, 64, 162, 0.6) 0 0 0 1px;
|
||||
}
|
||||
|
||||
.playergrid.temp {
|
||||
opacity: 0.3;
|
||||
}
|
||||
.chessscroll {
|
||||
height: calc(100% - 162px);
|
||||
width: 20px;
|
||||
top: 42px;
|
||||
z-index: 1;
|
||||
position: fixed;
|
||||
}
|
||||
.chessscroll.left {
|
||||
left: 0;
|
||||
}
|
||||
.chessscroll.right {
|
||||
right: 0;
|
||||
}
|
||||
.button.forbidden {
|
||||
opacity: 0.6;
|
||||
}
|
||||
#arena.leaderhide > *:not(canvas) {
|
||||
opacity: 0 !important;
|
||||
transition: all 0.5s !important;
|
||||
pointer-events: none;
|
||||
}
|
||||
#arena.leadercontrol > #control {
|
||||
transition: all 0.5s !important;
|
||||
}
|
||||
/* .player.treasure{ */
|
||||
/*box-shadow: none;*/
|
||||
/* } */
|
||||
.player.treasure .count,
|
||||
.player.treasure .identity {
|
||||
display: none;
|
||||
}
|
||||
.player.treasure .avatar {
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.player.minskin .action {
|
||||
text-shadow: black 0 0 1px !important;
|
||||
font-size: 16px !important;
|
||||
left: 0;
|
||||
}
|
||||
.player .action.thunder {
|
||||
color: rgb(117, 186, 255);
|
||||
}
|
||||
#arena.selecting .player .action:not(.hidden) {
|
||||
opacity: 1 !important;
|
||||
}
|
||||
.button .intro.showintro.tafang {
|
||||
font-family: "xinwei";
|
||||
font-size: 20px;
|
||||
top: 66px;
|
||||
right: 5px;
|
||||
left: auto;
|
||||
}
|
||||
.button.newstyle .intro.showintro.tafang {
|
||||
top: 6px;
|
||||
}
|
||||
.dialog .buttons > .button.character.squarebutton {
|
||||
height: 90px;
|
||||
}
|
||||
.dialog .buttons > .button.character.squarebutton > .hp.text {
|
||||
/*left:22px;*/
|
||||
right: 4px;
|
||||
text-align: right;
|
||||
bottom: 4px;
|
||||
top: auto;
|
||||
left: auto;
|
||||
}
|
||||
.dialog .buttons > .button.character.squarebutton > .name {
|
||||
top: 8px;
|
||||
}
|
||||
br.finish_game {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#arena.chess.slim_player.lslim_player .player.minskin:not(.fakeme) > .avatar:not(.fakeme) {
|
||||
left: 5px;
|
||||
top: 5px;
|
||||
width: calc(100% - 10px);
|
||||
height: calc(100% - 10px);
|
||||
}
|
||||
|
||||
#arena.chess #chess > .player {
|
||||
left: 14px;
|
||||
top: 14px;
|
||||
}
|
||||
|
||||
#window.rightbar #system,
|
||||
#window.leftbar #system {
|
||||
width: calc(100% - 62px);
|
||||
}
|
||||
#window.leftbar #system {
|
||||
left: 50px;
|
||||
}
|
||||
|
||||
#historybar {
|
||||
border-radius: 0;
|
||||
top: 0;
|
||||
height: calc(100% - 121px);
|
||||
}
|
||||
#window.rightbar #historybar {
|
||||
left: calc(100% - 50px);
|
||||
}
|
||||
#window.leftbar #historybar {
|
||||
left: 0;
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,229 +1,230 @@
|
|||
.storyscene{
|
||||
height: 500px;
|
||||
top:calc(50% - 250px);
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
overflow-x: scroll;
|
||||
overflow-y: hidden;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.storyscene.removing{
|
||||
pointer-events: none;
|
||||
transform: translateY(500px);
|
||||
}
|
||||
.storyscene.lockscroll{
|
||||
overflow-x: hidden;
|
||||
}
|
||||
.storyscene>.scene{
|
||||
width: 350px;
|
||||
height: 420px;
|
||||
position: relative;
|
||||
left: 0;
|
||||
top:40px;
|
||||
margin-left: -40px;
|
||||
margin-right: -40px;
|
||||
z-index: 1;
|
||||
border-radius: 16px !important;
|
||||
overflow: hidden;
|
||||
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0, 0.45) 0 3px 10px;
|
||||
}
|
||||
.storyscene>.scene>.background.player{
|
||||
border-radius: 0 !important;
|
||||
box-shadow: none !important;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 1;
|
||||
}
|
||||
.storyscene>.scene.unselectable{
|
||||
opacity: 1 !important;
|
||||
box-shadow: rgba(0, 0, 0, 0.1) 0 0 0 1px, rgba(0, 0, 0, 0.225) 0 3px 10px;
|
||||
}
|
||||
.storyscene>.scene.unselectable>.background{
|
||||
opacity: 0.3;
|
||||
}
|
||||
.storyscene>.scene.unselectable>.name{
|
||||
opacity: 0.6;
|
||||
}
|
||||
.storyscene>.scene.unselectable>div:not(.mask).background{
|
||||
/*opacity: 0.25;*/
|
||||
}
|
||||
.storyscene>.scene>.mask{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 3;
|
||||
}
|
||||
.storyscene>.scene>.mask>div{
|
||||
width: 100%;
|
||||
height: 240px;
|
||||
top:calc(50% - 120px);
|
||||
position: absolute;
|
||||
left: 0;
|
||||
text-align: center;
|
||||
font-size: 80px;
|
||||
line-height: 80px;
|
||||
font-family: 'xinwei';
|
||||
opacity: 0.8;
|
||||
}
|
||||
.storyscene>.scene:not(.unselectable)>.mask{
|
||||
display: none;
|
||||
}.storyscene>.scene.unselectable>.name{
|
||||
/*display: none;*/
|
||||
}
|
||||
.storyscene>.scene.flipped{
|
||||
z-index: 2;
|
||||
border-radius: 12px !important;
|
||||
}
|
||||
.storyscene>.scene.flipped>div:not(.menu){
|
||||
display: none !important;
|
||||
}
|
||||
.storyscene>.scene:not(.flipped)>.menu{
|
||||
display: none;
|
||||
}
|
||||
.storyscene>.scene:first-child{
|
||||
margin-left: 50px;
|
||||
}
|
||||
.storyscene>.scene:last-child{
|
||||
margin-right: 50px;
|
||||
}
|
||||
.storyscene>.scene>.name{
|
||||
font-size: 48px;
|
||||
left: 25px;
|
||||
top: auto;
|
||||
bottom: 28px;
|
||||
/*transform: rotateY(-180deg);*/
|
||||
border-radius: 16px !important;
|
||||
z-index: 2;
|
||||
font-family: 'xinwei'
|
||||
}
|
||||
.storyscene>.scene>.menu{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
box-shadow: none;
|
||||
overflow: scroll;
|
||||
}
|
||||
.storyscene>.scene>.background>.avatar{
|
||||
width: calc(100% - 26px);
|
||||
height: calc(100% - 26px);
|
||||
left: 13px;
|
||||
top: 13px;
|
||||
z-index: 2;
|
||||
}
|
||||
.storyscene>.scene>.menu{
|
||||
transform: rotateY(-180deg);
|
||||
}
|
||||
.storyscene>.scene.startscene{
|
||||
-webkit-animation: scene_start 0.5s;
|
||||
}
|
||||
.scene>.menu>.menubutton.enter{
|
||||
position: absolute;
|
||||
top:auto;
|
||||
bottom: 10px;
|
||||
width: 70px;
|
||||
left: calc(50% - 35px);
|
||||
}
|
||||
.scene>.menu>.conversation{
|
||||
display: table;
|
||||
position: absolute;
|
||||
left: 16px;
|
||||
top: 0;
|
||||
width: calc(100% - 32px);
|
||||
height: 100%;
|
||||
font-size: 24px;
|
||||
font-family: 'xinwei';
|
||||
white-space: normal;
|
||||
text-align: left;
|
||||
}
|
||||
.scene>.menu>.conversation.center{
|
||||
text-align: center;
|
||||
font-size: 30px;
|
||||
}
|
||||
.scene>.menu>.avatarconversation{
|
||||
position: relative;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
left: 0;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.scene>.menu>.avatarconversation:last-child{
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.scene>.menu>.avatarconversation>div{
|
||||
height: 100%;
|
||||
top:0;
|
||||
}
|
||||
.scene>.menu>.avatarconversation>.avatar{
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
left: 10px;
|
||||
background-size: cover;
|
||||
}
|
||||
.scene>.menu>.avatarconversation.swap>.avatar{
|
||||
left: auto;
|
||||
right: 10px;
|
||||
}
|
||||
.scene>.menu>.avatarconversation>div:not(.avatar){
|
||||
width: calc(100% - 120px);
|
||||
left: 120px;
|
||||
top: 5px;
|
||||
height: calc(100% - 5px);
|
||||
text-align: left;
|
||||
white-space: normal;
|
||||
line-height: 18px;
|
||||
}
|
||||
.scene>.menu>.avatarconversation.swap>div:not(.avatar){
|
||||
left: auto;
|
||||
right: 120px;
|
||||
text-align: right;
|
||||
}
|
||||
.scene>.menu>.conversation>div{
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
position: relative;
|
||||
}
|
||||
#create-player{
|
||||
width: 400px;
|
||||
height: 300px;
|
||||
left: calc(50% - 200px);
|
||||
top: calc(50% - 150px);
|
||||
position: absolute;
|
||||
-webkit-animation:dialog_start2 0.5s;
|
||||
}
|
||||
#create-player>div{
|
||||
position: absolute;
|
||||
}
|
||||
#create-player>.caption{
|
||||
width: 100%;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
left: 0;
|
||||
top: 0;
|
||||
font-family: 'xinwei';
|
||||
font-size: 24px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
@-webkit-keyframes scene_start{
|
||||
from{
|
||||
opacity: 0;
|
||||
transform:scale(0.5);
|
||||
margin-left: -175px;
|
||||
margin-right: -175px;
|
||||
}
|
||||
to{
|
||||
opacity: 1;
|
||||
transform: scale(1);
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
}
|
||||
}
|
||||
.storyscene {
|
||||
height: 500px;
|
||||
top: calc(50% - 250px);
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
overflow-x: scroll;
|
||||
overflow-y: hidden;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.storyscene.removing {
|
||||
pointer-events: none;
|
||||
transform: translateY(500px);
|
||||
}
|
||||
.storyscene.lockscroll {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
.storyscene > .scene {
|
||||
width: 350px;
|
||||
height: 420px;
|
||||
position: relative;
|
||||
left: 0;
|
||||
top: 40px;
|
||||
margin-left: -40px;
|
||||
margin-right: -40px;
|
||||
z-index: 1;
|
||||
border-radius: 16px !important;
|
||||
overflow: hidden;
|
||||
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0, 0.45) 0 3px 10px;
|
||||
}
|
||||
.storyscene > .scene > .background.player {
|
||||
border-radius: 0 !important;
|
||||
box-shadow: none !important;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 1;
|
||||
}
|
||||
.storyscene > .scene.unselectable {
|
||||
opacity: 1 !important;
|
||||
box-shadow: rgba(0, 0, 0, 0.1) 0 0 0 1px, rgba(0, 0, 0, 0.225) 0 3px 10px;
|
||||
}
|
||||
.storyscene > .scene.unselectable > .background {
|
||||
opacity: 0.3;
|
||||
}
|
||||
.storyscene > .scene.unselectable > .name {
|
||||
opacity: 0.6;
|
||||
}
|
||||
.storyscene > .scene.unselectable > div:not(.mask).background {
|
||||
/*opacity: 0.25;*/
|
||||
}
|
||||
.storyscene > .scene > .mask {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 3;
|
||||
}
|
||||
.storyscene > .scene > .mask > div {
|
||||
width: 100%;
|
||||
height: 240px;
|
||||
top: calc(50% - 120px);
|
||||
position: absolute;
|
||||
left: 0;
|
||||
text-align: center;
|
||||
font-size: 80px;
|
||||
line-height: 80px;
|
||||
font-family: "xinwei";
|
||||
opacity: 0.8;
|
||||
}
|
||||
.storyscene > .scene:not(.unselectable) > .mask {
|
||||
display: none;
|
||||
}
|
||||
.storyscene > .scene.unselectable > .name {
|
||||
/*display: none;*/
|
||||
}
|
||||
.storyscene > .scene.flipped {
|
||||
z-index: 2;
|
||||
border-radius: 12px !important;
|
||||
}
|
||||
.storyscene > .scene.flipped > div:not(.menu) {
|
||||
display: none !important;
|
||||
}
|
||||
.storyscene > .scene:not(.flipped) > .menu {
|
||||
display: none;
|
||||
}
|
||||
.storyscene > .scene:first-child {
|
||||
margin-left: 50px;
|
||||
}
|
||||
.storyscene > .scene:last-child {
|
||||
margin-right: 50px;
|
||||
}
|
||||
.storyscene > .scene > .name {
|
||||
font-size: 48px;
|
||||
left: 25px;
|
||||
top: auto;
|
||||
bottom: 28px;
|
||||
/*transform: rotateY(-180deg);*/
|
||||
border-radius: 16px !important;
|
||||
z-index: 2;
|
||||
font-family: "xinwei";
|
||||
}
|
||||
.storyscene > .scene > .menu {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
box-shadow: none;
|
||||
overflow: scroll;
|
||||
}
|
||||
.storyscene > .scene > .background > .avatar {
|
||||
width: calc(100% - 26px);
|
||||
height: calc(100% - 26px);
|
||||
left: 13px;
|
||||
top: 13px;
|
||||
z-index: 2;
|
||||
}
|
||||
.storyscene > .scene > .menu {
|
||||
transform: rotateY(-180deg);
|
||||
}
|
||||
.storyscene > .scene.startscene {
|
||||
-webkit-animation: scene_start 0.5s;
|
||||
}
|
||||
.scene > .menu > .menubutton.enter {
|
||||
position: absolute;
|
||||
top: auto;
|
||||
bottom: 10px;
|
||||
width: 70px;
|
||||
left: calc(50% - 35px);
|
||||
}
|
||||
.scene > .menu > .conversation {
|
||||
display: table;
|
||||
position: absolute;
|
||||
left: 16px;
|
||||
top: 0;
|
||||
width: calc(100% - 32px);
|
||||
height: 100%;
|
||||
font-size: 24px;
|
||||
font-family: "xinwei";
|
||||
white-space: normal;
|
||||
text-align: left;
|
||||
}
|
||||
.scene > .menu > .conversation.center {
|
||||
text-align: center;
|
||||
font-size: 30px;
|
||||
}
|
||||
.scene > .menu > .avatarconversation {
|
||||
position: relative;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
left: 0;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.scene > .menu > .avatarconversation:last-child {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.scene > .menu > .avatarconversation > div {
|
||||
height: 100%;
|
||||
top: 0;
|
||||
}
|
||||
.scene > .menu > .avatarconversation > .avatar {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
left: 10px;
|
||||
background-size: cover;
|
||||
}
|
||||
.scene > .menu > .avatarconversation.swap > .avatar {
|
||||
left: auto;
|
||||
right: 10px;
|
||||
}
|
||||
.scene > .menu > .avatarconversation > div:not(.avatar) {
|
||||
width: calc(100% - 120px);
|
||||
left: 120px;
|
||||
top: 5px;
|
||||
height: calc(100% - 5px);
|
||||
text-align: left;
|
||||
white-space: normal;
|
||||
line-height: 18px;
|
||||
}
|
||||
.scene > .menu > .avatarconversation.swap > div:not(.avatar) {
|
||||
left: auto;
|
||||
right: 120px;
|
||||
text-align: right;
|
||||
}
|
||||
.scene > .menu > .conversation > div {
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
position: relative;
|
||||
}
|
||||
#create-player {
|
||||
width: 400px;
|
||||
height: 300px;
|
||||
left: calc(50% - 200px);
|
||||
top: calc(50% - 150px);
|
||||
position: absolute;
|
||||
-webkit-animation: dialog_start2 0.5s;
|
||||
}
|
||||
#create-player > div {
|
||||
position: absolute;
|
||||
}
|
||||
#create-player > .caption {
|
||||
width: 100%;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
left: 0;
|
||||
top: 0;
|
||||
font-family: "xinwei";
|
||||
font-size: 24px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
@-webkit-keyframes scene_start {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: scale(0.5);
|
||||
margin-left: -175px;
|
||||
margin-right: -175px;
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: scale(1);
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,247 +1,247 @@
|
|||
.storyscene{
|
||||
height: 500px;
|
||||
top:calc(50% - 250px);
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
overflow-x: scroll;
|
||||
overflow-y: hidden;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.storyscene.removing{
|
||||
pointer-events: none;
|
||||
transform: translateY(500px);
|
||||
}
|
||||
.storyscene.lockscroll{
|
||||
overflow-x: hidden;
|
||||
}
|
||||
.storyscene>.scene{
|
||||
width: 350px;
|
||||
height: 420px;
|
||||
position: relative;
|
||||
left: 0;
|
||||
top:40px;
|
||||
margin-left: -40px;
|
||||
margin-right: -40px;
|
||||
z-index: 1;
|
||||
border-radius: 16px !important;
|
||||
overflow: hidden;
|
||||
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0, 0.45) 0 3px 10px;
|
||||
}
|
||||
.storyscene>.scene>.background.player{
|
||||
border-radius: 0 !important;
|
||||
box-shadow: none !important;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 1;
|
||||
}
|
||||
.storyscene>.scene.unselectable{
|
||||
opacity: 1 !important;
|
||||
box-shadow: rgba(0, 0, 0, 0.1) 0 0 0 1px, rgba(0, 0, 0, 0.225) 0 3px 10px;
|
||||
}
|
||||
.storyscene>.scene.unselectable>.background{
|
||||
opacity: 0.3;
|
||||
}
|
||||
.storyscene>.scene.unselectable>.name{
|
||||
opacity: 0.6;
|
||||
}
|
||||
/* .storyscene>.scene.unselectable>div:not(.mask).background{ */
|
||||
/*opacity: 0.25;*/
|
||||
/* } */
|
||||
.storyscene>.scene>.mask{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 3;
|
||||
}
|
||||
.storyscene>.scene>.mask>div{
|
||||
width: 100%;
|
||||
height: 240px;
|
||||
top:calc(50% - 120px);
|
||||
position: absolute;
|
||||
left: 0;
|
||||
text-align: center;
|
||||
font-size: 80px;
|
||||
line-height: 80px;
|
||||
font-family: 'xinwei';
|
||||
opacity: 0.8;
|
||||
}
|
||||
.storyscene>.scene:not(.unselectable)>.mask{
|
||||
display: none;
|
||||
}
|
||||
/* .storyscene>.scene.unselectable>.name{ */
|
||||
/*display: none;*/
|
||||
/* } */
|
||||
.storyscene>.scene.flipped{
|
||||
z-index: 2;
|
||||
border-radius: 12px !important;
|
||||
}
|
||||
.storyscene>.scene.flipped>div:not(.menu){
|
||||
display: none !important;
|
||||
}
|
||||
.storyscene>.scene:not(.flipped)>.menu{
|
||||
display: none;
|
||||
}
|
||||
.storyscene>.scene:first-child{
|
||||
margin-left: 50px;
|
||||
}
|
||||
.storyscene>.scene:last-child{
|
||||
margin-right: 50px;
|
||||
}
|
||||
.storyscene>.scene>.name{
|
||||
font-size: 48px;
|
||||
left: 25px;
|
||||
/*top: auto;*/
|
||||
top: 28px;
|
||||
/*transform: rotateY(-180deg);*/
|
||||
border-radius: 16px !important;
|
||||
z-index: 2;
|
||||
font-family: 'xinwei'
|
||||
}
|
||||
.storyscene>.scene>.menu{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
box-shadow: none;
|
||||
overflow: scroll;
|
||||
}
|
||||
.storyscene>.scene>.background>.avatar{
|
||||
width: calc(100% - 26px);
|
||||
height: calc(100% - 26px);
|
||||
left: 13px;
|
||||
top: 13px;
|
||||
z-index: 2;
|
||||
}
|
||||
.storyscene>.scene>.menu{
|
||||
transform: rotateY(-180deg);
|
||||
}
|
||||
.storyscene>.scene.startscene{
|
||||
animation: scene_start 0.5s;
|
||||
-webkit-animation: scene_start 0.5s;
|
||||
}
|
||||
.scene>.menu>.menubutton.enter{
|
||||
position: absolute;
|
||||
top:auto;
|
||||
bottom: 10px;
|
||||
width: 70px;
|
||||
left: calc(50% - 35px);
|
||||
}
|
||||
.scene>.menu>.conversation{
|
||||
display: table;
|
||||
position: absolute;
|
||||
left: 16px;
|
||||
top: 0;
|
||||
width: calc(100% - 32px);
|
||||
height: 100%;
|
||||
font-size: 24px;
|
||||
font-family: 'xinwei';
|
||||
white-space: normal;
|
||||
text-align: left;
|
||||
}
|
||||
.scene>.menu>.conversation.center{
|
||||
text-align: center;
|
||||
font-size: 30px;
|
||||
}
|
||||
.scene>.menu>.avatarconversation{
|
||||
position: relative;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
left: 0;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.scene>.menu>.avatarconversation:last-child{
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.scene>.menu>.avatarconversation>div{
|
||||
height: 100%;
|
||||
top:0;
|
||||
}
|
||||
.scene>.menu>.avatarconversation>.avatar{
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
left: 10px;
|
||||
background-size: cover;
|
||||
}
|
||||
.scene>.menu>.avatarconversation.swap>.avatar{
|
||||
left: auto;
|
||||
right: 10px;
|
||||
}
|
||||
.scene>.menu>.avatarconversation>div:not(.avatar){
|
||||
width: calc(100% - 120px);
|
||||
left: 120px;
|
||||
top: 5px;
|
||||
height: calc(100% - 5px);
|
||||
text-align: left;
|
||||
white-space: normal;
|
||||
line-height: 18px;
|
||||
}
|
||||
.scene>.menu>.avatarconversation.swap>div:not(.avatar){
|
||||
left: auto;
|
||||
right: 120px;
|
||||
text-align: right;
|
||||
}
|
||||
.scene>.menu>.conversation>div{
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
position: relative;
|
||||
}
|
||||
#create-player{
|
||||
width: 400px;
|
||||
height: 300px;
|
||||
left: calc(50% - 200px);
|
||||
top: calc(50% - 150px);
|
||||
position: absolute;
|
||||
animation:dialog_start2 0.5s;
|
||||
-webkit-animation:dialog_start2 0.5s;
|
||||
}
|
||||
#create-player>div{
|
||||
position: absolute;
|
||||
}
|
||||
#create-player>.caption{
|
||||
width: 100%;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
left: 0;
|
||||
top: 0;
|
||||
font-family: 'xinwei';
|
||||
font-size: 24px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
@keyframes scene_start{
|
||||
from{
|
||||
opacity: 0;
|
||||
transform:scale(0.5);
|
||||
margin-left: -175px;
|
||||
margin-right: -175px;
|
||||
}
|
||||
to{
|
||||
opacity: 1;
|
||||
transform: scale(1);
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes scene_start{
|
||||
from{
|
||||
opacity: 0;
|
||||
transform:scale(0.5);
|
||||
margin-left: -175px;
|
||||
margin-right: -175px;
|
||||
}
|
||||
to{
|
||||
opacity: 1;
|
||||
transform: scale(1);
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
}
|
||||
}
|
||||
.storyscene {
|
||||
height: 500px;
|
||||
top: calc(50% - 250px);
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
overflow-x: scroll;
|
||||
overflow-y: hidden;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.storyscene.removing {
|
||||
pointer-events: none;
|
||||
transform: translateY(500px);
|
||||
}
|
||||
.storyscene.lockscroll {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
.storyscene > .scene {
|
||||
width: 350px;
|
||||
height: 420px;
|
||||
position: relative;
|
||||
left: 0;
|
||||
top: 40px;
|
||||
margin-left: -40px;
|
||||
margin-right: -40px;
|
||||
z-index: 1;
|
||||
border-radius: 16px !important;
|
||||
overflow: hidden;
|
||||
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0, 0.45) 0 3px 10px;
|
||||
}
|
||||
.storyscene > .scene > .background.player {
|
||||
border-radius: 0 !important;
|
||||
box-shadow: none !important;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 1;
|
||||
}
|
||||
.storyscene > .scene.unselectable {
|
||||
opacity: 1 !important;
|
||||
box-shadow: rgba(0, 0, 0, 0.1) 0 0 0 1px, rgba(0, 0, 0, 0.225) 0 3px 10px;
|
||||
}
|
||||
.storyscene > .scene.unselectable > .background {
|
||||
opacity: 0.3;
|
||||
}
|
||||
.storyscene > .scene.unselectable > .name {
|
||||
opacity: 0.6;
|
||||
}
|
||||
/* .storyscene>.scene.unselectable>div:not(.mask).background{ */
|
||||
/*opacity: 0.25;*/
|
||||
/* } */
|
||||
.storyscene > .scene > .mask {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 3;
|
||||
}
|
||||
.storyscene > .scene > .mask > div {
|
||||
width: 100%;
|
||||
height: 240px;
|
||||
top: calc(50% - 120px);
|
||||
position: absolute;
|
||||
left: 0;
|
||||
text-align: center;
|
||||
font-size: 80px;
|
||||
line-height: 80px;
|
||||
font-family: "xinwei";
|
||||
opacity: 0.8;
|
||||
}
|
||||
.storyscene > .scene:not(.unselectable) > .mask {
|
||||
display: none;
|
||||
}
|
||||
/* .storyscene>.scene.unselectable>.name{ */
|
||||
/*display: none;*/
|
||||
/* } */
|
||||
.storyscene > .scene.flipped {
|
||||
z-index: 2;
|
||||
border-radius: 12px !important;
|
||||
}
|
||||
.storyscene > .scene.flipped > div:not(.menu) {
|
||||
display: none !important;
|
||||
}
|
||||
.storyscene > .scene:not(.flipped) > .menu {
|
||||
display: none;
|
||||
}
|
||||
.storyscene > .scene:first-child {
|
||||
margin-left: 50px;
|
||||
}
|
||||
.storyscene > .scene:last-child {
|
||||
margin-right: 50px;
|
||||
}
|
||||
.storyscene > .scene > .name {
|
||||
font-size: 48px;
|
||||
left: 25px;
|
||||
/*top: auto;*/
|
||||
top: 28px;
|
||||
/*transform: rotateY(-180deg);*/
|
||||
border-radius: 16px !important;
|
||||
z-index: 2;
|
||||
font-family: "xinwei";
|
||||
}
|
||||
.storyscene > .scene > .menu {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
box-shadow: none;
|
||||
overflow: scroll;
|
||||
}
|
||||
.storyscene > .scene > .background > .avatar {
|
||||
width: calc(100% - 26px);
|
||||
height: calc(100% - 26px);
|
||||
left: 13px;
|
||||
top: 13px;
|
||||
z-index: 2;
|
||||
}
|
||||
.storyscene > .scene > .menu {
|
||||
transform: rotateY(-180deg);
|
||||
}
|
||||
.storyscene > .scene.startscene {
|
||||
animation: scene_start 0.5s;
|
||||
-webkit-animation: scene_start 0.5s;
|
||||
}
|
||||
.scene > .menu > .menubutton.enter {
|
||||
position: absolute;
|
||||
top: auto;
|
||||
bottom: 10px;
|
||||
width: 70px;
|
||||
left: calc(50% - 35px);
|
||||
}
|
||||
.scene > .menu > .conversation {
|
||||
display: table;
|
||||
position: absolute;
|
||||
left: 16px;
|
||||
top: 0;
|
||||
width: calc(100% - 32px);
|
||||
height: 100%;
|
||||
font-size: 24px;
|
||||
font-family: "xinwei";
|
||||
white-space: normal;
|
||||
text-align: left;
|
||||
}
|
||||
.scene > .menu > .conversation.center {
|
||||
text-align: center;
|
||||
font-size: 30px;
|
||||
}
|
||||
.scene > .menu > .avatarconversation {
|
||||
position: relative;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
left: 0;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.scene > .menu > .avatarconversation:last-child {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.scene > .menu > .avatarconversation > div {
|
||||
height: 100%;
|
||||
top: 0;
|
||||
}
|
||||
.scene > .menu > .avatarconversation > .avatar {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
left: 10px;
|
||||
background-size: cover;
|
||||
}
|
||||
.scene > .menu > .avatarconversation.swap > .avatar {
|
||||
left: auto;
|
||||
right: 10px;
|
||||
}
|
||||
.scene > .menu > .avatarconversation > div:not(.avatar) {
|
||||
width: calc(100% - 120px);
|
||||
left: 120px;
|
||||
top: 5px;
|
||||
height: calc(100% - 5px);
|
||||
text-align: left;
|
||||
white-space: normal;
|
||||
line-height: 18px;
|
||||
}
|
||||
.scene > .menu > .avatarconversation.swap > div:not(.avatar) {
|
||||
left: auto;
|
||||
right: 120px;
|
||||
text-align: right;
|
||||
}
|
||||
.scene > .menu > .conversation > div {
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
position: relative;
|
||||
}
|
||||
#create-player {
|
||||
width: 400px;
|
||||
height: 300px;
|
||||
left: calc(50% - 200px);
|
||||
top: calc(50% - 150px);
|
||||
position: absolute;
|
||||
animation: dialog_start2 0.5s;
|
||||
-webkit-animation: dialog_start2 0.5s;
|
||||
}
|
||||
#create-player > div {
|
||||
position: absolute;
|
||||
}
|
||||
#create-player > .caption {
|
||||
width: 100%;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
left: 0;
|
||||
top: 0;
|
||||
font-family: "xinwei";
|
||||
font-size: 24px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
@keyframes scene_start {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: scale(0.5);
|
||||
margin-left: -175px;
|
||||
margin-right: -175px;
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: scale(1);
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes scene_start {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: scale(0.5);
|
||||
margin-left: -175px;
|
||||
margin-right: -175px;
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: scale(1);
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,143 +1,146 @@
|
|||
.player .equips{
|
||||
width:120px;
|
||||
height:auto;
|
||||
top:auto;
|
||||
right:auto;
|
||||
bottom:18px;
|
||||
left:10px;
|
||||
text-align:left;
|
||||
}
|
||||
#arena.slim_player .player .equips{
|
||||
left: 7px;
|
||||
}
|
||||
#arena.uslim_player .player .equips{
|
||||
left: 3px;
|
||||
}
|
||||
#arena.mslim_player .player .equips{
|
||||
left: 3px;
|
||||
}
|
||||
.player.minskin .equips{
|
||||
transform:scale(0.73);
|
||||
transform-origin:bottom left;
|
||||
}
|
||||
.player .equips>.card::after,
|
||||
.player .equips>.card::before{
|
||||
visibility: hidden;
|
||||
}
|
||||
.player .equips>.card{
|
||||
position:relative;
|
||||
width:100%;
|
||||
height:22px;
|
||||
line-height:22px;
|
||||
margin-top:0;
|
||||
margin-bottom:0;
|
||||
background:linear-gradient(to right,rgba(0,0,0,0.3),transparent),
|
||||
linear-gradient(135deg,rgba(0,0,0,0.5) ,transparent 80%,transparent) !important;
|
||||
box-shadow:none;
|
||||
color:white;
|
||||
text-shadow:black 0 0 2px;
|
||||
animation: card_start2x 0.5s;
|
||||
-webkit-animation: card_start2x 0.5s;
|
||||
display:block;
|
||||
left:0;
|
||||
top:0;
|
||||
transition:all 0.5s;
|
||||
|
||||
border-radius:0;
|
||||
border-width: 1px 0 0;
|
||||
border-style:solid;
|
||||
border-image:linear-gradient(to right, rgba(0, 0, 0,0.4) 70%,transparent) 100% 0 0;
|
||||
}
|
||||
.player .equips>.card>.image{
|
||||
display:none;
|
||||
}
|
||||
|
||||
|
||||
.player.unseen .equips>.card{
|
||||
background:none;
|
||||
/*border-image:linear-gradient(to right, transparent,rgba(0,0,0,0.4) 10%,rgba(0, 0, 0,0.4) 70%,transparent) 100% 0 0;*/
|
||||
}
|
||||
.player.unseen .equips>.card{
|
||||
border-image:linear-gradient(to right, transparent,rgba(0,0,0,0.4) 10%,rgba(0, 0, 0,0.4) 70%,transparent) 100% 0 0;
|
||||
}
|
||||
.player.unseen .equips>.card:first-child{
|
||||
border-image:linear-gradient(transparent,transparent);
|
||||
}
|
||||
.player .equips>.card.selected{
|
||||
background:linear-gradient(to right,rgba(0, 133, 255,0.3),transparent),
|
||||
linear-gradient(135deg,rgba(0, 133, 255,0.5) ,transparent 80%,transparent) !important;
|
||||
box-shadow:none !important;
|
||||
border-width: 1px 0 0;
|
||||
border-style:solid;
|
||||
border-image:linear-gradient(to right, rgba(0, 103, 205,0.4) 70%,transparent) 100% 0 0;
|
||||
}
|
||||
.player .equips>.card.fire{
|
||||
color: rgb(255,119,63);
|
||||
}
|
||||
.player .equips>.card.thunder{
|
||||
color: rgb(117,186,255);
|
||||
}
|
||||
.player .equips>.card.poison{
|
||||
color: rgb(104,221,127);
|
||||
}
|
||||
.player .equips>.card.brown{
|
||||
color: rgb(195,161,223);
|
||||
}
|
||||
|
||||
|
||||
.equips>.card>.background{
|
||||
display:none !important;
|
||||
}
|
||||
.equips>.card>.name2{
|
||||
display:block;
|
||||
margin-left:5px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.equips>.card>div{
|
||||
animation:none !important;
|
||||
-webkit-animation:none !important;
|
||||
}
|
||||
.equips>.card>.name,
|
||||
.equips>.card>.info{
|
||||
display:none !important;
|
||||
}
|
||||
|
||||
|
||||
.equips>.removing{
|
||||
margin-top:-12px !important;
|
||||
margin-bottom:-11px !important;
|
||||
transform:scale(1);
|
||||
}
|
||||
.equips>.removing+.removing{
|
||||
margin-top:-23px !important;
|
||||
}
|
||||
|
||||
|
||||
.player.linked .equips{
|
||||
transform:rotate(90deg) translate(-152px,-6px);
|
||||
transform-origin:bottom left;
|
||||
}
|
||||
#arena.slim_player .player.linked .equips{
|
||||
transform:rotate(90deg) translate(-155px,-6px);
|
||||
}
|
||||
#arena.uslim_player .player.linked .equips{
|
||||
transform:rotate(90deg) translate(-159px,-6px);
|
||||
}
|
||||
#arena.mslim_player .player.linked .equips{
|
||||
transform:rotate(90deg) translate(-157px,-6px);
|
||||
}
|
||||
.player.minskin.linked .equips{
|
||||
transform:rotate(90deg) translate(-92px,-6px) scale(0.73);
|
||||
}
|
||||
#arena.slim_player .player.minskin.linked .equips{
|
||||
transform:rotate(90deg) translate(-95px,-6px) scale(0.73);
|
||||
}
|
||||
#arena.uslim_player .player.minskin.linked .equips{
|
||||
transform:rotate(90deg) translate(-99px,-6px) scale(0.73);
|
||||
}
|
||||
#arena.mslim_player .player.minskin.linked .equips{
|
||||
transform:rotate(90deg) translate(-97px,-6px) scale(0.73);
|
||||
}
|
||||
.player.linked .identity{
|
||||
transform:rotate(90deg);
|
||||
}
|
||||
.player .equips {
|
||||
width: 120px;
|
||||
height: auto;
|
||||
top: auto;
|
||||
right: auto;
|
||||
bottom: 18px;
|
||||
left: 10px;
|
||||
text-align: left;
|
||||
}
|
||||
#arena.slim_player .player .equips {
|
||||
left: 7px;
|
||||
}
|
||||
#arena.uslim_player .player .equips {
|
||||
left: 3px;
|
||||
}
|
||||
#arena.mslim_player .player .equips {
|
||||
left: 3px;
|
||||
}
|
||||
.player.minskin .equips {
|
||||
transform: scale(0.73);
|
||||
transform-origin: bottom left;
|
||||
}
|
||||
.player .equips > .card::after,
|
||||
.player .equips > .card::before {
|
||||
visibility: hidden;
|
||||
}
|
||||
.player .equips > .card {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 22px;
|
||||
line-height: 22px;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
background: linear-gradient(to right, rgba(0, 0, 0, 0.3), transparent),
|
||||
linear-gradient(135deg, rgba(0, 0, 0, 0.5), transparent 80%, transparent) !important;
|
||||
box-shadow: none;
|
||||
color: white;
|
||||
text-shadow: black 0 0 2px;
|
||||
animation: card_start2x 0.5s;
|
||||
-webkit-animation: card_start2x 0.5s;
|
||||
display: block;
|
||||
left: 0;
|
||||
top: 0;
|
||||
transition: all 0.5s;
|
||||
|
||||
border-radius: 0;
|
||||
border-width: 1px 0 0;
|
||||
border-style: solid;
|
||||
border-image: linear-gradient(to right, rgba(0, 0, 0, 0.4) 70%, transparent) 100% 0 0;
|
||||
}
|
||||
.player .equips > .card > .image {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.player.unseen .equips > .card {
|
||||
background: none;
|
||||
/*border-image:linear-gradient(to right, transparent,rgba(0,0,0,0.4) 10%,rgba(0, 0, 0,0.4) 70%,transparent) 100% 0 0;*/
|
||||
}
|
||||
.player.unseen .equips > .card {
|
||||
border-image: linear-gradient(
|
||||
to right,
|
||||
transparent,
|
||||
rgba(0, 0, 0, 0.4) 10%,
|
||||
rgba(0, 0, 0, 0.4) 70%,
|
||||
transparent
|
||||
)
|
||||
100% 0 0;
|
||||
}
|
||||
.player.unseen .equips > .card:first-child {
|
||||
border-image: linear-gradient(transparent, transparent);
|
||||
}
|
||||
.player .equips > .card.selected {
|
||||
background: linear-gradient(to right, rgba(0, 133, 255, 0.3), transparent),
|
||||
linear-gradient(135deg, rgba(0, 133, 255, 0.5), transparent 80%, transparent) !important;
|
||||
box-shadow: none !important;
|
||||
border-width: 1px 0 0;
|
||||
border-style: solid;
|
||||
border-image: linear-gradient(to right, rgba(0, 103, 205, 0.4) 70%, transparent) 100% 0 0;
|
||||
}
|
||||
.player .equips > .card.fire {
|
||||
color: rgb(255, 119, 63);
|
||||
}
|
||||
.player .equips > .card.thunder {
|
||||
color: rgb(117, 186, 255);
|
||||
}
|
||||
.player .equips > .card.poison {
|
||||
color: rgb(104, 221, 127);
|
||||
}
|
||||
.player .equips > .card.brown {
|
||||
color: rgb(195, 161, 223);
|
||||
}
|
||||
|
||||
.equips > .card > .background {
|
||||
display: none !important;
|
||||
}
|
||||
.equips > .card > .name2 {
|
||||
display: block;
|
||||
margin-left: 5px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.equips > .card > div {
|
||||
animation: none !important;
|
||||
-webkit-animation: none !important;
|
||||
}
|
||||
.equips > .card > .name,
|
||||
.equips > .card > .info {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.equips > .removing {
|
||||
margin-top: -12px !important;
|
||||
margin-bottom: -11px !important;
|
||||
transform: scale(1);
|
||||
}
|
||||
.equips > .removing + .removing {
|
||||
margin-top: -23px !important;
|
||||
}
|
||||
|
||||
.player.linked .equips {
|
||||
transform: rotate(90deg) translate(-152px, -6px);
|
||||
transform-origin: bottom left;
|
||||
}
|
||||
#arena.slim_player .player.linked .equips {
|
||||
transform: rotate(90deg) translate(-155px, -6px);
|
||||
}
|
||||
#arena.uslim_player .player.linked .equips {
|
||||
transform: rotate(90deg) translate(-159px, -6px);
|
||||
}
|
||||
#arena.mslim_player .player.linked .equips {
|
||||
transform: rotate(90deg) translate(-157px, -6px);
|
||||
}
|
||||
.player.minskin.linked .equips {
|
||||
transform: rotate(90deg) translate(-92px, -6px) scale(0.73);
|
||||
}
|
||||
#arena.slim_player .player.minskin.linked .equips {
|
||||
transform: rotate(90deg) translate(-95px, -6px) scale(0.73);
|
||||
}
|
||||
#arena.uslim_player .player.minskin.linked .equips {
|
||||
transform: rotate(90deg) translate(-99px, -6px) scale(0.73);
|
||||
}
|
||||
#arena.mslim_player .player.minskin.linked .equips {
|
||||
transform: rotate(90deg) translate(-97px, -6px) scale(0.73);
|
||||
}
|
||||
.player.linked .identity {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,2 +1,2 @@
|
|||
@import 'global.css';
|
||||
@import 'equip.css';
|
||||
@import "global.css";
|
||||
@import "equip.css";
|
||||
|
|
|
@ -1,363 +1,448 @@
|
|||
@import "../newlayout/layout.css";
|
||||
#arena{
|
||||
height: calc(95% + 20px);
|
||||
}
|
||||
#control{
|
||||
width: calc(5000% / 47 - 240px);
|
||||
left:calc(-150% / 47 + 120px);
|
||||
bottom:150px;
|
||||
height: 40px;
|
||||
}
|
||||
#arena.phone #control{
|
||||
bottom:160px;
|
||||
}
|
||||
#arena.ipad #control{
|
||||
bottom:155px;
|
||||
}
|
||||
#arena:not(.chess)>#me,
|
||||
#arena:not(.chess)>#mebg,
|
||||
#arena:not(.chess)>#autonode{
|
||||
bottom:30px;
|
||||
width: calc(5000% / 47);
|
||||
left:calc(-150% / 47);
|
||||
top:auto;
|
||||
border-radius:0 !important;
|
||||
height:120px;
|
||||
}
|
||||
#arena.oblongcard:not(.chess)>#me,
|
||||
#arena.oblongcard:not(.chess)>#mebg,
|
||||
#arena.oblongcard:not(.chess)>#autonode{
|
||||
height: 140px;
|
||||
}
|
||||
#arena.oblongcard:not(.chess)>.card,
|
||||
#arena.oblongcard:not(.chess) .handcards>.card{
|
||||
height: 120px;
|
||||
}
|
||||
#arena.oblongcard:not(.chess)>.card>.image,
|
||||
#arena.oblongcard:not(.chess) .handcards>.card>.image{
|
||||
height: 110px;
|
||||
top: 8px;
|
||||
background-position-x: -3px;
|
||||
}
|
||||
#arena.oblongcard:not(.chess) #handcards1{
|
||||
height: 100%;
|
||||
top: 2px;
|
||||
}
|
||||
#arena.oblongcard:not(.chess):not(.choose-character) #control{
|
||||
bottom:165px;
|
||||
}
|
||||
#arena.phone.oblongcard:not(.chess):not(.choose-character) #control{
|
||||
bottom:180px;
|
||||
}
|
||||
|
||||
#arena:not(.chess)>#autonode{
|
||||
width: calc(5000% / 47 - 240px);
|
||||
left:calc(-150% / 47 + 120px);
|
||||
}
|
||||
#arena:not(.mobile).single-handcard #handcards1{
|
||||
width: calc(100% - 120px);
|
||||
}
|
||||
#window.rightbar #system,
|
||||
#window.leftbar #system{
|
||||
width: calc(100% - 62px);
|
||||
}
|
||||
#window.leftbar #system{
|
||||
left: 50px;
|
||||
}
|
||||
#window.rightbar #historybar{
|
||||
left: calc(100% - 50px);
|
||||
border-radius: 0;
|
||||
top: 0;
|
||||
height: 100%;
|
||||
}
|
||||
#window.leftbar #historybar{
|
||||
left: 0;
|
||||
border-radius: 0;
|
||||
top: 0;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#window.single-handcard #historybar{
|
||||
height: calc(100% - 121px);
|
||||
}
|
||||
#window.oblongcard.single-handcard #historybar{
|
||||
height: calc(100% - 141px);
|
||||
}
|
||||
|
||||
#window.leftbar #arena:not(.chess)>#me,
|
||||
#window.leftbar #arena:not(.chess)>#mebg,
|
||||
#window.leftbar #arena:not(.chess)>#autonode{
|
||||
width: calc(5000% / 47 + 2500px / 47);
|
||||
left:calc(-150% / 47 - 50px - 75px / 47);
|
||||
}
|
||||
#window.leftbar #arena:not(.chess)>#autonode{
|
||||
width: calc(5000% / 47 + 2500px / 47 - 240px);
|
||||
left:calc(-150% / 47 - 50px - 75px / 47 + 120px);
|
||||
}
|
||||
#window.rightbar #arena:not(.chess)>#me,
|
||||
#window.rightbar #arena:not(.chess)>#mebg,
|
||||
#window.rightbar #arena:not(.chess)>#autonode{
|
||||
width: calc(5000% / 47 + 2500px / 47);
|
||||
left:calc(-150% / 47 - 75px / 47);
|
||||
}
|
||||
#window.rightbar #arena:not(.chess)>#autonode{
|
||||
width: calc(5000% / 47 + 2500px / 47 - 240px);
|
||||
left:calc(-150% / 47 - 75px / 47 + 120px);
|
||||
}
|
||||
#arena:not(.chess) #handcards1{
|
||||
height:120px;
|
||||
padding:0;
|
||||
top:calc(100% - 120px);
|
||||
}
|
||||
#arena:not(.chess) #handcards1.scrollh{
|
||||
top: calc(100% - 180px);
|
||||
height: 180px;
|
||||
}
|
||||
#arena:not(.chess).oblongcard #handcards1.scrollh{
|
||||
top: calc(100% - 200px);
|
||||
height: 200px;
|
||||
}
|
||||
#arena:not(.chess) #handcards1.scrollh>div{
|
||||
height: 120px;
|
||||
top: 60px;
|
||||
}
|
||||
#arena:not(.chess).oblongcard #handcards1.scrollh>div{
|
||||
top: 62px;
|
||||
}
|
||||
#arena:not(.chess):not(.single-handcard) #handcards1{
|
||||
width:calc(100% - 240px);
|
||||
left:calc(150% / 47 - 300% / 94 + 625% / 47 - 105px + 120px);
|
||||
}
|
||||
#arena:not(.single-handcard):not(.chess)>#me,
|
||||
#arena:not(.single-handcard):not(.chess)>#mebg,
|
||||
#arena:not(.single-handcard):not(.chess)>#autonode{
|
||||
left: 0 !important;
|
||||
bottom: 38px !important;
|
||||
width: calc(9700% / 94) !important;
|
||||
}
|
||||
#arena:not(.single-handcard):not(.chess)>#mebg{
|
||||
visibility: hidden;
|
||||
}
|
||||
#arena:not(.single-handcard):not(.chess)>#me #handcards1{
|
||||
left: 150px !important;
|
||||
width: calc(100% - 150px) !important;
|
||||
}
|
||||
#arena:not(.single-handcard):not(.chess)>#me #handcards1>.handcards{
|
||||
left: 0 !important;
|
||||
}
|
||||
#autonode{
|
||||
display: table !important;
|
||||
}
|
||||
@media screen and (max-width: 1105px){
|
||||
#arena[data-number='8']:not(.single-handcard):not(.chess)>#me,
|
||||
#arena[data-number='8']:not(.single-handcard):not(.chess)>#mebg,
|
||||
#arena[data-number='8']:not(.single-handcard):not(.chess)>#autonode{
|
||||
left: calc(-300% / 94 + 625% / 47 - 105px) !important;
|
||||
width: calc(9700% / 94 + 300% / 94 - 625% / 47 + 105px) !important;
|
||||
}
|
||||
}
|
||||
#handcards2{
|
||||
display:none;
|
||||
}
|
||||
.dialog{
|
||||
height:calc(100% - 370px);
|
||||
bottom:170px;
|
||||
}
|
||||
#arena.choose-character>.dialog .placeholder+.placeholder{
|
||||
display: none;
|
||||
}
|
||||
#arena.choose-character>.dialog .placeholder{
|
||||
margin-bottom: 4px;
|
||||
height: 0px;
|
||||
}
|
||||
#arena.choose-character>.dialog.noupdate .placeholder{
|
||||
margin-bottom: 0;
|
||||
height: 0;
|
||||
}
|
||||
#arena.choose-character>.dialog{
|
||||
height:calc(100% - 280px);
|
||||
bottom:80px;
|
||||
}
|
||||
#arena.choose-character>.dialog.scroll3{
|
||||
height:calc(100% - 240px);
|
||||
}
|
||||
#arena.phone.choose-character>.dialog{
|
||||
bottom:93px;
|
||||
}
|
||||
#arena.ipad.choose-character>.dialog{
|
||||
bottom:96px;
|
||||
}
|
||||
#arena.discard-player-card>#control,
|
||||
#arena.gain-player-card>#control,
|
||||
#arena.choose-player-card>#control,
|
||||
#arena.choose-to-move>#control,
|
||||
#arena.choose-character>#control{
|
||||
bottom: 30px;
|
||||
transition: all 0s;
|
||||
}
|
||||
#arena.phone.discard-player-card>#control,
|
||||
#arena.phone.gain-player-card>#control,
|
||||
#arena.phone.choose-player-card>#control,
|
||||
#arena.phone.choose-to-move>#control,
|
||||
#arena.phone.choose-character>#control{
|
||||
bottom: 43px;
|
||||
}
|
||||
#arena.ipad.discard-player-card>#control,
|
||||
#arena.ipad.gain-player-card>#control,
|
||||
#arena.ipad.choose-player-card>#control,
|
||||
#arena.ipad.choose-to-move>#control,
|
||||
#arena.ipad.choose-character>#control{
|
||||
bottom: 45px;
|
||||
}
|
||||
.dialog.fullheight {
|
||||
height: calc(100% - 123px) !important;
|
||||
top: 40px !important;
|
||||
}
|
||||
|
||||
#me>.fakeme.avatar{
|
||||
width:120px;
|
||||
height:100%;
|
||||
border-radius:0px;
|
||||
top:0;
|
||||
left:0;
|
||||
background-size:cover;
|
||||
clip-path: polygon(-10px 0, 130px 0, 130px 130px, -10px 130px);
|
||||
-webkit-clip-path: polygon(-10px 0, 130px 0, 130px 130px, -10px 130px);
|
||||
}
|
||||
#window[data-radius_size='increase'] #me>.fakeme.avatar,
|
||||
#window[data-radius_size='reduce'] #me>.fakeme.avatar{
|
||||
border-radius:0px;
|
||||
}
|
||||
|
||||
/*--------位置(8人)------*/
|
||||
[data-number='8']>.player[data-position='1']{top:calc(55% - 135px);left:calc(100% - 150px);}
|
||||
[data-number='8']>.player[data-position='2']{top:calc(10% - 50px);left:calc(100% - 150px);}
|
||||
[data-number='8']>.player[data-position='3']{top:0;left:calc(75% - 112.5px);}
|
||||
[data-number='8']>.player[data-position='4']{top:0;left:calc(50% - 75px);}
|
||||
[data-number='8']>.player[data-position='5']{top:0;left:calc(25% - 37.5px);}
|
||||
[data-number='8']>.player[data-position='6']{top:calc(10% - 50px);left:0;}
|
||||
[data-number='8']>.player[data-position='7']{top:calc(55% - 135px);left:0;}
|
||||
/*--------位置(7人)------*/
|
||||
[data-number='7']>.player[data-position='1']{top:calc(55% - 135px);left:calc(100% - 150px);}
|
||||
[data-number='7']>.player[data-position='2']{top:calc(10% - 50px);left:calc(100% - 150px);}
|
||||
[data-number='7']>.player[data-position='3']{top:0;left:calc(62.5% - 75px);}
|
||||
[data-number='7']>.player[data-position='4']{top:0;left:calc(37.5% - 75px);}
|
||||
[data-number='7']>.player[data-position='5']{top:calc(10% - 50px);left:0;}
|
||||
[data-number='7']>.player[data-position='6']{top:calc(55% - 135px);left:0;}
|
||||
/*--------位置(6人)------*/
|
||||
#arena[data-number='6']>.player[data-position='1']{top:calc(30% - 128px);left:calc(100% - 120px);}
|
||||
#arena[data-number='6']>.player[data-position='2']{top:0px;left:calc(75% - 90px);}
|
||||
#arena[data-number='6']>.player[data-position='3']{top:0;left:calc(50% - 60px);}
|
||||
#arena[data-number='6']>.player[data-position='4']{top:0px;left:calc(25% - 30px);}
|
||||
#arena[data-number='6']>.player[data-position='5']{top:calc(30% - 128px);left:0;}
|
||||
/*--------位置(5人)------*/
|
||||
#arena[data-number='5']>.player[data-position='1']{top:calc(30% - 128px);left:calc(100% - 120px);}
|
||||
#arena[data-number='5']>.player[data-position='2']{top:0;left:calc(200% / 3 - 80px);}
|
||||
#arena[data-number='5']>.player[data-position='3']{top:0;left:calc(100% / 3 - 40px);}
|
||||
#arena[data-number='5']>.player[data-position='4']{top:calc(30% - 128px);left:0;}
|
||||
/*--------位置(4人)------*/
|
||||
#arena[data-number='4']>.player[data-position='1']{top:calc(30% - 128px);left:calc(100% - 120px);}
|
||||
#arena[data-number='4']>.player[data-position='2']{top:0;left:calc(50% - 60px);}
|
||||
#arena[data-number='4']>.player[data-position='3']{top:calc(30% - 128px);left:0;}
|
||||
/*--------位置(3人)------*/
|
||||
#arena[data-number='3']>.player[data-position='1']{top:calc(60% / 3 - 88px);left:calc(75% + 80px);}
|
||||
#arena[data-number='3']>.player[data-position='2']{top:calc(60% / 3 - 88px);left:calc(25% - 200px);}
|
||||
/*--------位置(2人)------*/
|
||||
#arena[data-number='2']>.player[data-position='1']{top:0;left:calc(50% - 60px);}
|
||||
/*--------位置(1人)------*/
|
||||
.player[data-position='0']{top:calc(100% - 220px);left:0;}
|
||||
|
||||
|
||||
#arena[data-player_height_nova="default"]>.player[data-position='0']:not(.minskin){
|
||||
top: calc(100% - 236px);
|
||||
}
|
||||
[data-number='8'][data-player_height_nova="default"]>.player[data-position='1'],
|
||||
[data-number='8'][data-player_height_nova="default"]>.player[data-position='7'],
|
||||
[data-number='7'][data-player_height_nova="default"]>.player[data-position='1'],
|
||||
[data-number='7'][data-player_height_nova="default"]>.player[data-position='6']{
|
||||
top:calc(55% - 143px);
|
||||
}
|
||||
|
||||
#arena[data-player_height_nova="default"]>.player:not(.minskin){
|
||||
height: 196px !important;
|
||||
}
|
||||
#arena[data-player_height_nova="default"] .timerbar>div{
|
||||
top: 181px;
|
||||
}
|
||||
|
||||
#arena[data-player_height_nova="default"]>.player .avatar{
|
||||
height:176px;
|
||||
}
|
||||
#arena.slim_player[data-player_height_nova="default"] .player:not(.minskin):not(.fakeme) .avatar{
|
||||
height: 182px;
|
||||
}
|
||||
|
||||
#arena.uslim_player[data-player_height_nova="default"] .player:not(.minskin):not(.fakeme) .avatar{
|
||||
height: 190px;
|
||||
}
|
||||
#arena.mslim_player[data-player_height_nova="default"] .player:not(.minskin):not(.fakeme) .avatar{
|
||||
height: 186px;
|
||||
}
|
||||
#arena[data-player_height_nova="default"]>.player.fullskin2 .avatar2{
|
||||
height:176px;
|
||||
}
|
||||
|
||||
#arena.slim_player[data-player_height_nova="default"]> .player.fullskin2:not(.minskin) .avatar2{
|
||||
height: 182px;
|
||||
}
|
||||
#arena.uslim_player[data-player_height_nova="default"]> .player.fullskin2:not(.minskin) .avatar2{
|
||||
height: 190px;
|
||||
}
|
||||
#arena.mslim_player[data-player_height_nova="default"]> .player.fullskin2:not(.minskin) .avatar2{
|
||||
height: 186px;
|
||||
}
|
||||
|
||||
|
||||
#arena[data-player_height_nova="long"]>.player[data-position='0']:not(.minskin){
|
||||
top: calc(100% - 250px);
|
||||
}
|
||||
[data-number='8'][data-player_height_nova="long"]>.player[data-position='1'],
|
||||
[data-number='8'][data-player_height_nova="long"]>.player[data-position='7'],
|
||||
[data-number='7'][data-player_height_nova="long"]>.player[data-position='1'],
|
||||
[data-number='7'][data-player_height_nova="long"]>.player[data-position='6']{
|
||||
top:calc(55% - 150px);
|
||||
}
|
||||
|
||||
#arena[data-player_height_nova="long"]>.player:not(.minskin){
|
||||
height: 210px !important;
|
||||
}
|
||||
#arena[data-player_height_nova="long"] .timerbar>div{
|
||||
top: 195px;
|
||||
}
|
||||
|
||||
#arena[data-player_height_nova="long"]>.player .avatar{
|
||||
height:190px;
|
||||
}
|
||||
#arena.slim_player[data-player_height_nova="long"] .player:not(.minskin):not(.fakeme) .avatar{
|
||||
height: 196px;
|
||||
}
|
||||
|
||||
#arena.uslim_player[data-player_height_nova="long"] .player:not(.minskin):not(.fakeme) .avatar{
|
||||
height: 204px;
|
||||
}
|
||||
#arena.mslim_player[data-player_height_nova="long"] .player:not(.minskin):not(.fakeme) .avatar{
|
||||
height: 200px;
|
||||
}
|
||||
#arena[data-player_height_nova="long"]>.player.fullskin2 .avatar2{
|
||||
height:190px;
|
||||
}
|
||||
|
||||
#arena.slim_player[data-player_height_nova="long"]> .player.fullskin2:not(.minskin) .avatar2{
|
||||
height: 196px;
|
||||
}
|
||||
#arena.uslim_player[data-player_height_nova="long"]> .player.fullskin2:not(.minskin) .avatar2{
|
||||
height: 204px;
|
||||
}
|
||||
#arena.mslim_player[data-player_height_nova="long"]> .player.fullskin2:not(.minskin) .avatar2{
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
#arena>.player:not(.minskin)>.avatar,
|
||||
#arena>.player:not(.minskin)>.avatar2{
|
||||
background-position: 50% 0 !important;
|
||||
}
|
||||
@import "../newlayout/layout.css";
|
||||
#arena {
|
||||
height: calc(95% + 20px);
|
||||
}
|
||||
#control {
|
||||
width: calc(5000% / 47 - 240px);
|
||||
left: calc(-150% / 47 + 120px);
|
||||
bottom: 150px;
|
||||
height: 40px;
|
||||
}
|
||||
#arena.phone #control {
|
||||
bottom: 160px;
|
||||
}
|
||||
#arena.ipad #control {
|
||||
bottom: 155px;
|
||||
}
|
||||
#arena:not(.chess) > #me,
|
||||
#arena:not(.chess) > #mebg,
|
||||
#arena:not(.chess) > #autonode {
|
||||
bottom: 30px;
|
||||
width: calc(5000% / 47);
|
||||
left: calc(-150% / 47);
|
||||
top: auto;
|
||||
border-radius: 0 !important;
|
||||
height: 120px;
|
||||
}
|
||||
#arena.oblongcard:not(.chess) > #me,
|
||||
#arena.oblongcard:not(.chess) > #mebg,
|
||||
#arena.oblongcard:not(.chess) > #autonode {
|
||||
height: 140px;
|
||||
}
|
||||
#arena.oblongcard:not(.chess) > .card,
|
||||
#arena.oblongcard:not(.chess) .handcards > .card {
|
||||
height: 120px;
|
||||
}
|
||||
#arena.oblongcard:not(.chess) > .card > .image,
|
||||
#arena.oblongcard:not(.chess) .handcards > .card > .image {
|
||||
height: 110px;
|
||||
top: 8px;
|
||||
background-position-x: -3px;
|
||||
}
|
||||
#arena.oblongcard:not(.chess) #handcards1 {
|
||||
height: 100%;
|
||||
top: 2px;
|
||||
}
|
||||
#arena.oblongcard:not(.chess):not(.choose-character) #control {
|
||||
bottom: 165px;
|
||||
}
|
||||
#arena.phone.oblongcard:not(.chess):not(.choose-character) #control {
|
||||
bottom: 180px;
|
||||
}
|
||||
|
||||
#arena:not(.chess) > #autonode {
|
||||
width: calc(5000% / 47 - 240px);
|
||||
left: calc(-150% / 47 + 120px);
|
||||
}
|
||||
#arena:not(.mobile).single-handcard #handcards1 {
|
||||
width: calc(100% - 120px);
|
||||
}
|
||||
#window.rightbar #system,
|
||||
#window.leftbar #system {
|
||||
width: calc(100% - 62px);
|
||||
}
|
||||
#window.leftbar #system {
|
||||
left: 50px;
|
||||
}
|
||||
#window.rightbar #historybar {
|
||||
left: calc(100% - 50px);
|
||||
border-radius: 0;
|
||||
top: 0;
|
||||
height: 100%;
|
||||
}
|
||||
#window.leftbar #historybar {
|
||||
left: 0;
|
||||
border-radius: 0;
|
||||
top: 0;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#window.single-handcard #historybar {
|
||||
height: calc(100% - 121px);
|
||||
}
|
||||
#window.oblongcard.single-handcard #historybar {
|
||||
height: calc(100% - 141px);
|
||||
}
|
||||
|
||||
#window.leftbar #arena:not(.chess) > #me,
|
||||
#window.leftbar #arena:not(.chess) > #mebg,
|
||||
#window.leftbar #arena:not(.chess) > #autonode {
|
||||
width: calc(5000% / 47 + 2500px / 47);
|
||||
left: calc(-150% / 47 - 50px - 75px / 47);
|
||||
}
|
||||
#window.leftbar #arena:not(.chess) > #autonode {
|
||||
width: calc(5000% / 47 + 2500px / 47 - 240px);
|
||||
left: calc(-150% / 47 - 50px - 75px / 47 + 120px);
|
||||
}
|
||||
#window.rightbar #arena:not(.chess) > #me,
|
||||
#window.rightbar #arena:not(.chess) > #mebg,
|
||||
#window.rightbar #arena:not(.chess) > #autonode {
|
||||
width: calc(5000% / 47 + 2500px / 47);
|
||||
left: calc(-150% / 47 - 75px / 47);
|
||||
}
|
||||
#window.rightbar #arena:not(.chess) > #autonode {
|
||||
width: calc(5000% / 47 + 2500px / 47 - 240px);
|
||||
left: calc(-150% / 47 - 75px / 47 + 120px);
|
||||
}
|
||||
#arena:not(.chess) #handcards1 {
|
||||
height: 120px;
|
||||
padding: 0;
|
||||
top: calc(100% - 120px);
|
||||
}
|
||||
#arena:not(.chess) #handcards1.scrollh {
|
||||
top: calc(100% - 180px);
|
||||
height: 180px;
|
||||
}
|
||||
#arena:not(.chess).oblongcard #handcards1.scrollh {
|
||||
top: calc(100% - 200px);
|
||||
height: 200px;
|
||||
}
|
||||
#arena:not(.chess) #handcards1.scrollh > div {
|
||||
height: 120px;
|
||||
top: 60px;
|
||||
}
|
||||
#arena:not(.chess).oblongcard #handcards1.scrollh > div {
|
||||
top: 62px;
|
||||
}
|
||||
#arena:not(.chess):not(.single-handcard) #handcards1 {
|
||||
width: calc(100% - 240px);
|
||||
left: calc(150% / 47 - 300% / 94 + 625% / 47 - 105px + 120px);
|
||||
}
|
||||
#arena:not(.single-handcard):not(.chess) > #me,
|
||||
#arena:not(.single-handcard):not(.chess) > #mebg,
|
||||
#arena:not(.single-handcard):not(.chess) > #autonode {
|
||||
left: 0 !important;
|
||||
bottom: 38px !important;
|
||||
width: calc(9700% / 94) !important;
|
||||
}
|
||||
#arena:not(.single-handcard):not(.chess) > #mebg {
|
||||
visibility: hidden;
|
||||
}
|
||||
#arena:not(.single-handcard):not(.chess) > #me #handcards1 {
|
||||
left: 150px !important;
|
||||
width: calc(100% - 150px) !important;
|
||||
}
|
||||
#arena:not(.single-handcard):not(.chess) > #me #handcards1 > .handcards {
|
||||
left: 0 !important;
|
||||
}
|
||||
#autonode {
|
||||
display: table !important;
|
||||
}
|
||||
@media screen and (max-width: 1105px) {
|
||||
#arena[data-number="8"]:not(.single-handcard):not(.chess) > #me,
|
||||
#arena[data-number="8"]:not(.single-handcard):not(.chess) > #mebg,
|
||||
#arena[data-number="8"]:not(.single-handcard):not(.chess) > #autonode {
|
||||
left: calc(-300% / 94 + 625% / 47 - 105px) !important;
|
||||
width: calc(9700% / 94 + 300% / 94 - 625% / 47 + 105px) !important;
|
||||
}
|
||||
}
|
||||
#handcards2 {
|
||||
display: none;
|
||||
}
|
||||
.dialog {
|
||||
height: calc(100% - 370px);
|
||||
bottom: 170px;
|
||||
}
|
||||
#arena.choose-character > .dialog .placeholder + .placeholder {
|
||||
display: none;
|
||||
}
|
||||
#arena.choose-character > .dialog .placeholder {
|
||||
margin-bottom: 4px;
|
||||
height: 0px;
|
||||
}
|
||||
#arena.choose-character > .dialog.noupdate .placeholder {
|
||||
margin-bottom: 0;
|
||||
height: 0;
|
||||
}
|
||||
#arena.choose-character > .dialog {
|
||||
height: calc(100% - 280px);
|
||||
bottom: 80px;
|
||||
}
|
||||
#arena.choose-character > .dialog.scroll3 {
|
||||
height: calc(100% - 240px);
|
||||
}
|
||||
#arena.phone.choose-character > .dialog {
|
||||
bottom: 93px;
|
||||
}
|
||||
#arena.ipad.choose-character > .dialog {
|
||||
bottom: 96px;
|
||||
}
|
||||
#arena.discard-player-card > #control,
|
||||
#arena.gain-player-card > #control,
|
||||
#arena.choose-player-card > #control,
|
||||
#arena.choose-to-move > #control,
|
||||
#arena.choose-character > #control {
|
||||
bottom: 30px;
|
||||
transition: all 0s;
|
||||
}
|
||||
#arena.phone.discard-player-card > #control,
|
||||
#arena.phone.gain-player-card > #control,
|
||||
#arena.phone.choose-player-card > #control,
|
||||
#arena.phone.choose-to-move > #control,
|
||||
#arena.phone.choose-character > #control {
|
||||
bottom: 43px;
|
||||
}
|
||||
#arena.ipad.discard-player-card > #control,
|
||||
#arena.ipad.gain-player-card > #control,
|
||||
#arena.ipad.choose-player-card > #control,
|
||||
#arena.ipad.choose-to-move > #control,
|
||||
#arena.ipad.choose-character > #control {
|
||||
bottom: 45px;
|
||||
}
|
||||
.dialog.fullheight {
|
||||
height: calc(100% - 123px) !important;
|
||||
top: 40px !important;
|
||||
}
|
||||
|
||||
#me > .fakeme.avatar {
|
||||
width: 120px;
|
||||
height: 100%;
|
||||
border-radius: 0px;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background-size: cover;
|
||||
clip-path: polygon(-10px 0, 130px 0, 130px 130px, -10px 130px);
|
||||
-webkit-clip-path: polygon(-10px 0, 130px 0, 130px 130px, -10px 130px);
|
||||
}
|
||||
#window[data-radius_size="increase"] #me > .fakeme.avatar,
|
||||
#window[data-radius_size="reduce"] #me > .fakeme.avatar {
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
/*--------位置(8人)------*/
|
||||
[data-number="8"] > .player[data-position="1"] {
|
||||
top: calc(55% - 135px);
|
||||
left: calc(100% - 150px);
|
||||
}
|
||||
[data-number="8"] > .player[data-position="2"] {
|
||||
top: calc(10% - 50px);
|
||||
left: calc(100% - 150px);
|
||||
}
|
||||
[data-number="8"] > .player[data-position="3"] {
|
||||
top: 0;
|
||||
left: calc(75% - 112.5px);
|
||||
}
|
||||
[data-number="8"] > .player[data-position="4"] {
|
||||
top: 0;
|
||||
left: calc(50% - 75px);
|
||||
}
|
||||
[data-number="8"] > .player[data-position="5"] {
|
||||
top: 0;
|
||||
left: calc(25% - 37.5px);
|
||||
}
|
||||
[data-number="8"] > .player[data-position="6"] {
|
||||
top: calc(10% - 50px);
|
||||
left: 0;
|
||||
}
|
||||
[data-number="8"] > .player[data-position="7"] {
|
||||
top: calc(55% - 135px);
|
||||
left: 0;
|
||||
}
|
||||
/*--------位置(7人)------*/
|
||||
[data-number="7"] > .player[data-position="1"] {
|
||||
top: calc(55% - 135px);
|
||||
left: calc(100% - 150px);
|
||||
}
|
||||
[data-number="7"] > .player[data-position="2"] {
|
||||
top: calc(10% - 50px);
|
||||
left: calc(100% - 150px);
|
||||
}
|
||||
[data-number="7"] > .player[data-position="3"] {
|
||||
top: 0;
|
||||
left: calc(62.5% - 75px);
|
||||
}
|
||||
[data-number="7"] > .player[data-position="4"] {
|
||||
top: 0;
|
||||
left: calc(37.5% - 75px);
|
||||
}
|
||||
[data-number="7"] > .player[data-position="5"] {
|
||||
top: calc(10% - 50px);
|
||||
left: 0;
|
||||
}
|
||||
[data-number="7"] > .player[data-position="6"] {
|
||||
top: calc(55% - 135px);
|
||||
left: 0;
|
||||
}
|
||||
/*--------位置(6人)------*/
|
||||
#arena[data-number="6"] > .player[data-position="1"] {
|
||||
top: calc(30% - 128px);
|
||||
left: calc(100% - 120px);
|
||||
}
|
||||
#arena[data-number="6"] > .player[data-position="2"] {
|
||||
top: 0px;
|
||||
left: calc(75% - 90px);
|
||||
}
|
||||
#arena[data-number="6"] > .player[data-position="3"] {
|
||||
top: 0;
|
||||
left: calc(50% - 60px);
|
||||
}
|
||||
#arena[data-number="6"] > .player[data-position="4"] {
|
||||
top: 0px;
|
||||
left: calc(25% - 30px);
|
||||
}
|
||||
#arena[data-number="6"] > .player[data-position="5"] {
|
||||
top: calc(30% - 128px);
|
||||
left: 0;
|
||||
}
|
||||
/*--------位置(5人)------*/
|
||||
#arena[data-number="5"] > .player[data-position="1"] {
|
||||
top: calc(30% - 128px);
|
||||
left: calc(100% - 120px);
|
||||
}
|
||||
#arena[data-number="5"] > .player[data-position="2"] {
|
||||
top: 0;
|
||||
left: calc(200% / 3 - 80px);
|
||||
}
|
||||
#arena[data-number="5"] > .player[data-position="3"] {
|
||||
top: 0;
|
||||
left: calc(100% / 3 - 40px);
|
||||
}
|
||||
#arena[data-number="5"] > .player[data-position="4"] {
|
||||
top: calc(30% - 128px);
|
||||
left: 0;
|
||||
}
|
||||
/*--------位置(4人)------*/
|
||||
#arena[data-number="4"] > .player[data-position="1"] {
|
||||
top: calc(30% - 128px);
|
||||
left: calc(100% - 120px);
|
||||
}
|
||||
#arena[data-number="4"] > .player[data-position="2"] {
|
||||
top: 0;
|
||||
left: calc(50% - 60px);
|
||||
}
|
||||
#arena[data-number="4"] > .player[data-position="3"] {
|
||||
top: calc(30% - 128px);
|
||||
left: 0;
|
||||
}
|
||||
/*--------位置(3人)------*/
|
||||
#arena[data-number="3"] > .player[data-position="1"] {
|
||||
top: calc(60% / 3 - 88px);
|
||||
left: calc(75% + 80px);
|
||||
}
|
||||
#arena[data-number="3"] > .player[data-position="2"] {
|
||||
top: calc(60% / 3 - 88px);
|
||||
left: calc(25% - 200px);
|
||||
}
|
||||
/*--------位置(2人)------*/
|
||||
#arena[data-number="2"] > .player[data-position="1"] {
|
||||
top: 0;
|
||||
left: calc(50% - 60px);
|
||||
}
|
||||
/*--------位置(1人)------*/
|
||||
.player[data-position="0"] {
|
||||
top: calc(100% - 220px);
|
||||
left: 0;
|
||||
}
|
||||
|
||||
#arena[data-player_height_nova="default"] > .player[data-position="0"]:not(.minskin) {
|
||||
top: calc(100% - 236px);
|
||||
}
|
||||
[data-number="8"][data-player_height_nova="default"] > .player[data-position="1"],
|
||||
[data-number="8"][data-player_height_nova="default"] > .player[data-position="7"],
|
||||
[data-number="7"][data-player_height_nova="default"] > .player[data-position="1"],
|
||||
[data-number="7"][data-player_height_nova="default"] > .player[data-position="6"] {
|
||||
top: calc(55% - 143px);
|
||||
}
|
||||
|
||||
#arena[data-player_height_nova="default"] > .player:not(.minskin) {
|
||||
height: 196px !important;
|
||||
}
|
||||
#arena[data-player_height_nova="default"] .timerbar > div {
|
||||
top: 181px;
|
||||
}
|
||||
|
||||
#arena[data-player_height_nova="default"] > .player .avatar {
|
||||
height: 176px;
|
||||
}
|
||||
#arena.slim_player[data-player_height_nova="default"] .player:not(.minskin):not(.fakeme) .avatar {
|
||||
height: 182px;
|
||||
}
|
||||
|
||||
#arena.uslim_player[data-player_height_nova="default"] .player:not(.minskin):not(.fakeme) .avatar {
|
||||
height: 190px;
|
||||
}
|
||||
#arena.mslim_player[data-player_height_nova="default"] .player:not(.minskin):not(.fakeme) .avatar {
|
||||
height: 186px;
|
||||
}
|
||||
#arena[data-player_height_nova="default"] > .player.fullskin2 .avatar2 {
|
||||
height: 176px;
|
||||
}
|
||||
|
||||
#arena.slim_player[data-player_height_nova="default"] > .player.fullskin2:not(.minskin) .avatar2 {
|
||||
height: 182px;
|
||||
}
|
||||
#arena.uslim_player[data-player_height_nova="default"] > .player.fullskin2:not(.minskin) .avatar2 {
|
||||
height: 190px;
|
||||
}
|
||||
#arena.mslim_player[data-player_height_nova="default"] > .player.fullskin2:not(.minskin) .avatar2 {
|
||||
height: 186px;
|
||||
}
|
||||
|
||||
#arena[data-player_height_nova="long"] > .player[data-position="0"]:not(.minskin) {
|
||||
top: calc(100% - 250px);
|
||||
}
|
||||
[data-number="8"][data-player_height_nova="long"] > .player[data-position="1"],
|
||||
[data-number="8"][data-player_height_nova="long"] > .player[data-position="7"],
|
||||
[data-number="7"][data-player_height_nova="long"] > .player[data-position="1"],
|
||||
[data-number="7"][data-player_height_nova="long"] > .player[data-position="6"] {
|
||||
top: calc(55% - 150px);
|
||||
}
|
||||
|
||||
#arena[data-player_height_nova="long"] > .player:not(.minskin) {
|
||||
height: 210px !important;
|
||||
}
|
||||
#arena[data-player_height_nova="long"] .timerbar > div {
|
||||
top: 195px;
|
||||
}
|
||||
|
||||
#arena[data-player_height_nova="long"] > .player .avatar {
|
||||
height: 190px;
|
||||
}
|
||||
#arena.slim_player[data-player_height_nova="long"] .player:not(.minskin):not(.fakeme) .avatar {
|
||||
height: 196px;
|
||||
}
|
||||
|
||||
#arena.uslim_player[data-player_height_nova="long"] .player:not(.minskin):not(.fakeme) .avatar {
|
||||
height: 204px;
|
||||
}
|
||||
#arena.mslim_player[data-player_height_nova="long"] .player:not(.minskin):not(.fakeme) .avatar {
|
||||
height: 200px;
|
||||
}
|
||||
#arena[data-player_height_nova="long"] > .player.fullskin2 .avatar2 {
|
||||
height: 190px;
|
||||
}
|
||||
|
||||
#arena.slim_player[data-player_height_nova="long"] > .player.fullskin2:not(.minskin) .avatar2 {
|
||||
height: 196px;
|
||||
}
|
||||
#arena.uslim_player[data-player_height_nova="long"] > .player.fullskin2:not(.minskin) .avatar2 {
|
||||
height: 204px;
|
||||
}
|
||||
#arena.mslim_player[data-player_height_nova="long"] > .player.fullskin2:not(.minskin) .avatar2 {
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
#arena > .player:not(.minskin) > .avatar,
|
||||
#arena > .player:not(.minskin) > .avatar2 {
|
||||
background-position: 50% 0 !important;
|
||||
}
|
||||
|
|
15065
mode/boss.js
15065
mode/boss.js
File diff suppressed because it is too large
Load Diff
8045
mode/brawl.js
8045
mode/brawl.js
File diff suppressed because it is too large
Load Diff
8888
mode/chess.js
8888
mode/chess.js
File diff suppressed because it is too large
Load Diff
390
mode/connect.js
390
mode/connect.js
|
@ -1,182 +1,208 @@
|
|||
'use strict';
|
||||
game.import('mode',function(lib,game,ui,get,ai,_status){
|
||||
return {
|
||||
name:'connect',
|
||||
start:function(){
|
||||
var directstartmode=lib.config.directstartmode;
|
||||
ui.create.menu(true);
|
||||
event.textnode=ui.create.div('','输入联机地址');
|
||||
var createNode=function(){
|
||||
if(event.created) return;
|
||||
if(directstartmode&&lib.node){
|
||||
ui.exitroom=ui.create.system('退出房间',function(){
|
||||
game.saveConfig('directstartmode');
|
||||
game.reload();
|
||||
},true);
|
||||
game.switchMode(directstartmode);
|
||||
return;
|
||||
}
|
||||
if(lib.node&&window.require){
|
||||
ui.startServer=ui.create.system('启动服务器',function(e){
|
||||
ui.click.shortcut(false);
|
||||
e.stopPropagation();
|
||||
ui.click.connectMenu();
|
||||
},true);
|
||||
}
|
||||
|
||||
event.created=true;
|
||||
var node=ui.create.div('.shadowed');
|
||||
node.style.width='400px';
|
||||
node.style.height='30px';
|
||||
node.style.lineHeight='30px';
|
||||
node.style.fontFamily='xinwei';
|
||||
node.style.fontSize='30px';
|
||||
node.style.padding='10px';
|
||||
node.style.left='calc(50% - 210px)';
|
||||
node.style.top='calc(50% - 20px)';
|
||||
node.style.whiteSpace='nowrap';
|
||||
node.textContent=lib.config.last_ip||lib.hallURL;
|
||||
node.contentEditable=true;
|
||||
node.style.webkitUserSelect='text';
|
||||
node.style.textAlign='center';
|
||||
node.style.overflow='hidden';
|
||||
|
||||
var connect=function(e){
|
||||
event.textnode.textContent='正在连接...';
|
||||
clearTimeout(event.timeout);
|
||||
if(e) e.preventDefault();
|
||||
game.saveConfig('last_ip',node.textContent);
|
||||
game.connect(node.textContent,function(success){
|
||||
if(success){
|
||||
var info=lib.config.reconnect_info;
|
||||
if(info&&info[0]==_status.ip){
|
||||
game.onlineID=info[1];
|
||||
if(typeof (game.roomId=info[2])=='string') game.roomIdServer=true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if(event.textnode){
|
||||
alert('连接失败');
|
||||
event.textnode.textContent='输入联机地址';
|
||||
}
|
||||
});
|
||||
};
|
||||
node.addEventListener('keydown',function(e){
|
||||
if(e.keyCode==13){
|
||||
connect(e);
|
||||
}
|
||||
});
|
||||
ui.window.appendChild(node);
|
||||
ui.ipnode=node;
|
||||
|
||||
var text=event.textnode;
|
||||
text.style.width='400px';
|
||||
text.style.height='30px';
|
||||
text.style.lineHeight='30px';
|
||||
text.style.fontFamily='xinwei';
|
||||
text.style.fontSize='30px';
|
||||
text.style.padding='10px';
|
||||
text.style.left='calc(50% - 200px)';
|
||||
text.style.top='calc(50% - 80px)';
|
||||
text.style.textAlign='center';
|
||||
ui.window.appendChild(text);
|
||||
ui.iptext=text;
|
||||
|
||||
var button=ui.create.div('.menubutton.highlight.large.pointerdiv','连接',connect);
|
||||
button.style.width='70px';
|
||||
button.style.left='calc(50% - 35px)';
|
||||
button.style.top='calc(50% + 60px)';
|
||||
ui.window.appendChild(button);
|
||||
ui.ipbutton=button;
|
||||
|
||||
ui.hall_button=ui.create.system('联机大厅',function(){
|
||||
node.textContent=get.config('hall_ip')||lib.hallURL;
|
||||
connect();
|
||||
},true);
|
||||
if(!get.config('hall_button')){
|
||||
ui.hall_button.style.display='none';
|
||||
}
|
||||
ui.recentIP=ui.create.system('最近连接',null,true);
|
||||
var clickLink=function(){
|
||||
node.textContent=this.textContent;
|
||||
connect();
|
||||
};
|
||||
lib.setPopped(ui.recentIP,function(){
|
||||
if(!lib.config.recentIP.length) return;
|
||||
var uiintro=ui.create.dialog('hidden');
|
||||
uiintro.listen(function(e){
|
||||
e.stopPropagation();
|
||||
});
|
||||
var list=ui.create.div('.caption');
|
||||
for(var i=0;i<lib.config.recentIP.length;i++){
|
||||
ui.create.div('.text.textlink',list,clickLink).textContent=get.trimip(lib.config.recentIP[i]);
|
||||
}
|
||||
uiintro.add(list);
|
||||
var clear=uiintro.add('<div class="text center">清除</div>');
|
||||
clear.style.paddingTop=0;
|
||||
clear.style.paddingBottom='3px';
|
||||
clear.listen(function(){
|
||||
lib.config.recentIP.length=0;
|
||||
game.saveConfig('recentIP',[]);
|
||||
uiintro.delete();
|
||||
});
|
||||
return uiintro;
|
||||
},220);
|
||||
if (get.config('read_clipboard','connect')){
|
||||
var ced=false;
|
||||
var read=text=>{
|
||||
try{
|
||||
var text2=text.split('\n')[2];
|
||||
var ip=text2.slice(5);
|
||||
if(ip.length>0&&text2.startsWith("联机地址:")&&(ced||confirm('是否根据剪贴板的邀请链接以进入联机地址和房间?'))){
|
||||
node.innerHTML=ip;
|
||||
event.textnode.innerHTML='正在连接...';
|
||||
clearTimeout(event.timeout);
|
||||
game.saveConfig('last_ip',node.innerHTML);
|
||||
game.connect(node.innerHTML,function(success){
|
||||
if(!success&&event.textnode){
|
||||
alert('邀请链接解析失败');
|
||||
event.textnode.innerHTML='输入联机地址';
|
||||
}
|
||||
if (success) _status.read_clipboard_text=text;
|
||||
});
|
||||
}
|
||||
}catch(e){console.log(e);}
|
||||
}
|
||||
window.focus();
|
||||
if (navigator.clipboard&&lib.node){
|
||||
navigator.clipboard.readText().then(read).catch(_=>{});
|
||||
}else{
|
||||
var input=ui.create.node('textarea',ui.window,{opacity:'0'});
|
||||
input.select();
|
||||
var result=document.execCommand('paste');
|
||||
input.blur();
|
||||
ui.window.removeChild(input);
|
||||
if(result||input.value.length>0) read(input.value);
|
||||
else if(confirm('是否输入邀请链接以进入联机地址和房间?')){
|
||||
ced=true;
|
||||
var text=prompt('请输入邀请链接');
|
||||
if(typeof text=='string'&&text.length>0) read(text);
|
||||
}
|
||||
}
|
||||
}
|
||||
lib.init.onfree();
|
||||
}
|
||||
if(window.isNonameServer){
|
||||
game.connect(window.isNonameServerIp||'localhost');
|
||||
}
|
||||
else{
|
||||
createNode();
|
||||
}
|
||||
if(!game.onlineKey){
|
||||
game.onlineKey=localStorage.getItem(lib.configprefix+'key');
|
||||
if(!game.onlineKey){
|
||||
game.onlineKey=get.id();
|
||||
localStorage.setItem(lib.configprefix+'key',game.onlineKey);
|
||||
}
|
||||
}
|
||||
_status.connectDenied=createNode;
|
||||
setTimeout(lib.init.onfree,1000);
|
||||
}
|
||||
};
|
||||
});
|
||||
"use strict";
|
||||
game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||
return {
|
||||
name: "connect",
|
||||
start: function () {
|
||||
var directstartmode = lib.config.directstartmode;
|
||||
ui.create.menu(true);
|
||||
event.textnode = ui.create.div("", "输入联机地址");
|
||||
var createNode = function () {
|
||||
if (event.created) return;
|
||||
if (directstartmode && lib.node) {
|
||||
ui.exitroom = ui.create.system(
|
||||
"退出房间",
|
||||
function () {
|
||||
game.saveConfig("directstartmode");
|
||||
game.reload();
|
||||
},
|
||||
true
|
||||
);
|
||||
game.switchMode(directstartmode);
|
||||
return;
|
||||
}
|
||||
if (lib.node && window.require) {
|
||||
ui.startServer = ui.create.system(
|
||||
"启动服务器",
|
||||
function (e) {
|
||||
ui.click.shortcut(false);
|
||||
e.stopPropagation();
|
||||
ui.click.connectMenu();
|
||||
},
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
event.created = true;
|
||||
var node = ui.create.div(".shadowed");
|
||||
node.style.width = "400px";
|
||||
node.style.height = "30px";
|
||||
node.style.lineHeight = "30px";
|
||||
node.style.fontFamily = "xinwei";
|
||||
node.style.fontSize = "30px";
|
||||
node.style.padding = "10px";
|
||||
node.style.left = "calc(50% - 210px)";
|
||||
node.style.top = "calc(50% - 20px)";
|
||||
node.style.whiteSpace = "nowrap";
|
||||
node.textContent = lib.config.last_ip || lib.hallURL;
|
||||
node.contentEditable = true;
|
||||
node.style.webkitUserSelect = "text";
|
||||
node.style.textAlign = "center";
|
||||
node.style.overflow = "hidden";
|
||||
|
||||
var connect = function (e) {
|
||||
event.textnode.textContent = "正在连接...";
|
||||
clearTimeout(event.timeout);
|
||||
if (e) e.preventDefault();
|
||||
game.saveConfig("last_ip", node.textContent);
|
||||
game.connect(node.textContent, function (success) {
|
||||
if (success) {
|
||||
var info = lib.config.reconnect_info;
|
||||
if (info && info[0] == _status.ip) {
|
||||
game.onlineID = info[1];
|
||||
if (typeof (game.roomId = info[2]) == "string") game.roomIdServer = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (event.textnode) {
|
||||
alert("连接失败");
|
||||
event.textnode.textContent = "输入联机地址";
|
||||
}
|
||||
});
|
||||
};
|
||||
node.addEventListener("keydown", function (e) {
|
||||
if (e.keyCode == 13) {
|
||||
connect(e);
|
||||
}
|
||||
});
|
||||
ui.window.appendChild(node);
|
||||
ui.ipnode = node;
|
||||
|
||||
var text = event.textnode;
|
||||
text.style.width = "400px";
|
||||
text.style.height = "30px";
|
||||
text.style.lineHeight = "30px";
|
||||
text.style.fontFamily = "xinwei";
|
||||
text.style.fontSize = "30px";
|
||||
text.style.padding = "10px";
|
||||
text.style.left = "calc(50% - 200px)";
|
||||
text.style.top = "calc(50% - 80px)";
|
||||
text.style.textAlign = "center";
|
||||
ui.window.appendChild(text);
|
||||
ui.iptext = text;
|
||||
|
||||
var button = ui.create.div(".menubutton.highlight.large.pointerdiv", "连接", connect);
|
||||
button.style.width = "70px";
|
||||
button.style.left = "calc(50% - 35px)";
|
||||
button.style.top = "calc(50% + 60px)";
|
||||
ui.window.appendChild(button);
|
||||
ui.ipbutton = button;
|
||||
|
||||
ui.hall_button = ui.create.system(
|
||||
"联机大厅",
|
||||
function () {
|
||||
node.textContent = get.config("hall_ip") || lib.hallURL;
|
||||
connect();
|
||||
},
|
||||
true
|
||||
);
|
||||
if (!get.config("hall_button")) {
|
||||
ui.hall_button.style.display = "none";
|
||||
}
|
||||
ui.recentIP = ui.create.system("最近连接", null, true);
|
||||
var clickLink = function () {
|
||||
node.textContent = this.textContent;
|
||||
connect();
|
||||
};
|
||||
lib.setPopped(
|
||||
ui.recentIP,
|
||||
function () {
|
||||
if (!lib.config.recentIP.length) return;
|
||||
var uiintro = ui.create.dialog("hidden");
|
||||
uiintro.listen(function (e) {
|
||||
e.stopPropagation();
|
||||
});
|
||||
var list = ui.create.div(".caption");
|
||||
for (var i = 0; i < lib.config.recentIP.length; i++) {
|
||||
ui.create.div(".text.textlink", list, clickLink).textContent = get.trimip(
|
||||
lib.config.recentIP[i]
|
||||
);
|
||||
}
|
||||
uiintro.add(list);
|
||||
var clear = uiintro.add('<div class="text center">清除</div>');
|
||||
clear.style.paddingTop = 0;
|
||||
clear.style.paddingBottom = "3px";
|
||||
clear.listen(function () {
|
||||
lib.config.recentIP.length = 0;
|
||||
game.saveConfig("recentIP", []);
|
||||
uiintro.delete();
|
||||
});
|
||||
return uiintro;
|
||||
},
|
||||
220
|
||||
);
|
||||
if (get.config("read_clipboard", "connect")) {
|
||||
var ced = false;
|
||||
var read = (text) => {
|
||||
try {
|
||||
var text2 = text.split("\n")[2];
|
||||
var ip = text2.slice(5);
|
||||
if (
|
||||
ip.length > 0 &&
|
||||
text2.startsWith("联机地址:") &&
|
||||
(ced || confirm("是否根据剪贴板的邀请链接以进入联机地址和房间?"))
|
||||
) {
|
||||
node.innerHTML = ip;
|
||||
event.textnode.innerHTML = "正在连接...";
|
||||
clearTimeout(event.timeout);
|
||||
game.saveConfig("last_ip", node.innerHTML);
|
||||
game.connect(node.innerHTML, function (success) {
|
||||
if (!success && event.textnode) {
|
||||
alert("邀请链接解析失败");
|
||||
event.textnode.innerHTML = "输入联机地址";
|
||||
}
|
||||
if (success) _status.read_clipboard_text = text;
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
};
|
||||
window.focus();
|
||||
if (navigator.clipboard && lib.node) {
|
||||
navigator.clipboard
|
||||
.readText()
|
||||
.then(read)
|
||||
.catch((_) => {});
|
||||
} else {
|
||||
var input = ui.create.node("textarea", ui.window, { opacity: "0" });
|
||||
input.select();
|
||||
var result = document.execCommand("paste");
|
||||
input.blur();
|
||||
ui.window.removeChild(input);
|
||||
if (result || input.value.length > 0) read(input.value);
|
||||
else if (confirm("是否输入邀请链接以进入联机地址和房间?")) {
|
||||
ced = true;
|
||||
var text = prompt("请输入邀请链接");
|
||||
if (typeof text == "string" && text.length > 0) read(text);
|
||||
}
|
||||
}
|
||||
}
|
||||
lib.init.onfree();
|
||||
};
|
||||
if (window.isNonameServer) {
|
||||
game.connect(window.isNonameServerIp || "localhost");
|
||||
} else {
|
||||
createNode();
|
||||
}
|
||||
if (!game.onlineKey) {
|
||||
game.onlineKey = localStorage.getItem(lib.configprefix + "key");
|
||||
if (!game.onlineKey) {
|
||||
game.onlineKey = get.id();
|
||||
localStorage.setItem(lib.configprefix + "key", game.onlineKey);
|
||||
}
|
||||
}
|
||||
_status.connectDenied = createNode;
|
||||
setTimeout(lib.init.onfree, 1000);
|
||||
},
|
||||
};
|
||||
});
|
||||
|
|
5263
mode/doudizhu.js
5263
mode/doudizhu.js
File diff suppressed because it is too large
Load Diff
36894
mode/guozhan.js
36894
mode/guozhan.js
File diff suppressed because it is too large
Load Diff
6742
mode/identity.js
6742
mode/identity.js
File diff suppressed because it is too large
Load Diff
|
@ -1,10 +1,8 @@
|
|||
'use strict';
|
||||
game.import('mode',function(lib,game,ui,get,ai,_status){
|
||||
return {
|
||||
name:'realtime',
|
||||
start:function(){
|
||||
},
|
||||
game:{
|
||||
}
|
||||
};
|
||||
});
|
||||
"use strict";
|
||||
game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||
return {
|
||||
name: "realtime",
|
||||
start: function () {},
|
||||
game: {},
|
||||
};
|
||||
});
|
||||
|
|
3356
mode/single.js
3356
mode/single.js
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue