koishi-plugin-rocom 1.0.19 → 1.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/lib/atlas-service.js +1 -1
  2. package/lib/client.d.ts +10 -0
  3. package/lib/client.js +44 -8
  4. package/lib/commands/egg.js +1 -1
  5. package/lib/commands/merchant.d.ts +105 -0
  6. package/lib/commands/merchant.js +474 -54
  7. package/lib/commands/query.d.ts +18 -0
  8. package/lib/commands/query.js +446 -37
  9. package/lib/commands/share-code.js +47 -2
  10. package/lib/commands/tools.js +1 -1
  11. package/lib/commands/wiki.js +1 -1
  12. package/lib/egg-service.js +1 -1
  13. package/lib/element-colors.d.ts +3 -0
  14. package/lib/element-colors.js +34 -0
  15. package/lib/icon-metrics.d.ts +32 -0
  16. package/lib/icon-metrics.js +255 -0
  17. package/lib/index.d.ts +5 -0
  18. package/lib/index.js +11857 -188
  19. package/lib/merchant-catalog.d.ts +47 -0
  20. package/lib/merchant-catalog.js +193 -0
  21. package/lib/merchant-price-log.d.ts +63 -0
  22. package/lib/merchant-price-log.js +187 -0
  23. package/lib/merchant-service.d.ts +17 -3
  24. package/lib/merchant-service.js +79 -11
  25. package/lib/pet-data-service.d.ts +13 -0
  26. package/lib/pet-data-service.js +111 -2
  27. package/lib/player-service.js +2 -2
  28. package/lib/ranking-service.js +1 -1
  29. package/lib/render-templates/home/style.css +15 -14
  30. package/lib/render-templates/home-pets/index.html +80 -0
  31. package/lib/render-templates/home-pets/style.css +338 -0
  32. package/lib/render-templates/pet-detail-classic/index.html +151 -0
  33. package/lib/render-templates/pet-detail-classic/style.css +503 -0
  34. package/lib/render-templates/pet-detail-classic/texture2D/a_title.png +0 -0
  35. package/lib/render-templates/pet-detail-classic/texture2D/bg.jpg +0 -0
  36. package/lib/render-templates/pet-detail-classic/texture2D/footer.png +0 -0
  37. package/lib/render-templates/pet-detail-classic/texture2D/icon.png +0 -0
  38. package/lib/render-templates/pet-detail-classic/texture2D/img_head.png +0 -0
  39. package/lib/render-templates/pet-detail-classic/texture2D/jinhua_bg.png +0 -0
  40. package/lib/render-templates/pet-detail-classic/texture2D/level_icon.png +0 -0
  41. package/lib/render-templates/pet-detail-classic/texture2D/line.png +0 -0
  42. package/lib/render-templates/pet-detail-classic/texture2D/mask_bar.png +0 -0
  43. package/lib/render-templates/pet-detail-classic/texture2D/pet_bg.png +0 -0
  44. package/lib/render-templates/pet-detail-classic/texture2D/pet_rocom.png +0 -0
  45. package/lib/render-templates/pet-detail-classic/texture2D/pet_rocom_bg.png +0 -0
  46. package/lib/render-templates/pet-detail-classic/texture2D/poro_bar.png +0 -0
  47. package/lib/render-templates/pet-detail-classic/texture2D/right_jinhua.png +0 -0
  48. package/lib/render-templates/pet-detail-classic/texture2D/skill_bg.png +0 -0
  49. package/lib/render-templates/pet-detail-classic/texture2D/skill_mask.png +0 -0
  50. package/lib/render-templates/pet-detail-classic/texture2D/star.png +0 -0
  51. package/lib/render-templates/pet-detail-classic/texture2D/star_1.png +0 -0
  52. package/lib/render-templates/pet-detail-classic/texture2D/star_8.png +0 -0
  53. package/lib/render-templates/pet-detail-classic/texture2D/star_9.png +0 -0
  54. package/lib/render-templates/pet-detail-classic/texture2D/table.png +0 -0
  55. package/lib/render-templates/pet-detail-classic/texture2D/tags.png +0 -0
  56. package/lib/render-templates/pet-detail-classic/texture2D/title.png +0 -0
  57. package/lib/render-templates/pet-detail-classic/texture2D/top_bg.png +0 -0
  58. package/lib/render-templates/pet-detail-classic/texture2D/xuancai_overlay.png +0 -0
  59. package/lib/render-templates/pet-detail-classic/texture2D/yise_overlay.png +0 -0
  60. package/lib/render-templates/pet-detail-classic/texture2D/ys_bar.png +0 -0
  61. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/10.png +0 -0
  62. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/11.png +0 -0
  63. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/12.png +0 -0
  64. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/13.png +0 -0
  65. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/14.png +0 -0
  66. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/15.png +0 -0
  67. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/16.png +0 -0
  68. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/17.png +0 -0
  69. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/18.png +0 -0
  70. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/19.png +0 -0
  71. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/2.png +0 -0
  72. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/20.png +0 -0
  73. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/23.png +0 -0
  74. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/3.png +0 -0
  75. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/4.png +0 -0
  76. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/5.png +0 -0
  77. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/6.png +0 -0
  78. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/8.png +0 -0
  79. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/9.png +0 -0
  80. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//345/205/211.png +0 -0
  81. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//345/206/260.png +0 -0
  82. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//345/234/260.png +0 -0
  83. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//345/271/273.png +0 -0
  84. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//345/271/275.png +0 -0
  85. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/201/266.png +0 -0
  86. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/227/240.png +0 -0
  87. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/231/256/351/200/232.png +0 -0
  88. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/234/272/346/242/260.png +0 -0
  89. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/255/246.png +0 -0
  90. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/257/222.png +0 -0
  91. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/260/264.png +0 -0
  92. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//347/201/253.png +0 -0
  93. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//347/224/265.png +0 -0
  94. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//347/277/274.png +0 -0
  95. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//350/215/211.png +0 -0
  96. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//350/220/214.png +0 -0
  97. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//350/231/253.png +0 -0
  98. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//351/276/231.png +0 -0
  99. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/1.png +0 -0
  100. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/10.png +0 -0
  101. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/11.png +0 -0
  102. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/12.png +0 -0
  103. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/13.png +0 -0
  104. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/14.png +0 -0
  105. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/15.png +0 -0
  106. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/16.png +0 -0
  107. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/17.png +0 -0
  108. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/18.png +0 -0
  109. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/19.png +0 -0
  110. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/2.png +0 -0
  111. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/21.png +0 -0
  112. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/23.png +0 -0
  113. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/24.png +0 -0
  114. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/3.png +0 -0
  115. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/4.png +0 -0
  116. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/5.png +0 -0
  117. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/6.png +0 -0
  118. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/7.png +0 -0
  119. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/8.png +0 -0
  120. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/9.png +0 -0
  121. package/lib/render-templates/share-code-classic/assets/eit-logo.png +0 -0
  122. package/lib/render-templates/share-code-classic/assets/img_xingxingdi.png +0 -0
  123. package/lib/render-templates/share-code-classic/assets/roco_icon.png +0 -0
  124. package/lib/render-templates/share-code-classic/assets//345/255/227/344/275/223/Rocofontblack-Regular .ttf +0 -0
  125. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//345/205/211.png +0 -0
  126. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//345/206/260.png +0 -0
  127. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//345/234/260.png +0 -0
  128. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//345/271/273.png +0 -0
  129. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//345/271/275.png +0 -0
  130. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/201/266.png +0 -0
  131. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/227/240.png +0 -0
  132. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/231/256/351/200/232.png +0 -0
  133. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/234/272/346/242/260.png +0 -0
  134. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/255/246.png +0 -0
  135. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/257/222.png +0 -0
  136. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/260/264.png +0 -0
  137. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//347/201/253.png +0 -0
  138. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//347/224/265.png +0 -0
  139. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//347/277/274.png +0 -0
  140. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//350/215/211.png +0 -0
  141. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//350/220/214.png +0 -0
  142. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//350/231/253.png +0 -0
  143. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//351/276/231.png +0 -0
  144. package/lib/render-templates/share-code-classic/assets//347/201/253/346/274/206/345/215/260.png +0 -0
  145. package/lib/render-templates/share-code-classic/assets//347/253/213/347/273/230/350/203/214/346/231/257/346/241/206.png +0 -0
  146. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//345/205/211.png +0 -0
  147. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//345/206/260.png +0 -0
  148. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//345/234/260.png +0 -0
  149. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//345/245/207/345/274/202.png +0 -0
  150. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//345/271/273.png +0 -0
  151. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//345/271/275.png +0 -0
  152. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/201/266.png +0 -0
  153. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/231/256/351/200/232.png +0 -0
  154. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/234/272/346/242/260.png +0 -0
  155. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/255/246.png +0 -0
  156. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/257/222.png +0 -0
  157. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/260/264.png +0 -0
  158. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/261/241/346/237/223.png +0 -0
  159. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//347/201/253.png +0 -0
  160. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//347/224/265.png +0 -0
  161. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//347/277/274.png +0 -0
  162. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//350/215/211.png +0 -0
  163. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//350/220/214.png +0 -0
  164. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//350/231/253.png +0 -0
  165. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//351/246/226/351/242/206.png +0 -0
  166. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//351/276/231.png +0 -0
  167. package/lib/render-templates/share-code-classic/index.html +119 -0
  168. package/lib/render-templates/share-code-classic/style.css +646 -0
  169. package/lib/render-templates/yuanxing-shangren/merchant.html +479 -461
  170. package/lib/render-templates/yuanxing-shangren/today.html +407 -461
  171. package/lib/render.d.ts +3 -0
  172. package/lib/render.js +19 -3
  173. package/lib/send-image.js +10 -0
  174. package/lib/share-code-service.d.ts +36 -0
  175. package/lib/share-code-service.js +73 -0
  176. package/lib/ttf/rocom_origin.ttf +0 -0
  177. package/lib/types.d.ts +9 -1
  178. package/lib/user.d.ts +6 -0
  179. package/lib/wiki-catalog.js +1 -1
  180. package/lib/wiki-service.js +1 -1
  181. package/package.json +2 -1
  182. package/readme.md +3 -23
  183. package/lib/ttf/rocom_skill_origin.ttf +0 -0
