mirror of
https://github.com/yoimiya-kokomi/miao-plugin.git
synced 2024-11-21 22:48:13 +00:00
* 增加#喵喵面板设置
命令,可更精细的设置是否允许好友/临时对话/群使用面板功能
* `#喵喵日历` 优化 * 对角色、武器UP的日历展示做合并优化 * 增强从活动详情解析日期的能力,使一些活动日期更加准确 * `#角色面板` 伤害计算增加 琴、莫娜
This commit is contained in:
parent
7094262acf
commit
750cdddbce
@ -1,3 +1,11 @@
|
||||
# 1.6.2
|
||||
|
||||
* 增加`#喵喵面板设置`命令,可更精细的设置是否允许好友/临时对话/群使用面板功能
|
||||
* `#喵喵日历` 优化
|
||||
* 对角色、武器UP的日历展示做合并优化
|
||||
* 增强从活动详情解析日期的能力,使一些活动日期更加准确
|
||||
* `#角色面板` 伤害计算增加 琴、莫娜
|
||||
|
||||
# 1.6.1
|
||||
|
||||
* `#角色面板` 伤害计算增加 皇女、温迪、夜兰
|
||||
|
@ -36,6 +36,11 @@ export const rule = {
|
||||
hashMark: true,
|
||||
reg: sysCfgReg,
|
||||
describe: "【#管理】系统设置"
|
||||
},
|
||||
profileCfg: {
|
||||
hashMark: true,
|
||||
reg: "^#喵喵面板(?:设置)?.*",
|
||||
describe: "【#管理】面板设置"
|
||||
}
|
||||
};
|
||||
|
||||
@ -105,7 +110,6 @@ const getStatus = function (rote, def = true) {
|
||||
} else {
|
||||
return `<div class="cfg-status status-off">已关闭</div>`;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export async function updateRes(e) {
|
||||
@ -117,7 +121,6 @@ export async function updateRes(e) {
|
||||
e.reply("开始尝试更新,请耐心等待~");
|
||||
command = `git pull`;
|
||||
exec(command, { cwd: `${resPath}/miao-res-plus/` }, function (error, stdout, stderr) {
|
||||
//console.log(stdout);
|
||||
if (/Already up to date/.test(stdout)) {
|
||||
e.reply("目前所有图片都已经是最新了~");
|
||||
return true;
|
||||
@ -162,7 +165,6 @@ export async function updateMiaoPlugin(e) {
|
||||
e.reply("正在执行更新操作,请稍等");
|
||||
}
|
||||
exec(command, { cwd: `${_path}/plugins/miao-plugin/` }, function (error, stdout, stderr) {
|
||||
//console.log(stdout);
|
||||
if (/Already up to date/.test(stdout)) {
|
||||
e.reply("目前已经是最新版喵喵了~");
|
||||
return true;
|
||||
@ -193,4 +195,66 @@ export async function updateMiaoPlugin(e) {
|
||||
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
export async function profileCfg(e, { render }) {
|
||||
if (!await checkAuth(e)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
let keyMap = {
|
||||
"好友": "friend",
|
||||
"群": "group",
|
||||
"陌生人": "stranger"
|
||||
}
|
||||
|
||||
let regRet = /喵喵面板(?:设置)?\s*(好友|群|群聊|陌生人)?\s*(\d*)\s*(开启|关闭|删除)?\s*$/.exec(e.msg);
|
||||
|
||||
if (!regRet) {
|
||||
return;
|
||||
}
|
||||
|
||||
let [, target, groupId, actionType] = regRet;
|
||||
if (target === "群聊") {
|
||||
target = "群";
|
||||
}
|
||||
|
||||
if (target) {
|
||||
if (groupId && (target === "群" || !target)) {
|
||||
if (actionType === "删除") {
|
||||
Cfg.del(`profile.groups.群${groupId}`);
|
||||
} else {
|
||||
Cfg.set(`profile.groups.群${groupId}.status`, actionType !== "关闭");
|
||||
}
|
||||
} else {
|
||||
Cfg.set(`profile.${keyMap[target]}.status`, actionType !== "关闭");
|
||||
}
|
||||
}
|
||||
|
||||
let cfg = {
|
||||
groups: []
|
||||
}
|
||||
|
||||
lodash.forEach(['friend', 'group', 'stranger'], (key) => {
|
||||
cfg[key] = getStatus(`profile.${key}.status`, true)
|
||||
});
|
||||
|
||||
let groups = Cfg.get('profile.groups', {});
|
||||
lodash.forEach(lodash.keys(groups), (group, idx) => {
|
||||
|
||||
if (lodash.isUndefined(groups[group])) {
|
||||
return;
|
||||
}
|
||||
cfg.groups.push({
|
||||
group,
|
||||
idx: idx + 1,
|
||||
status: getStatus(`profile.groups.${group}.status`, true)
|
||||
})
|
||||
})
|
||||
|
||||
//渲染图像
|
||||
return await Common.render("admin/profile", {
|
||||
...cfg,
|
||||
}, { e, render, scale: 1.4 });
|
||||
|
||||
}
|
@ -78,12 +78,30 @@ export async function character(e, { render, User }) {
|
||||
name = name.replace(/详情|详细|面板|面版|更新/g, "").trim();
|
||||
}
|
||||
|
||||
if (
|
||||
(mode === "card" && Common.isDisable(e, "char.char")) ||
|
||||
(mode !== "card" && Common.isDisable(e, "char.profile"))) {
|
||||
|
||||
if (mode === "card" && Common.isDisable(e, "char.char")) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mode !== "card" && !e.isMaster) {
|
||||
if (Common.isDisable(e, "char.profile")) {
|
||||
// 面板开关关闭
|
||||
return;
|
||||
}
|
||||
if (e.isPrivate) {
|
||||
if ((e.sub_type === "friend" && Cfg.get("profile.friend.status") === false) ||
|
||||
(e.sub_type === "group" && Cfg.get("profile.stranger.status") === false)) {
|
||||
return;
|
||||
}
|
||||
} else if (e.isGroup) {
|
||||
let groupCfg = Cfg.get(`profile.groups.群${e.group_id}.status`);
|
||||
if (groupCfg === false || (groupCfg !== true && Cfg.get(`profile.group.status`) === false)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
let char = Character.get(name);
|
||||
|
||||
if (!char) {
|
||||
|
@ -11,7 +11,7 @@ const ignoreIds = [495,// 有奖问卷调查开启!
|
||||
762, // 《原神》公平运营声明
|
||||
]
|
||||
|
||||
const ignoreReg = /(内容专题页|版本更新说明|调研|防沉迷|米游社|专项意见|更新修复与优化|问卷调查)/;
|
||||
const ignoreReg = /(内容专题页|版本更新说明|调研|防沉迷|米游社|专项意见|更新修复与优化|问卷调查|版本更新通知|更新时间说明|预下载功能|周边限时返场)/;
|
||||
const fulltimeReg = /(魔神任务)/;
|
||||
|
||||
let Cal = {
|
||||
@ -23,7 +23,7 @@ let Cal = {
|
||||
|
||||
let timeMap;
|
||||
let timeMapCache = await redis.get("cache:calendar:detail");
|
||||
if (timeMapCache) {
|
||||
if (timeMapCache && false) {
|
||||
timeMap = JSON.parse(timeMapCache) || {};
|
||||
} else {
|
||||
let detailApi = "https://hk4e-api.mihoyo.com/common/hk4e_cn/announcement/api/getAnnContent?game=hk4e&game_biz=hk4e_cn&lang=zh-cn&bundle_id=hk4e_cn&platform=pc®ion=cn_gf01&level=55&uid=100000000";
|
||||
@ -31,18 +31,58 @@ let Cal = {
|
||||
let detailData = await request2.json();
|
||||
timeMap = {}
|
||||
if (detailData && detailData.data && detailData.data.list) {
|
||||
let versionTime = {};
|
||||
lodash.forEach(detailData.data.list, (ds) => {
|
||||
let { ann_id, content } = ds;
|
||||
let vRet = /(\d\.\d)版本更新时间/.exec(ds.title)
|
||||
if (vRet && vRet[1]) {
|
||||
let tRet = /([0-9\\/\\: ]){9,}/.exec(ds.content);
|
||||
if (tRet && tRet[0]) {
|
||||
versionTime[vRet[1]] = tRet[0].replace("06:00", "11:00");
|
||||
}
|
||||
}
|
||||
})
|
||||
lodash.forEach(detailData.data.list, (ds) => {
|
||||
let { ann_id, content, title } = ds;
|
||||
if (ignoreReg.test(title)) {
|
||||
return;
|
||||
}
|
||||
content = content.replace(/(<|<)[\w "%:;=\-\\/\\(\\)\,\\.]+(>|>)/g, "");
|
||||
content = /(?:活动时间|祈愿介绍|任务开放时间|冒险....包)\s*〓([^〓]+)(〓|$)/.exec(content);
|
||||
if (!content || !content[1]) {
|
||||
return;
|
||||
}
|
||||
content = content[1];
|
||||
let annTime = [];
|
||||
|
||||
// 第一种简单格式
|
||||
let timeRet = /活动时间(?:〓|\s)*([0-9\\/\\: ~]*)/.exec(content);
|
||||
if (timeRet && timeRet[1]) {
|
||||
let times = timeRet[1].split("~");
|
||||
if (times.length === 2) {
|
||||
timeMap[ann_id] = {
|
||||
start: times[0].trim().replace(/\//g,"-"),
|
||||
end: times[1].trim().replace(/\//g,"-")
|
||||
annTime = timeRet[1].split("~");
|
||||
} else if (/\d\.\d版本更新后/.test(content)) {
|
||||
let vRet = /(\d\.\d)版本更新后/.exec(content);
|
||||
let vTime = '';
|
||||
if (vRet && vRet[1] && versionTime[vRet[1]]) {
|
||||
vTime = versionTime[vRet[1]];
|
||||
}
|
||||
if (!vTime) {
|
||||
return;
|
||||
}
|
||||
if (/永久开放/.test(content)) {
|
||||
annTime = [vTime, '2099/01/01 00:00:00'];
|
||||
} else {
|
||||
timeRet = /([0-9\\/\\: ]){9,}/.exec(content);
|
||||
if (timeRet && timeRet[0]) {
|
||||
annTime = [vTime, timeRet[0]];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (annTime.length === 2) {
|
||||
timeMap[ann_id] = {
|
||||
start: annTime[0].trim().replace(/\//g, "-"),
|
||||
end: annTime[1].trim().replace(/\//g, "-")
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -167,9 +207,11 @@ let Cal = {
|
||||
width = eRange / totalRange * 100 - left;
|
||||
|
||||
let label = "";
|
||||
if (fulltimeReg.test(title)) {
|
||||
left = 0;
|
||||
width = 100;
|
||||
if (fulltimeReg.test(title) || eDate - sDate > 365 * 24 * 3600 * 1000) {
|
||||
if (sDate < now) {
|
||||
left = 0;
|
||||
width = 100;
|
||||
}
|
||||
label = "永久有效";
|
||||
} else if (now > sDate && eDate > now) {
|
||||
label = eDate.format("MM-DD HH:mm") + " (" + moment.duration(eDate - now).humanize() + "后结束)"
|
||||
@ -222,12 +264,27 @@ let Cal = {
|
||||
}, abyss, { ...dl, now }, true)
|
||||
});
|
||||
|
||||
list = lodash.sortBy(list, ["sort", 'duration', 'start']);
|
||||
list = lodash.sortBy(list, ["sort", 'start', 'duration']);
|
||||
|
||||
let charCount = 0, charOld = 0;
|
||||
let weaponCount = 0;
|
||||
lodash.forEach(list, (li) => {
|
||||
if (li.type === "character") {
|
||||
charCount++;
|
||||
li.left === 0 && charOld++;
|
||||
li.idx = charCount;
|
||||
}
|
||||
if (li.type === "weapon") {
|
||||
weaponCount++;
|
||||
li.idx = weaponCount;
|
||||
}
|
||||
})
|
||||
|
||||
return {
|
||||
...dl,
|
||||
list,
|
||||
abyss,
|
||||
charMode: `char-${charCount}-${charOld}`,
|
||||
nowTime: now.format("YYYY-MM-DD HH:mm"),
|
||||
nowDate: now.date(),
|
||||
}
|
||||
|
@ -21,6 +21,10 @@ let Cfg = {
|
||||
lodash.set(cfg, rote, val);
|
||||
fs.writeFileSync(_cfgPath + "cfg.json", JSON.stringify(cfg, null, "\t"));
|
||||
},
|
||||
del(rote) {
|
||||
lodash.set(cfg, rote, undefined);
|
||||
fs.writeFileSync(_cfgPath + "cfg.json", JSON.stringify(cfg, null, "\t"));
|
||||
},
|
||||
scale(pct = 1) {
|
||||
let scale = Cfg.get("sys.scale", 100);
|
||||
scale = Math.min(2, Math.max(0.5, scale / 100));
|
||||
|
5
index.js
5
index.js
@ -13,7 +13,7 @@ import { wiki, calendar } from "./apps/wiki.js";
|
||||
import { help, versionInfo } from "./apps/help.js";
|
||||
import lodash from "lodash";
|
||||
import common from "../../lib/common.js";
|
||||
import { rule as adminRule, updateRes, sysCfg, updateMiaoPlugin } from "./apps/admin.js";
|
||||
import { rule as adminRule, updateRes, sysCfg, updateMiaoPlugin, profileCfg } from "./apps/admin.js";
|
||||
import { currentVersion } from "./components/Changelog.js";
|
||||
|
||||
export {
|
||||
@ -33,7 +33,8 @@ export {
|
||||
getArtis,
|
||||
getProfileAll,
|
||||
profileHelp,
|
||||
calendar
|
||||
calendar,
|
||||
profileCfg
|
||||
};
|
||||
|
||||
|
||||
|
@ -105,14 +105,6 @@
|
||||
</div>
|
||||
<div class="cfg-desc">开启后将使用喵喵版帮助作为Yunzai的默认帮助</div>
|
||||
</li>
|
||||
|
||||
<!-- <li class="cfg-li">
|
||||
<div class="cfg-line">
|
||||
更新版本
|
||||
<div class="cfg-status">#喵喵更新</div>
|
||||
</div>
|
||||
<div class="cfg-desc">更新喵喵Plugin,可能需要重启Yunzai-Bot</div>
|
||||
</li>-->
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
0
resources/admin/profile.css
Normal file
0
resources/admin/profile.css
Normal file
59
resources/admin/profile.html
Normal file
59
resources/admin/profile.html
Normal file
@ -0,0 +1,59 @@
|
||||
{{extend defaultLayout}}
|
||||
|
||||
{{block 'css'}}
|
||||
<link rel="stylesheet" type="text/css" href="{{_res_path}}/admin/index.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="{{_res_path}}/admin/index.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="{{_res_path}}/admin/profile.css"/>
|
||||
{{/block}}
|
||||
|
||||
{{block 'main'}}
|
||||
|
||||
<div class="info_box">
|
||||
<div class="head-box type{{bgType}}">
|
||||
<div class="label">#喵喵面板设置</div>
|
||||
<div class="title">角色面板管理</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cfg-box">
|
||||
<div class="cfg-group">#角色面板开放范围</div>
|
||||
<ul class="cfg-ul">
|
||||
<li class="cfg-li">
|
||||
<div class="cfg-line">
|
||||
好友
|
||||
<span class="cfg-hint"> #喵喵面板设置好友 + 开启/关闭</span>
|
||||
{{@friend}}
|
||||
</div>
|
||||
</li>
|
||||
<li class="cfg-li">
|
||||
<div class="cfg-line">
|
||||
陌生人
|
||||
<span class="cfg-hint"> #喵喵面板设置陌生人 + 开启/关闭</span>
|
||||
{{@stranger}}
|
||||
</div>
|
||||
</li>
|
||||
<li class="cfg-li">
|
||||
<div class="cfg-line">
|
||||
群
|
||||
<span class="cfg-hint"> #喵喵面板设置群 + 开启/关闭</span>
|
||||
{{@group}}
|
||||
</div>
|
||||
<div class="cfg-desc">若下方无指定群设置,默认使用此设置</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="cfg-box">
|
||||
<div class="cfg-group">指定群设置</div>
|
||||
<div class="cfg-desc">#喵喵面板设置群123456 + 开启/关闭/删除。对应群号会优先使用</div>
|
||||
<ul class="cfg-ul">
|
||||
{{each groups group}}
|
||||
<li class="cfg-li">
|
||||
<div class="cfg-line">
|
||||
{{group.group}}
|
||||
{{@group.status}}
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
{{/block}}
|
0
resources/admin/profile.less
Normal file
0
resources/admin/profile.less
Normal file
32
resources/meta/character/琴/calc.js
Normal file
32
resources/meta/character/琴/calc.js
Normal file
@ -0,0 +1,32 @@
|
||||
export const details = [{
|
||||
title: "风压剑伤害",
|
||||
dmg: ({ talent }, dmg) => dmg(talent.e['技能伤害'], 'e')
|
||||
}, {
|
||||
title: "Q爆发伤害",
|
||||
params: { q: true },
|
||||
dmg: ({ talent }, dmg) => dmg(talent.q['爆发伤害'], 'q')
|
||||
}, {
|
||||
title: "Q爆发治疗",
|
||||
dmg: ({ talent, calc, attr }, { heal }) =>
|
||||
heal(talent.q['领域发动治疗量2'][0] * calc(attr.atk) / 100 + talent.q['领域发动治疗量2'][1] * 1)
|
||||
}, {
|
||||
title: "Q每跳治疗",
|
||||
dmg: ({ talent, calc, attr }, { heal }) =>
|
||||
heal(talent.q['持续治疗2'][0] * calc(attr.atk) / 100 + talent.q['持续治疗2'][1] * 1)
|
||||
}];
|
||||
|
||||
export const mainAttr = "atk,cpct,cdmg";
|
||||
|
||||
export const buffs = [{
|
||||
cons: 1,
|
||||
title: "琴1命:长按1秒后风压剑伤害提升40%",
|
||||
data: {
|
||||
eDmg: 40
|
||||
}
|
||||
}, {
|
||||
cons: 4,
|
||||
title: "琴4命:蒲公英之风的领域内敌人风元素抗性降低40%",
|
||||
data: {
|
||||
kx: ({ params }) => params.q ? 40 : 0
|
||||
}
|
||||
}];
|
50
resources/meta/character/莫娜/calc.js
Normal file
50
resources/meta/character/莫娜/calc.js
Normal file
@ -0,0 +1,50 @@
|
||||
export const details = [{
|
||||
title: "重击伤害",
|
||||
dmg: ({ talent }, dmg) => dmg(talent.a['重击伤害'], 'a2')
|
||||
}, {
|
||||
title: "重击蒸发",
|
||||
dmg: ({ talent }, dmg) => dmg(talent.a['重击伤害'], 'a2', 'zf')
|
||||
}, {
|
||||
title: "Q泡影破裂伤害",
|
||||
params: { q: true },
|
||||
dmg: ({ talent }, dmg) => dmg(talent.q['泡影破裂伤害'], 'q')
|
||||
}, {
|
||||
title: "Q泡影破裂蒸发",
|
||||
params: { q: true },
|
||||
dmg: ({ talent }, dmg) => dmg(talent.q['泡影破裂伤害'], 'q', 'zf')
|
||||
}];
|
||||
|
||||
export const mainAttr = "atk,hp,cpct,recharge";
|
||||
|
||||
export const buffs = [{
|
||||
title: "莫娜被动:基于元素充能效率获得水元素伤害[dmg]%",
|
||||
data: {
|
||||
dmg: ({ calc, attr }) => calc(attr.recharge) * 0.2
|
||||
}
|
||||
}, {
|
||||
title: "莫娜1命:命中星异状态下的敌人水元素相关反应效果提升15%",
|
||||
cons: 1,
|
||||
data: {
|
||||
zf: ({ params }) => params.q ? 15 : 0
|
||||
}
|
||||
}, {
|
||||
title: "莫娜4命:攻击处于星异状态下的敌人时暴击率提升15%",
|
||||
cons: 4,
|
||||
data: {
|
||||
cpct: ({ params }) => params.q ? 15 : 0
|
||||
}
|
||||
}, {
|
||||
title: "莫娜6命:虚实流动状态后满Buff提升重击180%伤害",
|
||||
cons: 6,
|
||||
data: {
|
||||
a2Dmg: 180
|
||||
}
|
||||
}, {
|
||||
title: "元素精通:蒸发融化伤害提高[zf]%",
|
||||
mastery: "zf,rh"
|
||||
}, {
|
||||
title: "莫娜天赋:开Q获得[dmg]%伤害加成",
|
||||
data: {
|
||||
dmg: ({ talent }) => talent.q['伤害加成']
|
||||
}
|
||||
}];
|
@ -141,7 +141,7 @@ body {
|
||||
padding-left: 65px;
|
||||
}
|
||||
.cal-list .cal-item.type-character .character-img {
|
||||
width: 65px;
|
||||
height: 75px;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
@ -193,6 +193,20 @@ body {
|
||||
left: 10px;
|
||||
top: 10px;
|
||||
}
|
||||
.cal-list.char-2-1 .type-character.li-idx-2,
|
||||
.cal-list.char-3-1 .type-character.li-idx-2 {
|
||||
margin-top: -82px;
|
||||
}
|
||||
.cal-list.char-3-2 .type-character.li-idx-3 {
|
||||
margin-top: -82px;
|
||||
}
|
||||
.cal-list.char-4-2 .type-character.li-idx-3,
|
||||
.cal-list.char-4-2 .type-character.li-idx-4 {
|
||||
margin-top: -164px;
|
||||
}
|
||||
.cal-list .type-weapon.li-idx-2 {
|
||||
margin-top: -82px;
|
||||
}
|
||||
.calendar .now-line {
|
||||
position: absolute;
|
||||
top: 86px;
|
||||
|
@ -35,7 +35,7 @@
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="cal-list">
|
||||
<div class="cal-list {{charMode}}">
|
||||
<div class="cal-abyss-cont">
|
||||
{{each abyss li}}
|
||||
<div class="cal-item type-abyss" style="{{`left:${li.left}%;width:${li.width}%`}}">
|
||||
@ -48,7 +48,7 @@
|
||||
{{/each}}
|
||||
</div>
|
||||
{{each list li}}
|
||||
<div class="cal-item type-{{li.type}} {{li.elem?'elem-'+li.elem:''}} {{li.width<20 ? 'small-mode':''}}"
|
||||
<div class="cal-item type-{{li.type}} {{li.idx? `li-idx-${li.idx}`:``}} {{li.elem?'elem-'+li.elem:''}} {{li.width<20 ? 'small-mode':''}}"
|
||||
style="{{`margin-left:${li.left}%;width:${li.width}%`}}"
|
||||
data-id="{{li.id}}"
|
||||
data-type="{{li.type}}">
|
||||
|
@ -175,7 +175,7 @@ body {
|
||||
}
|
||||
|
||||
.character-img {
|
||||
width: 65px;
|
||||
height: 75px;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
@ -246,6 +246,30 @@ body {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
&.char-2-1,
|
||||
&.char-3-1 {
|
||||
.type-character.li-idx-2 {
|
||||
margin-top: -82px;
|
||||
}
|
||||
}
|
||||
|
||||
&.char-3-2 {
|
||||
.type-character.li-idx-3 {
|
||||
margin-top: -82px;
|
||||
}
|
||||
}
|
||||
|
||||
&.char-4-2 {
|
||||
.type-character.li-idx-3,
|
||||
.type-character.li-idx-4 {
|
||||
margin-top: -164px;
|
||||
}
|
||||
}
|
||||
|
||||
.type-weapon.li-idx-2 {
|
||||
margin-top: -82px;
|
||||
}
|
||||
}
|
||||
|
||||
.calendar .now-line {
|
||||
|
Loading…
Reference in New Issue
Block a user