npc-shops: generic NPC shop installer + mount shop 15 on NPC 20368

tools/server/item-mall-shop becomes tools/server/npc-shops with one
directory per shop (shop.conf + items.tsv) and install.sh <shop dir>.
New mount shop: 35 ride tickets on NPC 20368 (renamed 坐骑商人 via
NPC_NAME -> mob_names.txt) beside the stable boy in a1/b1/c1. Verified
on 203: 35 slots at the drafted prices, bought + used 71114 -> mounted.
zh overlay: 71118 虎坐骑券(黄), 20368 坐骑商人.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-30 00:38:37 +09:00
co-authored by Claude Opus 5.5
parent 4bfc4244bd
commit 54fa2c0fc3
11 changed files with 169 additions and 72 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
// The system menu's 商城 button (PORT), run by PythonBoot::RunMainScript as module mt_mallhint. In 40250 it
// sends /in_game_mall and the server answers `mall <url>`, which game.GameWindow opens in the web window;
// 203 has no web shop and the port has no web view, so the window stayed empty. The mall items are sold by
// NPC 9010 百店老板娘 next to each village's general store instead (tools/server/item-mall-shop), so the
// NPC 9010 百店老板娘 next to each village's general store instead (tools/server/npc-shops), so the
// button, and a `mall` command from the server, show where to find her. Both are replaced on the classes
// before the system dialog and the game window are created, which bind them.
// Strings are UTF-8 here and go through player.AutoHuntLocalize into the locale's code page.