Skip to content

Decorations (Headquarters and Hero Looks)

“Decoration” means two different things in Lost Saga. This page covers both.

Kind What it is Server files Client files
Headquarters blocks Blocks, tiles and objects a player places in a headquarters (housing) sp2_block.ini, sp2_personal_room_block.ini, sp2_guild_room_block.ini config\housing\sp2_block.ini
Hero deco items Hair, face, skin, hair colour, basic clothes, race sp2_deco_sex.ini, sp2_deco_man.ini, sp2_deco_woman.ini sp2_deco_man.ini, sp2_deco_woman.ini, sp2_decoitem_list.ini

Server files live in ls_gamesvr\config\. Client paths below were checked in the unpacked 2021 client. In 2014 and 2019 the client files sit inside rs.iop, which was not opened for this page. Open them with the pack tutorials and edit an INI table.

Server and client must agree. The server uses its own sp2_block.ini to check the default blocks (IsValidItemCode) and to get block collision data (GetCoordinateInfo). What a mismatch does in play was not tested yet, for blocks and for deco items.

  1. sp2_block.ini lists every block. [common] block_max is the number of [blockN] sections the loader reads, from block1 up to block<block_max>. The client skips a section with code 0 and writes “Block Manager Load Fail” to its log.
  2. The server (ioBlockPropertyManager.cpp) reads only code, rotate and the collision_tile<j>_x/_y/_z keys. It needs them to check where a block may stand.
  3. The client (ioBlockManager.cpp) reads the same file and also the looks: name, mesh_file, icon_name, item_category, order, shadow_type and the colours.
  4. The first digit of code (code divided by 1000000) is the block type: 1 normal, 2 tile, 3 fishing block.
  5. sp2_personal_room_block.ini (HomeModeBlockManager.cpp) and sp2_guild_room_block.ini (GuildRoomsBlockManager.cpp) hold the default layout of a new headquarters in [default_construct].

In the 2021 testbed the server sp2_block.ini and the client config\housing\sp2_block.ini are byte for byte the same file (62 blocks, block_max = 62). Keep it that way: edit one, copy it to the other.

  1. Pick a free code. The highest normal code in the shipped file is 1000062. Tiles use 2000001 to 2000003, and the fishing block is 3000013. Do not reuse a code.
  2. Put the model in the client at resource\model\staticmodel\ (for example housing_00_obj_block_01.txt; the 2021 client has 46 housing_* files there).
  3. Add a section at the end of sp2_block.ini and raise block_max by one:
[common]
block_max = 63
[block63]
code = 1000063
name = My block
order = 11
item_category = 1
rotate = 0
shadow_type = 2
collision_tile_max = 1
collision_tile1_x = 0
collision_tile1_z = 0
collision_tile1_y = 0
mesh_file = staticmodel/housing_00_obj_block_01.txt
icon_name = GuildHousing001#obj_block_01
  1. item_category follows the comment in the file: 1 blocks, 2 tiles, 3 decorations, 4 functions. It sets the tab in the decoration inventory.
  2. A block bigger than one tile needs one collision_tile<j>_x/_z/_y triple per tile, with collision_tile_max set to the count.
  3. Copy the file to both places (server and client) and restart the game server.

In sp2_personal_room_block.ini or sp2_guild_room_block.ini:

[default_construct]
item1=2000001
XZ1=560
Y1=1
direction1=0

Each itemN needs a matching XZN, YN and directionN. The server stops at the first itemN that is 0 (up to 4000 entries), and skips a code that is not in sp2_block.ini (log line “Invalid default block coordinate info”). limited_install_cnt caps how many blocks a headquarters may hold: the guild file sets 3000 under [common]; the personal file has no such line in the testbeds, so the value is 0 there. What 0 means in play is not confirmed yet.

sp2_mode_select.ini has [HomeModeList] (personal headquarters, mode index 24) and [HeadquartersList] (guild headquarters, mode index 14). See Modes.

  1. sp2_deco_sex.ini lists the sexes. [Info] max_sex = 2, then [Sex1] and [Sex2] with Sex and Deco_ini (the man or woman file).
  2. In sp2_deco_man.ini and sp2_deco_woman.ini, [Info] max_Deco = 6 is the number of [DecoN] groups. The server (ioDecorationPrice.cpp) reads each group.
  3. [DefaultN] groups give the look a new hero starts with. The keys are Type, Max and Code_<k>. Optional [special_default<n>] sections can set face, hair, skin, hair colour and underwear per class.
  4. Group types in the 2021 file:
Type Group
5 Race and sex
2 Hair style
4 Hair colour
1 Face
3 Skin colour
7 Basic clothes
  1. In the server file, add the item to the right [DecoN] group and raise Max:
Code_64 = 64
Name_64 = Example hair
Peso_64 = 3000
Cash_64 = 600
BonusPeso_64 = 3600
SellPeso_64 = 600
LimitLevel_64 = 0
Active_64 = 1
  1. Active_<k> is read with a default of off. An item without Active_<k> = 1 is not sold.
  2. In the client file add the same Code_<k>, plus the keys the shop shows: Name_, Icon_, manual_, InvenManual_, ShowPeso_, ShopOrder_, ShopMarkType_, PackageActive_. These are read by the client only.
  3. sp2_decoitem_list.ini (client) is a second list used by the deco item window: [DecoMan] with item_cnt and itemN_name, itemN_code, itemN_icon, itemN_shop_order. Whether a new item must also be added here is not confirmed yet.
  4. The mesh and texture for the item live in the client packs. Not confirmed yet which files a new hair or face needs.
  5. Restart the game server. Prices (Peso_, Cash_) must be the same in both files, or the shop shows one price and the server charges another.
Point 2014 2019 2021
Housing files Present (sp2_block.ini, personal and guild room files) Same Same
Names in sp2_deco_man.ini Name_k = STR(n), a text key STR(n) Plain Korean text
Server file size (man) 63263 bytes 73079 bytes 45441 bytes
Extra keys in the server file Icon_, manual_, ShopOrder_ (client style) Same Not present

STR(n) is a placeholder the client replaces from its text table (see Text and Languages). The game server source has no STR( handling, so on the server it stays as is.

  • Start the client, open the headquarters and the deco inventory. The new item must show with its icon.
  • A raw name such as STR(2) or an empty icon means the client text or image set is missing.
  • In-game results for new blocks and deco items were not tested yet.