Working with sheets

Working with sheets

This is not a tutorial, rather a collection of information I come across,
as I try to build my own game with the Ryzom Core tools. If anyone has additional information
or if I made mistakes, please let me know!

A few tips to begin with:
- Make sure you built a working server/client.
- delete the original visual_slots.tab and server-side packed sheets and !! Don't delete sheets_ID.bin !!
make new ones, using make_sheet_ID and sheets_packer, before making/editing content.
- ALWAYS make a backup of your working setup, before making changes!
- * Keep in mind that (as far as I know) the sheet ID's change after adding new sheets!*
This might result in characters getting different hair (even seen a character get
a helmet instead of hair!!) as the old sheet ID is still stored in the char save...
This issue can cause your client to crash sometimes, if this happens, try another character
before changing everything back!! (Preferably make a new character...)
The problem is noted, and there are ideas as to how to solve this. Until then, don't panic
if you get this problem, just delete the char, and make a new one...
- Follow the tutorials posted by other developers on this site. I found them very useful to
get to know the tools and the design process!
- I found it usefull to use existing sheets for making new entities, edit the basic options
in a texteditor (Notepad++ for example) then use georges editor to add/change features and "fine-tune"
the new entity, but you can use any tools you feel comfortable with...
- Don't forget to repack the sheets (for the server aswell!!!) if you changed anything, not just if
you made new items!!

Armor sheets

One of the first things I did was to create armor, following one of the tutorials. The first
item was a success, but then I ran into problems creating an entire set. By now I have created
several full sets without problems. The example is a matis medium helmet. The files you need are:
_c_am.sitem
_gma_m.sitem
icmamh.sitem
bcmaea18.sbrick
bcpa10.sbrick

I had to make these files by copying and editing the ones for light armor that come with the source.
The actual item is defined in icmamh.sitem (naming conventions are mentioned in "adding game entities" tutorial)
The craft plan is bcmaea18.sbrick
these files structure is as followes

_c_am.sitem <-- holds information that's the same for all medium armor items
_gma_m.sitem / _gza_m.sitem / ... <-- each hold additional item information that is race bound (matis and zoraï here.)
icmamh.sbrick / ... <-- the actual items : every item has its own sheet!

bcpa10.sbrick <-- this describes the skill you need to be able to craft (in this case matis) armor
bcmaea18.sbrick <-- this is the crafting plan for the actual item. One plan for one item!

To break them down :

_c_am.sitem: (found in game_element/sitem/armor/_parent/)

<STRUCT Name="basics">
  <ATOM Name="name" Value="medium armor"/>                          <-- just the name as far as I know
  <ATOM Name="family" Value="armor"/>                                       <-- defines the family
  <ATOM Name="Bulk" Value="10"/>                                              <-- the Bulk: this will be the same for all medium armor
  <ATOM Name="Time to Equip In Ticks" Value="50"/>
  <ATOM Name="RequiredSkill" Value="none"/>
  <ATOM Name="RequiredSkillQualityFactor" Value="1"/>
  <ATOM Name="RequiredSkillQualityOffset" Value="-25"/>
  <ATOM Name="RequiredCharacQualityFactor" Value="0.0"/>
</STRUCT>
<STRUCT Name="armor">
  <ATOM Name="Armor category" Value="medium"/>                    <-- defines the type of armor
</STRUCT>
<STRUCT Name="crafting tool">
  <ATOM Name="type" Value="ArmorTool"/>                                  <-- the tool needed to actually craft this armor
</STRUCT>
<STRUCT Name="3d"> <-- everything visible (not just 3D !!)
  <ATOM Name="map_variant" Value="Default"/>                         <-- the texture map used.
  <ATOM Name="icon overlay" Value="PW_medium.tga"/>           <-- icon overlay: the top layer for the icon.
  <ATOM Name="color" Value="UserColor"/>                                <-- UserColor so you can craft diff colors.
</STRUCT>


You can override these values by redefining them in the child files.

_gma_m.sitem: (found in game_element/sitem/armor/_parent/matis/)

<PARENT Filename="_c_am.sitem"/>                                 <-- this links the parent file, so those settings are used here too
<STRUCT>
  <STRUCT Name="basics">
    <ATOM Name="name" Value="matis medium armor"/>   <-- name of the struct
    <ATOM Name="origin" Value="matis"/>                           <-- defines the origin of the armor (or race)
  </STRUCT>
  <STRUCT Name="armor">
    <ATOM Name="Skill" Value="SDAMMAE"/>                     <-- the skill needed to craft medium matis armor
  </STRUCT>
  <STRUCT Name="3d">
    <ATOM Name="map_variant" Value="Low Quality"/>       <-- overrides the map_variant from the parent
  </STRUCT>
</STRUCT>


The tutorial on adding game entities lists the possible "Skill" values. I don't know yet where they are defined, or how to
change / add skills.

icmamh.sitem: (found in game_element/sitem/armor/matis/medium_armor/)

<PARENT Filename="_gma_m.sitem"/>                                                   <-- again linking to a parent file
<STRUCT>
  <STRUCT Name="basics">
    <ATOM Name="name" Value="matis medium helmet"/>
    <ATOM Name="family" Value="armor"/>
    <ATOM Name="ItemType" Value="Medium helmet"/>
    <STRUCT Name="EquipmentInfo">
      <ARRAY Name="EquipmentSlots">                                                    <-- where to equip the item
        <ATOM Value="Head"/>                                                                   <-- Yes it is possible to have a helmet in a "Feet" slot
      </ARRAY>
    </STRUCT>
    <ATOM Name="CraftPlan" Value="bcmaea18.sbrick"/>                       <-- this is where the item is linked to its craft plan
  </STRUCT>
  <STRUCT Name="3d">
    <ATOM Name="shape" Value="MA_HOM_casque01.shape"/>            <-- the male shape file to use
    <ATOM Name="shape_female" Value="MA_HOF_casque01.shape"/><-- the female shape file to use
    <ATOM Name="map_variant" Value="Medium Quality"/>                     <-- defines the looks (texture map)
    <ATOM Name="icon" Value="AR_helmet.tga"/>                                   <-- earlier mentioned icon overlay is placed on top of this one
    <ATOM Name="icon background" Value="BK_matis.tga"/>
  </STRUCT>
  <STRUCT Name="faber">
    <ATOM Name="Tool type" Value="ArmorTool"/>                                  <-- again the tool needed to craft this item
  </STRUCT>
