Les familiers sont des créatures (des .creature
en fait, donc cela peut-être un objet, un véhicule…) qu'un joueur peut plus ou moins contrôler (sur Atys on connait depuis très longtemps les mektoubs).
Il en existe actuellement deux types :
Il suffit d'inscrire dans la section basics
le paramètre pet animal ticket
dans la caractéristique ''family''.
Au total, un joueur ne peut pas posséder plus de quatre familiers (limite harcodée dans le c++).
Comme habituellement, je présente ici le contenu des fichiers de Data Sheet directement, sans passer par Georges Editor, pour en simplifier la présentation, mais libre à chacun d'utiliser cet éditeur, bien sûr. Cela permet en outre d'avoir les LOGs remplis, que je coupe pour plus de clarté ici.
Un familier est un objet qui contient les sections normales d'un objet de type .sitem, à savoir basics
et 3D
plus la section dédiée aux familiers, appelée pet
.
Il convient donc de remplir une DS avec les sections :
Là encore, le parentage permettra d'économiser les redites.
Pour ceux qui s'inquiéteraient du manque de précision sur les informations quant aux inventaires que peuvent posséder/transporter les animaux familiers, cela ne se définit pas ici, mais dans la DS de la créature appelée dans le Pet Sheet
, les fichiers en .creature
possédant une caractéristique animal_bag
qui permet de leur attribuer un .sitem
de type inventaire.
Voici un exemple de datasheet complète pour une créature de ce type :
<?xml version="1.0"?> <FORM Revision="$Revision: 1.0 $" State="modified"> <STRUCT> <STRUCT Name="basics"> <ATOM Name="name" Value="pack_beast01"/> <ATOM Name="family" Value="pet animal ticket"/> <ATOM Name="Drop or Sell" Value="false"/> <ATOM Name="ItemType" Value="MektoubPackerTicket"/> <ATOM Name="origin" Value="fyros"/> <ATOM Name="quality" Value="50"/> </STRUCT> <STRUCT Name="pet"> <ATOM Name="Pet Price" Value="25000"/> <ATOM Name="Pet Sheet" Value="mektoubpack.creature"/> <ATOM Name="Pet Slot" Value="1"/> <ATOM Name="Hunger Count" Value="2000"/> </STRUCT> <STRUCT Name="3d"> <ATOM Name="icon background" Value="BK_generic.tga"/> <ATOM Name="icon" Value="mektoub_pack.tga"/> </STRUCT> </STRUCT> <STRUCT/> <STRUCT/> <STRUCT/> <STRUCT/> <LOG></LOG> </FORM>
On voit bien que si on souhaite décliner cet animal de bât en plusieurs niveaux, on aura intérêt à créer une DS parente et des DS enfants qui ne modifieront/ajouteront que ce qui varie d'un modèle à l'autre.
Par exemple :
<?xml version="1.0"?> <FORM Revision="$Revision: 1.0 $" State="modified"> <STRUCT> <STRUCT Name="basics"> <ATOM Name="family" Value="pet animal ticket"/> <ATOM Name="Drop or Sell" Value="false"/> <ATOM Name="ItemType" Value="MektoubPackerTicket"/> <ATOM Name="origin" Value="fyros"/> </STRUCT> <STRUCT Name="pet"> <ATOM Name="Pet Price" Value="25000"/> <ATOM Name="Pet Sheet" Value="mektoubpack.creature"/> <ATOM Name="Pet Slot" Value="1"/> <ATOM Name="Hunger Count" Value="2000"/> </STRUCT> <STRUCT Name="3d"> <ATOM Name="icon background" Value="BK_generic.tga"/> <ATOM Name="icon" Value="mektoub_pack.tga"/> </STRUCT> </STRUCT> <STRUCT/> <STRUCT/> <STRUCT/> <STRUCT/> <LOG></LOG> </FORM>
<?xml version="1.0"?> <FORM Revision="$Revision: 1.0 $" State="modified"> <PARENT Filename="_pack_beast.sitem"/> <STRUCT> <STRUCT Name="basics"> <ATOM Name="name" Value="pack_beast01"/> <ATOM Name="quality" Value="50"/> </STRUCT> </STRUCT> <STRUCT/> <STRUCT/> <STRUCT/> <STRUCT/> <LOG></LOG> </FORM>
<?xml version="1.0"?> <FORM Revision="$Revision: 1.0 $" State="modified"> <PARENT Filename="_pack_beast.sitem"/> <STRUCT> <STRUCT Name="basics"> <ATOM Name="name" Value="pack_beast02"/> <ATOM Name="quality" Value="150"/> </STRUCT> </STRUCT> <STRUCT/> <STRUCT/> <STRUCT/> <STRUCT/> <LOG></LOG> </FORM>
Exemple de DS complète pour un familier de monte :
<?xml version="1.0"?> <FORM Revision="$Revision: 1.0 $" State="modified"> <PARENT Filename="_ia.sitem"/> <STRUCT> <STRUCT Name="basics"> <ATOM Name="name" Value="steed_beast01"/> <ATOM Name="family" Value="pet animal ticket"/> <ATOM Name="Drop or Sell" Value="false"/> <ATOM Name="ItemType" Value="MektoubMountTicket"/> <ATOM Name="origin" Value="fyros"/> <ATOM Name="quality" Value="50"/> <ATOM Name="Saleable" Value="false"/> </STRUCT> <STRUCT Name="pet"> <ATOM Name="Pet Price" Value="50000"/> <ATOM Name="Pet Sheet" Value="mektoubsteed.creature"/> <ATOM Name="Pet Slot" Value="1"/> <ATOM Name="Hunger Count" Value="2000"/> </STRUCT> <STRUCT Name="3d"> <ATOM Name="icon background" Value="BK_generic.tga"/> <ATOM Name="icon" Value="mektoub_steed.tga"/> </STRUCT> </STRUCT> <STRUCT/> <STRUCT/> <STRUCT/> <STRUCT/> <LOG></LOG> </FORM>
Comme toujours, penser au parentage pour décliner en série en réduisant les saisies.
Il ne faut pas oublier d'ajouter nos nouvelles datasheets dans les fichiers de langue, que ces objets possèdent un nom à afficher dans le client.
Pour les objets il s'agit du fichier item_words_XX.txt
(XX désignant le code ISO de la langue, voir la partie dédiée à la localisation).
L'itemID à renseigner dans ce fichier doit correspondre au nom de la .sitem
: ici pack_beast01
et pack_beast02
.
Il semblerait qu'il ne soit pas nécessaire de nommer l'intégralité d'un nom de sitem si on veut que la même identification touche plusieurs DS.
En renseignant pack_beast
comme itemID, les termes correspondants du fichier de langue vont être utilisés pour toutes les DS commençant par pack_beast
donc ici, cela concernera les deux animaux de bât qui seront désignés sous le même nom.