Browse Source

N多功能新增与调整

1.新增装备属性:伤害加成,伤害减免,暴击避免,爆伤减免,移动速度,转生属性副本行进速度更改为移动速度
2.新增装备类型:饰品,裤子,鞋子,护腕
3.新增装备品质:多彩,多彩品质装备拥有独特的主被动技能
4.新增部分多彩品质装备(暂无产出途径)
5.调整战斗逻辑,适配新增属性和技能
6.调整护甲减伤比例(调低)
7.调整格挡属性数值(调低)
8.调整暴击率和暴击伤害数值随装备等级线性增长(1级为原来一半,100级与原来相等)
9.调整转生点对移动速度的加成(调低)
10.新增装备图标资源
11.装备图鉴显示方式调整
v1.0
许孟阳 2 weeks ago
parent
commit
158ae1da52
  1. BIN
      public/img/colorful.gif
  2. BIN
      public/img/equips/bracers/人参果裹布.png
  3. BIN
      public/img/equips/bracers/四不像.png
  4. BIN
      public/img/equips/bracers/多情腕.png
  5. BIN
      public/img/equips/bracers/新手.png
  6. BIN
      public/img/equips/bracers/毒蛇.png
  7. BIN
      public/img/equips/bracers/火晶环.png
  8. BIN
      public/img/equips/bracers/火神腕.png
  9. BIN
      public/img/equips/bracers/狸猫足印.png
  10. BIN
      public/img/equips/bracers/玩藕.png
  11. BIN
      public/img/equips/bracers/绣与骨.png
  12. BIN
      public/img/equips/bracers/美菩萨.png
  13. BIN
      public/img/equips/bracers/裹尸布.png
  14. BIN
      public/img/equips/bracers/降龙.png
  15. BIN
      public/img/equips/bracers/障目.png
  16. BIN
      public/img/equips/bracers/鹦鹉杯.png
  17. BIN
      public/img/equips/bracers/黑手.png
  18. BIN
      public/img/equips/jewelry/勾魂夺魂.png
  19. BIN
      public/img/equips/jewelry/太乙神器·四面塔.png
  20. BIN
      public/img/equips/jewelry/寒晶佩.png
  21. BIN
      public/img/equips/jewelry/月灵幻梦.png
  22. BIN
      public/img/equips/jewelry/未婚.png
  23. BIN
      public/img/equips/jewelry/梳妆镜.png
  24. BIN
      public/img/equips/jewelry/沙旦头饰.png
  25. BIN
      public/img/equips/jewelry/狮王手印.png
  26. BIN
      public/img/equips/jewelry/琉璃盘.png
  27. BIN
      public/img/equips/jewelry/白骨夫人的右耳环.png
  28. BIN
      public/img/equips/jewelry/真经.png
  29. BIN
      public/img/equips/jewelry/督战.png
  30. BIN
      public/img/equips/jewelry/紫金钵盂.png
  31. BIN
      public/img/equips/jewelry/良人.png
  32. BIN
      public/img/equips/jewelry/谎言.png
  33. BIN
      public/img/equips/jewelry/赤羚天禧.png
  34. BIN
      public/img/equips/jewelry/金钵盂.png
  35. BIN
      public/img/equips/jewelry/马鸣玉佩.png
  36. BIN
      public/img/equips/pants/五味.png
  37. BIN
      public/img/equips/pants/囚徒.png
  38. BIN
      public/img/equips/pants/奎英的百褶裙.png
  39. BIN
      public/img/equips/pants/新手.png
  40. BIN
      public/img/equips/pants/梦回龙宫.png
  41. BIN
      public/img/equips/pants/泣甲.png
  42. BIN
      public/img/equips/pants/管家服.png
  43. BIN
      public/img/equips/pants/藏经甲.png
  44. BIN
      public/img/equips/pants/饿鬼.png
  45. BIN
      public/img/equips/pants/鱼蓝.png
  46. BIN
      public/img/equips/pants/龙鳞胫甲.png
  47. BIN
      public/img/equips/shoes/九万里.png
  48. BIN
      public/img/equips/shoes/新手.png
  49. BIN
      public/img/equips/shoes/昆仑履.png
  50. BIN
      public/img/equips/shoes/浅夏紫灵.png
  51. BIN
      public/img/equips/shoes/灵官靴.png
  52. BIN
      public/img/equips/shoes/灵韵集能器.png
  53. BIN
      public/img/equips/shoes/犬齿鞋.png
  54. BIN
      public/img/equips/shoes/私奔.png
  55. BIN
      public/img/equips/shoes/红尘.png
  56. BIN
      public/img/equips/shoes/蛙将足.png
  57. BIN
      public/img/equips/shoes/血遁靴.png
  58. BIN
      public/img/equips/shoes/踏浪.jpg
  59. BIN
      public/img/equips/weapon/丈三.png
  60. BIN
      public/img/equips/weapon/九灵·元圣.png
  61. BIN
      public/img/equips/weapon/伤心刺.png
  62. BIN
      public/img/equips/weapon/六不像.png
  63. BIN
      public/img/equips/weapon/冷龙之心.png
  64. BIN
      public/img/equips/weapon/初恋.png
  65. BIN
      public/img/equips/weapon/初拥.png
  66. BIN
      public/img/equips/weapon/剑姬.png
  67. BIN
      public/img/equips/weapon/噩梦.png
  68. BIN
      public/img/equips/weapon/大铁城.png
  69. BIN
      public/img/equips/weapon/天照.png
  70. BIN
      public/img/equips/weapon/弑神.png
  71. BIN
      public/img/equips/weapon/斩马.png
  72. BIN
      public/img/equips/weapon/无遮.png
  73. BIN
      public/img/equips/weapon/暴雪.png
  74. BIN
      public/img/equips/weapon/杀意.png
  75. BIN
      public/img/equips/weapon/武气.png
  76. BIN
      public/img/equips/weapon/求爱.png
  77. BIN
      public/img/equips/weapon/流萤.png
  78. BIN
      public/img/equips/weapon/炎魔.png
  79. BIN
      public/img/equips/weapon/狸猫利刃.png
  80. BIN
      public/img/equips/weapon/砍头.png
  81. BIN
      public/img/equips/weapon/私语.png
  82. BIN
      public/img/equips/weapon/称霸.png
  83. BIN
      public/img/equips/weapon/银河裂.png
  84. BIN
      public/img/equips/weapon/青光.png
  85. BIN
      public/img/equips/weapon/鳌之毒.png
  86. BIN
      public/img/equips/weapon/鳍刺.png
  87. BIN
      public/img/equips/weapon/鸣血.png
  88. BIN
      public/img/equips/weapon/黑风.png
  89. BIN
      public/img/equips/weapon/黩武.png
  90. BIN
      public/img/equips/weapon/龙衔.png
  91. 36
      src/assets/css/base.scss
  92. 64
      src/components/equip-icon.vue
  93. 60
      src/components/equip.vue
  94. 3
      src/config/assets.ts
  95. 4
      src/config/base.ts
  96. 131
      src/config/beings.ts
  97. 64
      src/config/dungeon.ts
  98. 56
      src/config/equips/armor.ts
  99. 16
      src/config/equips/bean.ts
  100. 229
      src/config/equips/bracers.ts
  101. Some files were not shown because too many files have changed in this diff Show More

