@mumulinya167/ccm-pet-assets 2.0.0 → 2.0.2

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 (141) hide show
  1. package/assets/calico/calico-idle-follow.svg +324 -324
  2. package/assets/calico.svg +324 -324
  3. package/assets/clawd/LICENSE +22 -22
  4. package/assets/clawd/clawd-about-hero.svg +202 -202
  5. package/assets/clawd/clawd-collapse-sleep.svg +247 -247
  6. package/assets/clawd/clawd-error.svg +94 -94
  7. package/assets/clawd/clawd-happy.svg +160 -160
  8. package/assets/clawd/clawd-headphones-groove.svg +194 -194
  9. package/assets/clawd/clawd-idle-bubble.svg +180 -180
  10. package/assets/clawd/clawd-idle-collapse.svg +101 -101
  11. package/assets/clawd/clawd-idle-doze.svg +72 -72
  12. package/assets/clawd/clawd-idle-follow.svg +64 -64
  13. package/assets/clawd/clawd-idle-living.svg +195 -195
  14. package/assets/clawd/clawd-idle-look.svg +115 -115
  15. package/assets/clawd/clawd-idle-reading.svg +252 -252
  16. package/assets/clawd/clawd-idle-yawn.svg +158 -158
  17. package/assets/clawd/clawd-mini-alert.svg +129 -129
  18. package/assets/clawd/clawd-mini-crabwalk.svg +76 -76
  19. package/assets/clawd/clawd-mini-enter-sleep.svg +64 -64
  20. package/assets/clawd/clawd-mini-enter.svg +114 -114
  21. package/assets/clawd/clawd-mini-happy.svg +124 -124
  22. package/assets/clawd/clawd-mini-idle.svg +83 -83
  23. package/assets/clawd/clawd-mini-peek.svg +82 -82
  24. package/assets/clawd/clawd-mini-sleep.svg +112 -112
  25. package/assets/clawd/clawd-mini-typing.svg +153 -153
  26. package/assets/clawd/clawd-notification.svg +438 -438
  27. package/assets/clawd/clawd-react-annoyed.svg +167 -167
  28. package/assets/clawd/clawd-react-double-jump.svg +229 -229
  29. package/assets/clawd/clawd-react-double.svg +108 -108
  30. package/assets/clawd/clawd-react-drag.svg +102 -102
  31. package/assets/clawd/clawd-react-left.svg +102 -102
  32. package/assets/clawd/clawd-react-right.svg +102 -102
  33. package/assets/clawd/clawd-sleeping.svg +117 -117
  34. package/assets/clawd/clawd-static-base.svg +20 -20
  35. package/assets/clawd/clawd-wake.svg +277 -277
  36. package/assets/clawd/clawd-working-building.svg +329 -329
  37. package/assets/clawd/clawd-working-carrying.svg +178 -178
  38. package/assets/clawd/clawd-working-debugger.svg +245 -245
  39. package/assets/clawd/clawd-working-juggling.svg +183 -183
  40. package/assets/clawd/clawd-working-sweeping.svg +248 -248
  41. package/assets/clawd/clawd-working-thinking.svg +501 -501
  42. package/assets/clawd/clawd-working-typing-boss.svg +307 -307
  43. package/assets/clawd/clawd-working-typing.svg +273 -273
  44. package/assets/clawd/clawd-working-ultrathink.svg +166 -166
  45. package/assets/clawd/clawd-working-wizard.svg +356 -356
  46. package/assets/clawd.svg +64 -64
  47. package/assets/cloudling/cloudling/cloudling-attention.svg +379 -379
  48. package/assets/cloudling/cloudling/cloudling-building.svg +667 -667
  49. package/assets/cloudling/cloudling/cloudling-carrying.svg +604 -604
  50. package/assets/cloudling/cloudling/cloudling-conducting.svg +616 -616
  51. package/assets/cloudling/cloudling/cloudling-dozing-to-sleeping.svg +578 -578
  52. package/assets/cloudling/cloudling/cloudling-dozing.svg +358 -358
  53. package/assets/cloudling/cloudling/cloudling-error.svg +428 -428
  54. package/assets/cloudling/cloudling/cloudling-idle-reading.svg +658 -658
  55. package/assets/cloudling/cloudling/cloudling-idle-to-dozing.svg +568 -568
  56. package/assets/cloudling/cloudling/cloudling-idle-to-sleeping.svg +811 -811
  57. package/assets/cloudling/cloudling/cloudling-idle.svg +255 -255
  58. package/assets/cloudling/cloudling/cloudling-juggling.svg +648 -648
  59. package/assets/cloudling/cloudling/cloudling-mini-alert.svg +389 -389
  60. package/assets/cloudling/cloudling/cloudling-mini-crabwalk.svg +335 -335
  61. package/assets/cloudling/cloudling/cloudling-mini-enter-roll-in.svg +225 -225
  62. package/assets/cloudling/cloudling/cloudling-mini-enter-sleep.svg +231 -231
  63. package/assets/cloudling/cloudling/cloudling-mini-happy.svg +370 -370
  64. package/assets/cloudling/cloudling/cloudling-mini-idle.svg +279 -279
  65. package/assets/cloudling/cloudling/cloudling-mini-peek.svg +327 -327
  66. package/assets/cloudling/cloudling/cloudling-mini-sleep.svg +260 -260
  67. package/assets/cloudling/cloudling/cloudling-mini-typing.svg +691 -691
  68. package/assets/cloudling/cloudling/cloudling-notification.svg +493 -493
  69. package/assets/cloudling/cloudling/cloudling-react-drag.svg +83 -83
  70. package/assets/cloudling/cloudling/cloudling-sleeping-to-idle.svg +555 -555
  71. package/assets/cloudling/cloudling/cloudling-sleeping.svg +500 -500
  72. package/assets/cloudling/cloudling/cloudling-sweeping.svg +292 -292
  73. package/assets/cloudling/cloudling/cloudling-thinking.svg +719 -719
  74. package/assets/cloudling/cloudling/cloudling-typing.svg +354 -354
  75. package/assets/cloudling/cloudling-attention.svg +379 -379
  76. package/assets/cloudling/cloudling-building.svg +667 -667
  77. package/assets/cloudling/cloudling-carrying.svg +604 -604
  78. package/assets/cloudling/cloudling-conducting.svg +616 -616
  79. package/assets/cloudling/cloudling-dozing-to-sleeping.svg +578 -578
  80. package/assets/cloudling/cloudling-dozing.svg +358 -358
  81. package/assets/cloudling/cloudling-error.svg +428 -428
  82. package/assets/cloudling/cloudling-idle-reading.svg +658 -658
  83. package/assets/cloudling/cloudling-idle-to-dozing.svg +568 -568
  84. package/assets/cloudling/cloudling-idle-to-sleeping.svg +811 -811
  85. package/assets/cloudling/cloudling-idle.svg +255 -255
  86. package/assets/cloudling/cloudling-juggling.svg +648 -648
  87. package/assets/cloudling/cloudling-mini-alert.svg +389 -389
  88. package/assets/cloudling/cloudling-mini-crabwalk.svg +335 -335
  89. package/assets/cloudling/cloudling-mini-enter-roll-in.svg +225 -225
  90. package/assets/cloudling/cloudling-mini-enter-sleep.svg +231 -231
  91. package/assets/cloudling/cloudling-mini-happy.svg +370 -370
  92. package/assets/cloudling/cloudling-mini-idle.svg +279 -279
  93. package/assets/cloudling/cloudling-mini-peek.svg +327 -327
  94. package/assets/cloudling/cloudling-mini-sleep.svg +260 -260
  95. package/assets/cloudling/cloudling-mini-typing.svg +691 -691
  96. package/assets/cloudling/cloudling-notification.svg +493 -493
  97. package/assets/cloudling/cloudling-react-drag.svg +83 -83
  98. package/assets/cloudling/cloudling-sleeping-to-idle.svg +555 -555
  99. package/assets/cloudling/cloudling-sleeping.svg +500 -500
  100. package/assets/cloudling/cloudling-sweeping.svg +292 -292
  101. package/assets/cloudling/cloudling-thinking.svg +719 -719
  102. package/assets/cloudling/cloudling-typing.svg +354 -354
  103. package/assets/cloudling.svg +255 -255
  104. package/assets/ghost-attention.svg +19 -19
  105. package/assets/ghost-carrying.svg +19 -19
  106. package/assets/ghost-collapsing.svg +19 -19
  107. package/assets/ghost-dozing.svg +23 -23
  108. package/assets/ghost-error.svg +19 -19
  109. package/assets/ghost-happy.svg +23 -23
  110. package/assets/ghost-idle.svg +11 -11
  111. package/assets/ghost-juggling.svg +19 -19
  112. package/assets/ghost-notification.svg +19 -19
  113. package/assets/ghost-react-double.svg +23 -23
  114. package/assets/ghost-react-drag.svg +23 -23
  115. package/assets/ghost-react-left.svg +19 -19
  116. package/assets/ghost-react-right.svg +19 -19
  117. package/assets/ghost-sleeping.svg +19 -19
  118. package/assets/ghost-sweeping.svg +19 -19
  119. package/assets/ghost-waking.svg +19 -19
  120. package/assets/ghost-yawning.svg +23 -23
  121. package/assets/ghost.svg +11 -11
  122. package/assets/robot-attention.svg +19 -19
  123. package/assets/robot-carrying.svg +19 -19
  124. package/assets/robot-collapsing.svg +19 -19
  125. package/assets/robot-dozing.svg +23 -23
  126. package/assets/robot-error.svg +19 -19
  127. package/assets/robot-happy.svg +23 -23
  128. package/assets/robot-idle.svg +11 -11
  129. package/assets/robot-juggling.svg +19 -19
  130. package/assets/robot-notification.svg +19 -19
  131. package/assets/robot-react-double.svg +23 -23
  132. package/assets/robot-react-drag.svg +23 -23
  133. package/assets/robot-react-left.svg +19 -19
  134. package/assets/robot-react-right.svg +19 -19
  135. package/assets/robot-sleeping.svg +19 -19
  136. package/assets/robot-sweeping.svg +19 -19
  137. package/assets/robot-waking.svg +19 -19
  138. package/assets/robot-yawning.svg +23 -23
  139. package/assets/robot.svg +11 -11
  140. package/manifest.json +280 -280
  141. package/package.json +1 -1