@@ -0,0 +1,338 @@
1
+ @font-face {
2
+ font-family: "rocom-home";
3
+ src: url("../../ttf/HYWenHei-85W-1.ttf") format("truetype");
4
+ font-display: swap;
5
+ }
6
+
7
+ @font-face {
8
+ font-family: "rocom-skill";
9
+ src: url("../../ttf/fzlant.D5FI9Et0.ttf") format("truetype");
10
+ font-display: swap;
11
+ }
12
+
13
+ * {
14
+ box-sizing: border-box;
15
+ }
16
+
17
+ html,
18
+ body {
19
+ margin: 0;
20
+ padding: 0;
21
+ display: inline-block;
22
+ width: fit-content;
23
+ min-width: 0;
24
+ height: auto;
25
+ min-height: 0;
26
+ background: transparent;
27
+ color: #ffffff;
28
+ font-family: "rocom-home", "Microsoft YaHei", "PingFang SC", sans-serif;
29
+ }
30
+
31
+ .home-pets-page {
32
+ position: relative;
33
+ width: 1000px;
34
+ min-height: 760px;
35
+ overflow: hidden;
36
+ padding-bottom: 24px;
37
+ background: #efe6d2;
38
+ }
39
+
40
+ .page-bg-img {
41
+ position: absolute;
42
+ inset: 0 auto auto 0;
43
+ z-index: 0;
44
+ width: 1000px;
45
+ /* height 而非 min-height:背景图按容器高度裁切,避免大图溢出被算进 scrollHeight 导致截图尾部大片空白 */
46
+ height: 100%;
47
+ object-fit: cover;
48
+ object-position: top center;
49
+ pointer-events: none;
50
+ }
51
+
52
+ .home-top {
53
+ position: relative;
54
+ z-index: 1;
55
+ height: 228px;
56
+ }
57
+
58
+ .top-bg,
59
+ .title-fg {
60
+ position: absolute;
61
+ left: 0;
62
+ top: 0;
63
+ width: 1000px;
64
+ pointer-events: none;
65
+ }
66
+
67
+ .top-bg {
68
+ height: 250px;
69
+ object-fit: cover;
70
+ }
71
+
72
+ .title-fg {
73
+ height: 210px;
74
+ object-fit: contain;
75
+ }
76
+
77
+ .avatar-wrap {
78
+ position: absolute;
79
+ left: 31px;
80
+ top: 14px;
81
+ width: 152px;
82
+ height: 152px;
83
+ overflow: hidden;
84
+ border-radius: 50%;
85
+ filter: drop-shadow(0 8px 10px rgba(0, 0, 0, 0.22));
86
+ }
87
+
88
+ .avatar-img {
89
+ width: 152px;
90
+ height: 152px;
91
+ object-fit: cover;
92
+ }
93
+
94
+ .home-profile {
95
+ position: absolute;
96
+ left: 200px;
97
+ top: 70px;
98
+ right: 130px;
99
+ text-shadow: none;
100
+ }
101
+
102
+ .home-owner {
103
+ overflow: hidden;
104
+ color: #ffffff;
105
+ font-family: "rocom-skill", "rocom-home", "Microsoft YaHei", sans-serif;
106
+ font-size: 46px;
107
+ font-weight: 400;
108
+ line-height: 1;
109
+ text-overflow: ellipsis;
110
+ white-space: nowrap;
111
+ }
112
+
113
+ .home-uid {
114
+ margin-top: 11px;
115
+ color: #ffffff;
116
+ font-family: "rocom-skill", "rocom-home", "Microsoft YaHei", sans-serif;
117
+ font-size: 38px;
118
+ font-weight: 400;
119
+ line-height: 1;
120
+ }
121
+
122
+ .update-time {
123
+ position: absolute;
124
+ right: 28px;
125
+ top: 18px;
126
+ padding: 7px 14px;
127
+ border-radius: 999px;
128
+ background: rgba(255, 255, 255, 0.23);
129
+ color: #ffffff;
130
+ font-size: 15px;
131
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.28);
132
+ }
133
+
134
+ .pets-summary {
135
+ position: relative;
136
+ z-index: 1;
137
+ display: flex;
138
+ align-items: center;
139
+ justify-content: center;
140
+ gap: 28px;
141
+ margin: 18px 46px 0;
142
+ padding: 14px 22px;
143
+ border-radius: 18px;
144
+ background: rgba(42, 93, 16, 0.62);
145
+ font-size: 26px;
146
+ }
147
+
148
+ .pets-summary strong {
149
+ color: #ffff00;
150
+ font-weight: 400;
151
+ font-size: 30px;
152
+ padding: 0 4px;
153
+ }
154
+
155
+ .egg-summary strong {
156
+ color: #ffd24d;
157
+ }
158
+
159
+ .pets-content {
160
+ position: relative;
161
+ z-index: 1;
162
+ padding-top: 14px;
163
+ }
164
+
165
+ .pet-grid {
166
+ display: grid;
167
+ grid-template-columns: repeat(2, 486px);
168
+ justify-content: center;
169
+ gap: 6px 0;
170
+ margin-top: 12px;
171
+ }
172
+
173
+ .pet-card {
174
+ position: relative;
175
+ width: 486px;
176
+ height: 206px;
177
+ }
178
+
179
+ .card-bg {
180
+ position: absolute;
181
+ inset: 0;
182
+ width: 100%;
183
+ height: 100%;
184
+ }
185
+
186
+ .pet-avatar-box {
187
+ position: absolute;
188
+ left: 24px;
189
+ top: 28px;
190
+ width: 150px;
191
+ height: 150px;
192
+ }
193
+
194
+ .pet-avatar {
195
+ width: 150px;
196
+ height: 150px;
197
+ object-fit: contain;
198
+ }
199
+
200
+ .pet-star {
201
+ position: absolute;
202
+ left: -3px;
203
+ top: -30px;
204
+ width: 70px;
205
+ height: 70px;
206
+ object-fit: contain;
207
+ }
208
+
209
+ .pet-empty {
210
+ display: grid;
211
+ place-items: center;
212
+ border-radius: 16px;
213
+ background: rgba(255, 255, 255, 0.18);
214
+ color: rgba(255, 255, 255, 0.72);
215
+ font-size: 22px;
216
+ }
217
+
218
+ .level-badge {
219
+ position: absolute;
220
+ left: 38px;
221
+ top: 97px;
222
+ width: 82px;
223
+ height: 48px;
224
+ transform: rotate(10deg);
225
+ }
226
+
227
+ .level-badge img {
228
+ width: 74px;
229
+ height: 39px;
230
+ }
231
+
232
+ .level-badge span {
233
+ position: absolute;
234
+ left: 0;
235
+ top: 9px;
236
+ width: 74px;
237
+ text-align: center;
238
+ color: #ffffff;
239
+ font-size: 22px;
240
+ line-height: 1;
241
+ }
242
+
243
+ .pet-info {
244
+ position: absolute;
245
+ left: 186px;
246
+ top: 30px;
247
+ width: 282px;
248
+ }
249
+
250
+ .pet-name {
251
+ overflow: hidden;
252
+ color: #ffff00;
253
+ font-family: "rocom-skill", "rocom-home", "Microsoft YaHei", sans-serif;
254
+ font-size: 28px;
255
+ line-height: 1.1;
256
+ text-overflow: ellipsis;
257
+ white-space: nowrap;
258
+ }
259
+
260
+ .pet-name-text {
261
+ display: inline-block;
262
+ max-width: 190px;
263
+ overflow: hidden;
264
+ text-overflow: ellipsis;
265
+ white-space: nowrap;
266
+ vertical-align: bottom;
267
+ }
268
+
269
+ .egg-badge {
270
+ display: inline-block;
271
+ margin-left: 8px;
272
+ padding: 3px 10px;
273
+ border-radius: 999px;
274
+ background: #d84315;
275
+ color: #ffffff;
276
+ font-size: 17px;
277
+ font-style: normal;
278
+ line-height: 1.2;
279
+ vertical-align: middle;
280
+ }
281
+
282
+ .pet-attrs {
283
+ display: flex;
284
+ flex-wrap: wrap;
285
+ gap: 4px 10px;
286
+ margin-top: 12px;
287
+ }
288
+
289
+ .attr {
290
+ color: #ffffff;
291
+ font-size: 20px;
292
+ line-height: 1.2;
293
+ white-space: nowrap;
294
+ }
295
+
296
+ .attr i {
297
+ margin-right: 6px;
298
+ color: #ffe9a8;
299
+ font-style: normal;
300
+ }
301
+
302
+ .pet-variant {
303
+ display: inline-block;
304
+ margin-top: 10px;
305
+ padding: 3px 12px;
306
+ border-radius: 999px;
307
+ background: rgba(103, 58, 183, 0.85);
308
+ color: #ffffff;
309
+ font-size: 19px;
310
+ line-height: 1.2;
311
+ }
312
+
313
+ .pet-egg {
314
+ margin-top: 8px;
315
+ color: #ffe9a8;
316
+ font-size: 20px;
317
+ line-height: 1.2;
318
+ }
319
+
320
+ .empty-state {
321
+ margin: 40px 60px;
322
+ padding: 40px 24px;
323
+ border-radius: 20px;
324
+ background: rgba(42, 93, 16, 0.5);
325
+ color: #ffffff;
326
+ font-size: 26px;
327
+ text-align: center;
328
+ }
329
+
330
+ .pets-footer {
331
+ position: relative;
332
+ z-index: 1;
333
+ margin-top: 26px;
334
+ color: rgba(255, 255, 255, 0.75);
335
+ font-size: 18px;
336
+ text-align: center;
337
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.28);
338
+ }
@@ -0,0 +1,151 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=1200, initial-scale=1">
6
+ <title>精灵状态</title>
7
+ <link rel="stylesheet" href="{{_res_path}}render/pet-detail-classic/style.css">
8
+ </head>
9
+ <body>
10
+ <main class="pet-page">
11
+ <header class="page-header">
12
+ <img class="title-img" src="{{_res_path}}render/pet-detail-classic/texture2D/title.png" alt="">
13
+ <div class="page-title">精灵状态</div>
14
+ <div class="page-subtitle">UID{{uid}} · {{pets ? pets.length : 0}} 只</div>
15
+ </header>
16
+
17
+ {{if pets && pets.length > 0}}
18
+ <section class="pet-grid">
19
+ {{each pets pet}}
20
+ <article class="pet-card" style="--type-color: {{pet.typeColor}};">
21
+ <section class="pet-card-head">
22
+ <div class="pet-portrait">
23
+ <div class="pet-blob"></div>
24
+ <img class="pet-image" src="{{pet.iconUrl}}" alt="{{pet.name}}" data-fallback="{{pet.fallbackIconUrl}}" data-fallback2="{{pet.fallbackIconUrl2}}" onerror="if(this.dataset.fallback){this.src=this.dataset.fallback;this.dataset.fallback=''}else if(this.dataset.fallback2){this.src=this.dataset.fallback2;this.dataset.fallback2=''}else{this.onerror=null;this.src='{{_res_path}}render/pet-detail-classic/texture2D/img_head.png'}">
25
+ {{if pet.variantIcon}}
26
+ <img class="rare-star" src="{{_res_path}}{{pet.variantIcon}}" alt="">
27
+ {{/if}}
28
+ </div>
29
+
30
+ <div class="pet-summary">
31
+ <h2>{{pet.name}}</h2>
32
+ <div class="pet-meta">
33
+ <span>Lv.{{pet.level}}</span>
34
+ <span>{{pet.genderText}}</span>
35
+ {{if pet.natureText}}<span>{{pet.natureText}}</span>{{/if}}
36
+ {{if pet.voiceText}}<span>分贝 {{pet.voiceText}}{{if pet.voiceLabel}} {{pet.voiceLabel}}{{/if}}</span>{{/if}}
37
+ </div>
38
+ <div class="type-tags">
39
+ {{each pet.typeTags tag}}
40
+ <span class="type-tag" style="--tag-color: {{tag.color}};">
41
+ <img src="{{_res_path}}render/pet-detail-classic/texture2D/属性/{{tag.icon}}.png" alt="">
42
+ {{tag.name}}
43
+ </span>
44
+ {{/each}}
45
+ {{if pet.bloodTag}}
46
+ <span class="type-tag" style="--tag-color: {{pet.bloodTag.color}};">
47
+ <img src="{{_res_path}}render/pet-detail-classic/texture2D/血脉/{{pet.bloodTag.icon}}.png" alt="">
48
+ {{pet.bloodTag.name}}
49
+ </span>
50
+ {{/if}}
51
+ </div>
52
+ </div>
53
+ </section>
54
+
55
+ <div class="pet-info-column">
56
+ <section class="compact-section attr-section">
57
+ <div class="section-title">
58
+ <img src="{{_res_path}}render/pet-detail-classic/texture2D/a_title.png" alt="">
59
+ <span>精灵属性</span>
60
+ </div>
61
+ <div class="attr-table">
62
+ <div class="attr-head">属性</div>
63
+ <div class="attr-head">数值</div>
64
+ <div class="attr-head">个体</div>
65
+ <div class="attr-head">成长</div>
66
+ {{each pet.attributes attr}}
67
+ <div class="attr-name">{{attr.label}}</div>
68
+ <div class="attr-value">{{attr.value}}</div>
69
+ <div class="attr-value">{{attr.talent}}</div>
70
+ <div class="attr-value">{{attr.effort}}</div>
71
+ {{/each}}
72
+ </div>
73
+ </section>
74
+
75
+ <section class="compact-section feature-section">
76
+ <div class="section-title">
77
+ <img src="{{_res_path}}render/pet-detail-classic/texture2D/a_title.png" alt="">
78
+ <span>精灵特性</span>
79
+ </div>
80
+ {{if pet.feature}}
81
+ <div class="feature-row">
82
+ <img class="feature-icon" src="{{pet.featureIcon}}" alt="" data-fallback="{{pet.fallbackFeatureIcon}}" onerror="if(this.dataset.fallback){this.src=this.dataset.fallback;this.dataset.fallback=''}else{this.style.display='none'}">
83
+ <div class="feature-copy">
84
+ <div class="feature-name">{{pet.feature.name}}</div>
85
+ <div class="feature-desc">{{pet.feature.desc}}</div>
86
+ </div>
87
+ </div>
88
+ {{else}}
89
+ <div class="empty-text">暂无特性数据</div>
90
+ {{/if}}
91
+ </section>
92
+ </div>
93
+
94
+ <div class="pet-skill-column">
95
+ {{if pet.equipSkills && pet.equipSkills.length > 0}}
96
+ <section class="compact-section skill-section equip-section">
97
+ <div class="section-title">
98
+ <img src="{{_res_path}}render/pet-detail-classic/texture2D/a_title.png" alt="">
99
+ <span>装备技能</span>
100
+ <em>{{pet.equipSkills.length}}</em>
101
+ </div>
102
+ <div class="skill-grid equip-grid">
103
+ {{each pet.equipSkills skill}}
104
+ <div class="skill-chip" style="--skill-color: {{skill.typeColor}};">
105
+ <img class="skill-icon" src="{{skill.iconUrl}}" alt="{{skill.name}}" data-fallback="{{skill.fallbackIconUrl}}" data-placeholder="{{skill.placeholderIconUrl}}" onerror="if(this.dataset.fallback){this.src=this.dataset.fallback;this.dataset.fallback=''}else if(this.dataset.placeholder){this.src=this.dataset.placeholder;this.dataset.placeholder=''}else{this.onerror=null;this.src='{{_res_path}}render/pet-detail-classic/texture2D/icon.png'}">
106
+ <img class="skill-type" src="{{_res_path}}render/pet-detail-classic/texture2D/属性/{{skill.typeIcon}}.png" alt="{{skill.families}}" onerror="this.src='{{_res_path}}render/pet-detail-classic/texture2D/属性/无.png';this.onerror=null">
107
+ <div class="skill-name">{{skill.name}}</div>
108
+ <div class="skill-cost">{{skill.cost}}<img src="{{_res_path}}render/pet-detail-classic/texture2D/star.png" alt=""></div>
109
+ </div>
110
+ {{/each}}
111
+ </div>
112
+ </section>
113
+ {{/if}}
114
+
115
+ {{if pet.learnedSkills && pet.learnedSkills.length > 0}}
116
+ <section class="compact-section skill-section learned-section">
117
+ <div class="section-title">
118
+ <img src="{{_res_path}}render/pet-detail-classic/texture2D/a_title.png" alt="">
119
+ <span>已学技能</span>
120
+ <em>{{pet.learnedSkills.length}}</em>
121
+ </div>
122
+ <div class="skill-grid learned-grid">
123
+ {{each pet.learnedSkills skill}}
124
+ <div class="skill-chip learned-skill" style="--skill-color: {{skill.typeColor}};">
125
+ <img class="skill-icon" src="{{skill.iconUrl}}" alt="{{skill.name}}" data-fallback="{{skill.fallbackIconUrl}}" data-placeholder="{{skill.placeholderIconUrl}}" onerror="if(this.dataset.fallback){this.src=this.dataset.fallback;this.dataset.fallback=''}else if(this.dataset.placeholder){this.src=this.dataset.placeholder;this.dataset.placeholder=''}else{this.onerror=null;this.src='{{_res_path}}render/pet-detail-classic/texture2D/icon.png'}">
126
+ <img class="skill-type" src="{{_res_path}}render/pet-detail-classic/texture2D/属性/{{skill.typeIcon}}.png" alt="{{skill.families}}" onerror="this.src='{{_res_path}}render/pet-detail-classic/texture2D/属性/无.png';this.onerror=null">
127
+ <div class="skill-name">{{skill.name}}</div>
128
+ <div class="skill-cost">{{skill.cost}}<img src="{{_res_path}}render/pet-detail-classic/texture2D/star.png" alt=""></div>
129
+ </div>
130
+ {{/each}}
131
+ </div>
132
+ </section>
133
+ {{/if}}
134
+ </div>
135
+
136
+ {{if pet.errorText}}
137
+ <div class="panel-error">{{pet.errorText}}</div>
138
+ {{/if}}
139
+ </article>
140
+ {{/each}}
141
+ </section>
142
+ {{else}}
143
+ <section class="empty-panel">{{emptyText}}</section>
144
+ {{/if}}
145
+
146
+ <footer class="page-footer">
147
+ <img src="{{_res_path}}render/pet-detail-classic/texture2D/footer.png" alt="">
148
+ </footer>
149
+ </main>
150
+ </body>
151
+ </html>