</STRUCT>


You may notice the lack of actual stats in any of these files (protection, magic resist etc...)
Georges editor has a wide array of options you can set. Just play around a bit.

bcpa10.sbrick: (found in game_element/sbrick/craft/root/)

<STRUCT Name="Basics">
  <ATOM Name="FamilyId" Value="BCPA"/>
  <ATOM Name="IndexInFamily" Value="10"/>
  <ATOM Name="Property 0" Value="FPLAN: BCMAEA BCMAEB BCMAEC BCMAED BCCAEA BCCAEB BCCAEC BCCAED BCRAEA"/>
  <ATOM Name="LearnRequiresOneOfSkills" Value="SC 0"/>
  <ATOM Name="Action Nature" Value="CRAFT"/>
  <ATOM Name="Skill" Value="SCA"/>
</STRUCT>
<STRUCT Name="Client">
  <ATOM Name="Icon" Value="FP_Armor.tga"/>
  <ATOM Name="IconBack" Value="BK_matis_brick.tga"/>
  <ATOM Name="IconOver" Value="FP_Over.tga"/>
</STRUCT>
<STRUCT Name="Optional">
  <ATOM Name="f0" Value="BCOA"/>
  <ATOM Name="f1" Value="BCOB"/>
  <ATOM Name="f2" Value="BCOC"/>
  <ATOM Name="f3" Value="BCOD"/>
</STRUCT>
<STRUCT Name="Parameter">
  <ATOM Name="f0" Value="BCMACA"/>
</STRUCT>
<STRUCT Name="faber">
  <ATOM Name="Tool type" Value="ArmorTool"/>
</STRUCT>


Havent looked into this file a lot, make sure to changes values like "BCMACA" for matis to "MCFACA" for fyros
IndexFamilyValue is the same as the number in the filename. I have no idea what most of the values are for yet.
This file is NOT a parent for next file, it's a brick the char has to have learned to be able to use the folowing plan.

bcmaea18.sbrick: (found in game_element/sbrick/craft/effect/armor/matis/medium_armor/)

<STRUCT Name="Basics">
  <ATOM Name="FamilyId" Value="BCMAEA"/>                            <-- this has to be an existing ID!!!
  <ATOM Name="IndexInFamily" Value="1"/>                                <-- I use "1" for all my craft plans...
  <ATOM Name="SPCost" Value="30"/> <-- obvious
  <ATOM Name="LearnRequiresOneOfSkills" Value="SC 0"/>
  <ATOM Name="Action Nature" Value="CRAFT"/>
  <ATOM Name="Skill" Value="SCAHHEM"/>                                 <-- not sure if MH exists, so used HH for now
  <ATOM Name="LearnRequiresBricks" Value="bcpa10.sbrick"/> <-- this file is NOT a parent!!!
  <ATOM Name="CivRestriction" Value="matis"/>
</STRUCT>
<STRUCT Name="Client">
  <ATOM Name="Icon" Value="AR_helmet.tga"/>                          <-- icon information for the plan, not the item!
  <ATOM Name="IconBack" Value="BK_matis_brick.tga"/>
  <ATOM Name="IconOver" Value="FP_over.tga"/>
  <ATOM Name="IconOver2"/>
</STRUCT>
<STRUCT Name="faber">
  <ATOM Name="Tool type" Value="ArmorTool"/>
  <ATOM Name="Item Max Level" Value="250"/>                          <-- the max level the crafted item can get
  <STRUCT Name="Create">
    <ATOM Name="Crafted Item" Value="icmamh.sitem"/>             <-- the actual item this plan is linked to!!
    <ATOM Name="Nb built items" Value="1"/>
    <ATOM Name="MP 1" Value="Raw Material for Clothes"/>       <-- a list of type/number or craft mats needed
    <ATOM Name="Quantity 1" Value="2"/>
    <ATOM Name="MP 2" Value="Raw Material for Armor interior coating"/>
    <ATOM Name="Quantity 2" Value="2"/>
    <ATOM Name="MP 3" Value="Raw Material for Armor interior stuffing"/>
    <ATOM Name="Quantity 3" Value="1"/>
    <ATOM Name="MP 4" Value="Raw Material for Armor clip"/>
    <ATOM Name="Quantity 4" Value="1"/>
    <ATOM Name="MP 5"/>
    <ATOM Name="Quantity 5" Value="0"/>
  </STRUCT>
</STRUCT>


I found that for the "IndexInFamily" the family has to have a sheet with index "1" or you will get EGS
chaincrashing... You can change the index to the number in the filename, as long as there's a sheet with index "1".

When you're done with the sheets, don't forget to edit item_words_en.txt and sbrick_words_en.txt or the names
won't show correctly when playing. (make sure server and client use the same words files!!!)

So far my information on armor sheets. Others will follow (weapons, mobs, NPC's etc...)

Weapon Sheets

Just started on weapon sheets, but there's one thing I found that I think is interesting enough to post already...
When making one-handed weapons that you can use in both hands: make sure you define a normal shape
and a female shape !!! Stupid as it sounds: these define the shapes for left and right separately !!!