@@ -1,307 +1,307 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
2
- <!-- ✅ FINAL · clawd 老板皮肤定稿版 (2026-04-16 鹿鹿确认)
3
- 定稿 = v13. 后续 v14/v15 尝试加墨镜反光滑动被否, 画蛇添足, 留档不删
4
-
5
- 动作清单:
6
- - 踱步 pacing gait (左两腿 / 右两腿 交替抬, 周期 2.2s 气定神闲)
7
- - body-walk 身体起伏 + 左右重心转移 (锁相踱步)
8
- - 金币摆 (pivot 金币顶部挂点, rotate ±3°, 锁相 body-walk)
9
- - 雪茄摆 (pivot 手握端, rotate -150°±3°, 周期 2.8s 互质自主节奏)
10
- - 影子跟随 (translateX 跟 body-walk, scale+opacity 脉动)
11
- - 代码烟雾 (8 符号从火星飘起, 已在 v10 修好初始帧 bug)
12
- - 外层 rotate(+1°) 克制抬头气场
13
- - 墨镜 / V 形金链条 / 雪茄火星明灭 (v8 / v10 继承)
14
-
15
- v13 · v12 基础上修影子 (让影子跟身体走 + 改对相位)
16
- v12 → v13 修改:
17
- 1. 影子加 translateX 跟随 body-walk 左右晃:
18
- - 身体 25% 向右偏 +0.15 → 影子也 +0.15
19
- - 身体 75% 向左偏 -0.15 → 影子也 -0.15
20
- 2. scale/opacity 相位修正:
21
- - v12 错在: 身体抬起瞬间 (25%/75%) 影子变大+深, 反物理
22
- - v13 改: 身体下沉瞬间 (0%/50%/100%) 影子变大+深 (贴地重, 压得深)
23
- 身体抬起瞬间 (25%/75%) 影子变小+浅 (离地轻, 影子收敛)
24
- 3. 幅度保持克制 (scale ±1.5%, opacity 0.5↔0.52) — 身体本身起伏就小
25
-
26
- 其他保留 v12 (踱步 pacing gait / 金币摆 / 雪茄摆 / 代码烟雾)
27
-
28
- v11 → v12 修改:
29
- 1. 金币摆 (coin-sway):
30
- - pivot 金币顶部挂点 (12.7, 10.9275) — 链条汇合点, 模拟从链条挂下
31
- - rotate ±3°, 周期 1.1s + alternate = 来回 2.2s 锁相 body-walk
32
- - 金币外层包一层 g.coin-sway, 内层保持原 translate+scale
33
- 2. 雪茄摆 bug 修复:
34
- - v11 用 transform-box: fill-box + 百分比 origin
35
- SVG <g> 上浏览器 fill-box 支持不一致, 可能导致 animation 不生效
36
- - 改成 carrying/pack-swing 同款的绝对坐标 origin (1px 10.5px), 稳妥
37
- - 雪茄结构重构:
38
- * 去掉外层 <g transform="translate(1 10)">, rects 坐标直接 shift 到 (1..6, 10..11)
39
- * 内层新增 <g transform="rotate(-150 1 10.5)"> 做基础 -150° 旋转
40
- * 外层 .cigar-sway 用 CSS 叠加 ±3° 旋转, pivot 同样 (1, 10.5)
41
- * 两层 rotate 绕同一 pivot, 矩阵复合 = rotate(-150 ± 3°)
42
- 3. 火星全局坐标 (-2.9, 8.25) 不变 (验算: (5.5, 10.5) 绕 (1, 10.5) rotate(-150) = (-2.9, 8.25))
43
- codesmoke 起点保持不变
44
-
45
- 为什么金币 pivot 在顶部而不是中心:
46
- 物理上金币是从链条挂点吊下, 摆动轴 = 链条末端 = 金币顶部中心
47
- pivot 放金币底部会看起来像"金币从底部被钉住", 反物理
48
-
49
- 为什么金币周期对齐 body-walk (2.2s) 而不是错开:
50
- 金币挂在身上, 走路时自然应和身体律动, 不是独立节奏
51
- 错开反而显得金币有自主意识, 违和
52
- 雪茄是"大佬主动叼的", 有自主节奏 (2.8s 互质) 才像"悠着抽"
53
-
54
- 其他保留 v11 (踱步 pacing gait / body-walk / 阴影脉动 / 代码烟雾) -->
55
-
56
- <defs>
57
- <filter id="smoke-glow" x="-100%" y="-100%" width="300%" height="300%">
58
- <feGaussianBlur stdDeviation="0.3" result="glow"/>
59
- <feMerge>
60
- <feMergeNode in="glow"/>
61
- <feMergeNode in="glow"/>
62
- <feMergeNode in="SourceGraphic"/>
63
- </feMerge>
64
- </filter>
65
- <style>
66
- .body-walk {
67
- transform-origin: 7.5px 15px;
68
- animation: body-walk 2.2s infinite ease-in-out;
69
- }
70
- .step-left {
71
- animation: step-left 2.2s infinite ease-in-out;
72
- }
73
- .step-right {
74
- animation: step-right 2.2s infinite ease-in-out;
75
- }
76
- .coin-sway {
77
- transform-origin: 12.7px 10.9275px;
78
- animation: coin-sway 1.1s infinite alternate ease-in-out;
79
- }
80
- .cigar-sway {
81
- transform-origin: 1px 10.5px;
82
- animation: cigar-sway 2.8s infinite alternate ease-in-out;
83
- }
84
- .shadow-pulse {
85
- transform-origin: 7.5px 15.5px;
86
- animation: shadow-pulse 2.2s infinite ease-in-out;
87
- }
88
-
89
- @keyframes body-walk {
90
- 0%, 50%, 100% { transform: translate(0px, 0.5px); }
91
- 25% { transform: translate(0.15px, 0px); }
92
- 75% { transform: translate(-0.15px, 0px); }
93
- }
94
- @keyframes step-left {
95
- 0%, 15%, 35%, 100% { transform: translateY(0); }
96
- 25% { transform: translateY(-0.7px); }
97
- }
98
- @keyframes step-right {
99
- 0%, 65%, 85%, 100% { transform: translateY(0); }
100
- 75% { transform: translateY(-0.7px); }
101
- }
102
- @keyframes coin-sway {
103
- 0% { transform: rotate(-3deg); }
104
- 100% { transform: rotate(3deg); }
105
- }
106
- @keyframes cigar-sway {
107
- 0% { transform: rotate(-3deg); }
108
- 100% { transform: rotate(3deg); }
109
- }
110
- @keyframes shadow-pulse {
111
- 0%, 50%, 100% { transform: translate(0px, 0px) scale(1.015); opacity: 0.52; }
112
- 25% { transform: translate(0.15px, 0px) scale(1); opacity: 0.5; }
113
- 75% { transform: translate(-0.15px, 0px) scale(1); opacity: 0.5; }
114
- }
115
- </style>
116
- </defs>
117
-
118
- <rect class="shadow-pulse" id="ground-shadow" x="3" y="15" width="9" height="1" fill="#000000"/>
119
-
120
- <g transform="rotate(1 7.5 15)">
121
- <g id="master-group">
122
-
123
- <g id="legs" fill="#DE886D">
124
- <rect class="step-left" id="outer-left-leg" x="3" y="13" width="1" height="2"/>
125
- <rect class="step-left" id="inner-left-leg" x="5" y="13" width="1" height="2"/>
126
- <rect class="step-right" id="inner-right-leg" x="9" y="13" width="1" height="2"/>
127
- <rect class="step-right" id="outer-right-leg" x="11" y="13" width="1" height="2"/>
128
- </g>
129
-
130
- <g class="body-walk">
131
-
132
- <g id="body-parts" fill="#DE886D">
133
- <rect id="torso" x="2" y="6" width="11" height="7"/>
134
- <rect id="left-arm" x="0" y="9" width="2" height="2"/>
135
- <rect id="right-arm" x="13" y="9" width="2" height="2"/>
136
- </g>
137
-
138
- <g id="eyes-color-group" fill="#000000">
139
- <rect id="left-eye" x="4" y="8" width="1" height="2"/>
140
- <rect id="right-eye" x="10" y="8" width="1" height="2"/>
141
- </g>
142
-
143
- <g id="chain" fill="none" stroke="#FFD700" stroke-width="0.15">
144
- <circle cx="2.200" cy="8.800" r="0.22"/>
145
- <circle cx="2.856" cy="9.207" r="0.22"/>
146
- <circle cx="3.513" cy="9.607" r="0.22"/>
147
- <circle cx="4.169" cy="9.994" r="0.22"/>
148
- <circle cx="4.825" cy="10.361" r="0.22"/>
149
- <circle cx="5.481" cy="10.705" r="0.22"/>
150
- <circle cx="6.138" cy="11.019" r="0.22"/>
151
- <circle cx="6.794" cy="11.302" r="0.22"/>
152
- <circle cx="7.450" cy="11.550" r="0.22"/>
153
- <circle cx="8.106" cy="11.764" r="0.22"/>
154
- <circle cx="8.763" cy="11.944" r="0.22"/>
155
- <circle cx="9.419" cy="12.092" r="0.22"/>
156
- <circle cx="10.075" cy="12.211" r="0.22"/>
157
- <circle cx="10.731" cy="12.306" r="0.22"/>
158
- <circle cx="11.388" cy="12.382" r="0.22"/>
159
- <circle cx="12.044" cy="12.444" r="0.22"/>
160
- <circle cx="12.700" cy="12.500" r="0.22"/>
161
- <circle cx="12.800" cy="8.800" r="0.22"/>
162
- <circle cx="12.780" cy="9.716" r="0.22"/>
163
- <circle cx="12.760" cy="10.565" r="0.22"/>
164
- <circle cx="12.740" cy="11.305" r="0.22"/>
165
- <circle cx="12.720" cy="11.936" r="0.22"/>
166
- <circle cx="12.700" cy="12.500" r="0.22"/>
167
- </g>
168
-
169
- <g id="glasses" transform="translate(1.325 7.375) scale(0.65)">
170
- <g fill="#000000">
171
- <rect x="0" y="0" width="19" height="1"/>
172
- <rect x="0" y="1" width="8" height="1"/>
173
- <rect x="11" y="1" width="8" height="1"/>
174
- <rect x="0" y="2" width="8" height="1"/>
175
- <rect x="11" y="2" width="8" height="1"/>
176
- <rect x="1" y="3" width="6" height="1"/>
177
- <rect x="12" y="3" width="6" height="1"/>
178
- <rect x="2" y="4" width="4" height="1"/>
179
- <rect x="13" y="4" width="4" height="1"/>
180
- </g>
181
- <g fill="#FFFFFF">
182
- <rect x="5" y="1" width="1" height="1"/>
183
- <rect x="4" y="2" width="1" height="1"/>
184
- <rect x="16" y="1" width="1" height="1"/>
185
- <rect x="15" y="2" width="1" height="1"/>
186
- </g>
187
- </g>
188
-
189
- <g class="coin-sway">
190
- <g id="coin" transform="translate(11.1275 10.9275) scale(0.185)">
191
- <g fill="#CC6600">
192
- <rect x="6" y="0" width="5" height="1"/>
193
- <rect x="4" y="1" width="9" height="1"/>
194
- <rect x="3" y="2" width="11" height="1"/>
195
- <rect x="2" y="3" width="13" height="1"/>
196
- <rect x="1" y="4" width="15" height="2"/>
197
- <rect x="0" y="6" width="17" height="5"/>
198
- <rect x="1" y="11" width="15" height="2"/>
199
- <rect x="2" y="13" width="13" height="1"/>
200
- <rect x="3" y="14" width="11" height="1"/>
201
- <rect x="4" y="15" width="9" height="1"/>
202
- <rect x="6" y="16" width="5" height="1"/>
203
- </g>
204
- <g fill="#FFD700">
205
- <rect x="7" y="1" width="3" height="1"/>
206
- <rect x="5" y="2" width="7" height="1"/>
207
- <rect x="4" y="3" width="9" height="1"/>
208
- <rect x="3" y="4" width="11" height="1"/>
209
- <rect x="2" y="5" width="13" height="2"/>
210
- <rect x="1" y="7" width="15" height="3"/>
211
- <rect x="2" y="10" width="13" height="2"/>
212
- <rect x="3" y="12" width="11" height="1"/>
213
- <rect x="4" y="13" width="9" height="1"/>
214
- <rect x="5" y="14" width="7" height="1"/>
215
- <rect x="7" y="15" width="3" height="1"/>
216
- </g>
217
- <g fill="#FF9900">
218
- <rect x="8" y="4" width="1" height="9"/>
219
- <rect x="6" y="5" width="5" height="1"/>
220
- <rect x="6" y="6" width="1" height="1"/>
221
- <rect x="6" y="7" width="2" height="1"/>
222
- <rect x="7" y="8" width="1" height="1"/>
223
- <rect x="9" y="8" width="1" height="1"/>
224
- <rect x="9" y="9" width="2" height="1"/>
225
- <rect x="10" y="10" width="1" height="1"/>
226
- <rect x="6" y="11" width="5" height="1"/>
227
- </g>
228
- <g fill="#FFEE55">
229
- <rect x="6" y="2" width="2" height="1"/>
230
- <rect x="5" y="3" width="2" height="1"/>
231
- </g>
232
- </g>
233
- </g>
234
-
235
- <g class="cigar-sway">
236
- <g id="cigarette-rotor" transform="rotate(-150 1 10.5)">
237
- <rect x="1" y="10" width="1" height="1" fill="#8B4513"/>
238
- <rect x="2" y="10" width="3" height="1" fill="#F0E4C8"/>
239
- <rect x="5" y="10" width="1" height="1" fill="#FFD700">
240
- <animate attributeName="fill"
241
- values="#FFD700;#FF8800;#CC3300;#CC3300;#FFD700"
242
- keyTimes="0;0.1;0.25;0.9;1"
243
- dur="3s"
244
- repeatCount="indefinite"/>
245
- </rect>
246
- </g>
247
- </g>
248
-
249
- <g id="codesmoke" font-family="Consolas, 'Courier New', Menlo, monospace"
250
- font-size="1.5" font-weight="bold"
251
- text-anchor="middle" dominant-baseline="central"
252
- fill="#5A5A5A" filter="url(#smoke-glow)">
253
-
254
- <text x="-2.9" y="8.25" opacity="0">{<animateTransform attributeName="transform" type="translate"
255
- values="0,0; 0.5,-3; -0.3,-6; 0.4,-9; -0.2,-12"
256
- keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="0s" repeatCount="indefinite"/>
257
- <animate attributeName="opacity" values="0;1;1;0.5;0"
258
- keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="0s" repeatCount="indefinite"/></text>
259
-
260
- <text x="-2.9" y="8.25" opacity="0">;<animateTransform attributeName="transform" type="translate"
261
- values="0,0; -0.4,-3; 0.5,-6; -0.3,-9; 0.2,-12"
262
- keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="0.5s" repeatCount="indefinite"/>
263
- <animate attributeName="opacity" values="0;1;1;0.5;0"
264
- keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="0.5s" repeatCount="indefinite"/></text>
265
-
266
- <text x="-2.9" y="8.25" opacity="0">&lt;<animateTransform attributeName="transform" type="translate"
267
- values="0,0; 0.3,-3; -0.5,-6; 0.2,-9; -0.4,-12"
268
- keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="1s" repeatCount="indefinite"/>
269
- <animate attributeName="opacity" values="0;1;1;0.5;0"
270
- keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="1s" repeatCount="indefinite"/></text>
271
-
272
- <text x="-2.9" y="8.25" opacity="0">}<animateTransform attributeName="transform" type="translate"
273
- values="0,0; -0.5,-3; 0.4,-6; -0.2,-9; 0.3,-12"
274
- keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="1.5s" repeatCount="indefinite"/>
275
- <animate attributeName="opacity" values="0;1;1;0.5;0"
276
- keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="1.5s" repeatCount="indefinite"/></text>
277
-
278
- <text x="-2.9" y="8.25" opacity="0">=<animateTransform attributeName="transform" type="translate"
279
- values="0,0; 0.6,-3; -0.2,-6; 0.5,-9; -0.3,-12"
280
- keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="2s" repeatCount="indefinite"/>
281
- <animate attributeName="opacity" values="0;1;1;0.5;0"
282
- keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="2s" repeatCount="indefinite"/></text>
283
-
284
- <text x="-2.9" y="8.25" opacity="0">&gt;<animateTransform attributeName="transform" type="translate"
285
- values="0,0; -0.3,-3; 0.5,-6; -0.4,-9; 0.2,-12"
286
- keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="2.5s" repeatCount="indefinite"/>
287
- <animate attributeName="opacity" values="0;1;1;0.5;0"
288
- keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="2.5s" repeatCount="indefinite"/></text>
289
-
290
- <text x="-2.9" y="8.25" opacity="0">*<animateTransform attributeName="transform" type="translate"
291
- values="0,0; 0.4,-3; -0.6,-6; 0.3,-9; -0.5,-12"
292
- keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="3s" repeatCount="indefinite"/>
293
- <animate attributeName="opacity" values="0;1;1;0.5;0"
294
- keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="3s" repeatCount="indefinite"/></text>
295
-
296
- <text x="-2.9" y="8.25" opacity="0">#<animateTransform attributeName="transform" type="translate"
297
- values="0,0; -0.5,-3; 0.3,-6; -0.6,-9; 0.4,-12"
298
- keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="3.5s" repeatCount="indefinite"/>
299
- <animate attributeName="opacity" values="0;1;1;0.5;0"
300
- keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="3.5s" repeatCount="indefinite"/></text>
301
-
302
- </g>
303
-
304
- </g>
305
- </g>
306
- </g>
307
- </svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
2
+ <!-- ✅ FINAL · clawd 老板皮肤定稿版 (2026-04-16 鹿鹿确认)
3
+ 定稿 = v13. 后续 v14/v15 尝试加墨镜反光滑动被否, 画蛇添足, 留档不删
4
+
5
+ 动作清单:
6
+ - 踱步 pacing gait (左两腿 / 右两腿 交替抬, 周期 2.2s 气定神闲)
7
+ - body-walk 身体起伏 + 左右重心转移 (锁相踱步)
8
+ - 金币摆 (pivot 金币顶部挂点, rotate ±3°, 锁相 body-walk)
9
+ - 雪茄摆 (pivot 手握端, rotate -150°±3°, 周期 2.8s 互质自主节奏)
10
+ - 影子跟随 (translateX 跟 body-walk, scale+opacity 脉动)
11
+ - 代码烟雾 (8 符号从火星飘起, 已在 v10 修好初始帧 bug)
12
+ - 外层 rotate(+1°) 克制抬头气场
13
+ - 墨镜 / V 形金链条 / 雪茄火星明灭 (v8 / v10 继承)
14
+
15
+ v13 · v12 基础上修影子 (让影子跟身体走 + 改对相位)
16
+ v12 → v13 修改:
17
+ 1. 影子加 translateX 跟随 body-walk 左右晃:
18
+ - 身体 25% 向右偏 +0.15 → 影子也 +0.15
19
+ - 身体 75% 向左偏 -0.15 → 影子也 -0.15
20
+ 2. scale/opacity 相位修正:
21
+ - v12 错在: 身体抬起瞬间 (25%/75%) 影子变大+深, 反物理
22
+ - v13 改: 身体下沉瞬间 (0%/50%/100%) 影子变大+深 (贴地重, 压得深)
23
+ 身体抬起瞬间 (25%/75%) 影子变小+浅 (离地轻, 影子收敛)
24
+ 3. 幅度保持克制 (scale ±1.5%, opacity 0.5↔0.52) — 身体本身起伏就小
25
+
26
+ 其他保留 v12 (踱步 pacing gait / 金币摆 / 雪茄摆 / 代码烟雾)
27
+
28
+ v11 → v12 修改:
29
+ 1. 金币摆 (coin-sway):
30
+ - pivot 金币顶部挂点 (12.7, 10.9275) — 链条汇合点, 模拟从链条挂下
31
+ - rotate ±3°, 周期 1.1s + alternate = 来回 2.2s 锁相 body-walk
32
+ - 金币外层包一层 g.coin-sway, 内层保持原 translate+scale
33
+ 2. 雪茄摆 bug 修复:
34
+ - v11 用 transform-box: fill-box + 百分比 origin
35
+ SVG <g> 上浏览器 fill-box 支持不一致, 可能导致 animation 不生效
36
+ - 改成 carrying/pack-swing 同款的绝对坐标 origin (1px 10.5px), 稳妥
37
+ - 雪茄结构重构:
38
+ * 去掉外层 <g transform="translate(1 10)">, rects 坐标直接 shift 到 (1..6, 10..11)
39
+ * 内层新增 <g transform="rotate(-150 1 10.5)"> 做基础 -150° 旋转
40
+ * 外层 .cigar-sway 用 CSS 叠加 ±3° 旋转, pivot 同样 (1, 10.5)
41
+ * 两层 rotate 绕同一 pivot, 矩阵复合 = rotate(-150 ± 3°)
42
+ 3. 火星全局坐标 (-2.9, 8.25) 不变 (验算: (5.5, 10.5) 绕 (1, 10.5) rotate(-150) = (-2.9, 8.25))
43
+ codesmoke 起点保持不变
44
+
45
+ 为什么金币 pivot 在顶部而不是中心:
46
+ 物理上金币是从链条挂点吊下, 摆动轴 = 链条末端 = 金币顶部中心
47
+ pivot 放金币底部会看起来像"金币从底部被钉住", 反物理
48
+
49
+ 为什么金币周期对齐 body-walk (2.2s) 而不是错开:
50
+ 金币挂在身上, 走路时自然应和身体律动, 不是独立节奏
51
+ 错开反而显得金币有自主意识, 违和
52
+ 雪茄是"大佬主动叼的", 有自主节奏 (2.8s 互质) 才像"悠着抽"
53
+
54
+ 其他保留 v11 (踱步 pacing gait / body-walk / 阴影脉动 / 代码烟雾) -->
55
+
56
+ <defs>
57
+ <filter id="smoke-glow" x="-100%" y="-100%" width="300%" height="300%">
58
+ <feGaussianBlur stdDeviation="0.3" result="glow"/>
59
+ <feMerge>
60
+ <feMergeNode in="glow"/>
61
+ <feMergeNode in="glow"/>
62
+ <feMergeNode in="SourceGraphic"/>
63
+ </feMerge>
64
+ </filter>
65
+ <style>
66
+ .body-walk {
67
+ transform-origin: 7.5px 15px;
68
+ animation: body-walk 2.2s infinite ease-in-out;
69
+ }
70
+ .step-left {
71
+ animation: step-left 2.2s infinite ease-in-out;
72
+ }
73
+ .step-right {
74
+ animation: step-right 2.2s infinite ease-in-out;
75
+ }
76
+ .coin-sway {
77
+ transform-origin: 12.7px 10.9275px;
78
+ animation: coin-sway 1.1s infinite alternate ease-in-out;
79
+ }
80
+ .cigar-sway {
81
+ transform-origin: 1px 10.5px;
82
+ animation: cigar-sway 2.8s infinite alternate ease-in-out;
83
+ }
84
+ .shadow-pulse {
85
+ transform-origin: 7.5px 15.5px;
86
+ animation: shadow-pulse 2.2s infinite ease-in-out;
87
+ }
88
+
89
+ @keyframes body-walk {
90
+ 0%, 50%, 100% { transform: translate(0px, 0.5px); }
91
+ 25% { transform: translate(0.15px, 0px); }
92
+ 75% { transform: translate(-0.15px, 0px); }
93
+ }
94
+ @keyframes step-left {
95
+ 0%, 15%, 35%, 100% { transform: translateY(0); }
96
+ 25% { transform: translateY(-0.7px); }
97
+ }
98
+ @keyframes step-right {
99
+ 0%, 65%, 85%, 100% { transform: translateY(0); }
100
+ 75% { transform: translateY(-0.7px); }
101
+ }
102
+ @keyframes coin-sway {
103
+ 0% { transform: rotate(-3deg); }
104
+ 100% { transform: rotate(3deg); }
105
+ }
106
+ @keyframes cigar-sway {
107
+ 0% { transform: rotate(-3deg); }
108
+ 100% { transform: rotate(3deg); }
109
+ }
110
+ @keyframes shadow-pulse {
111
+ 0%, 50%, 100% { transform: translate(0px, 0px) scale(1.015); opacity: 0.52; }
112
+ 25% { transform: translate(0.15px, 0px) scale(1); opacity: 0.5; }
113
+ 75% { transform: translate(-0.15px, 0px) scale(1); opacity: 0.5; }
114
+ }
115
+ </style>
116
+ </defs>
117
+
118
+ <rect class="shadow-pulse" id="ground-shadow" x="3" y="15" width="9" height="1" fill="#000000"/>
119
+
120
+ <g transform="rotate(1 7.5 15)">
121
+ <g id="master-group">
122
+
123
+ <g id="legs" fill="#DE886D">
124
+ <rect class="step-left" id="outer-left-leg" x="3" y="13" width="1" height="2"/>
125
+ <rect class="step-left" id="inner-left-leg" x="5" y="13" width="1" height="2"/>
126
+ <rect class="step-right" id="inner-right-leg" x="9" y="13" width="1" height="2"/>
127
+ <rect class="step-right" id="outer-right-leg" x="11" y="13" width="1" height="2"/>
128
+ </g>
129
+
130
+ <g class="body-walk">
131
+
132
+ <g id="body-parts" fill="#DE886D">
133
+ <rect id="torso" x="2" y="6" width="11" height="7"/>
134
+ <rect id="left-arm" x="0" y="9" width="2" height="2"/>
135
+ <rect id="right-arm" x="13" y="9" width="2" height="2"/>
136
+ </g>
137
+
138
+ <g id="eyes-color-group" fill="#000000">
139
+ <rect id="left-eye" x="4" y="8" width="1" height="2"/>
140
+ <rect id="right-eye" x="10" y="8" width="1" height="2"/>
141
+ </g>
142
+
143
+ <g id="chain" fill="none" stroke="#FFD700" stroke-width="0.15">
144
+ <circle cx="2.200" cy="8.800" r="0.22"/>
145
+ <circle cx="2.856" cy="9.207" r="0.22"/>
146
+ <circle cx="3.513" cy="9.607" r="0.22"/>
147
+ <circle cx="4.169" cy="9.994" r="0.22"/>
148
+ <circle cx="4.825" cy="10.361" r="0.22"/>
149
+ <circle cx="5.481" cy="10.705" r="0.22"/>
150
+ <circle cx="6.138" cy="11.019" r="0.22"/>
151
+ <circle cx="6.794" cy="11.302" r="0.22"/>
152
+ <circle cx="7.450" cy="11.550" r="0.22"/>
153
+ <circle cx="8.106" cy="11.764" r="0.22"/>
154
+ <circle cx="8.763" cy="11.944" r="0.22"/>
155
+ <circle cx="9.419" cy="12.092" r="0.22"/>
156
+ <circle cx="10.075" cy="12.211" r="0.22"/>
157
+ <circle cx="10.731" cy="12.306" r="0.22"/>
158
+ <circle cx="11.388" cy="12.382" r="0.22"/>
159
+ <circle cx="12.044" cy="12.444" r="0.22"/>
160
+ <circle cx="12.700" cy="12.500" r="0.22"/>
161
+ <circle cx="12.800" cy="8.800" r="0.22"/>
162
+ <circle cx="12.780" cy="9.716" r="0.22"/>
163
+ <circle cx="12.760" cy="10.565" r="0.22"/>
164
+ <circle cx="12.740" cy="11.305" r="0.22"/>
165
+ <circle cx="12.720" cy="11.936" r="0.22"/>
166
+ <circle cx="12.700" cy="12.500" r="0.22"/>
167
+ </g>
168
+
169
+ <g id="glasses" transform="translate(1.325 7.375) scale(0.65)">
170
+ <g fill="#000000">
171
+ <rect x="0" y="0" width="19" height="1"/>
172
+ <rect x="0" y="1" width="8" height="1"/>
173
+ <rect x="11" y="1" width="8" height="1"/>
174
+ <rect x="0" y="2" width="8" height="1"/>
175
+ <rect x="11" y="2" width="8" height="1"/>
176
+ <rect x="1" y="3" width="6" height="1"/>
177
+ <rect x="12" y="3" width="6" height="1"/>
178
+ <rect x="2" y="4" width="4" height="1"/>
179
+ <rect x="13" y="4" width="4" height="1"/>
180
+ </g>
181
+ <g fill="#FFFFFF">
182
+ <rect x="5" y="1" width="1" height="1"/>
183
+ <rect x="4" y="2" width="1" height="1"/>
184
+ <rect x="16" y="1" width="1" height="1"/>
185
+ <rect x="15" y="2" width="1" height="1"/>
186
+ </g>
187
+ </g>
188
+
189
+ <g class="coin-sway">
190
+ <g id="coin" transform="translate(11.1275 10.9275) scale(0.185)">
191
+ <g fill="#CC6600">
192
+ <rect x="6" y="0" width="5" height="1"/>
193
+ <rect x="4" y="1" width="9" height="1"/>
194
+ <rect x="3" y="2" width="11" height="1"/>
195
+ <rect x="2" y="3" width="13" height="1"/>
196
+ <rect x="1" y="4" width="15" height="2"/>
197
+ <rect x="0" y="6" width="17" height="5"/>
198
+ <rect x="1" y="11" width="15" height="2"/>
199
+ <rect x="2" y="13" width="13" height="1"/>
200
+ <rect x="3" y="14" width="11" height="1"/>
201
+ <rect x="4" y="15" width="9" height="1"/>
202
+ <rect x="6" y="16" width="5" height="1"/>
203
+ </g>
204
+ <g fill="#FFD700">
205
+ <rect x="7" y="1" width="3" height="1"/>
206
+ <rect x="5" y="2" width="7" height="1"/>
207
+ <rect x="4" y="3" width="9" height="1"/>
208
+ <rect x="3" y="4" width="11" height="1"/>
209
+ <rect x="2" y="5" width="13" height="2"/>
210
+ <rect x="1" y="7" width="15" height="3"/>
211
+ <rect x="2" y="10" width="13" height="2"/>
212
+ <rect x="3" y="12" width="11" height="1"/>
213
+ <rect x="4" y="13" width="9" height="1"/>
214
+ <rect x="5" y="14" width="7" height="1"/>
215
+ <rect x="7" y="15" width="3" height="1"/>
216
+ </g>
217
+ <g fill="#FF9900">
218
+ <rect x="8" y="4" width="1" height="9"/>
219
+ <rect x="6" y="5" width="5" height="1"/>
220
+ <rect x="6" y="6" width="1" height="1"/>
221
+ <rect x="6" y="7" width="2" height="1"/>
222
+ <rect x="7" y="8" width="1" height="1"/>
223
+ <rect x="9" y="8" width="1" height="1"/>
224
+ <rect x="9" y="9" width="2" height="1"/>
225
+ <rect x="10" y="10" width="1" height="1"/>
226
+ <rect x="6" y="11" width="5" height="1"/>
227
+ </g>
228
+ <g fill="#FFEE55">
229
+ <rect x="6" y="2" width="2" height="1"/>
230
+ <rect x="5" y="3" width="2" height="1"/>
231
+ </g>
232
+ </g>
233
+ </g>
234
+
235
+ <g class="cigar-sway">
236
+ <g id="cigarette-rotor" transform="rotate(-150 1 10.5)">
237
+ <rect x="1" y="10" width="1" height="1" fill="#8B4513"/>
238
+ <rect x="2" y="10" width="3" height="1" fill="#F0E4C8"/>
239
+ <rect x="5" y="10" width="1" height="1" fill="#FFD700">
240
+ <animate attributeName="fill"
241
+ values="#FFD700;#FF8800;#CC3300;#CC3300;#FFD700"
242
+ keyTimes="0;0.1;0.25;0.9;1"
243
+ dur="3s"
244
+ repeatCount="indefinite"/>
245
+ </rect>
246
+ </g>
247
+ </g>
248
+
249
+ <g id="codesmoke" font-family="Consolas, 'Courier New', Menlo, monospace"
250
+ font-size="1.5" font-weight="bold"
251
+ text-anchor="middle" dominant-baseline="central"
252
+ fill="#5A5A5A" filter="url(#smoke-glow)">
253
+
254
+ <text x="-2.9" y="8.25" opacity="0">{<animateTransform attributeName="transform" type="translate"
255
+ values="0,0; 0.5,-3; -0.3,-6; 0.4,-9; -0.2,-12"
256
+ keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="0s" repeatCount="indefinite"/>
257
+ <animate attributeName="opacity" values="0;1;1;0.5;0"
258
+ keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="0s" repeatCount="indefinite"/></text>
259
+
260
+ <text x="-2.9" y="8.25" opacity="0">;<animateTransform attributeName="transform" type="translate"
261
+ values="0,0; -0.4,-3; 0.5,-6; -0.3,-9; 0.2,-12"
262
+ keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="0.5s" repeatCount="indefinite"/>
263
+ <animate attributeName="opacity" values="0;1;1;0.5;0"
264
+ keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="0.5s" repeatCount="indefinite"/></text>
265
+
266
+ <text x="-2.9" y="8.25" opacity="0">&lt;<animateTransform attributeName="transform" type="translate"
267
+ values="0,0; 0.3,-3; -0.5,-6; 0.2,-9; -0.4,-12"
268
+ keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="1s" repeatCount="indefinite"/>
269
+ <animate attributeName="opacity" values="0;1;1;0.5;0"
270
+ keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="1s" repeatCount="indefinite"/></text>
271
+
272
+ <text x="-2.9" y="8.25" opacity="0">}<animateTransform attributeName="transform" type="translate"
273
+ values="0,0; -0.5,-3; 0.4,-6; -0.2,-9; 0.3,-12"
274
+ keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="1.5s" repeatCount="indefinite"/>
275
+ <animate attributeName="opacity" values="0;1;1;0.5;0"
276
+ keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="1.5s" repeatCount="indefinite"/></text>
277
+
278
+ <text x="-2.9" y="8.25" opacity="0">=<animateTransform attributeName="transform" type="translate"
279
+ values="0,0; 0.6,-3; -0.2,-6; 0.5,-9; -0.3,-12"
280
+ keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="2s" repeatCount="indefinite"/>
281
+ <animate attributeName="opacity" values="0;1;1;0.5;0"
282
+ keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="2s" repeatCount="indefinite"/></text>
283
+
284
+ <text x="-2.9" y="8.25" opacity="0">&gt;<animateTransform attributeName="transform" type="translate"
285
+ values="0,0; -0.3,-3; 0.5,-6; -0.4,-9; 0.2,-12"
286
+ keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="2.5s" repeatCount="indefinite"/>
287
+ <animate attributeName="opacity" values="0;1;1;0.5;0"
288
+ keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="2.5s" repeatCount="indefinite"/></text>
289
+
290
+ <text x="-2.9" y="8.25" opacity="0">*<animateTransform attributeName="transform" type="translate"
291
+ values="0,0; 0.4,-3; -0.6,-6; 0.3,-9; -0.5,-12"
292
+ keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="3s" repeatCount="indefinite"/>
293
+ <animate attributeName="opacity" values="0;1;1;0.5;0"
294
+ keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="3s" repeatCount="indefinite"/></text>
295
+
296
+ <text x="-2.9" y="8.25" opacity="0">#<animateTransform attributeName="transform" type="translate"
297
+ values="0,0; -0.5,-3; 0.3,-6; -0.6,-9; 0.4,-12"
298
+ keyTimes="0;0.25;0.5;0.75;1" dur="4s" begin="3.5s" repeatCount="indefinite"/>
299
+ <animate attributeName="opacity" values="0;1;1;0.5;0"
300
+ keyTimes="0;0.12;0.5;0.8;1" dur="4s" begin="3.5s" repeatCount="indefinite"/></text>
301
+
302
+ </g>
303
+
304
+ </g>
305
+ </g>
306
+ </g>
307
+ </svg>