RF455-086 RF 4.55: the NPC buff vendors are in the data and the server can sell their buffs, but none is placed in the world
New
Game: RF 4.55 (Dragonborn), server v0.3.1, Windows build (stock gameserver.exe).
Client: the supported Taiwan build, RF_Online.bin SHA-256 46528aac…2bbc558 (2025-07-16), Language=Taiwan.
Expected (wiki) Credit to RFDB : Update 4.151 "Ataraxia's Arrival": a buff NPC sells Agility, Holy Shield, Speed and Turbo
Boost. It stands in each HQ and on every neutral map.
Summary
- The vendors are in the client and server data (read).
- The client's
NDStore.edf(Taiwan) rows 278–280 are the per-race "NPC BUFF 商人" ("NPC buff vendor"):sd031B0神聖斬德拉,sd041B0幻獸牧者 andsd051B0戰鬥指揮. Their greeting says you buy buffs with the race currency, and that the list is the race's own buffs, a little different per race. - 708 more rows are "NPC BUFF商人 A/B/C [通行證]" (the premium-pass vendors, for example
sd0A1B0, row 1595). - The codes are also in the client's
Store*.edfandSpecialStore.edf. - In
gamedata_rf455.dbthey arestorelistrows withm_nStore_trade30. Theirspecialstoreslots are:
- The client's
| Store | Slots | m_nEffect | Price (dalant) | Levels |
|---|---|---|---|---|
sd031B0 (Bellato), sd0A1B0 (pass B) | 4 | 28933, 28931, 28934, 28935 | 5,000 / 5,000 / 10,000 / 10,000 | 1–81 |
sd041B0 (Cora) | 3 | 32768, 32773, 32774 | 2,500 / 5,000 / 10,000 | 1–81 |
sd051B0 (Accretia) | 1 | 324079 | 5,000 | 1–81 |
That these are the wiki's four buffs is inferred from the vendor text and the slot count; we have not decoded which force each effect number names.
- The server can sell a buff (read).
(*Server).handleSpecialStoreBuy0x1409276c0→specialStoreBuy0x140927920→resolveSFEffectOK0x140897e20andcastSFEffectAt0x140895e00, which charges dalant. - No buff vendor is anywhere in the world (read).
- None of the 1,071 trade-30 stores is in
placement_npcs(293 rows, what the server loads;logs\history.log"npcs spawned {"count": 293, "from_db": true}"), innpcs, or in thedata\maps\*.jsonNPC lists. - The trade types that are placed are 0–2, 4–6, 10, 12, 13, 16 and 18–26.
- The vendors'
storelist.m_strStore_MAPcodeis empty, andnpcharacterhas no row for031B0,041B0,051B0or0A1B0. - The map files'
provenancesays the placements are "from gamedata_rf455 (4.15 AoP content)", so the 4.151 vendors were never added.
- None of the 1,071 trade-30 stores is in
Server side (v0.3.1)
- Loader:
gamedata.(*Data).loadSpecialStores0x14052c3e0loads all 711specialstorerows. The buy path is above. - Placement:
gamedata.ReadPlacementTables0x140504300/(*Data).UsePlacements0x14050a020readplacement_npcs, which has no trade-30 store. - No client map file under
Map\names the vendors, so neither side has a position for them. The positions would have to be chosen (inferred: an HQ spot near the other HQ vendors, and one per neutral map).
Suggested fix
- Add
placement_npcsrows forsd031B0/sd041B0/sd051B0in the three HQs, and for the neutral-map vendors (the[通行證]A/B/C rows, or the race vendors) on Sette, Elan, Beast Mountain, Outcast Land, Volcanic Cauldron, Cartella Bio Lab, Jetso Island and Novajan. - Add the matching
npcharacterrows if the spawner needs one. - If the
[通行證]vendors are meant to serve premium players only, gate them onisPremium(0x1408e8920).
Local workaround
None; a GM cannot spawn a store NPC.
👍 DT