article connexe : Skill et base de données
Les skills regroupent en fait les sorts des joueurs mais aussi quelques capacités, les actions des potions et les définitions d'armes et de set.
Ils sont regroupés dans le répertoire data/stats sur notre serveur et vous pouvez les consulter à votre aise :
/data/stats
Les fichiers de skills sont des fichiers xml. Inutile d'avoir peur de ce mot barbare, il s'agit en fait d'une facon de représenter des informations.
Dans ces fichiers, vous trouvez la définition de tous les skills. Chacun a un numéro, son id qui le rendent unique. Prenons par exemple le skill servitor cure.
<skill id="1300" levels="3" name="Servitor Cure"> <table name="#mpConsume"> 35 44 55 </table> <table name="#power"> 3 7 9 </table> <set name="mpConsume" val="#mpConsume"/> <set name="power" val="#power"/> <set name="target" val="TARGET_PET"/> <set name="skillTime" val="4000"/> <set name="reuseDelay" val="120000"/> <set name="skillType" val="NEGATE"/> <set name="isMagic" val="true"/> <set name="operateType" val="OP_ACTIVE"/> <set name="castRange" val="600"/> <set name="negateStats" val="POISON BLEED"/> <for> </for> </skill>
Voici quelques notions de xml que nous allons constater sur ce sort :
Ca, c'était les notions de bases, inutile d'en voir plus. Voyons maintenant comment est organisé ce skill. Ce skill a donc une première balise skill qui donne son nom, son id et le nombre de niveau différent : levels="3". Ce qui veut dire que ce skill a 3 niveau de puissance. En dessous, on définit deux tableaux mpconsume et power qui ont 3 cases chacune. Ces tableaux seront utilisés pour donner 3 valeurs pour chacun des niveaux du skill. En effet, au niveau 3 ce skill consommera plus de MP qu'au niveau 1 par exemple.
Ensuite on assigne des valeurs (en anglais, on set). Chaque "set" a un nom. Tous les noms sont regroupés dans le tableau stats plus bas. Ils correspondent a une caractéristique du skill.
Il n'est pas obligatoire d'avoir toutes les valeurs définis pour un skill. Chaque skill ne définit que quelques valeurs.
Ici par exemple :
Donc si on résume, ce skill magique permet de soigner son pet (ou summon) des sorts de POISON et de BLEED. Il peut être utilisé toutes les 2 minutes, coute des mp en fonction du niveau.
Nous allons avoir maintenant un sort de BUFF.
<skill id="1308" levels="3" name="Chant of Predator"> <table name="#mpConsume"> 172 220 252 </table> <table name="#power"> 1.0 2.0 3.0 </table> <table name="#Tab-rCrit"> 1.15 1.30 1.45 </table> <set name="mpConsume" val="#mpConsume"/> <set name="power" val="0.0"/> <set name="target" val="TARGET_PARTY"/> <set name="skillRadius" val="900"/> <set name="hitTime" val="2000"/> <set name="reuseDelay" val="20000"/> <set name="skillTime" val="2000"/> <set name="skillType" val="BUFF"/> <set name="isMagic" val="true"/> <set name="operateType" val="OP_ACTIVE"/> <set name="buffDuration" val="1200000"/> <set name="castRange" val="-1"/> <for> <effect count="1" name="Buff" time="1200" val="0" stackOrder="#Tab-rCrit" stackType="rCrit"> <mul order="0x50" stat="rCrit" val="#Tab-rCrit"/> </effect> </for>
Voici le skill Chant of predator. Ici nous constatons que ce skill permet de buffer (skilltype=BUFF). Il buffe en party (target=TARGET_PARTY). C'est un buff qui dure 20 min. Jusqu'ici, rien de différent avec le précédent. Mais pour les sorts de buff, on a des balises effet dans la balise for. Les attributs intéressants sont surtout : stackOrder et stackType. Ils permettent d'empêcher un sort de se cumuler avec un autre. En effet, tous les sorts qui auront stackType="rCrit" ne pourront pas se cumuler avec celui-ci. stackType c'est le nom de la pile. stackOrder c'est son ordre dans la pile. On garde toujours celui qui a le plus grand numéro dans l'ordre. C'est pour cela qu'on utilise en général le tableau des effets puisqu'a chaque niveau, le sort devient plus puissant, donc son ordre augmente. Voici quelques exemples (j'ai mis (...) pour enlever ce qui ne nous intéresse pas ) :
Pour les skills, quelques balises sont très importantes.
[stackorder/stacktype]
[add/div/mul/sub]
[itemConsumeId/itemConsumeCount]
[weaponsAllowed]
[npcId/isCubic]
[displayId]
[num_charges/charge_skill_id]
Pour les armes, tout est globalement identique mais en beaucoup plus simple. Il n'existe que des set, pas d'effet. La seule chose importante ce sont les bonus de set, les SA et autres caractéristiques qui dépendent d'une condition.
Exemple
<item id='23' name="Wooden Breastplate"> <for> <add stat='pDef' order='0x10' val='47'/> <add stat='maxHp' order='0x40' val='41'> <and> <using slotitem="43;6"/> <using slotitem="2386;11"/> </and> </add> <mul stat='pDef' order='0x40' val='1.02'> <and> <using slotitem="43;6"/> <using slotitem="2386;11"/> </and> </mul> </for> </item>
Le wooden breastplate appartient a un set. Par défaut il donne 47 de pdef. Mais s'il est associé a Wooden Helmet (id 43) et Wooden Gaiters (id 2386), il donne 41 hp supplémentaires et 2% de pdef en plus. Pour cela, on ajoute dans la balise add une condition using. L'attribut slotitem dit : si en position 6 (tête) de l'équipement tu as un objet 43 (Wooden Helmet ) et en position 11 (jambes) tu as un objet 2386, alors tu rajoutes le bonus.
Exemple :
<using slotitem="43;6;4"/>
parametre | valeur | description |
maxHp | MAX_HP | HP maximum |
maxCp | MAX_CP | CP maximum |
maxMp | MAX_MP | MP maximum |
regHp | REGENERATE_HP_RATE | pourcentage de régénération des HP |
regCp | REGENERATE_CP_RATE | pourcentage de régénération des CP |
regMp | REGENERATE_MP_RATE | pourcentage de régénération des MP |
gainMp | RECHARGE_MP_RATE | |
gainHp | HEAL_EFFECTIVNESS | |
pDef | POWER_DEFENCE | Défense physique |
mDef | MAGIC_DEFENCE | Défense magique |
pAtk | POWER_ATTACK | Attaque physique |
mAtk | MAGIC_ATTACK | Attaque magique |
pAtkSpd | POWER_ATTACK_SPEED | Vitesse d'attaque physique |
mAtkSpd | MAGIC_ATTACK_SPEED | Vitesse d'attaque magique |
mReuse | MAGIC_REUSE_RATE | Ratio pour le temps de réutilisation d'un skill |
sDef | SHIELD_DEFENCE | Défense au bouclier |
cAtk | CRITICAL_DAMAGE | Dommage pendant un coup critique |
rCrit | CRITICAL_RATE | Capacité a faire un coup critique |
rEvas | EVASION_RATE | Taux d'évasion |
rShld | SHIELD_RATE | |
shldAngle | SHIELD_ANGLE | |
rExp | EXPSP_RATE | Pourcentage d'expérience et de SP |
cancel | ATTACK_CANCEL | Capacité à annuler les attaques |
accCombat | ACCURACY_COMBAT | Précision |
pAtkRange | POWER_ATTACK_RANGE | Distance pour les attaques physiques |
mAtkRange | MAGIC_ATTACK_RANGE | Distance pour les attaques magiques |
poleAngle | POLE_ATTACK_ANGLE | |
runSpd | RUN_SPEED | Vitesse de déplacement |
breath | BREATH | Capacité à respirer |
aggression | AGGRESSION | Agressivité |
bleed | BLEED | Saignement |
poison | POISON | Poison |
stun | STUN | Etourdissement |
root | ROOT | Enracinement |
movement | MOVEMENT | Mouvement |
confusion | CONFUSION | confusion |
sleep | SLEEP | Sommeil |
fire | FIRE | Feu |
wind | WIND | Vend |
water | WATER | Eau |
earth | EARTH | Terre |
holy | HOLY | Sacré |
dark | DARK | Sombre |
unholy | UNHOLY | Non sacré |
sacred | SACRED | Sacre |
aggressionRes | AGGRESSION_RES | Résistance à agression |
bleedRes | BLEED_RES | Résistance à saignement |
poisonRes | POISON_RES | Résistance à poison |
stunRes | STUN_RES | Résistance à étourdissement |
paralyzeRes | PARALYZE_RES | Résistance à paralysie |
rootRes | ROOT_RES | Résistance à enracinement |
sleepRes | SLEEP_RES | Résistance à Sommeil |
confusionRes | CONFUSION_RES | Résistance à Confusion |
muteRes | MUTE_RES | Résistance à mutisme |
movementRes | MOVEMENT_RES | Résistance à blocage |
fireRes | FIRE_RES | Résitance au feu |
windRes | WIND_RES | Résistance au vent |
waterRes | WATER_RES | Résistance a l'eau |
earthRes | EARTH_RES | Résistance à la terre |
holyRes | HOLY_RES | Résistance au sacré |
darkRes | DARK_RES | Résistance aux ténèbres |
unholyRes | UNHOLY_RES | Résistance au non sacré |
sacredRes | SACRED_RES | |
noneWpnRes | NONE_WPN_RES | Résistance à sans armes |
swordWpnRes | SWORD_WPN_RES | Résistance à l'épée |
bluntWpnRes | BLUNT_WPN_RES | Résistance aux masses |
daggerWpnRes | DAGGER_WPN_RES | Résistance aux dagues |
bowWpnRes | BOW_WPN_RES | Résistance aux arcs |
poleWpnRes | POLE_WPN_RES | Résistance aux lances |
etcWpnRes | ETC_WPN_RES | Résistance aux armes diverses |
fistWpnRes | FIST_WPN_RES | Résistance aux poings |
dualWpnRes | DUAL_WPN_RES | Résistance aux épées doubles |
dualFistWpnRes | DUALFIST_WPN_RES | Résistance aux poings doubles |
STR | STAT_STR | Force |
CON | STAT_CON | Constitution |
DEX | STAT_DEX | Dextérité |
INT | STAT_INT | Intelligence |
WIT | STAT_WIT | Savoir |
MEN | STAT_MEN | Mental |
reflectDam | REFLECT_DAMAGE_PERCENT | Renvoie des dommages |
absorbDam | ABSORB_DAMAGE_PERCENT | Absorption des dommages |
transDam | TRANSFER_DAMAGE_PERCENT | Transfert des dommages |
mCritRate | MCRITICAL_RATE | Taux de coups critiques pour les sorts |
maxLoad | MAX_LOAD | Poids maximum |
pAtk-undead | PATK_UNDEAD | Attaque contre les morts vivants |
pDef-undead | PDEF_UNDEAD | Défense contre les morts vivants |
pAtk-plants | PATK_PLANTS | Attaque contre les plantes |
pAtk-insects | PATK_INSECTS | Attaque contre les insectes |
pAtk-animals | PATK_ANIMALS | Attaque contre les animaux |
pAtk-monsters | PATK_MONSTERS | Attaque contre les monstres |
pAtk-dragons | PATK_DRAGONS | Attaque contre les dragons |
atkReuse | ATK_REUSE | Vitesse de réutilisation d'attaque |
inventoryLimit | INV_LIM | Limite d'inventaire |
whLimit | WH_LIM | |
FreightLimit? | FREIGHT_LIM | Limite de cargaison |
PrivateSellLimit? | P_SELL_LIM | Limite de vente |
PrivateBuyLimit? | P_BUY_LIM | Limite d'achat |
DwarfRecipeLimit? | REC_D_LIM | Limite du livre des recettes de nains |
CommonRecipeLimit? | REC_C_LIM | Limite du livre des recettes communes |
MpConsumeRate? | MP_CONSUME_RATE | Consommation de MP |
HpConsumeRate? | HP_CONSUME_RATE | Consommation de HP |
=== cible ===
TARGET_NONE TARGET_SELF TARGET_ONE TARGET_PARTY TARGET_CLAN TARGET_PET TARGET_AREA TARGET_AURA TARGET_CORPSE TARGET_UNDEAD TARGET_MULTIFACE TARGET_AURA_CLOSE TARGET_CORPSE_CLAN TARGET_CORPSE_PLAYER TARGET_ITEM TARGET_AREA_CORPSE_MOB TARGET_CORPSE_MOB TARGET_UNLOCKABLE TARGET_HOLY
=== emplacements ===
public static final int PAPERDOLL_UNDER = 0; public static final int PAPERDOLL_LEAR = 1; public static final int PAPERDOLL_REAR = 2; public static final int PAPERDOLL_NECK = 3; public static final int PAPERDOLL_LFINGER = 4; public static final int PAPERDOLL_RFINGER = 5; public static final int PAPERDOLL_HEAD = 6; public static final int PAPERDOLL_RHAND = 7; public static final int PAPERDOLL_LHAND = 8; public static final int PAPERDOLL_GLOVES = 9; public static final int PAPERDOLL_CHEST = 10; public static final int PAPERDOLL_LEGS = 11; public static final int PAPERDOLL_FEET = 12; public static final int PAPERDOLL_BACK = 13; public static final int PAPERDOLL_LRHAND = 14;
=== ordre ===
0x08 - to set 0x10 - to add/substract 0x20 - to multiply/divide 0x30 - for level bonus, etc. 0x40 - for masteries/buffs that ADD/SUBSTRACT 0x50 - for masteries/buffs that MULTIPLY/DIVIDE 0x60 - for sets, that apply after buffs
=== armes autorisées ===
bit | dec | weapon |
1 | 1 | ? |
2 | 2 | Shield |
3 | 4 | Sword |
4 | 8 | Blunt |
5 | 16 | Dagger |
6 | 32 | Bow |
7 | 64 | Pole |
8 | 128 | Etc |
9 | 256 | Fist |
10 | 512 | Dual Sword |
11 | 1024 | Dual Fist |
12 | 2048 | Big Sword (Two Handed) |
== cubic ==
Cubic | ID |
STORM_CUBIC | 1 |
VAMPIRIC_CUBIC | 2 |
LIFE_CUBIC | 3 |
VIPER_CUBIC | 4 |
POLTERGEIST_CUBIC | 5 |
BINDING_CUBIC | 6 |
AQUA_CUBIC | 7 |
SPARK_CUBIC | 8 |
== Type de skill ==
Type | Description |
PDAM | inflige domme physique |
MDAM | inflige dommage magique |
DOT | |
BLEED | provoque BLEED |
POISON | empoisonne |
HEAL | soigne |
HOT | |
COMBATPOINTHEAL | |
CPHOT | |
MANAHEAL | |
MANARECHARGE | |
MPHOT | |
AGGDAMAGE | |
BUFF | |
DEBUFF | |
STUN | |
ROOT | |
RESURRECT | |
PASSIVE | |
CONT | |
CONFUSION | |
UNLOCK | |
CHARGE | |
FEAR | |
MHOT | |
DRAIN | |
NEGATE | |
CANCEL | |
SLEEP | |
AGGREDUCE | |
AGGREMOVE | |
AGGREDUCE_CHAR | |
CHARGEDAM | |
CONFUSE_MOB_ONLY | |
DEATHLINK | |
DETECT_WEAKNESS | |
ENCHANT_ARMOR | |
ENCHANT_WEAPON | |
FEED_PET | |
HEAL_PERCENT | |
LUCK | |
MANADAM | |
MDOT | |
MUTE | |
RECALL | |
REFLECT | |
SOULSHOT | |
SPIRITSHOT | |
SPOIL | |
SWEEP | |
SUMMON | |
WEAKNESS | |
DEATHLINK_PET | |
MANA_BY_LEVEL | |
FAKE_DEATH | |
UNBLEED | |
UNPOISON | |
SIEGEFLAG | |
TAKECASTLE | |
UNDEAD_DEFENSE | |
SEED | |
PARALYZE | |
DRAIN_SOUL | |
COMMON_CRAFT | |
DWARVEN_CRAFT | |
WEAPON_SA | |
FISHING | |
PUMPING | |
REELING |