BIN
public/img/colorful.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
public/img/equips/bracers/人参果裹布.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
public/img/equips/bracers/四不像.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
public/img/equips/bracers/多情腕.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

BIN
public/img/equips/bracers/新手.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
public/img/equips/bracers/毒蛇.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
public/img/equips/bracers/火晶环.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

BIN
public/img/equips/bracers/火神腕.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
public/img/equips/bracers/狸猫足印.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
public/img/equips/bracers/玩藕.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
public/img/equips/bracers/绣与骨.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
public/img/equips/bracers/美菩萨.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

BIN
public/img/equips/bracers/裹尸布.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
public/img/equips/bracers/降龙.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
public/img/equips/bracers/障目.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

BIN
public/img/equips/bracers/鹦鹉杯.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
public/img/equips/bracers/黑手.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

BIN
public/img/equips/jewelry/勾魂夺魂.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
public/img/equips/jewelry/太乙神器·四面塔.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
public/img/equips/jewelry/寒晶佩.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

BIN
public/img/equips/jewelry/月灵幻梦.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
public/img/equips/jewelry/未婚.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
public/img/equips/jewelry/梳妆镜.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

BIN
public/img/equips/jewelry/沙旦头饰.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
public/img/equips/jewelry/狮王手印.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
public/img/equips/jewelry/琉璃盘.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
public/img/equips/jewelry/白骨夫人的右耳环.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
public/img/equips/jewelry/真经.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
public/img/equips/jewelry/督战.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
public/img/equips/jewelry/紫金钵盂.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

BIN
public/img/equips/jewelry/良人.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
public/img/equips/jewelry/谎言.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
public/img/equips/jewelry/赤羚天禧.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

BIN
public/img/equips/jewelry/金钵盂.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

BIN
public/img/equips/jewelry/马鸣玉佩.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
public/img/equips/pants/五味.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
public/img/equips/pants/囚徒.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

BIN
public/img/equips/pants/奎英的百褶裙.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
public/img/equips/pants/新手.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
public/img/equips/pants/梦回龙宫.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
public/img/equips/pants/泣甲.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

BIN
public/img/equips/pants/管家服.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

BIN
public/img/equips/pants/藏经甲.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

BIN
public/img/equips/pants/饿鬼.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
public/img/equips/pants/鱼蓝.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
public/img/equips/pants/龙鳞胫甲.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

BIN
public/img/equips/shoes/九万里.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
public/img/equips/shoes/新手.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
public/img/equips/shoes/昆仑履.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
public/img/equips/shoes/浅夏紫灵.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
public/img/equips/shoes/灵官靴.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
public/img/equips/shoes/灵韵集能器.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
public/img/equips/shoes/犬齿鞋.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
public/img/equips/shoes/私奔.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
public/img/equips/shoes/红尘.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
public/img/equips/shoes/蛙将足.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

