L'édition des armes classiques est probablement la technique la plus facile à apprendre dans le domaine du tweaking. C'est aussi celle qui a le plus de potentiel lorsqu'elle est combinée avec le
tweaking des particules.
Au boulot !La plus simple des choses que vous pouvez faire dans WeapTwk.xml, c'est modifier les valeurs. Changer toutes les valeurs que vous pouvez jusqu'à obtenir le résultat escompté.
Alors tout d'abord, où se trouvent ces valeurs ?
Commencez par ouvrir WeapTwk.xml avec votre éditeur de texte favori, et descendez lentement jusqu'à cette partie:
- Code:
-
<ContainerResources href='kWeaponAirstrike'/>
<ContainerResources href='kWeaponAlienAbduction'/>
<ContainerResources href='kWeaponBananaBomb'/>
<ContainerResources href='kWeaponBananette'/>
<ContainerResources href='kWeaponBaseballBat'/>
<ContainerResources href='kWeaponBazooka'/>
<ContainerResources href='kWeaponClusterBomb'/>
<ContainerResources href='kWeaponClusterGrenade'/>
<ContainerResources href='kWeaponConcreteDonkey'/>
<ContainerResources href='kWeaponDynamite'/>
...
Cherchez l'arme que vous voulez modifier dans cette liste. Pour ce tutoriel, nous allons prendre kWeaponBazooka, qui correspond au bazooka, et qui est une arme très basique et facile à modifier.
Utilisez la fonction de recherche de votre éditeur (Ctrl+F, pour l'activer, en général), et cherchez le mot "kWeaponBazooka". Continuez la recherche jusqu'à ce que vous arriviez à cette partie:
- Code:
-
<XContainerResourceDetails id='kWeaponBazooka'>
<Value href='kWeaponBazooka-0'/>
<Name>kWeaponBazooka</Name>
<Flags>81</Flags>
</XContainerResourceDetails>
<PayloadWeaponPropertiesContainer id='kWeaponBazooka-0'>
<IsAimedWeapon>true</IsAimedWeapon>
<IsPoweredWeapon>true</IsPoweredWeapon>
<IsTargetingWeapon>false</IsTargetingWeapon>
<IsControlledBomber>false</IsControlledBomber>
<IsBomberWeapon>false</IsBomberWeapon>
<IsDirectionalWeapon>true</IsDirectionalWeapon>
...
</PayloadWeaponPropertiesContainer>
La partie qui nous intéresse ici se situe entre
<PayloadWeaponPropertiesContainer id='kWeaponBazooka-0'> et la ligne
</PayloadWeaponPropertiesContainer> suivante.
Cette partie est assez facile à comprendre, même si vous n'avez aucune connaissance préliminaire en programmation.
L'arme est constituée d'un bloc, dont le début est défini par une ligne
<PayloadWeaponPropertiesContainer id='...'> et la fin est définie par
</PayloadWeaponPropertiesContainer>.
Le corps de l'arme est constitué de propriétés écrites sous cette forme:
- Code:
-
<Nom>Valeur</Nom>
On cherche à changer la valeur de la propriété, ne changez donc jamais le nom ou votre jeu va planter à coup sûr !
Vous pouvez parfois aussi rencontrer des structures comme ceci:
- Code:
-
<Nom />
Rien de bien sorcier, cela veut dire que la propriété n'a pas de valeur du tout. Pour mieux comprendre, les deux lignes suivantes ont exactement la même signification:
- Code:
-
<Nom />
<Nom></Nom>
Compris ? Bon, maintenant vous avez eu un aperçu du fonctionnement des armes et de leurs propriétés, il est temps d'expérimenter avec les propriétés les plus simples.
Propriétés de baseDégâtsCe que la plupart des débutants au tweaking cherchent souvent à faire, c'est changer les dégâts causés par l'arme. Rien de plus simple. Cherchez les lignes suivantes dans le code de votre arme:
- Code:
-
<WormDamageMagnitude>50</WormDamageMagnitude>
<ImpulseMagnitude>0.29</ImpulseMagnitude>
<WormDamageRadius>72</WormDamageRadius>
<LandDamageRadius>52</LandDamageRadius>
<ImpulseRadius>110</ImpulseRadius>
<ImpulseOffset>-45</ImpulseOffset>
WormDamageMagnitude est la quantité de dégâts maximum qui peuvent être infligés à un worm touché par cette arme.
ImpulseMagnitude correspond au souffle de l'explosion, c'est à dire la force avec laquelle les worms sont envoyés en l'air. Comme vous pouvez le constater, une valeur de l'ordre de 0.50 donne déjà une explosion assez puissante.
WormDamageRadius est le rayon maximal dans lequel les worms peuvent recevoir des dégâts. En général, il est un peu plus grand que LandDamageRadius.
LandDamageRadius tant qu'on en parle, c'est le rayon du trou creusé par l'explosion.
ImpulseOffset définit le décalage vertical de l'explosion. Pour une valeur positive, l'explosion est décalée vers le haut, alors que pour une valeur négative, elle est décalée vers le bas. En général, c'est une valeur négative, pour que les worms touchés puissent décoller du sol même quand on leur tire dans la tête.
TaillePeut être aussi que vous avez toujours rêvé d'un bazooka géant ?
- Code:
-
<Scale>1</Scale>
<Radius>5</Radius>
Il suffit d'augmenter la valeur de
Scale pour rendre votre projectile plus grand en apparence. Vous devrez aussi sûrement changer la valeur de
Radius pour que le rayon de collision corresponde à la taille de l'arme.
Pour comprendre la relation entre Scale et Radius, il faut savoir que dans le jeu, tous les projectiles sont considérés comme des boules ayant un certain rayon, la forme apparente de l'arme n'étant pas prise en compte.
Scale définit la taille de la forme apparente du projectile, alors que Radius définit la taille de la boule de collision.
Si Radius est trop petit par rapport a Scale, le projectile traversera légèrement le sol, s'il est trop grand, il aura l'air de flotter au dessus du sol.
Il n'y a pas de rapport Scale/Radius parfait, tout dépend de l'apparence de votre projectile, faites des tests et regardez quelle valeur donne le meilleur résultat.
Vitesse et angle de tirVous pouvez aussi changer quelques paramètres mineurs, comme la puissance de tir de l'arme (la vitesse avec laquelle le projectile part), et les angles maximum et minimum de visée.
- Code:
-
<IsPoweredWeapon>true</IsPoweredWeapon>
- Code:
-
<BasePower>0.125</BasePower>
<MaxPower>0.475</MaxPower>
- Code:
-
<MinAimAngle>-1.57</MinAimAngle>
<MaxAimAngle>1.57</MaxAimAngle>
Alors d'abord, qu'est ce que "true" et "false" veulent dire ? C'est ce qu'on appelle des "valeurs booléennes". Pour faire plus simple, une valeur booléenne ne peut prendre que deux valeurs : "true", qui signifie "vrai", et "false", qui signifie "faux".
Notez que chaque propriété a un type qui lui est propre, par conséquent, n'essayez jamais de mettre une valeur numérique dans une propriété destinée à recevoir une valeur booléenne, et vice versa.
Si
IsPoweredWeapon est "true" (vrai), alors vous pourrez charger votre tir (comme avec le bazooka ou la grenade), pour décider avec quelle force vous voulez tirer. Dans ce cas,
BasePower est la force minimum, quand vous cliquez directement sans charger, et
MaxPower est la force maximum, quand vous faites un tir entièrement chargé.
Quand cette propriété est "false" (faux), la force de tir est fixe, et vous ne pouvez donc pas charger votre tir (les armes posées, comme la dynamite, ou le mortier de Worms Armageddon). Dans ce cas, la force est déterminée par
BasePower, MaxPower n'étant pas pris en compte.
MinAimAngle et
MaxAimAngle sont respectivement l'angle minimum et l'angle maximum de visée. Ils sont exprimés en radians. Si vous avez du mal à vous rappeler la relation degrés/radians, il suffit de retenir que 3.14 radians équivaut à peu près à 180°. Dans ce cas, 6.28 radians = 360°, 1.57 radians = 90°, etc...
Ici, le bazooka peut être visé au maximum à 90° vers le bas (-1.57) ou vers le haut (1.57).
Si vous voulez interdire de viser vers le bas, il suffit de régler MinAimAngle à 0, l'arme ne pourra donc être visée qu'entre 0° et 90°.
Vent et gravitéFinalement, vous pouvez transformer votre bazooka en lance roquettes parfaitement conventionnel, qui tire des roquettes en ligne droite, comme dans les FPS.
- Code:
-
<IsAffectedByGravity>true</IsAffectedByGravity>
<IsAffectedByWind>true</IsAffectedByWind>
IsAffectedByGravity définit si l'arme est affectée par la gravité ou pas. ("true" ou "false", oui ou non ?)
IsAffectedByWind définit si l'arme est affectée par le vent.
Il suffit de mettre ces deux propriétés à "false", et vous avez une roquette qui part droit devant sans dévier de sa trajectoire.
Et voilà, ça sera tout pour ce chapitre. Vous apprendrez à faire des modifications plus avancées dans les prochains chapitres.
Bonne chance !