dsh-piggy 0.25.0 → 0.27.0
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.
- package/CHANGELOG.md +114 -0
- package/README.md +39 -286
- package/assets/career-astronaut-bathe.svg +18 -0
- package/assets/career-astronaut-eat.svg +18 -0
- package/assets/career-astronaut-pet.svg +18 -0
- package/assets/career-astronaut-play.svg +18 -0
- package/assets/career-astronaut-relaxed.svg +18 -0
- package/assets/career-astronaut-study.svg +18 -0
- package/assets/career-astronaut-trip.svg +18 -0
- package/assets/career-astronaut-work.svg +18 -0
- package/assets/career-astronaut.svg +18 -0
- package/assets/career-chef-bathe.svg +18 -0
- package/assets/career-chef-eat.svg +18 -0
- package/assets/career-chef-pet.svg +18 -0
- package/assets/career-chef-play.svg +18 -0
- package/assets/career-chef-relaxed.svg +18 -0
- package/assets/career-chef-study.svg +18 -0
- package/assets/career-chef-trip.svg +18 -0
- package/assets/career-chef-work.svg +18 -0
- package/assets/career-chef.svg +18 -0
- package/assets/pig-devil-bathe.svg +71 -0
- package/assets/pig-devil-eat.svg +61 -0
- package/assets/pig-devil-fly.svg +51 -0
- package/assets/pig-devil-pet.svg +55 -0
- package/assets/pig-devil-play.svg +62 -0
- package/assets/pig-devil-relaxed.svg +51 -0
- package/assets/pig-devil-study.svg +61 -0
- package/assets/pig-devil-trip.svg +65 -0
- package/assets/pig-devil-work.svg +67 -0
- package/assets/pig-devil.svg +51 -0
- package/assets/pig-fat-bathe.svg +11 -0
- package/assets/pig-fat-eat.svg +13 -0
- package/assets/pig-fat-pet.svg +11 -0
- package/assets/pig-fat-play.svg +11 -0
- package/assets/pig-fat-relaxed.svg +11 -0
- package/assets/pig-fat-study.svg +13 -0
- package/assets/pig-fat-trip.svg +13 -0
- package/assets/pig-fat-work.svg +13 -0
- package/assets/pig-fat.svg +13 -0
- package/assets/pig-round-bathe.svg +11 -0
- package/assets/pig-round-eat.svg +11 -0
- package/assets/pig-round-pet.svg +11 -0
- package/assets/pig-round-play.svg +11 -0
- package/assets/pig-round-relaxed.svg +11 -0
- package/assets/pig-round-study.svg +11 -0
- package/assets/pig-round-trip.svg +11 -0
- package/assets/pig-round-work.svg +11 -0
- package/assets/pig-round.svg +13 -0
- package/assets/skin-angel-bathe.svg +18 -0
- package/assets/skin-angel-eat.svg +18 -0
- package/assets/skin-angel-pet.svg +18 -0
- package/assets/skin-angel-play.svg +18 -0
- package/assets/skin-angel-relaxed.svg +18 -0
- package/assets/skin-angel-study.svg +18 -0
- package/assets/skin-angel-trip.svg +18 -0
- package/assets/skin-angel-work.svg +18 -0
- package/assets/skin-angel.svg +18 -0
- package/assets/skin-detective-bathe.svg +18 -0
- package/assets/skin-detective-eat.svg +18 -0
- package/assets/skin-detective-pet.svg +18 -0
- package/assets/skin-detective-play.svg +18 -0
- package/assets/skin-detective-relaxed.svg +18 -0
- package/assets/skin-detective-study.svg +18 -0
- package/assets/skin-detective-trip.svg +18 -0
- package/assets/skin-detective-work.svg +18 -0
- package/assets/skin-detective.svg +18 -0
- package/assets/skin-mint-bathe.svg +30 -0
- package/assets/skin-mint-eat.svg +30 -0
- package/assets/skin-mint-pet.svg +30 -0
- package/assets/skin-mint-play.svg +30 -0
- package/assets/skin-mint.svg +30 -0
- package/assets/skin-pirate-bathe.svg +18 -0
- package/assets/skin-pirate-eat.svg +18 -0
- package/assets/skin-pirate-pet.svg +18 -0
- package/assets/skin-pirate-play.svg +18 -0
- package/assets/skin-pirate-relaxed.svg +18 -0
- package/assets/skin-pirate-study.svg +18 -0
- package/assets/skin-pirate-trip.svg +18 -0
- package/assets/skin-pirate-work.svg +18 -0
- package/assets/skin-pirate.svg +18 -0
- package/assets/skin-wizard-bathe.svg +18 -0
- package/assets/skin-wizard-eat.svg +18 -0
- package/assets/skin-wizard-pet.svg +18 -0
- package/assets/skin-wizard-play.svg +18 -0
- package/assets/skin-wizard-relaxed.svg +18 -0
- package/assets/skin-wizard-study.svg +18 -0
- package/assets/skin-wizard-trip.svg +18 -0
- package/assets/skin-wizard-work.svg +18 -0
- package/assets/skin-wizard.svg +18 -0
- package/assets/ui-bag.svg +1 -0
- package/assets/ui-card.svg +1 -0
- package/assets/ui-dev.svg +1 -0
- package/assets/ui-dex.svg +1 -0
- package/assets/ui-fishing.svg +1 -0
- package/assets/ui-pomodoro.svg +1 -0
- package/assets/ui-quit.svg +1 -0
- package/assets/ui-settings.svg +1 -0
- package/assets/ui-shop.svg +1 -0
- package/assets/ui-skins.svg +1 -0
- package/assets/ui-status.svg +1 -0
- package/assets/ui-study.svg +1 -0
- package/assets/ui-travel.svg +1 -0
- package/assets/ui-update.svg +1 -0
- package/assets/ui-work.svg +1 -0
- package/client.js +1795 -179
- package/commands.js +4 -1
- package/package.json +1 -1
- package/packages/pet-core/src/core/activity.js +6 -0
- package/packages/pet-core/src/core/care.js +2 -0
- package/packages/pet-core/src/core/constants.js +2 -2
- package/packages/pet-core/src/core/daily.js +5 -3
- package/packages/pet-core/src/core/dex.js +147 -0
- package/packages/pet-core/src/core/drops.js +9 -7
- package/packages/pet-core/src/core/egg.js +10 -0
- package/packages/pet-core/src/core/evolution.js +86 -23
- package/packages/pet-core/src/core/fishing.js +218 -0
- package/packages/pet-core/src/core/inventory.js +13 -1
- package/packages/pet-core/src/core/migrate.js +21 -2
- package/packages/pet-core/src/core/pomodoro.js +203 -0
- package/packages/pet-core/src/core/settlement.js +17 -3
- package/packages/pet-core/src/core/skins.js +92 -0
- package/packages/pet-core/src/core/state.js +54 -4
- package/packages/pet-core/src/core/weight.js +117 -0
- package/packages/pet-core/src/core.js +9 -1
- package/packages/pet-core/src/data/evolution.js +21 -4
- package/packages/pet-core/src/data/fish.js +21 -0
- package/packages/pet-core/src/data/lines.js +28 -0
- package/packages/pet-core/src/data/pomodoro.js +23 -0
- package/packages/pet-core/src/data/shop.js +29 -3
- package/packages/pet-core/src/data/skins.js +50 -0
- package/packages/pet-core/src/data/weight.js +15 -0
- package/packages/pet-core/src/data.js +4 -0
- package/routes.js +53 -4
- package/scripts/release-notes.mjs +22 -0
- package/snapshot.js +14 -3
- package/src/client/art.js +3 -2
- package/src/client/constants.js +19 -5
- package/src/client/css-base.js +16 -4
- package/src/client/css-dex.js +101 -0
- package/src/client/css-fishing.js +5 -0
- package/src/client/css-skins.js +4 -0
- package/src/client/css-tabs.js +14 -0
- package/src/client/css-tiles.js +20 -0
- package/src/client/desktop-shell.js +14 -0
- package/src/client/dev-mode.js +63 -0
- package/src/client/effects.js +44 -3
- package/src/client/icon-style.js +31 -0
- package/src/client/index.js +63 -56
- package/src/client/io.js +19 -0
- package/src/client/layout.js +42 -0
- package/src/client/normalize-fishing.js +21 -0
- package/src/client/normalize-skins.js +18 -0
- package/src/client/normalize.js +58 -11
- package/src/client/panel.js +55 -7
- package/src/client/pomodoro-clock.js +64 -0
- package/src/client/position.js +22 -0
- package/src/client/scene.js +8 -1
- package/src/client/styles.js +4 -1
- package/src/client/tabs/bag.js +28 -31
- package/src/client/tabs/crown.js +8 -4
- package/src/client/tabs/dev.js +82 -9
- package/src/client/tabs/dex.js +248 -0
- package/src/client/tabs/fishing.js +224 -0
- package/src/client/tabs/home.js +19 -5
- package/src/client/tabs/pomodoro.js +69 -0
- package/src/client/tabs/settings.js +31 -0
- package/src/client/tabs/shop.js +1 -1
- package/src/client/tabs/skins.js +66 -0
- package/src/client/tabs/status.js +26 -0
- package/src/client/tabs/update.js +104 -8
- package/src/client/update-notice.js +175 -0
- package/src/client/widgets.js +3 -3
- package/store/api.js +30 -0
- package/store/skin-pack.js +93 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,120 @@ All notable changes to `dsh-pig`. Versions follow the plugin's own
|
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
## [0.27.0] — 2026-10-03 · 角色外观、设置与桌面更新
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- 接入六套共 54 张角色 SVG:厨师猪、宇航员猪完成对应工作一次后解锁;侦探、天使、海盗、巫师猪作为免费内置皮肤。职业外观可在换肤与图鉴中查看和切换,调试页有全部入口;钓鱼动作缺图时回退待机。解锁记录沿用图鉴字段,存档版本不变。
|
|
12
|
+
- 原胖猪 9 张待机/动作图移至圆润档;新的 9 张更胖立绘用于最胖档。商店新增草莓、烤红薯、海鲜饭、柚子浴、花瓣浴、飞盘、小鼓、蹦床、樱桃发夹、毛线背心。
|
|
13
|
+
- 主菜单新增「设置」App,可在系统 Emoji 和随包提供的 15 张 SVG App 图标之间切换;选择留在本机,不提升存档版本。加冕和签约后新增对应台词与口头禅小尾巴。
|
|
14
|
+
|
|
15
|
+
- 更新 App 分开显示游戏版本和桌面外壳版本;Windows 安装版与 Linux AppImage 可下载新版外壳,确认重启后安装。Windows 便携版与未签名 macOS 版显示对应的手动替换说明。
|
|
16
|
+
- 桌面外壳升至 0.2.0;发版流程将 `latest.yml` / `latest-linux.yml` 与安装包上传到相同的游戏版本 Release。旧版外壳需手动升级一次才能使用这一能力。游戏存档版本不变。
|
|
17
|
+
- 发布标签时同步将同版本插件发布到 npm(使用仓库的 `NPM_TOKEN` secret)。
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
- 商店和背包暂时隐藏「装扮」,等待重新设计展示方式;已有装扮的购买和穿戴记录保留,已穿戴外观仍会显示。
|
|
21
|
+
- 钓鱼提竿窗口延长到 2 秒,QTE 放慢并扩大判定区,按下鼠标时立即判定和反馈。商店新增三档鱼饵,手动与自动钓鱼每次尝试都消耗鱼饵;自动收获进鱼篓,不再自动出售。
|
|
22
|
+
- 使用洗浴和玩具道具不再等待冷却;桌面版拖动改用跨显示器的虚拟桌面范围,修正移动窗口后的拖拽判定和位置上报。
|
|
23
|
+
|
|
24
|
+
## [0.26.1] — 2026-10-02 · 更新提醒与文档整理
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
- 桌面版启动后会在后台检查游戏包和桌面外壳版本;有新版本时,小猪提示一次,主菜单“更新”显示红色感叹号。打开更新 App 即将该版本标为已读,即使暂不安装也不再持续提醒;以后发布更新版本会重新出现。
|
|
28
|
+
- DSH 插件也提供“更新”App,只负责提示 GitHub 新版本并打开发布页,不会自动改写本地插件文件。
|
|
29
|
+
- 游戏发布清单新增 `shellVersion`,桌面版可区分游戏热更新与需要替换安装包的外壳更新。
|
|
30
|
+
- 新增玩法、桌面安装、更新机制、开发与调试文档。
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
- README 精简为项目介绍、安装、快速开始和文档入口;养成规则、调试模式、开发命令及更新原理移入文档中心。
|
|
34
|
+
- 桌面外壳升至 0.1.3,以支持外壳更新提醒。存档版本保持 v12。
|
|
35
|
+
|
|
36
|
+
## Contributors
|
|
37
|
+
- 本版继续包含 @1nuoiscute 在 PR [#3](https://github.com/CLICGGER-TYPES/dsh-piggy/pull/3) 与 [#4](https://github.com/CLICGGER-TYPES/dsh-piggy/pull/4) 提供的恶魔猪、体型与胖胖猪立绘成果,感谢其持续贡献。
|
|
38
|
+
|
|
39
|
+
## [0.26.0] — 2026-10-02 · 图鉴、体型、钓鱼与换肤
|
|
40
|
+
|
|
41
|
+
### Added
|
|
42
|
+
- 新增「🎨 换肤」App:内置皮肤可直接切换,不进商店、不占背包;图鉴皮肤详情也能切换。显示顺序固定为晋升形态、当前皮肤、默认猪,形态结束后会恢复原皮肤。
|
|
43
|
+
- 支持导入玩家皮肤 ZIP。最少包含待机、吃、洗澡、玩耍、摸摸 5 张 SVG,可补齐放松、打工、学习、旅行、钓鱼共 10 张;导入前会检查清单、尺寸、外链、脚本、字体、位图、渐变和滤镜。新增制作教程、示例目录和可直接下载的示例 ZIP。
|
|
44
|
+
- 新增「🎣 钓鱼」App:单击抛竿、2–8 秒咬钩与 1 秒提竿窗口;提竿后进入圆盘技能检定,在绿色区域点击或按空格,黄色完美区一次推进两格。难度会缩窄区域、加快指针并把连续命中要求从 2 次提高到 4 次;点早或点晚不会立即失败,连续空三圈鱼才会跑,关闭面板仍会判失败。
|
|
45
|
+
- 加入 15 种按本地早/午/晚/夜出现的鱼。服务端在抛竿时用存档随机序列锁定鱼和尺寸,待处理记录保留 60 秒,刷新不能重复拿鱼;鱼可放进背包喂或卖,图鉴记录最大尺寸,调试页可给予每一种鱼并跳过等待。
|
|
46
|
+
- 自动钓鱼可选 30/60 分钟,每 3 分钟按难度判一次,最低成功率 20%,所得按 70% 自动出售,每天最多两次;钓鱼也会按实际时长减少超重部分。`ensureFishing` 给老存档补字段,存档版本仍为 v12。
|
|
47
|
+
- 主屏原「加冕」位置改为「📖 图鉴」,分为形态、皮肤、鱼类、道具、纪念品五页,并在分类入口显示收集进度。形态与皮肤使用三列小闪卡,只有已解锁卡面带轻量透视倾斜与流光;鱼和纪念品使用博物馆格,道具使用可搜索、按用途筛选的紧凑目录。条目详情独占内容区;未解锁形态只显示对应 SVG 的灰色剪影、锁章与谜面,解锁后显示原色立绘、简介和发现记录。动态效果尊重系统的减少动态效果设置。
|
|
48
|
+
- 新增不升存档版本的 `state.dex` 收藏记录,保存第一次获得时间与次数;购买、礼包、外出掉落、旅行纪念品、变身和调试给予都会点亮相应条目,老存档会从已有物品、形态与纪念品补齐。
|
|
49
|
+
- 图鉴分类提供 `registerDexSection`,供后续钓鱼与换肤直接接入。
|
|
50
|
+
- 新增正常 / 圆润 / 胖胖三档体型,分界为当前等级理想体重的 1.3 / 1.6 倍;状态页显示当前档位、理想体重和下一条分界,调试页提供三档入口。
|
|
51
|
+
- 普通形态的默认皮肤进入胖胖档后使用贡献者 1nuoiscute 在 PR #4 提供的待机与动作立绘;王、恶魔和其他皮肤保持原样。圆润档先沿用普通立绘,等待对应素材。
|
|
52
|
+
- 玩耍每次减少超重部分 3%(每日最多 10 次),打工每实际小时减少 3%,自然代谢每猪日减少 2%;只减超出理想体重的部分。新增的每日玩耍记录由 `ensureBodyWeight` 补齐,存档仍为 v12。
|
|
53
|
+
|
|
54
|
+
## Contributors
|
|
55
|
+
- 感谢 @1nuoiscute 在 PR [#4](https://github.com/CLICGGER-TYPES/dsh-piggy/pull/4) 提供肥猪体型与减重系统的原始实现,并补充胖胖猪待机及动作立绘;本版在此基础上整理规则、兼容存档并接入调试页。
|
|
56
|
+
|
|
57
|
+
## [0.25.2] — 2026-10-01 · 桌面版不再拖卡浏览器,新增 macOS 包
|
|
58
|
+
|
|
59
|
+
> 桌面版安装包(外壳)升到 0.1.2:窗口的修复在外壳里,**Windows / Linux 用户请重新下载安装包**,
|
|
60
|
+
> 主屏「🔄 更新」只换游戏、换不到这一层。
|
|
61
|
+
|
|
62
|
+
### Added
|
|
63
|
+
- **macOS 包**:发版时由 GitHub 的 macOS 构建机打 `dmg`(Apple 芯片 arm64 / Intel x64 各一个)。
|
|
64
|
+
没有签名,第一次打开要右键 →「打开」,或者执行 `xattr -dr com.apple.quarantine /Applications/dsh-piggy.app`。
|
|
65
|
+
macOS 不支持只让窗口一部分可点,猪和面板四周约 16px 的透明边会挡住下面的点击。
|
|
66
|
+
|
|
67
|
+
### Fixed
|
|
68
|
+
- **修复 Windows 上开着猪整机变卡**:桌面版窗口以前铺满整个工作区(透明 + 置顶),Windows 每帧都要
|
|
69
|
+
合成一整块全屏透明层;而且渲染层每 120ms 用 `getBoundingClientRect` 量一次框,呼吸动画让结果一直
|
|
70
|
+
在抖,`setShape`(Windows 上是 `SetWindowRgn`)每秒触发约 1.7 次。现在窗口只框住「猪 + 面板 + 气泡」
|
|
71
|
+
的外接矩形并四周留 16px(拖猪=拖窗口,夹在工作区内),量框改用不受动画影响的布局盒 + 4px 取整
|
|
72
|
+
(猪闲着时一次都不调),帧率降到 30fps,滤镜阴影也从会动的元素上挪到了立绘上。
|
|
73
|
+
- 桌面版面板中间那条「黑条」:可点区域按内容框原点换算再四舍五入到 4px,相邻两块之间漏出一道缝,
|
|
74
|
+
透出了窗口后面的东西;面板右边也被切掉几像素。现在可点区域直接用窗口坐标、向外取整。
|
|
75
|
+
- 桌面版猪在屏幕上半部、面板朝下开时,名字框被挤出窗口顶边:现在钉的是整块内容(离窗口边 16px),
|
|
76
|
+
不是只钉猪;面板朝右开时名字框和日历挪到猪右边,不再压在猪身上。
|
|
77
|
+
- 番茄钟倒计时一段一段跳(只在每 4 秒一次的轮询时更新):现在本地每秒走一格,以服务端为准对表,
|
|
78
|
+
到点马上结算。
|
|
79
|
+
|
|
80
|
+
## [0.25.2] — 2026-10-01 · 番茄钟、王冠变成道具、恶魔猪、调试要解锁
|
|
81
|
+
|
|
82
|
+
### Changed
|
|
83
|
+
- 调试模式改成「解锁才开」:`Ctrl+Shift+D` 和 `dshPigDev.on/toggle` 都撤掉了,改成主屏版本号
|
|
84
|
+
**3 秒内连点 7 次**(第 4 次起提示还差几下)解锁。只在内存里记,刷新/重启就关;老版本存在
|
|
85
|
+
localStorage 里的「已开」在启动时会被写掉。控制台只保留 `dshPigDev.off()` 救急。
|
|
86
|
+
|
|
87
|
+
- 王冠只剩能加冕的那一种:以前买过「王冠」装扮的,读档时换成一顶王冠道具放进背包;已是猪猪王的存档保持原样,存档版本不变。
|
|
88
|
+
|
|
89
|
+
### Added
|
|
90
|
+
- **🍅 番茄钟 App**:挑 15/25/45 分钟(休息 5 分钟),猪在旁边陪着并自动进免打扰,头顶挂
|
|
91
|
+
番茄与剩余时间;完成 +8 🪙、心情 +6,每天前 8 个给奖励,之后只计数,中途放弃不给。
|
|
92
|
+
倒计时存在 `state.pomodoro`(`ensurePomodoro` 补默认值,存档版本不变),关面板/刷新/重启
|
|
93
|
+
都接着走,到点由下次请求结算;完成时发浏览器通知(没权限就用气泡),状态页显示今天做了几个。
|
|
94
|
+
- 新台词场景 `pomodoroStart` / `pomodoroDone` / `pomodoroAbandon`(各 3 句)。
|
|
95
|
+
- 调试页顶部「🔧 关闭调试」按钮。
|
|
96
|
+
- 调试页「番茄钟」组:一键完成当前番茄、把今天的完成数设成 8(测每天上限)。
|
|
97
|
+
- 可选恶魔猪形态:Lv40 起,武力、魅力各至少 20,本代完成玩耍至少 20 次后可变身;变身之后心情下降不会退化。
|
|
98
|
+
- 商店新增「✨ 晋升」货架:👑 王冠 3000 🪙、😈 恶魔契约 6666 🪙;背包分别点「加冕」「签约」,条件不齐会列出差额且不消耗。形态表统一由道具触发;`/pig crown` 也要先有王冠。
|
|
99
|
+
- 成功变身时有 1.5 秒内结束的全屏 👑✨ 或 😈🔥 特效,重复触发会替换上一个。
|
|
100
|
+
- 恶魔猪九种日常与互动立绘、额外飞行姿态以及独立动作预览页。
|
|
101
|
+
|
|
102
|
+
### Fixed
|
|
103
|
+
- 番茄钟角标原来挂在场景上(`bottom:calc(100% + 40px)`、`z-index:4`),面板打开时正好压在
|
|
104
|
+
「今天完成」那一行上。现在改成贴在猪立绘右上角的小角标:挂在猪身上跟着它走、离猪头不超过
|
|
105
|
+
20px、层级低于说话气泡;猪说话时角标让位,面板打开时不碰面板和 HUD。
|
|
106
|
+
- 「放弃」现在会先结算:已经到点但还没轮询到的番茄按**完成**处理(照常计数发奖、说完成台词),
|
|
107
|
+
不会再被当成放弃丢掉。
|
|
108
|
+
- 调试页新增「形态」组:一键变成猪猪王、一键恢复普通(不看等级和三维条件)——`applyDevPatch`
|
|
109
|
+
支持 `form` 字段(`null` 恢复普通)。以后每加一种形态/皮肤/鱼,调试页都会自动列出来。
|
|
110
|
+
- 形态按钮会顺手把等级拉到该形态所在阶段的起始等级(从 `data/life.js` 读,不写死数字),
|
|
111
|
+
否则换了形态立绘不动;等级够了就只改形态。纸盒或已去世时按钮置灰并写明「先孵化」/「先复活」。
|
|
112
|
+
|
|
113
|
+
## Contributors
|
|
114
|
+
- 感谢 @1nuoiscute 在 PR [#3](https://github.com/CLICGGER-TYPES/dsh-piggy/pull/3) 提供恶魔猪形态及完整动作立绘;其原作者提交在合入时保持不变。
|
|
115
|
+
|
|
116
|
+
## [0.25.1] — 2026-10-01 · 桌面版退出与托盘
|
|
117
|
+
|
|
118
|
+
### Fixed
|
|
119
|
+
- 桌面版托盘图标没打进安装包,Windows 托盘是空的;现在安装包里带上了图标,单击托盘图标可以叫猪出来或藏起来。
|
|
120
|
+
- 桌面版主屏多了「👋 退出」,存好档再关(Linux 的 GNOME 默认不显示托盘,以前没地方退出)。
|
|
121
|
+
|
|
8
122
|
## [0.25.0] — 2026-10-01 · — 桌面版
|
|
9
123
|
|
|
10
124
|
### Added
|
package/README.md
CHANGED
|
@@ -1,322 +1,75 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<img src="assets/piglet.svg" width="128" alt="dsh-piggy 的小猪">
|
|
3
|
-
</p>
|
|
1
|
+
<p align="center"><img src="assets/piglet.svg" width="128" alt="dsh-piggy 的小猪"></p>
|
|
4
2
|
|
|
5
3
|
<h1 align="center">dsh-piggy</h1>
|
|
6
4
|
|
|
7
|
-
<p align="center">一只住在 <a href="https://github.com/deepseek-ai/deepseek-harness">DeepSeek Harness</a>
|
|
8
|
-
|
|
9
|
-
它会长大、上学、打工、旅行、生病、闹脾气,也会跟你搭话。
|
|
10
|
-
玩法照着经典的 QQ 宠物复刻,界面照着动森([animal-island-ui](https://github.com/guokaigdg/animal-island-ui))的风格做。
|
|
5
|
+
<p align="center">一只住在 <a href="https://github.com/deepseek-ai/deepseek-harness">DeepSeek Harness</a> 里,也能独立住在桌面上的猪。</p>
|
|
11
6
|
|
|
12
|
-
|
|
13
|
-
- **零 token** —— 不注册模型工具、不注入上下文,模型不知道它存在
|
|
14
|
-
- **零运行时 npm 依赖** —— 纯 JS;游戏规则在独立的共享库 `@dsh-piggy/core` 里,以后的独立版也用同一套
|
|
15
|
-
|
|
16
|
-
<p align="center">
|
|
17
|
-
<img src="docs/screenshots/readme-home.png" width="260" alt="主屏">
|
|
18
|
-
<img src="docs/screenshots/readme-card.png" width="260" alt="居民卡">
|
|
19
|
-
</p>
|
|
7
|
+
它会长大、上学、打工、旅行、钓鱼、生病,也会跟你搭话。界面采用动森风格的 App 主菜单,全部玩法都能用鼠标完成。
|
|
20
8
|
|
|
21
|
-
|
|
9
|
+
**欢迎一起画猪。** 目前项目还缺形态、动作和皮肤等美术资源;如果你有喜欢的猪猪形象,欢迎提交 [Pull Request](https://github.com/CLICGGER-TYPES/dsh-piggy/pulls),我会认真看并合并合适的作品。也欢迎 Fork 项目,做一只完全符合自己喜好的猪。自定义皮肤可从[制作教程](docs/guides/creating-skins.md)开始。
|
|
22
10
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
装完**重启 dsh**(宿主半边在启动时注册命令与路由),然后刷新页面。
|
|
30
|
-
|
|
31
|
-
## 怎么玩
|
|
32
|
-
|
|
33
|
-
平时是一只透明背景的小猪,浮在右下角,可以拖到任何地方。
|
|
34
|
-
|
|
35
|
-
| 操作 | 结果 |
|
|
36
|
-
|---|---|
|
|
37
|
-
| **右键猪** | 打开 / 收起面板 |
|
|
38
|
-
| **左键猪** | 摸摸它 |
|
|
39
|
-
| 拖动 | 换个地方待着(会记住) |
|
|
40
|
-
|
|
41
|
-
一开始是个纸盒,拆开才有猪。打开面板就是**主屏**:顶上是名字、等级、金币,
|
|
42
|
-
下面一格格 App,有事的格子左上角会挂个小标签(病了 → 商店,有课能上 → 学习……)。
|
|
43
|
-
|
|
44
|
-
| App | 里面有什么 |
|
|
45
|
-
|---|---|
|
|
46
|
-
| 📋 **状态** | 饱食 / 心情 / 清洁 / 健康四条、智力 / 魅力 / 武力三维、喂食洗澡玩耍摸摸。出门、生病、去世的横幅也只在这里 |
|
|
47
|
-
| 🪪 **居民卡** | 头像、生日星座、性格、口头禅、签名、收藏数。口头禅和签名可以改,猪说话时偶尔带上口头禅 |
|
|
48
|
-
| 👑 **加冕** | 长成后的形态(先有猪猪王,以后还会加):条件逐条打勾,齐了就能加冕 |
|
|
49
|
-
| 📚 **学习** | 小学 / 中学 / 大学 / 研究生,9 门课;另有兴趣班,上满 5 次拿证书 |
|
|
50
|
-
| 💼 **打工** | 按武力 / 魅力 / 智力分三类,几十种工作,要够等级、课时、证书才能干;点开看缺什么 |
|
|
51
|
-
| 🛒 **商店** | 食物、洗浴、玩具、药品、装扮、复活 —— 先选大类,再选商品 |
|
|
52
|
-
| 🧳 **旅行** | 郊游到出国,每趟带回一件纪念品 |
|
|
53
|
-
| 🎒 **背包** | 买来的东西、纪念品、日记 |
|
|
54
|
-
|
|
55
|
-
所有 App 都是**先点大方块、再点小方块**,左上角「‹」一层层退回主屏。
|
|
11
|
+
- **完整养成**:照顾、成长、学习、工作、旅行、收藏和晋升形态
|
|
12
|
+
- **桌面版**:Windows、Linux 和 macOS 可独立运行
|
|
13
|
+
- **角色外观**:完成厨师或宇航员工作解锁职业外观,另有免费内置皮肤,也可导入自己的 SVG 皮肤包
|
|
14
|
+
- **零 token**:不注册模型工具,不向对话注入宠物状态
|
|
56
15
|
|
|
57
16
|
<p align="center">
|
|
58
|
-
<img src="docs/screenshots/readme-
|
|
59
|
-
<img src="docs/screenshots/
|
|
60
|
-
<img src="docs/screenshots/
|
|
61
|
-
<img src="docs/screenshots/readme-crown.png" width="200" alt="加冕">
|
|
62
|
-
<img src="docs/screenshots/readme-shop.png" width="200" alt="商店">
|
|
17
|
+
<img src="docs/screenshots/readme-home.png" width="260" alt="主菜单">
|
|
18
|
+
<img src="docs/screenshots/c4-dex-dashboard.png" width="260" alt="图鉴">
|
|
19
|
+
<img src="docs/screenshots/c6-skins.png" width="260" alt="换肤">
|
|
63
20
|
</p>
|
|
64
21
|
|
|
65
|
-
##
|
|
66
|
-
|
|
67
|
-
不装 DSH 也能养:[`apps/desktop/`](apps/desktop/) 是一个 Electron 小程序,双击就有一只猪趴在屏幕右下角,
|
|
68
|
-
玩法、界面和 DSH 里完全一样(用的是同一份代码)。
|
|
22
|
+
## 安装
|
|
69
23
|
|
|
70
|
-
|
|
71
|
-
- 存档和 DSH 里那只各养各的;托盘菜单「从 DSH 导入猪…」可以把那只接过来
|
|
72
|
-
- 托盘菜单还有:藏起来 / 开机自启 / 退出
|
|
73
|
-
- 桌面版没有「吃你的真实工作」,只靠时间慢慢长
|
|
24
|
+
### DSH 插件
|
|
74
25
|
|
|
75
26
|
```sh
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
npm start # 直接跑
|
|
79
|
-
npm run dist:linux # 打 AppImage(dist/)
|
|
80
|
-
npm run dist:win # 打 Windows 安装包
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
Linux 上默认走 XWayland(Wayland 不让窗口给自己裁形状)。
|
|
84
|
-
|
|
85
|
-
**更新**:桌面版主屏多一个 🔄 更新 App ——
|
|
86
|
-
|
|
87
|
-
- 「更新到最新」一键换到 GitHub 上最新的版本;也可以在版本列表里挑一个换过去
|
|
88
|
-
- 换完猪重启一下(约 1 秒)就好;换之前自动备份存档,还能「回到上一个版本」
|
|
89
|
-
- 换的只是游戏本身(几百 KB 的游戏包,下载后校验 sha256),不用重装
|
|
90
|
-
- 太旧、读不了现在存档的版本是灰的;要更新安装包本身的版本会带你去下载页
|
|
91
|
-
|
|
92
|
-
<p align="center"><img src="docs/screenshots/desktop-update.png" width="300" alt="桌面版更新"></p>
|
|
93
|
-
|
|
94
|
-
**发版**:把根目录 `package.json` 的 version 改好,推一个同名标签(如 `v0.25.0`),
|
|
95
|
-
GitHub Actions([`.github/workflows/release.yml`](.github/workflows/release.yml))会跑测试、
|
|
96
|
-
生成游戏包、打 Linux AppImage 和 Windows 安装包,一起挂到 Release 上。
|
|
97
|
-
|
|
98
|
-
## 养成规则
|
|
99
|
-
|
|
100
|
-
> 具体数值以 [`packages/pet-core/src/data/`](packages/pet-core/src/data/) 与 [CHANGELOG](CHANGELOG.md) 为准,这里只讲规则。
|
|
101
|
-
|
|
102
|
-
- **成长**:吃你的真实工作长大(每天有上限,06:00 换天)。照顾得好长得快。
|
|
103
|
-
等级封顶 60,Lv10 长成青年、Lv40 长成成年;没有老死,大约半年养到满级。
|
|
104
|
-
- **加冕**:长成后本事和阅历攒够了,可以在主屏的 👑 加冕 App 里加冕成猪猪王,换一身样子(不加收益,也可以不加冕)。以后会有更多形态。
|
|
105
|
-
- **照顾**:喂食、洗澡、玩耍都要花背包里的道具,点按钮会弹出背包让你挑;摸摸免费。
|
|
106
|
-
- **生病**:长期饿着、脏着会有几率生病。5 条病链,每条一期比一期重,
|
|
107
|
-
得吃**对症**的药;吃错会加重。实在不会治可以花钱看医生。健康归零就走了。
|
|
108
|
-
- **死了**:用还魂丹救回来,等级、金币、收藏都在;或者领养一只新的。
|
|
109
|
-
- **外出**:打工、上课、旅行时猪不在家,照样消耗;随时能叫回来。
|
|
110
|
-
回来时可能顺手带点东西。
|
|
111
|
-
- **日常**:每天签到,在线每小时一个礼物,日记记着它这些天干了什么。
|
|
112
|
-
- **说话**:猪会主动搭话、回应你的照顾,可以点选项回它。嫌吵就开免打扰;
|
|
113
|
-
也可以让它换个称呼叫你。
|
|
114
|
-
|
|
115
|
-
**所有结算都按时间戳补算**,没有常驻定时器:关掉 DSH 期间猪照样在饿、
|
|
116
|
-
工照样会打完,重开时一次结清并弹公告。随机事件用存档里的种子,重开不会刷出不同结果。
|
|
117
|
-
|
|
118
|
-
## 存档
|
|
119
|
-
|
|
120
|
-
`$DSH_HOME/dsh-piggy/state.json` —— 原子写(临时文件 → fsync → rename)+ 节流。
|
|
121
|
-
老版本存在 `$DSH_HOME/dsh-pig/` 的存档,第一次启动时会自动搬过来(旧目录改名保留,不删)。
|
|
122
|
-
存档格式升级时逐级迁移,**升级前自动备份**为 `state.json.v<旧版本>-backup-<时间>`。
|
|
123
|
-
|
|
124
|
-
## 配置
|
|
125
|
-
|
|
126
|
-
```yaml
|
|
127
|
-
- id: dsh-piggy
|
|
128
|
-
name: dsh-piggy
|
|
129
|
-
config:
|
|
130
|
-
command: pig # 改斜杠命令名
|
|
131
|
-
statePath: /abs/path/to/state.json # 改存档位置
|
|
27
|
+
git clone https://github.com/CLICGGER-TYPES/dsh-piggy.git
|
|
28
|
+
dsh plugin --profile web add /path/to/dsh-piggy
|
|
132
29
|
```
|
|
133
30
|
|
|
134
|
-
|
|
31
|
+
安装后重启 DSH,再刷新页面。
|
|
135
32
|
|
|
136
|
-
|
|
137
|
-
/pig 状态卡
|
|
138
|
-
/pig hatch | adopt 拆纸盒 / 领养新猪
|
|
139
|
-
/pig feed | bathe | play | pet 照顾
|
|
140
|
-
/pig study <科目> /pig interest <兴趣班> /pig work <工作> /pig trip <目的地>
|
|
141
|
-
/pig calloff 叫回来
|
|
142
|
-
/pig shop | buy <物品> | use <物品> | sell <纪念品> | wear <装扮>
|
|
143
|
-
/pig reply <序号> 回它的话
|
|
144
|
-
/pig weigh | name <名字> | about
|
|
145
|
-
```
|
|
33
|
+
### 桌面版
|
|
146
34
|
|
|
147
|
-
|
|
35
|
+
从 [GitHub Releases](https://github.com/CLICGGER-TYPES/dsh-piggy/releases/latest) 下载对应系统的文件:
|
|
148
36
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
```
|
|
37
|
+
- Windows:`setup.exe` 安装版或 `portable.exe` 便携版
|
|
38
|
+
- Linux:`AppImage`
|
|
39
|
+
- macOS:按芯片选择 `arm64.dmg` 或 `x64.dmg`
|
|
153
40
|
|
|
154
|
-
|
|
41
|
+
macOS 包暂未签名,第一次打开请在访达中右键应用并选择“打开”。更多安装与存档说明见[桌面版指南](docs/guides/desktop.md)。
|
|
155
42
|
|
|
156
|
-
|
|
157
|
-
> (DSH 既有行为,其它插件同样如此)。服务只绑 `127.0.0.1`。
|
|
43
|
+
主菜单「更新」会分别显示游戏版本和桌面外壳版本。游戏包可在 App 内更新;桌面外壳从 v0.2.0 起,Windows 安装版和 Linux AppImage 可在 App 内下载并重启安装。Windows 便携版、未签名 macOS 版需到发布页手动替换;旧版外壳需先手动升级一次。详见[更新说明](docs/guides/updates.md)。
|
|
158
44
|
|
|
159
|
-
|
|
45
|
+
商店和背包中的「装扮」入口暂时隐藏,已有装扮和穿戴记录会保留;后续会重新设计展示方式。
|
|
160
46
|
|
|
161
|
-
|
|
162
|
-
[guokaigdg/animal-island-ui](https://github.com/guokaigdg/animal-island-ui) 的 design-system 实现:
|
|
163
|
-
奶油羊皮纸底、暖棕文字和边框、薄荷青主按钮带 3D 底边、彩色圆角方块、点点纹理的居民卡。
|
|
164
|
-
token 声明在组件根节点而**不是 `:root`**,不污染宿主页面。
|
|
47
|
+
## 开始玩
|
|
165
48
|
|
|
166
|
-
|
|
167
|
-
[xuemian168/qqpet_automation](https://github.com/xuemian168/qqpet_automation)(逆向分析)
|
|
168
|
-
与 [ice-cream-headache.github.io](https://github.com/ice-cream-headache/ice-cream-headache.github.io)(界面截图)。
|
|
169
|
-
**没有使用任何原版代码或美术资源**,详见 [THIRD-PARTY.md](THIRD-PARTY.md)。
|
|
49
|
+
右键小猪打开主菜单,左键摸摸它,拖动可以换位置。第一次见到纸盒时连续点三下,把猪接回家。
|
|
170
50
|
|
|
171
|
-
|
|
51
|
+
详细玩法、体型、美术图标设置和命令见[玩法指南](docs/guides/gameplay.md)。换肤可直接阅读[玩家换肤教程](docs/guides/skins.md),制作皮肤从[自定义皮肤制作教程](docs/guides/creating-skins.md)开始。
|
|
172
52
|
|
|
173
|
-
|
|
174
|
-
dsh-piggy/
|
|
175
|
-
├── package.json 插件清单与 build / typecheck / test 脚本
|
|
176
|
-
├── cordis.patch.yml profile 配置层
|
|
177
|
-
├── core.js / data.js 根目录再导出入口,兼容既有导入
|
|
178
|
-
├── packages/pet-core/ 共享领域库 @dsh-piggy/core,纯 JavaScript、无 IO
|
|
179
|
-
│ └── src/ core/ 领域规则与 data/ 静态游戏表
|
|
180
|
-
├── store.js / store/ 存档读写、原子写与节流
|
|
181
|
-
├── index.js 宿主组装入口
|
|
182
|
-
├── snapshot.js 面板快照
|
|
183
|
-
├── commands.js /pig 命令
|
|
184
|
-
├── routes.js HTTP 路由
|
|
185
|
-
├── render.js 文案与 ASCII 立绘
|
|
186
|
-
├── src/client/ 客户端源码:场景、交互、样式与 tabs/*
|
|
187
|
-
├── client.js 生成的单文件客户端产物,随仓库提交
|
|
188
|
-
├── scripts/
|
|
189
|
-
│ ├── build-client.mjs esbuild 打包入口
|
|
190
|
-
│ └── typecheck.mjs JavaScript 类型检查入口
|
|
191
|
-
├── test/ 游戏逻辑、宿主、客户端、存档、构建与规范检查
|
|
192
|
-
├── tools/ preview.html / art.html 等浏览器预览台
|
|
193
|
-
├── assets/ SVG 立绘
|
|
194
|
-
├── docs/ 设计、编码规范、美术需求与开发记录
|
|
195
|
-
├── CHANGELOG.md 版本变更历史
|
|
196
|
-
├── THIRD-PARTY.md 第三方致谢与许可
|
|
197
|
-
└── LICENSE MIT
|
|
198
|
-
```
|
|
53
|
+
## 文档
|
|
199
54
|
|
|
200
|
-
|
|
55
|
+
- [文档中心](docs/README.md)
|
|
56
|
+
- [玩法与养成规则](docs/guides/gameplay.md)
|
|
57
|
+
- [桌面版安装、存档与更新](docs/guides/desktop.md)
|
|
58
|
+
- [游戏包与桌面外壳怎样更新](docs/guides/updates.md)
|
|
59
|
+
- [开发与调试](docs/DEVELOPMENT.md)
|
|
60
|
+
- [版本记录](CHANGELOG.md)
|
|
201
61
|
|
|
202
|
-
|
|
203
|
-
**构建源码和运行完整检查**需要 esbuild、TypeScript 与 Node 类型定义。
|
|
204
|
-
仓库的 `package.json` 当前没有声明这些开发依赖,单独克隆时先在本地安装:
|
|
62
|
+
## 开发
|
|
205
63
|
|
|
206
64
|
```sh
|
|
207
|
-
git -c core.autocrlf=false clone https://github.com/CLICGGER-TYPES/dsh-piggy.git
|
|
208
|
-
cd dsh-piggy
|
|
209
65
|
npm install --no-save --package-lock=false esbuild@0.28.2 typescript@5.9.3 @types/node@20.19.43
|
|
210
66
|
npm run build
|
|
67
|
+
npm test
|
|
211
68
|
npm run typecheck
|
|
212
|
-
node --test
|
|
213
69
|
```
|
|
214
70
|
|
|
215
|
-
|
|
216
|
-
`core.autocrlf=false` 让此次克隆保留仓库的 LF 换行;构建产物守卫逐字节比较
|
|
217
|
-
`client.js`,Windows 自动转换成 CRLF 会影响这个检查。
|
|
218
|
-
`--no-save --package-lock=false` 只安装本地工具,不修改依赖清单、不生成锁文件;
|
|
219
|
-
`node_modules/` 已被 Git 忽略。安装 esbuild 时 npm 会运行它的安装脚本,以准备当前平台的构建工具。
|
|
220
|
-
|
|
221
|
-
上面的版本组合已经验证可构建和检查。这里固定 TypeScript 5.9.3:
|
|
222
|
-
当前检查脚本没有显式指定 `strict`,而 [TypeScript 6.0 起默认启用 strict](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-6-0.html#strict-is-now-true-by-default),
|
|
223
|
-
直接安装新版会产生额外类型错误。升级检查工具应另行验证。
|
|
224
|
-
|
|
225
|
-
- **客户端**:修改 `src/client/`,运行 `npm run build`,提交生成的 `client.js`。
|
|
226
|
-
不要直接编辑 `client.js`;DSH 加载它,`test/bundle.test.js` 检查它与源码一致。
|
|
227
|
-
- **游戏逻辑与数据**:修改 `packages/pet-core/src/core/` 或 `packages/pet-core/src/data/`;
|
|
228
|
-
存档相关代码在 `store/`,新增存档结构还需在共享库 `core/upgrades.js` 追加迁移。
|
|
229
|
-
领域层保持无 IO,时间必须由参数传入。
|
|
230
|
-
- **提交前**:运行 `npm run typecheck` 和 `node --test`。
|
|
231
|
-
UI 改动还要在真实浏览器中确认;约定见 [docs/CONVENTIONS.md](docs/CONVENTIONS.md)。
|
|
232
|
-
|
|
233
|
-
提示 `esbuild not found` 或 `no tsc found` 时,确认已在仓库根目录执行工具安装命令。
|
|
234
|
-
也可通过 `DSH_PIG_ESBUILD`、`DSH_PIG_TSC`、`DSH_PIG_TYPES` 指向已有工具;
|
|
235
|
-
具体解析规则见 `scripts/`。
|
|
236
|
-
|
|
237
|
-
## 看界面(不用连宿主)
|
|
238
|
-
|
|
239
|
-
直接用浏览器打开 `tools/preview.html` 即可;仓库已包含 `client.js`,
|
|
240
|
-
只看现有界面无需安装开发工具。修改客户端源码后,先重新构建再刷新预览页。
|
|
241
|
-
|
|
242
|
-
Linux:
|
|
243
|
-
|
|
244
|
-
```sh
|
|
245
|
-
xdg-open tools/preview.html
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
Windows 的操作见下一节。预览台伪造 `window.__ModuleLoader__` 和 `fetch`,
|
|
249
|
-
不启动 DSH 就能看到主屏和各个 App。它使用示例快照:
|
|
250
|
-
**预览中的操作不会验证真实宿主的金币扣除、活动结算或存档读写**。
|
|
251
|
-
|
|
252
|
-
浏览器开发者工具的 Console 中可以使用:
|
|
253
|
-
|
|
254
|
-
```js
|
|
255
|
-
window.pigStub.setOpen(true) // 展开;false 收起
|
|
256
|
-
window.pigStub.tab('study') // 打开学习 App
|
|
257
|
-
window.pigStub.state() // 查看当前布局
|
|
258
|
-
window.dshPigDev.on() // 开启开发者面板;off() 关闭
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
`tools/art.html` 可查看立绘,`tools/stages.html` 可查看生命周期形态示意。
|
|
262
|
-
这些预览页使用示例数据,当前阶段与数值以 `packages/pet-core/src/data/` 和实际宿主快照为准。
|
|
263
|
-
|
|
264
|
-
> 假 DOM 没有 CSS 引擎。曾经出现过 JS 正确设置 `hidden = true`、测试通过,
|
|
265
|
-
> 浏览器却仍显示被隐藏元素的情况。**断言标志位证明不了元素不可见**,要在真实浏览器确认。
|
|
266
|
-
|
|
267
|
-
## Windows 入门(PowerShell)
|
|
268
|
-
|
|
269
|
-
先安装 Git 与 Node.js ≥20,重新打开 PowerShell,在希望保存项目的目录执行:
|
|
270
|
-
|
|
271
|
-
```powershell
|
|
272
|
-
git --version
|
|
273
|
-
node --version
|
|
274
|
-
npm.cmd --version
|
|
275
|
-
git -c core.autocrlf=false clone https://github.com/CLICGGER-TYPES/dsh-piggy.git
|
|
276
|
-
Set-Location .\dsh-piggy
|
|
277
|
-
```
|
|
278
|
-
|
|
279
|
-
`npm.cmd` 调用 npm 的 Windows 命令入口,避免 PowerShell 把 `npm` 解析成
|
|
280
|
-
`npm.ps1` 后因执行策略被拒绝;无需修改系统执行策略。
|
|
281
|
-
如果已按上一节克隆,进入那个目录即可,不用重复 clone。
|
|
282
|
-
|
|
283
|
-
只看界面,用默认浏览器打开:
|
|
284
|
-
|
|
285
|
-
```powershell
|
|
286
|
-
Start-Process -FilePath (Resolve-Path .\tools\preview.html).Path
|
|
287
|
-
Start-Process -FilePath (Resolve-Path .\tools\art.html).Path
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
准备改源码时,在仓库根目录安装开发工具并检查:
|
|
291
|
-
|
|
292
|
-
```powershell
|
|
293
|
-
npm.cmd install --no-save --package-lock=false esbuild@0.28.2 typescript@5.9.3 @types/node@20.19.43
|
|
294
|
-
npm.cmd run build
|
|
295
|
-
npm.cmd run typecheck
|
|
296
|
-
node --test
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
如果已安装 DSH CLI,且 `dsh` 在 PATH 中,可把本地仓库加入 **web profile**:
|
|
300
|
-
|
|
301
|
-
```powershell
|
|
302
|
-
dsh plugin --profile web add (Resolve-Path .).Path
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
安装后重启对应的 DSH 宿主,再刷新页面。**web 与 desktop 是不同 profile**;
|
|
306
|
-
这里的命令只针对 web,不代表 DSH Desktop 的安装步骤。
|
|
307
|
-
源码改完、构建完成后也要重启真实宿主,才能重新组装客户端 bundle;
|
|
308
|
-
开发者面板可以查看宿主快照中的构建版本。
|
|
309
|
-
|
|
310
|
-
## 文档
|
|
311
|
-
|
|
312
|
-
- [CHANGELOG.md](CHANGELOG.md) —— 版本变更历史
|
|
313
|
-
- [docs/CONVENTIONS.md](docs/CONVENTIONS.md) —— 编码、验证与提交规范
|
|
314
|
-
- [docs/REFACTOR-PLAN.md](docs/REFACTOR-PLAN.md) —— 源码分层与构建说明
|
|
315
|
-
- [docs/DESIGN.md](docs/DESIGN.md) —— 为什么是这样:参考调研、数值映射、架构决策
|
|
316
|
-
- [docs/PROCESS.md](docs/PROCESS.md) —— 怎么变成这样:每一轮反馈、每个 bug、每条验证证据
|
|
71
|
+
开发环境、桌面打包、HTTP 接口和目录说明见[开发指南](docs/DEVELOPMENT.md)。
|
|
317
72
|
|
|
318
|
-
##
|
|
73
|
+
## 致谢与许可
|
|
319
74
|
|
|
320
|
-
MIT
|
|
321
|
-
立绘是作者提供的原创矢量图。QQ 宠物是腾讯的商标,本插件与其无任何关联、
|
|
322
|
-
亦未获其授权。第三方致谢与许可见 [THIRD-PARTY.md](THIRD-PARTY.md)。
|
|
75
|
+
特别感谢 @1nuoiscute 贡献猪猪王原型、恶魔猪、肥猪体型与胖胖猪动作立绘。视觉风格参考 [animal-island-ui](https://github.com/guokaigdg/animal-island-ui),玩法数值参考资料见 [THIRD-PARTY.md](THIRD-PARTY.md)。项目采用 [MIT License](LICENSE)。
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64" role="img" aria-label="宇航员猪·洗澡"><title>宇航员猪·洗澡</title><rect x="45" y="44" width="16" height="2" rx="1" fill="#C4A27A"/><rect x="47" y="46" width="2" height="15" rx="0.6" fill="#B38E67"/><rect x="57" y="46" width="2" height="15" rx="0.6" fill="#B38E67"/><rect x="47" y="41" width="12" height="3" rx="1" fill="#EDF0E8"/><g transform="translate(47 28) scale(.27)"><path d="M35 9C25 0 9 4 3 15C-5 28-1 42 10 48Q24 56 37 44" fill="none" stroke="#9DBCC3" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M34 9C44 14 48 26 43 38Q41 43 37 46L34 43Q44 29 32 12Z" fill="#789CA8"/><path d="M35 11Q49 27 37 44" fill="none" stroke="#BCD0D0" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/></g><ellipse cx="23" cy="44" rx="21" ry="4" fill="#83AAA4"/><g transform="translate(0 2) scale(0.75)"><g transform="translate(3 9) scale(.88)"><g transform="translate(-7.17 -0.78) scale(0.1993)" stroke-linecap="round" stroke-linejoin="round"><path xmlns="http://www.w3.org/2000/svg" fill="#FF9FA5" d="M214 210C213 221 210 232 211 246C212 256 224 257 233 254C244 251 246 240 247 225L248 211Z" />
|
|
2
|
+
|
|
3
|
+
<path xmlns="http://www.w3.org/2000/svg" d="M294 62C298 47 305 40 315 45C327 50 341 64 329 72C319 80 309 67 316 51C322 39 330 31 339 35" fill="none" stroke="#FFD1AF" stroke-width="11" />
|
|
4
|
+
|
|
5
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#FFD1AF" d="M110 70C155 46 192 37 231 41C259 43 279 48 298 64C320 83 332 105 332 128C333 146 326 163 319 180C312 197 309 223 308 241C308 254 301 260 289 260C277 260 270 255 269 244L267 230C266 222 261 219 253 220C231 227 213 235 192 240L191 282C191 292 185 298 173 298C159 298 152 293 152 284L151 248C140 248 131 247 123 245L122 271C121 282 116 287 104 287C93 287 88 283 87 273L84 232C63 224 52 210 48 192C42 170 48 148 62 126C69 115 75 106 80 94C87 79 96 68 110 70Z" />
|
|
6
|
+
|
|
7
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#FFD1AF" d="M63 107C64 97 75 81 84 68C90 58 102 58 108 66L115 87L90 113Z" />
|
|
8
|
+
|
|
9
|
+
</g><path d="M14 14C23 8 33 11 37 19C41 25 40 34 35 40C31 46 23 49 15 47C7 46 2 42 2 35C2 27 8 20 14 14Z" fill="#FFD1AF"/><g transform="translate(-7.17 -0.78) scale(0.1993)" stroke-linecap="round" stroke-linejoin="round"><path xmlns="http://www.w3.org/2000/svg" d="M97 65C88 63 83 75 78 82C71 91 65 101 64 106C68 116 86 109 93 98" fill="none" stroke="#E95892" stroke-width="10" />
|
|
10
|
+
<path xmlns="http://www.w3.org/2000/svg" d="M187 104C174 110 184 129 193 139C201 147 213 150 220 139C225 131 224 119 222 112" fill="none" stroke="#E95892" stroke-width="11" />
|
|
11
|
+
|
|
12
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M81 140Q91 152 101 140L101 145Q91 158 81 145Z" />
|
|
13
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M155 155Q165 167 175 155L175 160Q165 173 155 160Z" />
|
|
14
|
+
|
|
15
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#FF8195" d="M108 165C91 161 78 166 74 175C68 186 74 200 90 207C106 214 125 214 135 204C143 196 140 183 129 174C123 170 116 167 108 165Z" />
|
|
16
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M92 175C87 174 84 178 85 185C85 191 89 196 94 195C99 194 101 188 99 182C98 178 96 175 92 175Z" />
|
|
17
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M115 180C110 178 107 183 107 189C106 195 109 200 114 200C119 200 122 195 122 189C122 184 119 180 115 180Z" />
|
|
18
|
+
</g><ellipse cx="23.72" cy="36.49" rx="2.39" ry="1.4" fill="#FFAFAC"/></g></g><path d="M2 44H44L41 56Q40 61 23 61Q6 61 5 56Z" fill="#83AAA4"/><ellipse cx="23" cy="44" rx="21" ry="3.5" fill="#BEDDD0"/><ellipse cx="23" cy="43.5" rx="18.8" ry="2" fill="#E6EEE0"/><path d="M7 52Q23 56 39 52L38 55Q23 59 8 55Z" fill="#B6D4C5"/><ellipse cx="12" cy="19" rx="3" ry="2.4" fill="#FFF9EA"/><ellipse cx="16" cy="17" rx="3.3" ry="3" fill="#FFF9EA"/><ellipse cx="20" cy="19" rx="3" ry="2" fill="#FFF9EA"/><ellipse cx="11" cy="43" rx="3" ry="2" fill="#FFF9EA"/><ellipse cx="15" cy="41" rx="2" ry="2" fill="#FFF9EA"/></svg>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64" role="img" aria-label="宇航员猪·吃饭"><title>宇航员猪·吃饭</title><g transform="translate(13 12) scale(0.74)"><g transform="rotate(-8 32 44)"><g transform="translate(3 9) scale(.88)"><path d="M52 23H59Q62 23 62 27V42Q62 45 58 45H52Z" fill="#819FAA"/><path d="M58 27H63V40H58Z" fill="#B8CACB"/><g transform="translate(-7.17 -0.78) scale(0.1993)" stroke-linecap="round" stroke-linejoin="round"><path xmlns="http://www.w3.org/2000/svg" d="M294 62C298 47 305 40 315 45C327 50 341 64 329 72C319 80 309 67 316 51C322 39 330 31 339 35" fill="none" stroke="#FFD1AF" stroke-width="11" />
|
|
2
|
+
|
|
3
|
+
</g><g transform="translate(-7.17 -0.78) scale(0.1993)" stroke-linecap="round" stroke-linejoin="round"><path xmlns="http://www.w3.org/2000/svg" fill="#91ACB5" d="M214 210C213 221 210 232 211 246C212 256 224 257 233 254C244 251 246 240 247 225L248 211Z" />
|
|
4
|
+
|
|
5
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#EDF0E8" d="M110 70C155 46 192 37 231 41C259 43 279 48 298 64C320 83 332 105 332 128C333 146 326 163 319 180C312 197 309 223 308 241C308 254 301 260 289 260C277 260 270 255 269 244L267 230C266 222 261 219 253 220C231 227 213 235 192 240L191 282C191 292 185 298 173 298C159 298 152 293 152 284L151 248C140 248 131 247 123 245L122 271C121 282 116 287 104 287C93 287 88 283 87 273L84 232C63 224 52 210 48 192C42 170 48 148 62 126C69 115 75 106 80 94C87 79 96 68 110 70Z" />
|
|
6
|
+
|
|
7
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#EDF0E8" d="M63 107C64 97 75 81 84 68C90 58 102 58 108 66L115 87L90 113Z" />
|
|
8
|
+
|
|
9
|
+
</g><path d="M10 53H17V55Q17 57 14 57Q10 57 10 55Z" fill="#91ACB5"/><path d="M23 56H31V58Q31 60 27 60Q23 60 23 58Z" fill="#91ACB5"/><path d="M47 48H54V50Q54 52 50 52Q47 52 47 50Z" fill="#91ACB5"/><path d="M48 28H56V37H48Z" fill="#8DA8B1"/><path d="M49 29H55V32H49Z" fill="#CADBD3"/><ellipse cx="50" cy="35" rx="0.7" ry="0.7" fill="#D8948A"/><ellipse cx="53" cy="35" rx="0.7" ry="0.7" fill="#D5B772"/><path d="M14 14C23 8 33 11 37 19C41 25 40 34 35 40C31 46 23 49 15 47C7 46 2 42 2 35C2 27 8 20 14 14Z" fill="#FFD1AF"/><g transform="translate(-7.17 -0.78) scale(0.1993)" stroke-linecap="round" stroke-linejoin="round"><path xmlns="http://www.w3.org/2000/svg" d="M97 65C88 63 83 75 78 82C71 91 65 101 64 106C68 116 86 109 93 98" fill="none" stroke="#E95892" stroke-width="10" />
|
|
10
|
+
<path xmlns="http://www.w3.org/2000/svg" d="M187 104C174 110 184 129 193 139C201 147 213 150 220 139C225 131 224 119 222 112" fill="none" stroke="#E95892" stroke-width="11" />
|
|
11
|
+
|
|
12
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M91 130C84 129 79 136 80 144C80 151 85 155 92 154C99 153 103 147 102 140C102 134 98 130 91 130Z" />
|
|
13
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M166 145C159 144 154 150 154 157C153 164 158 170 165 170C171 170 176 164 176 157C176 151 173 146 166 145Z" />
|
|
14
|
+
|
|
15
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#FF8195" d="M108 165C91 161 78 166 74 175C68 186 74 200 90 207C106 214 125 214 135 204C143 196 140 183 129 174C123 170 116 167 108 165Z" />
|
|
16
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M92 175C87 174 84 178 85 185C85 191 89 196 94 195C99 194 101 188 99 182C98 178 96 175 92 175Z" />
|
|
17
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M115 180C110 178 107 183 107 189C106 195 109 200 114 200C119 200 122 195 122 189C122 184 119 180 115 180Z" />
|
|
18
|
+
</g><ellipse cx="23.72" cy="36.49" rx="2.39" ry="1.4" fill="#FFAFAC"/></g></g></g><path d="M7 48.5H32L29.8 57Q28.7 60 19.5 60Q10.2 60 9.3 57Z" fill="#B4895D"/><ellipse cx="19.5" cy="48.5" rx="12.5" ry="3.4" fill="#D9B67C"/><ellipse cx="19.5" cy="48" rx="10.2" ry="2.1" fill="#987547"/><path d="M11 48Q11 44 15 44Q16 41 19 43Q22 41 24 44Q28 43 29 48Z" fill="#F2D184"/><ellipse cx="17" cy="45" rx="1.2" ry="1.2" fill="#A5BA86"/><ellipse cx="23" cy="46" rx="1.1" ry="1.1" fill="#C77D60"/><path d="M11 54Q19 56 28 54L27.4 56Q19 58 11.6 56Z" fill="#F5DEB0"/></svg>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64" role="img" aria-label="宇航员猪·摸摸"><title>宇航员猪·摸摸</title><g transform="translate(3 6) scale(0.88)"><g transform="rotate(3 32 44)"><g transform="translate(3 9) scale(.88)"><path d="M52 23H59Q62 23 62 27V42Q62 45 58 45H52Z" fill="#819FAA"/><path d="M58 27H63V40H58Z" fill="#B8CACB"/><g transform="translate(-7.17 -0.78) scale(0.1993)" stroke-linecap="round" stroke-linejoin="round"><path xmlns="http://www.w3.org/2000/svg" d="M294 62C298 47 305 40 315 45C327 50 341 64 329 72C319 80 309 67 316 51C322 39 330 31 339 35" fill="none" stroke="#FFD1AF" stroke-width="11" />
|
|
2
|
+
|
|
3
|
+
</g><g transform="translate(-7.17 -0.78) scale(0.1993)" stroke-linecap="round" stroke-linejoin="round"><path xmlns="http://www.w3.org/2000/svg" fill="#91ACB5" d="M214 210C213 221 210 232 211 246C212 256 224 257 233 254C244 251 246 240 247 225L248 211Z" />
|
|
4
|
+
|
|
5
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#EDF0E8" d="M110 70C155 46 192 37 231 41C259 43 279 48 298 64C320 83 332 105 332 128C333 146 326 163 319 180C312 197 309 223 308 241C308 254 301 260 289 260C277 260 270 255 269 244L267 230C266 222 261 219 253 220C231 227 213 235 192 240L191 282C191 292 185 298 173 298C159 298 152 293 152 284L151 248C140 248 131 247 123 245L122 271C121 282 116 287 104 287C93 287 88 283 87 273L84 232C63 224 52 210 48 192C42 170 48 148 62 126C69 115 75 106 80 94C87 79 96 68 110 70Z" />
|
|
6
|
+
|
|
7
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#EDF0E8" d="M63 107C64 97 75 81 84 68C90 58 102 58 108 66L115 87L90 113Z" />
|
|
8
|
+
|
|
9
|
+
</g><path d="M10 53H17V55Q17 57 14 57Q10 57 10 55Z" fill="#91ACB5"/><path d="M23 56H31V58Q31 60 27 60Q23 60 23 58Z" fill="#91ACB5"/><path d="M47 48H54V50Q54 52 50 52Q47 52 47 50Z" fill="#91ACB5"/><path d="M48 28H56V37H48Z" fill="#8DA8B1"/><path d="M49 29H55V32H49Z" fill="#CADBD3"/><ellipse cx="50" cy="35" rx="0.7" ry="0.7" fill="#D8948A"/><ellipse cx="53" cy="35" rx="0.7" ry="0.7" fill="#D5B772"/><path d="M14 14C23 8 33 11 37 19C41 25 40 34 35 40C31 46 23 49 15 47C7 46 2 42 2 35C2 27 8 20 14 14Z" fill="#FFD1AF"/><g transform="translate(-7.17 -0.78) scale(0.1993)" stroke-linecap="round" stroke-linejoin="round"><path xmlns="http://www.w3.org/2000/svg" d="M97 65C88 63 83 75 78 82C71 91 65 101 64 106C68 116 86 109 93 98" fill="none" stroke="#E95892" stroke-width="10" />
|
|
10
|
+
<path xmlns="http://www.w3.org/2000/svg" d="M187 104C174 110 184 129 193 139C201 147 213 150 220 139C225 131 224 119 222 112" fill="none" stroke="#E95892" stroke-width="11" />
|
|
11
|
+
|
|
12
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M81 145Q91 130 101 145L99 148Q91 138 83 148Z" />
|
|
13
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M155 160Q165 145 175 160L173 163Q165 153 157 163Z" />
|
|
14
|
+
|
|
15
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#FF8195" d="M108 165C91 161 78 166 74 175C68 186 74 200 90 207C106 214 125 214 135 204C143 196 140 183 129 174C123 170 116 167 108 165Z" />
|
|
16
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M92 175C87 174 84 178 85 185C85 191 89 196 94 195C99 194 101 188 99 182C98 178 96 175 92 175Z" />
|
|
17
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M115 180C110 178 107 183 107 189C106 195 109 200 114 200C119 200 122 195 122 189C122 184 119 180 115 180Z" />
|
|
18
|
+
</g><ellipse cx="23.72" cy="36.49" rx="2.39" ry="1.4" fill="#FFAFAC"/><path d="M35 9C25 0 9 4 3 15C-5 28-1 42 10 48Q24 56 37 44" fill="none" stroke="#9DBCC3" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M34 9C44 14 48 26 43 38Q41 43 37 46L34 43Q44 29 32 12Z" fill="#789CA8"/><path d="M35 11Q49 27 37 44" fill="none" stroke="#BCD0D0" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M6 17Q9 10 15 9" fill="none" stroke="#FFFAEC" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/></g></g></g><g transform="translate(10 3) scale(0.7)"><path d="M0 2C-4-2-7 2-5 5L0 10L5 5C7 2 4-2 0 2Z" fill="#EA8BA5"/></g><g transform="translate(22 2) scale(0.45)"><path d="M0 2C-4-2-7 2-5 5L0 10L5 5C7 2 4-2 0 2Z" fill="#EA8BA5"/></g></svg>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64" role="img" aria-label="宇航员猪·玩耍"><title>宇航员猪·玩耍</title><g transform="translate(14 3) scale(0.77)"><g transform="rotate(-8 32 44)"><g transform="translate(3 9) scale(.88)"><path d="M52 23H59Q62 23 62 27V42Q62 45 58 45H52Z" fill="#819FAA"/><path d="M58 27H63V40H58Z" fill="#B8CACB"/><g transform="translate(-7.17 -0.78) scale(0.1993)" stroke-linecap="round" stroke-linejoin="round"><path xmlns="http://www.w3.org/2000/svg" d="M294 62C298 47 305 40 315 45C327 50 341 64 329 72C319 80 309 67 316 51C322 39 330 31 339 35" fill="none" stroke="#FFD1AF" stroke-width="11" />
|
|
2
|
+
|
|
3
|
+
</g><g transform="translate(-7.17 -0.78) scale(0.1993)" stroke-linecap="round" stroke-linejoin="round"><path xmlns="http://www.w3.org/2000/svg" fill="#91ACB5" d="M214 210C213 221 210 232 211 246C212 256 224 257 233 254C244 251 246 240 247 225L248 211Z" />
|
|
4
|
+
|
|
5
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#EDF0E8" d="M110 70C155 46 192 37 231 41C259 43 279 48 298 64C320 83 332 105 332 128C333 146 326 163 319 180C312 197 309 223 308 241C308 254 301 260 289 260C277 260 270 255 269 244L267 230C266 222 261 219 253 220C231 227 213 235 192 240L191 282C191 292 185 298 173 298C159 298 152 293 152 284L151 248C140 248 131 247 123 245L122 271C121 282 116 287 104 287C93 287 88 283 87 273L84 232C63 224 52 210 48 192C42 170 48 148 62 126C69 115 75 106 80 94C87 79 96 68 110 70Z" />
|
|
6
|
+
|
|
7
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#EDF0E8" d="M63 107C64 97 75 81 84 68C90 58 102 58 108 66L115 87L90 113Z" />
|
|
8
|
+
|
|
9
|
+
</g><path d="M10 53H17V55Q17 57 14 57Q10 57 10 55Z" fill="#91ACB5"/><path d="M23 56H31V58Q31 60 27 60Q23 60 23 58Z" fill="#91ACB5"/><path d="M47 48H54V50Q54 52 50 52Q47 52 47 50Z" fill="#91ACB5"/><path d="M48 28H56V37H48Z" fill="#8DA8B1"/><path d="M49 29H55V32H49Z" fill="#CADBD3"/><ellipse cx="50" cy="35" rx="0.7" ry="0.7" fill="#D8948A"/><ellipse cx="53" cy="35" rx="0.7" ry="0.7" fill="#D5B772"/><path d="M14 14C23 8 33 11 37 19C41 25 40 34 35 40C31 46 23 49 15 47C7 46 2 42 2 35C2 27 8 20 14 14Z" fill="#FFD1AF"/><g transform="translate(-7.17 -0.78) scale(0.1993)" stroke-linecap="round" stroke-linejoin="round"><path xmlns="http://www.w3.org/2000/svg" d="M97 65C88 63 83 75 78 82C71 91 65 101 64 106C68 116 86 109 93 98" fill="none" stroke="#E95892" stroke-width="10" />
|
|
10
|
+
<path xmlns="http://www.w3.org/2000/svg" d="M187 104C174 110 184 129 193 139C201 147 213 150 220 139C225 131 224 119 222 112" fill="none" stroke="#E95892" stroke-width="11" />
|
|
11
|
+
|
|
12
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M81 145Q91 130 101 145L99 148Q91 138 83 148Z" />
|
|
13
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M155 160Q165 145 175 160L173 163Q165 153 157 163Z" />
|
|
14
|
+
|
|
15
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#FF8195" d="M108 165C91 161 78 166 74 175C68 186 74 200 90 207C106 214 125 214 135 204C143 196 140 183 129 174C123 170 116 167 108 165Z" />
|
|
16
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M92 175C87 174 84 178 85 185C85 191 89 196 94 195C99 194 101 188 99 182C98 178 96 175 92 175Z" />
|
|
17
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M115 180C110 178 107 183 107 189C106 195 109 200 114 200C119 200 122 195 122 189C122 184 119 180 115 180Z" />
|
|
18
|
+
</g><ellipse cx="23.72" cy="36.49" rx="2.39" ry="1.4" fill="#FFAFAC"/><path d="M35 9C25 0 9 4 3 15C-5 28-1 42 10 48Q24 56 37 44" fill="none" stroke="#9DBCC3" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M34 9C44 14 48 26 43 38Q41 43 37 46L34 43Q44 29 32 12Z" fill="#789CA8"/><path d="M35 11Q49 27 37 44" fill="none" stroke="#BCD0D0" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M6 17Q9 10 15 9" fill="none" stroke="#FFFAEC" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/></g></g></g><g transform="translate(2 0)"><ellipse cx="17" cy="54" rx="8" ry="8" fill="#E4B95F"/><path d="M11 48Q22 50 17 62L20 61Q24 53 14 46.5ZM9 52Q17 57 25 52L25 54Q17 59 9 54Z" fill="#C97886"/></g></svg>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64" role="img" aria-label="宇航员猪·放松"><title>宇航员猪·放松</title><g transform="translate(3 9) scale(.88)"><path d="M52 23H59Q62 23 62 27V42Q62 45 58 45H52Z" fill="#819FAA"/><path d="M58 27H63V40H58Z" fill="#B8CACB"/><g transform="translate(-7.17 -0.78) scale(0.1993)" stroke-linecap="round" stroke-linejoin="round"><path xmlns="http://www.w3.org/2000/svg" d="M294 62C298 47 305 40 315 45C327 50 341 64 329 72C319 80 309 67 316 51C322 39 330 31 339 35" fill="none" stroke="#FFD1AF" stroke-width="11" />
|
|
2
|
+
|
|
3
|
+
</g><g transform="translate(-7.17 -0.78) scale(0.1993)" stroke-linecap="round" stroke-linejoin="round"><path xmlns="http://www.w3.org/2000/svg" fill="#91ACB5" d="M214 210C213 221 210 232 211 246C212 256 224 257 233 254C244 251 246 240 247 225L248 211Z" />
|
|
4
|
+
|
|
5
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#EDF0E8" d="M110 70C155 46 192 37 231 41C259 43 279 48 298 64C320 83 332 105 332 128C333 146 326 163 319 180C312 197 309 223 308 241C308 254 301 260 289 260C277 260 270 255 269 244L267 230C266 222 261 219 253 220C231 227 213 235 192 240L191 282C191 292 185 298 173 298C159 298 152 293 152 284L151 248C140 248 131 247 123 245L122 271C121 282 116 287 104 287C93 287 88 283 87 273L84 232C63 224 52 210 48 192C42 170 48 148 62 126C69 115 75 106 80 94C87 79 96 68 110 70Z" />
|
|
6
|
+
|
|
7
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#EDF0E8" d="M63 107C64 97 75 81 84 68C90 58 102 58 108 66L115 87L90 113Z" />
|
|
8
|
+
|
|
9
|
+
</g><path d="M10 53H17V55Q17 57 14 57Q10 57 10 55Z" fill="#91ACB5"/><path d="M23 56H31V58Q31 60 27 60Q23 60 23 58Z" fill="#91ACB5"/><path d="M47 48H54V50Q54 52 50 52Q47 52 47 50Z" fill="#91ACB5"/><path d="M48 28H56V37H48Z" fill="#8DA8B1"/><path d="M49 29H55V32H49Z" fill="#CADBD3"/><ellipse cx="50" cy="35" rx="0.7" ry="0.7" fill="#D8948A"/><ellipse cx="53" cy="35" rx="0.7" ry="0.7" fill="#D5B772"/><path d="M14 14C23 8 33 11 37 19C41 25 40 34 35 40C31 46 23 49 15 47C7 46 2 42 2 35C2 27 8 20 14 14Z" fill="#FFD1AF"/><g transform="translate(-7.17 -0.78) scale(0.1993)" stroke-linecap="round" stroke-linejoin="round"><path xmlns="http://www.w3.org/2000/svg" d="M97 65C88 63 83 75 78 82C71 91 65 101 64 106C68 116 86 109 93 98" fill="none" stroke="#E95892" stroke-width="10" />
|
|
10
|
+
<path xmlns="http://www.w3.org/2000/svg" d="M187 104C174 110 184 129 193 139C201 147 213 150 220 139C225 131 224 119 222 112" fill="none" stroke="#E95892" stroke-width="11" />
|
|
11
|
+
|
|
12
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M81 140Q91 152 101 140L101 145Q91 158 81 145Z" />
|
|
13
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M155 155Q165 167 175 155L175 160Q165 173 155 160Z" />
|
|
14
|
+
|
|
15
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#FF8195" d="M108 165C91 161 78 166 74 175C68 186 74 200 90 207C106 214 125 214 135 204C143 196 140 183 129 174C123 170 116 167 108 165Z" />
|
|
16
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M92 175C87 174 84 178 85 185C85 191 89 196 94 195C99 194 101 188 99 182C98 178 96 175 92 175Z" />
|
|
17
|
+
<path xmlns="http://www.w3.org/2000/svg" fill="#373A32" d="M115 180C110 178 107 183 107 189C106 195 109 200 114 200C119 200 122 195 122 189C122 184 119 180 115 180Z" />
|
|
18
|
+
</g><ellipse cx="23.72" cy="36.49" rx="2.39" ry="1.4" fill="#FFAFAC"/><path d="M35 9C25 0 9 4 3 15C-5 28-1 42 10 48Q24 56 37 44" fill="none" stroke="#9DBCC3" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M34 9C44 14 48 26 43 38Q41 43 37 46L34 43Q44 29 32 12Z" fill="#789CA8"/><path d="M35 11Q49 27 37 44" fill="none" stroke="#BCD0D0" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/><path d="M6 17Q9 10 15 9" fill="none" stroke="#FFFAEC" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/></g></svg>
|