BIN
public/img/equips/shoes/血遁靴.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
public/img/equips/shoes/踏浪.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
public/img/equips/weapon/丈三.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
public/img/equips/weapon/九灵·元圣.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
public/img/equips/weapon/伤心刺.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
public/img/equips/weapon/六不像.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
public/img/equips/weapon/冷龙之心.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
public/img/equips/weapon/初恋.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
public/img/equips/weapon/初拥.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
public/img/equips/weapon/剑姬.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
public/img/equips/weapon/噩梦.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
public/img/equips/weapon/大铁城.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

BIN
public/img/equips/weapon/天照.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
public/img/equips/weapon/弑神.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

BIN
public/img/equips/weapon/斩马.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
public/img/equips/weapon/无遮.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

BIN
public/img/equips/weapon/暴雪.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
public/img/equips/weapon/杀意.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
public/img/equips/weapon/武气.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
public/img/equips/weapon/求爱.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
public/img/equips/weapon/流萤.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
public/img/equips/weapon/炎魔.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
public/img/equips/weapon/狸猫利刃.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
public/img/equips/weapon/砍头.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

BIN
public/img/equips/weapon/私语.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
public/img/equips/weapon/称霸.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
public/img/equips/weapon/银河裂.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

BIN
public/img/equips/weapon/青光.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
public/img/equips/weapon/鳌之毒.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
public/img/equips/weapon/鳍刺.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
public/img/equips/weapon/鸣血.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

BIN
public/img/equips/weapon/黑风.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

BIN
public/img/equips/weapon/黩武.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
public/img/equips/weapon/龙衔.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

36
src/assets/css/base.scss

