From a2a4d12ad37f29a3d2473c3aec582d643f71c247 Mon Sep 17 00:00:00 2001 From: ZHU MINCHAO <48154958+MinchaoZhu@users.noreply.github.com> Date: Tue, 3 Nov 2026 10:01:16 +0800 Subject: [PATCH] Fix item shapes: mod sprites need an opaque pixel at the centre of every cell The game decides which cells an item occupies by the alpha of one pixel at the centre of each 16x16 cell. The rig's rack bays left gaps exactly on the centre rows, so 8 of 9 cells counted as empty and other items were placed underneath it; the terminal's stand did the same. The rig gets a solid back plate, the terminal's stand is widened, and art/sprites.py now checks every cell the way the game does and refuses to write a sprite with a hole. Verified in game: new rigs are 3x3 solid, new terminals 2x2 solid. Co-Authored-By: Claude Sonnet 5.5 --- CHANGELOG.md | 2 ++ art/__pycache__/sprites.cpython-314.pyc | Bin 0 -> 12131 bytes art/sprites.py | 20 ++++++++++++++---- src/Decentralized/DealerStock.cs | 1 + .../ModFiles/Textures/Items/rig.png | Bin 255 -> 246 bytes .../ModFiles/Textures/Items/terminal.png | Bin 234 -> 229 bytes 6 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 art/__pycache__/sprites.cpython-314.pyc diff --git a/CHANGELOG.md b/CHANGELOG.md index 84ce1c5..2a6fe53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,3 +10,5 @@ - 杰克逊博士上货(游戏给 mod 的进货钩子,夜间去他店里或他每周来本店摆摊时):没有矿架时必有一个,有了之后 30% 再上;基础显卡每次两张;进阶显卡第 10 天起 60%(再 30% 多一张);旗舰第 30 天起 25%,特供货事件时第 20 天起必有。全新真货,价格为物品价值加他的加价。加入 Web3 治理社区后才上货。开发者模式 F9 有测试入口。 - 命名:币为 PSC,合规交易所为 Poinbase,入口人脉升级为 Web3 治理社区。 - 入口升级归入游戏原有的"服务"栏(和 Probably Automated 一样),图标用交易终端。 +- 修复矿架、交易终端与别的物品重叠:游戏按 mod 物品图每格中心的一个像素判断这一格算不算占用,矿架的卡位之间有缝,缝正好落在中心行上,8 格被当成空格。矿架加了实心背板、终端支架拉通;art/sprites.py 生成时按游戏的方式检查每格中心,有透明格就报错。 + diff --git a/art/__pycache__/sprites.cpython-314.pyc b/art/__pycache__/sprites.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1a3c05e686b7a2804863befd422b98f10bee42ff GIT binary patch literal 12131 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 { for (int i = 0; i < 3; i++) Items.Give(ModHelper.SpawnItem(Items.Rig)); }); ModHelper.AddDebugFunction(ModInfo.Id, ModInfo.Name, "Dr. Jackson stock (test)", () => { EmporiumEntry.Instance.ClearFrontInv(); diff --git a/src/Decentralized/ModFiles/Textures/Items/rig.png b/src/Decentralized/ModFiles/Textures/Items/rig.png index 05cc25f144ea39cae7d86a260fcaa4bf7d203f53..3c08aa0b3bff4c7340d024d30a809b55a9ab74a5 100644 GIT binary patch delta 188 zcmey*_>FOb3gh01s!H|s;^y-m``v8~RBQxf1Z`IsoRl*#FO>>il#EqRHx>~60cFIFXNkpnS*L)1Hj z^G~pPYW$)rFi6HU#dgBJEX}rCKYDm(T~IbKW^0R)lgLr!*Xy~=>|C{|dPR#J55GM> bPbdR}ar69*To)yNF#v(5tDnm{r-UW|LLW#c delta 197 zcmeyy_@8lt3gfYfs!H|$56%mUxl`k2YhYp{AS3v<-XL+3Z9?9wA3(+?TZT`69X36F z_JcQ^&i3geoIs*Uz~d3OI_HnJ~gej)nDVlku24a23~dJ^lI9Wzmvv4FO#qi`9mD_t delta 80 zcmaFL_=<6Y3ggC!s*Ns3n8eNJ|G!~yS8BaUA;aD#`E-*87VBjt7g-;dGH5KlG)e76 j!$kp!3qTZO5Wv77aDG;v!q2_=3_#%N>gTe~DWM4fDeE6H