增加星铁角色图鉴
@ -1,7 +1,9 @@
|
||||
# 1.2.9
|
||||
* 增加星穹铁道武器图鉴
|
||||
* 增加星穹铁道武器、角色图鉴
|
||||
* 指令`#于夜色中图鉴`
|
||||
* 指令`#希儿图鉴`
|
||||
* 需要在设置中开启 指令:`#图鉴设置星铁图鉴开启`
|
||||
* 感谢****@小萌新****提供的部分数据
|
||||
# 1.2.8
|
||||
* 增加`#原神充值` 原神离线充值
|
||||
* 增加`#商品列表`
|
||||
|
@ -1,18 +1,26 @@
|
||||
import fs from "fs";
|
||||
import {
|
||||
Cfg,Data
|
||||
Cfg, Data
|
||||
} from "../components/index.js";
|
||||
import lodash from 'lodash';
|
||||
import Common from "../components/Common.js";
|
||||
|
||||
const _path = process.cwd();
|
||||
let pathPlus = `${_path}/plugins/xiaoyao-cvs-plugin/resources/sr/`
|
||||
|
||||
export async function AtlasAlias(e,{render}) {
|
||||
let data =await GetData(e)
|
||||
if(!data) return false
|
||||
await Common.render(`sr/weapon/index`, {
|
||||
export async function AtlasAlias(e, {render}) {
|
||||
let data
|
||||
data = await GetRoleData(e)
|
||||
if (data?.url) return sendMsg(e, {render}, data.data, data.url)
|
||||
data = await GetWeaPonData(e)
|
||||
if (data?.url) return sendMsg(e, {render}, data.data, data.url)
|
||||
return false
|
||||
}
|
||||
|
||||
export async function sendMsg(e, {render}, data, url) {
|
||||
await Common.render(url, {
|
||||
...data
|
||||
},{
|
||||
}, {
|
||||
e,
|
||||
render,
|
||||
scale: 1.4
|
||||
@ -21,80 +29,187 @@ export async function AtlasAlias(e,{render}) {
|
||||
}
|
||||
|
||||
|
||||
export async function GetData(e) {
|
||||
let name=e.msg.replace(/\*|#|星铁|(四|4)星|(五|5)星|星穹铁道|图鉴|专武/g,'')
|
||||
export async function GetRoleData(e) {
|
||||
let name = e.msg.replace(/\*|#|星铁|星穹铁道|图鉴/g, '')
|
||||
let roleName = GetRole(name)?.name
|
||||
if(!roleName){
|
||||
return false
|
||||
}
|
||||
let data = Data.readJSON(pathPlus, `character/${roleName}/data.json`)
|
||||
let items = Data.readJSON(pathPlus, 'items/data.json')
|
||||
if(!data) return false
|
||||
|
||||
let baseAttr=[{key:'sp',name:'能量',num:data.sp}]
|
||||
let baseObj={
|
||||
atk:'攻击力',
|
||||
hp:'生命值',
|
||||
def: "防御力",
|
||||
speed: "速度",
|
||||
cpct: "暴击率",
|
||||
cdmg: "暴击伤害",
|
||||
aggro: "嘲讽"
|
||||
}
|
||||
for (const item of Object.keys(data.baseAttr)) {
|
||||
baseAttr.push({
|
||||
key:item,
|
||||
name:baseObj[item],
|
||||
num: parseInt(data.baseAttr[item])
|
||||
})
|
||||
}
|
||||
let growObj={
|
||||
atk:'攻击',
|
||||
hp:'生命',
|
||||
def: "防御",
|
||||
speed: "速度",
|
||||
cpct: "暴击率",
|
||||
cdmg: "暴击伤害",
|
||||
aggro: "嘲讽",
|
||||
effect:"效果命中",
|
||||
damage:"伤害",
|
||||
resist:"效果抵抗"
|
||||
}
|
||||
let growAttr=[]
|
||||
for (const item of Object.keys(data.growAttr)) {
|
||||
growAttr.push({
|
||||
name:growObj[item]+"强化",
|
||||
key:item,
|
||||
num: parseInt(lodash.sum(data.growAttr[item]))+"%"
|
||||
})
|
||||
}
|
||||
let newMaterial = [{...items["213"],num:294},{...items["2"],num: data.rarity==5?89600:834400}]
|
||||
for (const materialElement of data.materials) {
|
||||
for (const newMaterialElement of materialElement) {
|
||||
if([2].includes(newMaterialElement.id * 1)) continue
|
||||
if (!lodash.map(newMaterial, 'id').includes(newMaterialElement.id)) {
|
||||
newMaterial.push(newMaterialElement)
|
||||
} else {
|
||||
for (let v = 0; v < newMaterial.length; v++) {
|
||||
if (newMaterial[v].id == newMaterialElement.id) {
|
||||
newMaterial[v].num += newMaterialElement.num
|
||||
}
|
||||
newMaterial[v] = {...items[newMaterial[v].id], ...newMaterial[v]}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data.skillMaterial=[]
|
||||
for (const [index,item] of Object.entries(data.skill_tree)) {
|
||||
let levelsMaterial=lodash.map(Object.values(item.levels), 'material_list')
|
||||
for (const levelsMaterialElement of levelsMaterial) {
|
||||
for (const levelsMaterialElement1 of levelsMaterialElement) {
|
||||
if (!lodash.map(data.skillMaterial, 'id').includes(levelsMaterialElement1.id)) {
|
||||
data.skillMaterial.push(levelsMaterialElement1)
|
||||
} else {
|
||||
for (let v = 0; v < data.skillMaterial.length; v++) {
|
||||
if (data.skillMaterial[v].id == levelsMaterialElement1.id) {
|
||||
data.skillMaterial[v].num += levelsMaterialElement1.num
|
||||
}
|
||||
data.skillMaterial[v] = {...items[data.skillMaterial[v].id], ...data.skillMaterial[v]}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
for (const [i,item] of Object.entries(data.skillsData)) {
|
||||
let newAttributeBuff=[]
|
||||
if(item?.AttributeBuff&&item.AttributeBuff.length>0){
|
||||
for (const item1 of item.AttributeBuff) {
|
||||
let text = item1.replace(/:|:/,":").split(':')
|
||||
newAttributeBuff.push({
|
||||
key:text[0],
|
||||
isType:text[0].includes('额外')?"extra":"attribute",
|
||||
value:text[1]
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
data.skillsData[i].newAttributeBuff=newAttributeBuff
|
||||
}
|
||||
data.materials = newMaterial
|
||||
data.baseAttr=baseAttr
|
||||
data.growAttr=growAttr
|
||||
return {data,url: 'sr/character/index'}
|
||||
}
|
||||
|
||||
|
||||
export async function GetWeaPonData(e) {
|
||||
let name = e.msg.replace(/\*|#|星铁|(四|4)星|(五|5)星|星穹铁道|图鉴|专武/g, '')
|
||||
let list = Data.readJSON(pathPlus, 'weapon/data.json')
|
||||
let items = Data.readJSON(pathPlus, 'items/data.json')
|
||||
let role=GetRole(name)
|
||||
let isUp=false;
|
||||
if(role) {
|
||||
name=role.name
|
||||
isUp=true
|
||||
let role = GetRole(name)
|
||||
let isUp = false;
|
||||
if (role) {
|
||||
name = role.name
|
||||
isUp = true
|
||||
}
|
||||
let roleData,roleList =[];
|
||||
lodash.forEach(list,(v,k)=>{
|
||||
if(isUp&&v.belongRole.includes(name)){
|
||||
let roleData, roleList = [];
|
||||
lodash.forEach(list, (v, k) => {
|
||||
if (isUp && v.belongRole.includes(name)) {
|
||||
roleList.push(v)
|
||||
return
|
||||
}else if([v.name,...v.names,...v?.suitRole].includes(name)&&!isUp){
|
||||
} else if ([v.name, ...v.names, ...v?.suitRole].includes(name) && !isUp) {
|
||||
roleList.push(v)
|
||||
return
|
||||
}
|
||||
})
|
||||
let isUp4=/4|四/.test(e.msg)
|
||||
let isUp5=/5|五/.test(e.msg)
|
||||
if(roleList.length==0) return false
|
||||
roleData=roleList[0]
|
||||
let isUp4 = /4|四/.test(e.msg)
|
||||
let isUp5 = /5|五/.test(e.msg)
|
||||
if (roleList.length == 0) return false
|
||||
roleData = roleList[0]
|
||||
for (const role of roleList) {
|
||||
if(isUp4&&role.star==4){
|
||||
roleData=role
|
||||
}else if (isUp5&&role.star==5){
|
||||
roleData=role
|
||||
}else if(!isUp4&&!isUp5&&roleData.star<role.star){
|
||||
roleData=role
|
||||
if (isUp4 && role.star == 4) {
|
||||
roleData = role
|
||||
} else if (isUp5 && role.star == 5) {
|
||||
roleData = role
|
||||
} else if (!isUp4 && !isUp5 && roleData.star < role.star) {
|
||||
roleData = role
|
||||
}
|
||||
}
|
||||
if(roleData){
|
||||
let newMaterial=[]
|
||||
if (roleData) {
|
||||
let newMaterial = []
|
||||
for (const materialElement of roleData.material) {
|
||||
for (const newMaterialElement of materialElement) {
|
||||
if(!lodash.map(newMaterial,'id').includes(newMaterialElement.id)&&![2].includes(newMaterialElement.id*1)){
|
||||
if (!lodash.map(newMaterial, 'id').includes(newMaterialElement.id) && ![2].includes(newMaterialElement.id * 1)) {
|
||||
newMaterial.push(newMaterialElement)
|
||||
}else{
|
||||
} else {
|
||||
|
||||
for (let v =0;v<newMaterial.length;v++) {
|
||||
if(newMaterial[v].id==newMaterialElement.id){
|
||||
newMaterial[v].num+=newMaterialElement.num
|
||||
for (let v = 0; v < newMaterial.length; v++) {
|
||||
if (newMaterial[v].id == newMaterialElement.id) {
|
||||
newMaterial[v].num += newMaterialElement.num
|
||||
}
|
||||
newMaterial[v]={...items[newMaterial[v].id],...newMaterial[v]}
|
||||
newMaterial[v] = {...items[newMaterial[v].id], ...newMaterial[v]}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
roleData.material=newMaterial
|
||||
roleData.material = newMaterial
|
||||
for (const item of Object.keys(roleData.fullValues)) {
|
||||
let {base,stop} = roleData.fullValues[item]
|
||||
roleData.fullValues[item]={
|
||||
base: parseInt(base),stop:parseInt(stop)
|
||||
let {base, stop} = roleData.fullValues[item]
|
||||
roleData.fullValues[item] = {
|
||||
base: parseInt(base), stop: parseInt(stop)
|
||||
}
|
||||
}
|
||||
let suitRole=[]
|
||||
let suitRole = []
|
||||
for (const item of roleData.suitRole) {
|
||||
let list=GetRole(item)
|
||||
if(roleData.belongRole.includes(item)) list.isUp=true
|
||||
let list = GetRole(item)
|
||||
if (roleData.belongRole.includes(item)) list.isUp = true
|
||||
suitRole.push(list)
|
||||
}
|
||||
roleData.suitRole=suitRole
|
||||
roleData.suitRole = suitRole
|
||||
}
|
||||
return roleData
|
||||
return {data: roleData, url: `sr/weapon/index`}
|
||||
|
||||
}
|
||||
let GetRole=(name)=>{
|
||||
|
||||
let GetRole = (name) => {
|
||||
let list = Data.readJSON(pathPlus, 'character/data.json')
|
||||
let role;
|
||||
lodash.forEach(list,(v,k)=>{
|
||||
if([v.name,...v.names].includes(name)){
|
||||
role=v
|
||||
lodash.forEach(list, (v, k) => {
|
||||
if ([v.name, ...v.names].includes(name)) {
|
||||
role = v
|
||||
}
|
||||
})
|
||||
return role
|
||||
|
BIN
resources/font/AKZIDENZ_GROTESK_EXTRABOLDALT.TTF
Normal file
33515
resources/sr/character/characters.json
Normal file
BIN
resources/sr/character/img/命途/丰饶.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
resources/sr/character/img/命途/同谐.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
resources/sr/character/img/命途/存护.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
resources/sr/character/img/命途/巡猎.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
resources/sr/character/img/命途/智识.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
resources/sr/character/img/命途/毁灭.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
BIN
resources/sr/character/img/命途/虚无.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
resources/sr/character/img/四角图标.png
Normal file
After Width: | Height: | Size: 5.4 KiB |
BIN
resources/sr/character/img/属性/冰.png
Normal file
After Width: | Height: | Size: 8.6 KiB |
BIN
resources/sr/character/img/属性/火.png
Normal file
After Width: | Height: | Size: 6.8 KiB |
BIN
resources/sr/character/img/属性/物理.png
Normal file
After Width: | Height: | Size: 6.7 KiB |
BIN
resources/sr/character/img/属性/虚无.png
Normal file
After Width: | Height: | Size: 7.5 KiB |
BIN
resources/sr/character/img/属性/量子.png
Normal file
After Width: | Height: | Size: 7.5 KiB |
BIN
resources/sr/character/img/属性/雷.png
Normal file
After Width: | Height: | Size: 8.4 KiB |
BIN
resources/sr/character/img/属性/风.png
Normal file
After Width: | Height: | Size: 7.7 KiB |
BIN
resources/sr/character/img/技能图标.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
resources/sr/character/img/星.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
resources/sr/character/img/星2.png
Normal file
After Width: | Height: | Size: 817 B |
BIN
resources/sr/character/img/条纹.png
Normal file
After Width: | Height: | Size: 19 KiB |
520
resources/sr/character/index.css
Normal file
@ -0,0 +1,520 @@
|
||||
@font-face {
|
||||
font-family: HYWenHei;
|
||||
src: url(../../font/HYWenHei.ttf);
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: MiSans-Regular;
|
||||
src: url(../../font/MiSans-Regular.ttf);
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: MiSans-Medium;
|
||||
src: url(../../font/MiSans-Medium.ttf);
|
||||
}
|
||||
@font-face {
|
||||
font-family: MiSans-Bold;
|
||||
src: url(../../font/MiSans-Bold.ttf);
|
||||
}
|
||||
@font-face {
|
||||
font-family: HYWenHei-Hew;
|
||||
src: url(../../font/HYWenHei-55W.ttf);
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: MiSans-Normal;
|
||||
src: url(../../font/MiSans-Normal.ttf);
|
||||
}
|
||||
@font-face {
|
||||
font-family: MiSans-Demibold;
|
||||
src: url(../../font/MiSans-Demibold.ttf);
|
||||
}
|
||||
@font-face {
|
||||
font-family: AKZIDENZ_GROTESK_EXTRABOLDALT;
|
||||
src: url(../../font/AKZIDENZ_GROTESK_EXTRABOLDALT.ttf);
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 18px;
|
||||
color: #1e1f20;
|
||||
font-family: Number, YS2, PingFangSC-Medium, PingFang SC, sans-serif;
|
||||
transform: scale(1.4);
|
||||
transform-origin: 0 0;
|
||||
width: 1600px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 1600px;
|
||||
background-color: rgb(230, 230, 230);
|
||||
/* background-image: url('image/背景.png'); */
|
||||
/* height: 900px; */
|
||||
}
|
||||
|
||||
.body-top {
|
||||
height: 700px;
|
||||
width: 1600px;
|
||||
position: relative;
|
||||
background-color: #fff;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.body-top-left {
|
||||
width: 700px;
|
||||
position: absolute;
|
||||
left: -80px;
|
||||
}
|
||||
|
||||
.body-top-left div:nth-child(1) {
|
||||
position: absolute;
|
||||
height: 930px;
|
||||
width: 930px;
|
||||
transform: scale(1.5);
|
||||
z-index: 2;
|
||||
top: -110px;
|
||||
}
|
||||
|
||||
.body-top-left div:nth-child(2) {
|
||||
filter: grayscale(100%);
|
||||
position: absolute;
|
||||
height: 930px;
|
||||
width: 930px;
|
||||
transform: scale(1.5);
|
||||
top: -110px;
|
||||
left: 450px;
|
||||
z-index: 1;
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
.body-top-zz {
|
||||
height: 700px;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
opacity: 0.3;
|
||||
/* background: repeating-linear-gradient(125deg, #fff, #fff 4px, #808080 5px, #808080 2px); */
|
||||
}
|
||||
|
||||
.border {
|
||||
margin: 20px;
|
||||
width: 1560px;
|
||||
position: absolute;
|
||||
height: calc(100% - 40px);
|
||||
border: 2px solid #2a2625;
|
||||
opacity: 0.6;
|
||||
z-index: 999999;
|
||||
}
|
||||
|
||||
.body-top-right {
|
||||
position: absolute;
|
||||
right: 50px;
|
||||
width: 630px;
|
||||
top: 50px;
|
||||
height: 620px;
|
||||
z-index: 9;
|
||||
}
|
||||
|
||||
.body-top-right-name {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.body-top-right-name>div:nth-child(1) {
|
||||
margin-right: 21px;
|
||||
text-align: right;
|
||||
font-size: 72px;
|
||||
color: #000000;
|
||||
font-family: 'MiSans-bold';
|
||||
}
|
||||
|
||||
.body-top-right-star {
|
||||
position: absolute;
|
||||
display: flex;
|
||||
justify-content: end;
|
||||
right: 100px;
|
||||
z-index: 2;
|
||||
flex-wrap: wrap;
|
||||
align-content: flex-end;
|
||||
}
|
||||
|
||||
.body-top-right-star-img {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
margin-right: -11px;
|
||||
}
|
||||
|
||||
.body-top-right-star-img:last-child {
|
||||
left: 0px;
|
||||
}
|
||||
|
||||
.body-top-right-name-attribute div {
|
||||
width: 80px;
|
||||
}
|
||||
|
||||
.body-top-right-roleInfo-item,
|
||||
.body-top-right-roleInfo-list {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.body-top-right-roleInfo-item>div,
|
||||
.body-top-right-roleInfo-list>div {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
background-color: rgba(242, 242, 242, 0.9);
|
||||
height: 50px;
|
||||
width: 300px;
|
||||
padding: 0 30px;
|
||||
align-items: center;
|
||||
border: 2px solid rgba(204, 204, 204, 0.9);
|
||||
outline: 2px solid #fff;
|
||||
border-radius: 4px 30px 4px 4px;
|
||||
color: #333333;
|
||||
font-size: 24px;
|
||||
font-family: 'MiSans-Regular';
|
||||
}
|
||||
|
||||
.body-top-right-roleInfo-list {
|
||||
flex-wrap: wrap;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.body-top-right-roleInfo-list>div,
|
||||
.cvsSet {
|
||||
width: 120px;
|
||||
height: 80px;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
font-size: 30px;
|
||||
padding: 0;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.cvsSet{
|
||||
width: 247px !important;
|
||||
}
|
||||
.body-top-right-roleInfo-list>div>div:nth-child(1) {
|
||||
font-family: 'AKZIDENZ_GROTESK_EXTRABOLDALT';
|
||||
}
|
||||
|
||||
.body-top-right-roleInfo-list>div>div:nth-child(2) {
|
||||
font-size: 16px;
|
||||
font-family: 'AKZIDENZ_GROTESK_EXTRABOLDALT';
|
||||
}
|
||||
|
||||
.body-top-right-roleInfo-list:last-child>div {
|
||||
width: 190px;
|
||||
height: 80px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.body-top-right-roleInfo-list:last-child>div>div:nth-child(1) {
|
||||
position: absolute;
|
||||
width: 16px;
|
||||
height: 76px;
|
||||
left: 0;
|
||||
background-color: #dac291;
|
||||
border-radius: 4px 0 0 4px;
|
||||
}
|
||||
|
||||
.body-top-right-roleInfo-list:last-child>div>div:nth-child(2) {
|
||||
font-size: 30px;
|
||||
font-family: 'AKZIDENZ_GROTESK_EXTRABOLDALT';
|
||||
}
|
||||
|
||||
.body-top-right-roleInfo-list:last-child>div>div:nth-child(3) {
|
||||
font-size: 16px;
|
||||
font-family: 'AKZIDENZ_GROTESK_EXTRABOLDALT';
|
||||
}
|
||||
|
||||
.fontFamily_Medium {
|
||||
font-family: 'MiSans-Medium';
|
||||
}
|
||||
|
||||
.fontFamily_Regular {
|
||||
font-family: 'MiSans-Regular';
|
||||
}
|
||||
|
||||
.icon_left {
|
||||
position: absolute;
|
||||
background-image: url(img/四角图标.png);
|
||||
top: 1px;
|
||||
left: 1px;
|
||||
width: 192px;
|
||||
height: 192px;
|
||||
z-index: 6;
|
||||
}
|
||||
|
||||
.icon_right {
|
||||
position: absolute;
|
||||
background-image: url(img/四角图标.png);
|
||||
top: 1px;
|
||||
left: 1407px;
|
||||
width: 192px;
|
||||
height: 192px;
|
||||
z-index: 6;
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
.icon_left_bottom {
|
||||
position: absolute;
|
||||
background-image: url(img/四角图标.png);
|
||||
bottom: 1px;
|
||||
left: 1px;
|
||||
width: 192px;
|
||||
height: 192px;
|
||||
z-index: 6;
|
||||
transform: rotate(270deg);
|
||||
}
|
||||
|
||||
.icon_right_bottom {
|
||||
position: absolute;
|
||||
background-image: url(img/四角图标.png);
|
||||
bottom: 1px;
|
||||
left: 1407px;
|
||||
width: 192px;
|
||||
height: 192px;
|
||||
z-index: 6;
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
.background_Tm {
|
||||
width: 100%;
|
||||
height: 700px;
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
opacity: 0.5;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.body-content {
|
||||
margin: 30px 20px 0px;
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
|
||||
.role-levet {
|
||||
width: calc(100% - 60px);
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-left: 30px;
|
||||
flex-wrap: wrap;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.role-levet-left {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
/*width: 990px;*/
|
||||
}
|
||||
|
||||
.roleInfo-item {
|
||||
width: 480px;
|
||||
height: 100px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
position: relative;
|
||||
align-items: center;
|
||||
background-color: rgba(242, 242, 242, 0.9);
|
||||
border: 2px solid rgba(204, 204, 204, 0.9);
|
||||
outline: 2px solid #fff;
|
||||
border-radius: 8px;
|
||||
margin-bottom: 15px;
|
||||
font-size: 32px;
|
||||
font-family: 'MiSans-Regular';
|
||||
}
|
||||
|
||||
.roleInfo-item>div:nth-child(1) {
|
||||
position: absolute;
|
||||
width: 16px;
|
||||
height: 96px;
|
||||
left: 0;
|
||||
border-radius: 6px 0 0 6px;
|
||||
}
|
||||
|
||||
.infoColor2 {
|
||||
background-color: #8bddb8;
|
||||
}
|
||||
|
||||
.infoColor3 {
|
||||
background-color: #80aeee;
|
||||
}
|
||||
|
||||
.infoColor4 {
|
||||
background-color: #ba98f8;
|
||||
}
|
||||
|
||||
.infoColor5 {
|
||||
background-color: #f7d07e;
|
||||
}
|
||||
|
||||
.roleInfo-item>div:nth-child(2) {
|
||||
width: 70px;
|
||||
height: 70px;
|
||||
margin: 0 30px;
|
||||
border-radius: 50%;
|
||||
background-color: #e6e6e6;
|
||||
}
|
||||
|
||||
.roleInfo-item>div:nth-child(3) {
|
||||
flex: 1 auto;
|
||||
}
|
||||
|
||||
.roleInfo-item>div:nth-child(4) {
|
||||
margin-right: 34px;
|
||||
}
|
||||
|
||||
.role-levet-right {
|
||||
width: 480px;
|
||||
margin-bottom: 15px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
font-size: 30px;
|
||||
color: #000000;
|
||||
position: relative;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.role-levet-right-bg {
|
||||
position: absolute;
|
||||
background-image: url('./img/条纹.png');
|
||||
opacity: 0.2;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.role-title {
|
||||
background-color: #2a2625;
|
||||
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 30px;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.role-title div {
|
||||
width: 50px;
|
||||
flex-shrink: 0;
|
||||
height: 50px;
|
||||
margin: 0 35px;
|
||||
}
|
||||
|
||||
.role-title>div:nth-child(2) {
|
||||
width: 100%;
|
||||
flex: 1 auto;
|
||||
text-align: center;
|
||||
/*color: #fff;*/
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
font-size: 36px;
|
||||
font-family: 'MiSans-Demibold';
|
||||
color:#d6c297;
|
||||
}
|
||||
|
||||
.role-talent {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
position: relative;
|
||||
align-items: center;
|
||||
font-size: 36px;
|
||||
color: #333333;
|
||||
margin: 0 30px 0 60px;
|
||||
background-color: #b2b2b2;
|
||||
height: 60px;
|
||||
}
|
||||
|
||||
.role-talent>div:nth-child(1) {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
background-image: url('img/技能图标.png');
|
||||
position: absolute;
|
||||
left: -30px;
|
||||
z-index: 9;
|
||||
}
|
||||
|
||||
.role-talent-bg {
|
||||
background-image: url(img/条纹.png);
|
||||
background-color: #b2b2b2;
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
height: 60px;
|
||||
z-index: 0;
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
.role-talent>div:nth-child(2) {
|
||||
margin-left: 30px;
|
||||
z-index: 9;
|
||||
font-family: 'MiSans-Demibold';
|
||||
}
|
||||
|
||||
.role-talent>div:nth-child(3) {
|
||||
margin-left: 30px;
|
||||
z-index: 9;
|
||||
font-family: 'MiSans-Regular';
|
||||
}
|
||||
|
||||
.role-talent-text {
|
||||
/*display: flex;*/
|
||||
width: 1440px;
|
||||
justify-content: left;
|
||||
margin: 0 92px;
|
||||
font-family: 'MiSans-Regular';
|
||||
font-size: 36px;
|
||||
color: #2a2625;
|
||||
margin-top: 15px;
|
||||
margin-bottom: 15px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
.role-talent-extra,.role-talent-attribute{
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
margin: 0 30px 0 60px;
|
||||
padding-left: 30px;
|
||||
font-family: 'MiSans-Demibold';
|
||||
font-size: 36px;
|
||||
color: #2a2625;
|
||||
margin-top: 30px;
|
||||
margin-bottom: 30px;
|
||||
background-color: #d9d9d9;
|
||||
}
|
||||
|
||||
.role-talent-extra>.role-talent-extraInfo:nth-child(2){
|
||||
font-family: 'MiSans-Regular';
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
.role-talent-attribute>.role-talent-extraInfo:nth-child(2){
|
||||
font-family: 'MiSans-Regular';
|
||||
margin-left: 30px;
|
||||
}
|
||||
.role-talent-attribute{
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
.textColor {
|
||||
background: linear-gradient(to right, rgba(253,78,53) 0%, rgba(225,42,110)) 100%;
|
||||
-webkit-background-clip: text;
|
||||
color: transparent;
|
||||
font-weight: 600;
|
||||
}
|
208
resources/sr/character/index.html
Normal file
@ -0,0 +1,208 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
|
||||
<link rel="shortcut icon" href="#"/>
|
||||
<link rel="stylesheet" type="text/css" href="{{_layout_path}}sr/character/index.css?v=1.0"/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="border"></div>
|
||||
<div class="icon_left"></div>
|
||||
<div class="icon_right"></div>
|
||||
<div class="icon_left_bottom"></div>
|
||||
<div class="icon_right_bottom"></div>
|
||||
<div class="background_Tm"></div>
|
||||
<div class="body-top">
|
||||
<div class="body-top-left">
|
||||
<div>
|
||||
<img src="{{_layout_path}}sr/{{portrait}}" alt="">
|
||||
</div>
|
||||
<div>
|
||||
<img src="{{_layout_path}}sr/{{portrait}}" alt="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="body-top-zz">
|
||||
<img src="{{_layout_path}}sr/character/img/条纹.png" alt="">
|
||||
</div>
|
||||
<div class="body-top-right">
|
||||
<div class="body-top-right-name">
|
||||
<div>
|
||||
<div>{{name}}</div>
|
||||
<div class="body-top-right-star">
|
||||
<% for(var i = 0; i < rarity; i++){ %>
|
||||
<div class="body-top-right-star-img">
|
||||
<img src="{{_layout_path}}sr/character/img/星.png" alt="">
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="body-top-right-name-attribute">
|
||||
<div>
|
||||
<img src="{{_layout_path}}sr/character/img/命途/{{path}}.png" alt="">
|
||||
</div>
|
||||
<div>
|
||||
<img src="{{_layout_path}}sr/character/img/属性/{{element}}.png" alt="">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="body-top-right-roleInfo">
|
||||
<div class="body-top-right-roleInfo-item">
|
||||
<div>
|
||||
<div>命途</div>
|
||||
<div class="fontFamily_Medium">{{path}}</div>
|
||||
</div>
|
||||
<div>
|
||||
<div>属性</div>
|
||||
<div class="fontFamily_Medium">{{element}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="body-top-right-roleInfo-item">
|
||||
<div>
|
||||
<div>派系</div>
|
||||
<div class="fontFamily_Medium">{{factions}}</div>
|
||||
</div>
|
||||
<div>
|
||||
<div>所属</div>
|
||||
<div class="fontFamily_Medium">{{affiliation}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="body-top-right-roleInfo-item">
|
||||
<div style="width: 100%;">
|
||||
<div>配音</div>
|
||||
<div>中:{{cncv}} / 日:{{jpcv}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="body-top-right-roleInfo-list">
|
||||
{{each baseAttr list}}
|
||||
<div>
|
||||
<div>{{list.num}}</div>
|
||||
<div>{{list.name}}</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
<div class="cvsSet">
|
||||
<div >xiaoyao-cvs</div>
|
||||
<div class="fontFamily_Regular">制作</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="body-top-right-roleInfo-list">
|
||||
{{each growAttr list}}
|
||||
<div>
|
||||
<div></div>
|
||||
<div>{{list.num}}</div>
|
||||
<div>{{list.name}}</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="body-content">
|
||||
<div class="role-title">
|
||||
<div>
|
||||
<img src="{{_layout_path}}sr/character/img/星2.png" alt="">
|
||||
</div>
|
||||
<div >升级消耗(Lv1-Lv80)</div>
|
||||
<div>
|
||||
<img src="{{_layout_path}}sr/character/img/星2.png" alt="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="role-levet">
|
||||
<div class="role-levet-left">
|
||||
{{each materials list}}
|
||||
<div class="roleInfo-item">
|
||||
<div class="infoColor{{list.rarity}}"></div>
|
||||
<div><img src="{{_layout_path}}sr/{{list.icon}}" alt=""></div>
|
||||
<div>{{list.name}}</div>
|
||||
<div>×{{list.num}}</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
<!-- <div class="role-levet-right">-->
|
||||
<!-- <div class="role-levet-right-bg"></div>-->
|
||||
<!-- <div>升级消耗</div>-->
|
||||
<!-- <div>(Lv1-Lv80)</div>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
<div class="role-title">
|
||||
<div>
|
||||
<img src="{{_layout_path}}sr/character/img/星2.png" alt="">
|
||||
</div>
|
||||
<div >角色行迹</div>
|
||||
<div>
|
||||
<img src="{{_layout_path}}sr/character/img/星2.png" alt="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="role-levet">
|
||||
{{each skillMaterial list}}
|
||||
<div class="roleInfo-item">
|
||||
<div class="infoColor{{list.rarity}}"></div>
|
||||
<div><img src="{{_layout_path}}sr/{{list.icon}}" alt=""></div>
|
||||
<div>{{list.name}}</div>
|
||||
<div>×{{list.num}}</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
{{each skillsData list}}
|
||||
<div class="role-talent">
|
||||
<div>
|
||||
<img style="transform: scale(0.7);" src="{{_layout_path}}sr/{{list.icon}}" alt="">
|
||||
</div>
|
||||
<div>
|
||||
{{list.name}}
|
||||
</div>
|
||||
<div style="margin-right: {{list.max_level==1?"15px":0}}">
|
||||
{{list.type_text}} {{if(list.max_level!=1)}}(Lv1-Lv{{list.max_level}}){{/if}}
|
||||
</div>
|
||||
<div class="role-talent-bg"></div>
|
||||
</div>
|
||||
<div class="role-talent-text">
|
||||
{{@list.desc}}
|
||||
</div>
|
||||
{{each list.newAttributeBuff item}}
|
||||
{{if item.isType=="attribute"}}
|
||||
<div class="role-talent-{{item.isType}}">
|
||||
<div class="role-talent-extraInfo">{{item.key}}</div>
|
||||
<div class="role-talent-extraInfo">{{item.value}}</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="role-talent-{{item.isType}}">
|
||||
<div class="role-talent-extraInfo">{{item.key}}</div>
|
||||
<div class="role-talent-extraInfo"></div>
|
||||
</div>
|
||||
<div class="role-talent-text">
|
||||
{{@item.value}}
|
||||
</div>
|
||||
{{/if }}
|
||||
{{/each}}
|
||||
{{/each}}
|
||||
<div class="role-title">
|
||||
<div>
|
||||
<img src="{{_layout_path}}sr/character/img/星2.png" alt="">
|
||||
</div>
|
||||
<div>星魂</div>
|
||||
<div>
|
||||
<img src="{{_layout_path}}sr/character/img/星2.png" alt="">
|
||||
</div>
|
||||
</div>
|
||||
{{each eidolons list}}
|
||||
<div class="role-talent">
|
||||
<div>
|
||||
<img style="transform: scale(0.7);" src="{{_layout_path}}sr/{{list.icon}}" alt="">
|
||||
</div>
|
||||
<div>
|
||||
{{list.name}}
|
||||
</div>
|
||||
<div></div>
|
||||
<div class="role-talent-bg"></div>
|
||||
</div>
|
||||
<div class="role-talent-text">
|
||||
{{list.effect}}
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
1
resources/sr/character/三月七/data.json
Normal file
1
resources/sr/character/丹恒/data.json
Normal file
1
resources/sr/character/佩拉/data.json
Normal file
1
resources/sr/character/停云/data.json
Normal file
1
resources/sr/character/克拉拉/data.json
Normal file
1
resources/sr/character/卡芙卡/data.json
Normal file
1
resources/sr/character/姬子/data.json
Normal file
1
resources/sr/character/娜塔莎/data.json
Normal file
1
resources/sr/character/布洛妮娅/data.json
Normal file
1
resources/sr/character/希儿/data.json
Normal file
1
resources/sr/character/希露瓦/data.json
Normal file
1
resources/sr/character/开拓者 (火)/data.json
Normal file
1
resources/sr/character/开拓者 (物理)/data.json
Normal file
1
resources/sr/character/彦卿/data.json
Normal file
1
resources/sr/character/景元/data.json
Normal file
1
resources/sr/character/杰帕德/data.json
Normal file
1
resources/sr/character/桑博/data.json
Normal file
1
resources/sr/character/瓦尔特/data.json
Normal file
1
resources/sr/character/白露/data.json
Normal file
1
resources/sr/character/素裳/data.json
Normal file
1
resources/sr/character/罗刹/data.json
Normal file
1
resources/sr/character/艾丝妲/data.json
Normal file
1
resources/sr/character/虎克/data.json
Normal file
1
resources/sr/character/银狼/data.json
Normal file
1
resources/sr/character/阿兰/data.json
Normal file
1
resources/sr/character/青雀/data.json
Normal file
1
resources/sr/character/黑塔/data.json
Normal file
BIN
resources/sr/icon/avatar/1011.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
resources/sr/icon/avatar/999.png
Normal file
After Width: | Height: | Size: 5.2 KiB |
BIN
resources/sr/icon/skill/1001_basic_atk.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
resources/sr/icon/skill/1001_rank1.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
resources/sr/icon/skill/1001_rank2.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
resources/sr/icon/skill/1001_rank4.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
resources/sr/icon/skill/1001_rank6.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
resources/sr/icon/skill/1001_skill.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
resources/sr/icon/skill/1001_skilltree1.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
resources/sr/icon/skill/1001_skilltree2.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
resources/sr/icon/skill/1001_skilltree3.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
resources/sr/icon/skill/1001_talent.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
resources/sr/icon/skill/1001_technique.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
resources/sr/icon/skill/1001_ultimate.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
resources/sr/icon/skill/1001_ultimate1.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
resources/sr/icon/skill/1002_basic_atk.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
resources/sr/icon/skill/1002_rank1.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
resources/sr/icon/skill/1002_rank2.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
resources/sr/icon/skill/1002_rank4.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
resources/sr/icon/skill/1002_rank6.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
resources/sr/icon/skill/1002_skill.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
resources/sr/icon/skill/1002_skilltree1.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
resources/sr/icon/skill/1002_skilltree2.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
resources/sr/icon/skill/1002_skilltree3.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
resources/sr/icon/skill/1002_talent.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
resources/sr/icon/skill/1002_technique.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
resources/sr/icon/skill/1002_ultimate.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
resources/sr/icon/skill/1002_ultimate1.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
resources/sr/icon/skill/1003_basic_atk.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
resources/sr/icon/skill/1003_rank1.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
resources/sr/icon/skill/1003_rank2.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
resources/sr/icon/skill/1003_rank4.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
resources/sr/icon/skill/1003_rank6.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
resources/sr/icon/skill/1003_skill.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
resources/sr/icon/skill/1003_skilltree1.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
resources/sr/icon/skill/1003_skilltree2.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
resources/sr/icon/skill/1003_skilltree3.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
resources/sr/icon/skill/1003_talent.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
resources/sr/icon/skill/1003_technique.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
resources/sr/icon/skill/1003_ultimate.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
resources/sr/icon/skill/1003_ultimate1.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
resources/sr/icon/skill/1004_basic_atk.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
resources/sr/icon/skill/1004_rank1.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
resources/sr/icon/skill/1004_rank2.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
resources/sr/icon/skill/1004_rank4.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
resources/sr/icon/skill/1004_rank6.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
resources/sr/icon/skill/1004_skill.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
resources/sr/icon/skill/1004_skilltree1.png
Normal file
After Width: | Height: | Size: 20 KiB |