@ -138,8 +138,42 @@ button { @@ -138,8 +138,42 @@ button {
border-radius: 4px;
}
// .unique {
// background: linear-gradient(125deg, #c90e0d36, #5656d647, 40%, #867d1033, #2c846f4d) !important;
// }
.shabby {
color: #a1a1a1;
}
.ordinary {
color: #fff;
}
.artifact {
color: #ff00ff;
}
.epic {
color: #f78918;
}
.unique {
background: linear-gradient(125deg, #c90e0d36, #5656d647, 40%, #867d1033, #2c846f4d) !important;
color: #ff0000;
}
.colorful {
background-image: -webkit-linear-gradient(
left,
#eb24e1,
#fc2121 10%,
#ff7f00 20%,
#ffff00 30%,
#00ff00 40%,
#4cfdfd 50%,
#fc2121 60%,
#ff7f00 70%,
#ffff00 80%,
#00ff00 90%,
#4cfdfd 100%
);
-webkit-background-clip: text;
color: transparent;
}
.fade-enter-active,

64
src/components/equip-icon.vue

@ -1,8 +1,8 @@ @@ -1,8 +1,8 @@
<template>
<div class='icon' :style="{ 'box-shadow': 'inset 0 0 7px 2px ' + ((equip && equip.quality.color) || '#a1a1a1') }">
<img v-if="equip && isUnique(equip)" class="red-flash" :src="red_icon">
<span v-if="equip">
<img :src="equips_icon_path + equip.base.icon">
<div :class="['icon', equip?.quality.quality]">
<img v-if="src" class="red-flash" :src="src">
<span class="equip" v-if="equip">
<img class="img" :src="equips_icon_path + equip.base.icon">
<div class="lv" v-if="equip.lv">lv{{ equip.lv }}</div>
</span>
</div>
@ -12,11 +12,25 @@ @@ -12,11 +12,25 @@
import { useStore } from "vuex";
import { reactive, onMounted, ref, computed } from "vue";
import { useI18n } from "vue3-i18n";
import { qualitys, equips_icon_path, red_icon } from "@/config";
import { qualitys, equips_icon_path, red_gif, colorful_gif } from "@/config";
const { t } = useI18n();
const { state, commit, dispatch } = useStore();
const src = computed(() => {
if (!prop.equip) {
return false;
}
const quality = prop.equip.quality.quality;
if (quality == qualitys[4]) {
return red_gif;
}
if (quality == qualitys[5]) {
return colorful_gif;
}
return null;
})
const prop = defineProps({
equip: {
type: Object,
@ -29,7 +43,7 @@ const isUnique = (equip) => { @@ -29,7 +43,7 @@ const isUnique = (equip) => {
return false;
}
const quality = equip.quality.quality;
return quality && quality == qualitys[4];
return quality && (quality == qualitys[4] || quality == qualitys[5]);
}
const iconClass = computed(() => {
@ -42,6 +56,22 @@ const iconClass = computed(() => { @@ -42,6 +56,22 @@ const iconClass = computed(() => {
onMounted(() => { });
</script>
<style lang="scss" scoped>
.shabby {
box-shadow: inset 0 0 7px 2px #a1a1a1b8 !important;
}
.ordinary {
box-shadow: inset 0 0 7px 2px #ffffffb8 !important;
}
.artifact {
box-shadow: inset 0 0 7px 2px #ff00ffb8 !important;
}
.epic {
box-shadow: inset 0 0 7px 2px #f78918b8 !important;
}
.icon {
width: 3.5rem;
height: 3.5rem;
@ -51,6 +81,22 @@ onMounted(() => { }); @@ -51,6 +81,22 @@ onMounted(() => { });
justify-content: center;
border-radius: 0.3rem;
position: relative;
box-shadow: inset 0 0 7px 2px #a1a1a1b8;
.red-flash {
position: absolute;
width: 100%;
height: 100%;
}
.img {
left: 15%;
top: 15%;
position: absolute;
background: #000;
width: 70%;
height: 70%;
}
.lv {
position: absolute;
@ -61,11 +107,7 @@ onMounted(() => { }); @@ -61,11 +107,7 @@ onMounted(() => { });
}
}
.red-flash {
position: absolute;
width: 100%;
height: 100%;
}
@media only screen and (max-width: 768px) {
.icon {

60
src/components/equip.vue

@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
<template>
<div class="equipPanel" :style="{ 'box-shadow': ' 0 0 5px 5px ' + equip.quality.color + 'b8' }" v-if="equip">
<div :class="['equipPanel', 'shadow-' + equip.quality.quality]" v-if="equip">
<div class="title">
<EquipIcon :equip="equip" />
<div class='name' :style="{ color: equip.quality.color }">
<div class='name' :class="equip.quality.quality">
{{ t(equip.type + '.' + equip.base.name + '.0') }}
{{ equip.strengthenLv ? '(+' + equip.strengthenLv + ')' : '' }}
</div>
</div>
<div class='type'>
<div :style="{ color: equip.quality.color }">{{ t('quality.' + equip.quality.quality) }}</div>
<div :class="equip.quality.quality">{{ t('quality.' + equip.quality.quality) }}</div>
<div>{{ t(equip.type + '.type') }}</div>
</div>
<div class='lv'>
@ -19,10 +19,18 @@ @@ -19,10 +19,18 @@
<span>
{{ t(v.type + '.0') }} : {{ v.showVal }}
</span>
<span v-if="equip.sample">
[{{ v.min }} - {{ v.max }}]
</span>
<span style="color:#68d5ed" v-if="equip.strengthenLv">
(+{{ strengthenValue(v.value, equip.strengthenLv) - v.value }})
</span>
</div>
<div v-for="skill in skills" class="skill">
<span :class="skill.type">{{ t('skill.' + skill.type) }}</span>
<span>{{ t('skill.' + skill.name + '.0') }}</span>
<span>{{ skill.desc() }}</span>
</div>
</div>
<div class="extraEntry">
<div v-for="v in equip.extraEntry" :key="v.id">
@ -39,14 +47,18 @@ @@ -39,14 +47,18 @@
<script lang="ts" setup>
import { useStore } from "vuex";
import { reactive, onMounted, ref } from "vue";
import { reactive, onMounted, ref, computed } from "vue";
import { useI18n } from "vue3-i18n";
import EquipIcon from "./equip-icon.vue";
import { strengthenValue } from "@/tool"
import { strengthenValue, createEquipSkill } from "@/tool"
const { t } = useI18n();
const { state, commit, dispatch } = useStore();
const skills = computed(() => {
return createEquipSkill(prop.equip);
})
const prop = defineProps({
equip: {
type: Object,
@ -61,7 +73,32 @@ onMounted(() => { }); @@ -61,7 +73,32 @@ onMounted(() => { });
box-sizing: border-box;
}
.shadow-shabby {
box-shadow: 0 0 5px 5px #a1a1a1b8;
}
.shadow-ordinary {
box-shadow: 0 0 5px 5px #ffffffb8;
}
.shadow-artifact {
box-shadow: 0 0 5px 5px #ff00ffb8;
}
.shadow-epic {
box-shadow: 0 0 5px 5px #f78918b8;
}
.shadow-unique {
box-shadow: 0 0 5px 5px #ff0000b8;
}
.shadow-colorful {
box-shadow: 0 0 1px 1px #fc2121, 0 0 2px 1px #ff7f00, 0 0 3px 1px #ffff00, 0 0 4px 1px #00ff00, 0 0 5px 1px #4cfdfd, 0 0 6px 1px #3f61f7, 0 0 7px 1px #ff00ff;
}
.equipPanel {
color: #f1f1f1;
width: 20rem;
height: auto;
@ -108,6 +145,19 @@ onMounted(() => { }); @@ -108,6 +145,19 @@ onMounted(() => { });
div {
text-align: left;
}
.skill {
padding-top: 5px;
color: #2a862f;
.action {
color: #ba100f;
}
.passive {
color: #ebdc64;
}
}
}
.extraEntry {

3
src/config/assets.ts

@ -42,7 +42,8 @@ export const close_icon = root + '/img/close.png'; @@ -42,7 +42,8 @@ export const close_icon = root + '/img/close.png';
export const refresh_icon = root + '/img/re.png';
export const playerImg = root + '/img/player.png';
export const playerImg2 = root + '/img/player2.png';
export const red_icon = root + '/img/red.gif';
export const red_gif = root + '/img/red.gif';
export const colorful_gif = root + '/img/colorful.gif';
export const warning_icon = root + '/img/tip/warning.png';

4
src/config/base.ts

@ -8,9 +8,9 @@ export const reborn_point_coefficients = { @@ -8,9 +8,9 @@ export const reborn_point_coefficients = {
def: 2,
bloc: 2,
recoverSpeed: 4,
moveSpeed: 4,
moveSpeed: 3,
battleSpeed: 4,
};
export const player_move_time = 3000;
export const player_battle_time = 4000;
export const player_battle_time = 1000;
export const archive_name = 'transmigration_game_archive';

131
src/config/beings.ts

@ -0,0 +1,131 @@ @@ -0,0 +1,131 @@
import { initialWeapon, initialArmor, initialNeck, initialRing, initialJewelry, initialpants, initialshoes, initialbracers, Equip } from '@/config';
const monster_attr_factor = [0.9, 1, 1.15, 1.4];
export const type_monster = 'monster';
export const type_boss = 'boss';
export class Attribute {
lv: number = 1;
coins: number = 0;
curHp: number = 200;
hp: number = 200;
hpPercent: number = 0;
baseAtk: number = 0;
atk: number = 0;
atkPercent: number = 0;
def: number = 0;
defPercent: number = 0;
reducPercent: number = 0;
bloc: number = 0;
blocPercent: number = 0;
eva: number = 0;
crit: number = 0; //暴击率
critDmg: number = 150; // 初始暴击伤害150%
dmgPercent: number = 0; //伤害加成
dmgReduc: number = 0; //伤害减免
critAvoid: number = 0; //暴击避免
critDmgReduc: number = 0; //暴击伤害减免
moveSpeed: number = 0; //移动速度
dps: number = 0;
skill: string = 'Attack';
constructor(ra?: RebornAttribute) {
if (ra) {
this.hp += ra.hp;
this.atk += ra.atk;
this.def += ra.def;
this.bloc += ra.bloc;
this.crit += ra.crit;
this.critDmg += ra.critDmg;
this.moveSpeed += ra.moveSpeed;
}
}
}
export class Player {
lv: number = 1;
coins: number = 0;
weapon: Equip = initialWeapon();
armor: Equip = initialArmor();
neck: Equip = initialNeck();
ring: Equip = initialRing();
jewelry: Equip = initialJewelry();
pants: Equip = initialpants();
shoes: Equip = initialshoes();
bracers: Equip = initialbracers();
attribute: Attribute = new Attribute();
}
export class RebornAttribute {
hp: number = 0;
atk: number = 0;
crit: number = 0;
critDmg: number = 0;
def: number = 0;
bloc: number = 0;
recoverSpeed: number = 0;
moveSpeed: number = 0;
battleSpeed: number = 0;
}
export class RebornPoints extends RebornAttribute {
count: number = 0;
points: number = 0;
}
export class Monster extends Attribute {
difficulty: number;
type: string = type_monster;
equipRates: number[];
extraRate: number;
constructor(lv, difficulty) {
super();
this.lv = lv;
this.difficulty = difficulty;
const df = monster_attr_factor[this.difficulty];
this.baseAtk = Math.ceil(lv * lv ** 1.1 * (Math.random() * 1 + 2) * df);
this.atk = this.baseAtk;
this.hp = Math.ceil(lv * lv ** 1.1 * (Math.random() * 5 + 16) * df);
this.coins = Math.ceil(lv ** 1.16 * (Math.random() * 5 + 11) * df);
this.equipRates = [0.2 * df, 0.08 * df, 0.03 * df];
this.extraRate = 0;
}
}
export class BossMonster extends Monster {
type: string = type_boss;
constructor(lv, difficulty) {
super(lv, difficulty);
const df = monster_attr_factor[this.difficulty];
this.baseAtk = Math.ceil(lv * lv ** 1.1 * (Math.random() * 1 + 3) * df);
this.atk = this.baseAtk;
this.hp = Math.ceil(lv * lv ** 1.1 * (Math.random() * 5 + 30) * df);
this.coins = Math.ceil(lv ** 1.16 * (Math.random() * 10 + 28) * df);
this.equipRates = [0.25 - 0.05 * df, 0.55 - 0.15 * df, 0.15 + 0.15 * df, 0.05 + 0.05 * df];
this.extraRate = 0.02 * ((this.difficulty - 1) * 5 + 1);
}
}
export class Dungeon {
lv: number;
difficulty?: number;
monsters?: Monster[] = new Array();
needDps?: number;
constructor(lv, difficulty) {
this.lv = lv;
this.setDifficulty(difficulty);
}
setDifficulty(difficulty) {
const lv = this.lv;
this.difficulty = difficulty;
this.monsters = new Array();
for (let i = 0; i < 4; i++) {
this.monsters.push(new Monster(lv, difficulty));
}
this.monsters.push(new BossMonster(lv, difficulty));
this.needDps = lv * lv ** 1.3 * 2 * difficulty;
}
}
export const createdDungeons = () => {};

64
src/config/dungeon.ts

@ -1,64 +0,0 @@ @@ -1,64 +0,0 @@
const monster_attr_factor = [0.9, 1, 1.15, 1.4];
export class Monster {
lv: number;
difficulty: number;
type: string = 'monster';
atk?: number;
hp?: number;
coins?: number;
equipRates?: number[];
extraRate?: number;
constructor(lv, difficulty) {
this.lv = lv;
this.difficulty = difficulty;
this.init();
}
init() {
const lv = this.lv;
const df = monster_attr_factor[this.difficulty];
this.atk = Math.ceil(lv * lv ** 1.1 * (Math.random() * 1 + 2) * df);
this.hp = Math.ceil(lv * lv ** 1.1 * (Math.random() * 5 + 16) * df);
this.coins = Math.ceil(lv ** 1.16 * (Math.random() * 5 + 11) * df);
this.equipRates = [0.2 * df, 0.08 * df, 0.03 * df];
this.extraRate = 0;
}
}
export class BossMonster extends Monster {
type: string = 'boss';
init() {
const lv = this.lv;
const df = monster_attr_factor[this.difficulty];
this.atk = Math.ceil(lv * lv ** 1.1 * (Math.random() * 1 + 3) * df);
this.hp = Math.ceil(lv * lv ** 1.1 * (Math.random() * 5 + 30) * df);
this.coins = Math.ceil(lv ** 1.16 * (Math.random() * 10 + 28) * df);
this.equipRates = [0.25 - 0.05 * df, 0.55 - 0.15 * df, 0.15 + 0.15 * df, 0.05 + 0.05 * df];
this.extraRate = 0.02 * ((this.difficulty - 1) * 2 + 1);
}
}
export class Dungeon {
lv: number;
difficulty?: number;
monsters?: Monster[] = new Array();
needDps?: number;
constructor(lv, difficulty) {
this.lv = lv;
this.setDifficulty(difficulty);
}
setDifficulty(difficulty) {
const lv = this.lv;
this.difficulty = difficulty;
this.monsters = new Array();
for (let i = 0; i < 4; i++) {
this.monsters.push(new Monster(lv, difficulty));
}
this.monsters.push(new BossMonster(lv, difficulty));
this.needDps = lv * lv ** 1.3 * 2 * difficulty;
}
}
export const createdDungeons = () => {};

56
src/config/equips/armor.ts

@ -1,8 +1,10 @@ @@ -1,8 +1,10 @@
import { Entry, Quality, EquipBase, Equip } from './bean';
import { qualitys, entry_initor, extra_entry_num } from './constant';
const extraEntrys = ['atk', 'hp', 'def', 'defPercent', 'hpPercent'];
const coefficient = { shabby: 0.7, ordinary: 1, artifact: 1.5, epic: 2, unique: 2.2 };
const extraEntrys = ['atk', 'hp', 'def', 'defPercent', 'hpPercent', 'dmgReduc', 'critAvoid', 'critDmgReduc'];
const coefficient = { shabby: 0.7, ordinary: 1, artifact: 1.5, epic: 1.8, unique: 2, colorful: 2 };
export const armorColorfulCategorys = [];
export const armorUniqueCategorys = [
{
name: 'dispute',
@ -115,15 +117,16 @@ export const armorCategorys = [ @@ -115,15 +117,16 @@ export const armorCategorys = [
export const initialArmor = () => {
const type = 'armor';
const qualityBean = new Quality(qualitys[0], coefficient[qualitys[0]]);
const base = new EquipBase('initial', 'A_A3.png', [new Entry('def', 1, '+1', 100)]);
const extraEntry = [new Entry('hp', 10, '+10', 100)];
const base = new EquipBase('initial', 'A_A3.png', [new Entry('def', 1, '+1', 1, 1)]);
const extraEntry = [new Entry('hp', 10, '+10', 10, 10)];
return new Equip(type, 1, qualityBean, base, extraEntry);
};
export const createArmor = (quality, lv) => {
const type = 'armor';
const qualityBean = new Quality(quality, coefficient[quality]);
const base = createBase(quality, lv);
const category = getCategory(quality);
const base = createBase(quality, lv, category);
const extraEntry = new Array();
const extraEntryNum = extra_entry_num[quality];
for (let i = 0; i < extraEntryNum; i++) {
@ -140,9 +143,7 @@ export const armorExtraEntry = (quality, lv) => { @@ -140,9 +143,7 @@ export const armorExtraEntry = (quality, lv) => {
return entry;
};
const createBase = (quality, lv) => {
const array = quality == 'unique' ? armorUniqueCategorys : armorCategorys;
const category = array[Math.floor(Math.random() * array.length)];
const createBase = (quality, lv, category) => {
const entry = new Array();
category.entry.forEach((item) => {
const initor = entry_initor[item.type];
@ -151,3 +152,42 @@ const createBase = (quality, lv) => { @@ -151,3 +152,42 @@ const createBase = (quality, lv) => {
});
return new EquipBase(category.name, category.icon, entry);
};
const getCategory = (quality) => {
let categorys = armorCategorys;
switch (quality) {
case qualitys[4]:
categorys = armorUniqueCategorys;
break;
case qualitys[5]:
categorys = armorColorfulCategorys;
break;
}
return categorys[Math.floor(Math.random() * categorys.length)];
};
const armorSample = (quality, category): Equip => {
const type = 'armor';
const lv = 100;
const qualityBean = new Quality(quality, coefficient[quality]);
const base = createBase(quality, lv, category);
const extraEntry = new Array();
return new Equip(type, lv, qualityBean, base, extraEntry);
};
const armorSamples = {
colorful: new Array(),
unique: new Array(),
epic: new Array(),
artifact: new Array(),
};
armorColorfulCategorys.forEach((item) => {
armorSamples.colorful.push(armorSample('colorful', item));
});
armorUniqueCategorys.forEach((item) => {
armorSamples.unique.push(armorSample('unique', item));
});
armorCategorys.forEach((item) => {
armorSamples.epic.push(armorSample('epic', item));
armorSamples.artifact.push(armorSample('artifact', item));
});
export { armorSamples };

16
src/config/equips/bean.ts

@ -5,24 +5,28 @@ export class Entry { @@ -5,24 +5,28 @@ export class Entry {
value: number;
showVal: string;
percent: number;
max: number;
min: number;
constructor(type: string, value: number, showVal: string, percent: number) {
constructor(type: string, value: number, showVal: string, max: number, min: number) {
this.type = type;
this.value = value;
this.showVal = showVal;
this.percent = percent;
this.max = max;
this.min = min;
this.percent = Math.round(((value - min) / (max - min)) * 100);
}
}
export class Quality {
quality: string;
qualityCoefficient: number;
color: string;
// color: string;
extraEntryNum: number;
constructor(quality: string, coefficient: number) {
this.quality = quality;
this.qualityCoefficient = coefficient;
this.color = quality_collor[quality];
// this.color = quality_collor[quality];
this.extraEntryNum = extra_entry_num[quality];
}
}
@ -31,10 +35,12 @@ export class EquipBase { @@ -31,10 +35,12 @@ export class EquipBase {
name: string;
icon: string;
entry: Entry[];
constructor(name: string, icon: string, entry: Entry[]) {
skill?: string;
constructor(name: string, icon: string, entry: Entry[], skill?: string) {
this.name = name;
this.icon = icon;
this.entry = entry;
this.skill = skill;
}
}

229
src/config/equips/bracers.ts

@ -0,0 +1,229 @@ @@ -0,0 +1,229 @@
import { Entry, Quality, EquipBase, Equip } from './bean';
import { qualitys, entry_initor, extra_entry_num } from './constant';
const extraEntrys = ['atk', 'crit', 'critDmg', 'hp', 'def', 'atkPercent', 'defPercent', 'hpPercent'];
const coefficient = { shabby: 0.6, ordinary: 0.9, artifact: 1.3, epic: 1.6, unique: 1.8, colorful: 1.8 };
export const bracersColorfulCategorys = [
{
name: 'shuzhuang',
icon: 'bracers/梳妆镜.png',
entry: [
{ type: 'atk', valCoefficient: 1 },
{ type: 'hp', valCoefficient: 0.7 },
{ type: 'def', valCoefficient: 0.4 },
],
skill: 'JHSY',
},
{
name: 'liulipan',
icon: 'bracers/琉璃盘.png',
entry: [
{ type: 'atk', valCoefficient: 0.6 },
{ type: 'hp', valCoefficient: 1.5 },
],
skill: 'Liulipan',
},
{
name: 'ghdp',
icon: 'bracers/勾魂夺魂.png',
entry: [
{ type: 'critDmg', valCoefficient: 1 },
{ type: 'crit', valCoefficient: 0.4 },
{ type: 'atk', valCoefficient: 0.5 },
],
skill: 'CritFear',
},
{
name: 'youerhuan',
icon: 'bracers/白骨夫人的右耳环.png',
entry: [
{ type: 'critDmg', valCoefficient: 1.5 },
{ type: 'atk', valCoefficient: 0.8 },
],
skill: 'Vampire1',
},
{
name: 'jingboyu',
icon: 'bracers/金钵盂.png',
entry: [
{ type: 'atk', valCoefficient: 0.8 },
{ type: 'hp', valCoefficient: 0.6 },
{ type: 'def', valCoefficient: 0.6 },
],
skill: 'Prototype',
},
{
name: 'zijingboyu',
icon: 'bracers/紫金钵盂.png',
entry: [
{ type: 'atk', valCoefficient: 0.8 },
{ type: 'hp', valCoefficient: 0.6 },
{ type: 'def', valCoefficient: 0.6 },
],
skill: 'Fate',
},
];
export const bracersUniqueCategorys = [
{
name: 'duoqing',
icon: 'bracers/多情腕.png',
entry: [
{ type: 'atk', valCoefficient: 1 },
{ type: 'hp', valCoefficient: 0.8 },
{ type: 'def', valCoefficient: 0.9 },
],
},
{
name: 'wano',
icon: 'bracers/玩藕.png',
entry: [
{ type: 'critDmg', valCoefficient: 1.5 },
{ type: 'crit', valCoefficient: 0.5 },
{ type: 'atk', valCoefficient: 0.8 },
],
},
{
name: 'rsggu',
icon: 'bracers/人参果裹布.png',
entry: [
{ type: 'critDmg', valCoefficient: 1.2 },
{ type: 'dmgPercent', valCoefficient: 1.0 },
{ type: 'atk', valCoefficient: 0.7 },
],
},
{
name: 'yingwu',
icon: 'bracers/鹦鹉杯.png',
entry: [
{ type: 'critDmg', valCoefficient: 1.6 },
{ type: 'atk', valCoefficient: 1.6 },
],
},
{
name: 'meipusa',
icon: 'bracers/美菩萨.png',
entry: [
{ type: 'dmgPercent', valCoefficient: 1.2 },
{ type: 'def', valCoefficient: 0.9 },
{ type: 'hp', valCoefficient: 1.2 },
],
},
];
export const bracersCategorys = [
{
name: 'guoshi',
icon: 'bracers/裹尸布.png',
entry: [
{ type: 'def', valCoefficient: 0.9 },
{ type: 'hp', valCoefficient: 0.6 },
{ type: 'atk', valCoefficient: 0.5 },
],
},
{
name: 'xiuyugu',
icon: 'bracers/绣与骨.png',
entry: [
{ type: 'crit', valCoefficient: 1.1 },
{ type: 'hp', valCoefficient: 0.5 },
{ type: 'atk', valCoefficient: 0.6 },
],
},
{
name: 'huoshen',
icon: 'bracers/火神腕.png',
entry: [
{ type: 'crit', valCoefficient: 1.1 },
{ type: 'hp', valCoefficient: 0.6 },
{ type: 'atk', valCoefficient: 0.5 },
],
},
{
name: 'heishou',
icon: 'bracers/黑手.png',
entry: [
{ type: 'crit', valCoefficient: 0.75 },
{ type: 'critDmg', valCoefficient: 0.5 },
{ type: 'hp', valCoefficient: 0.5 },
],
},
];
export const initialbracers = () => {
const type = 'bracers';
const qualityBean = new Quality(qualitys[0], coefficient[qualitys[0]]);
const base = new EquipBase('shiwangsy', 'bracers/新手.png', [new Entry('hp', 20, '+20', 20, 20)]);
const extraEntry = [new Entry('crit', 10, '+10%', 10, 10)];
return new Equip(type, 1, qualityBean, base, extraEntry);
};
export const createbracers = (quality, lv): Equip => {
const type = 'bracers';
const qualityBean = new Quality(quality, coefficient[quality]);
const category = getCategory(quality);
const base = createBase(quality, lv, category);
const extraEntry = new Array();
const extraEntryNum = extra_entry_num[quality];
for (let i = 0; i < extraEntryNum; i++) {
extraEntry.push(bracersExtraEntry(quality, lv));
}
return new Equip(type, lv, qualityBean, base, extraEntry);
};
export const bracersExtraEntry = (quality, lv) => {
const type = extraEntrys[Math.floor(Math.random() * extraEntrys.length)];
const initor = entry_initor[type];
const qualityCoefficient = coefficient[quality];
const entry = initor(lv, qualityCoefficient);
return entry;
};
const createBase = (quality, lv, category) => {
const entry = new Array();
category.entry.forEach((item) => {
const initor = entry_initor[item.type];
const qualityCoefficient = coefficient[quality];
entry.push(initor(lv, qualityCoefficient, item.valCoefficient));
});
return new EquipBase(category.name, category.icon, entry, category.skill);
};
const getCategory = (quality) => {
let categorys = bracersCategorys;
switch (quality) {
case qualitys[4]:
categorys = bracersUniqueCategorys;
break;
case qualitys[5]:
categorys = bracersColorfulCategorys;
break;
}
return categorys[Math.floor(Math.random() * categorys.length)];
};
const bracersSample = (quality, category): Equip => {
const type = 'bracers';
const lv = 100;
const qualityBean = new Quality(quality, coefficient[quality]);
const base = createBase(quality, lv, category);
const extraEntry = new Array();
return new Equip(type, lv, qualityBean, base, extraEntry);
};
const bracersSamples = {
colorful: new Array(),
unique: new Array(),
epic: new Array(),
artifact: new Array(),
};
bracersColorfulCategorys.forEach((item) => {
bracersSamples.colorful.push(bracersSample('colorful', item));
});
bracersUniqueCategorys.forEach((item) => {
bracersSamples.unique.push(bracersSample('unique', item));
});
bracersCategorys.forEach((item) => {
bracersSamples.epic.push(bracersSample('epic', item));
bracersSamples.artifact.push(bracersSample('artifact', item));
});
export { bracersSamples };

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save