Thread: Worms la saga

Bonjour à tous!
Avec l'autorisation de Ratchet Blaster, j'ouvre ce topic pour parler des jeux "worms", vous savez, la guerre des vers de terre!En commencant du 1er à Armageddon jusqu'à worms 3D, worms 4 mayhem, et battle island.
Je vous parlerais aussi du Tweaking sur worms 4 mayhem!

Pour commencer, le tweaking permet de modifier les codages du jeu pour créer des armes innexistantes et des maps online.A noter que le tweaking est uniquement disponible sur worms 4 mayhem sur PC!Et que un excés de tweaking peut faire planter le jeux, même le détruire!Mais cela arrive rarement et si on abuse des certaines particularités du jeux.

En introduction:

La charte du tweaking:

)— Préambule
Suite à des remarques de la part de joueurs qui se plaignent de l'utilisation abusive du tweaking lors de parties en ligne, j'entreprend ici d'éveiller votre conscience, afin de jouer dans les meilleurs conditions, aussi bien pour vous (futurs-)tweakers que pour les non-tweakers que vous affronterez.
] Ces clans soutiennent la présente Charte:
]- {SBF}

)— Utilisation du tweaking
Contrairement à ce que beaucoup croient, le but premier du tweaking n'est pas de créer les armes les plus puissantes possibles.
Il faut bien comprendre que le tweaking est, à la base, une technique pour créer armes, outils, maps, parties, etc.; et que la "surpuissance" n'est qu'une des nombreuses possibilités.

)— Le plaisir de jouer
L'essentiel dans un jeu n'est pas de gagner (même ça reste le but), mais de participer. Dans cet optique, il faut que la partie soit la plus jouissive possible, et ce pour tous les participants.
Gardez en tête qu'un adversaire frustré de vous avoir affronté ne voudra plus rejouer avec vous, et peut vous causer une mauvaise réputation.

)— Equilibre des armes
Même si, au début, une arme surpuissante peut vous amuser, voire amuser également vos adversaires, celà devient lassant à la longue; c'est un fait.
Privilégiez alors l'effet à la puissance: une arme originale par son action (arme en deux temps, effet de particules, apparence, fragmentation…emoji aura plus de succès et lassera nettement moins qu'une banale arme capable de raser un bout de terrain.
Mais même si l'arme est originale, n'en profitez pas pour exagérer les dégâts: faites en sorte que l'arme suive une logique, qui n'est pas nécessairement celle de tout détruire.

)— Utilisation des armes
En fonction de la puissance et des effets de l'arme, on se doit de respecter une fréquence et/ou des circonstances pour l'utiliser.
- Si l'arme est rapide et inflige relativement peu de dégâts, on peut l'utiliser sans limite.
- Si l'arme inflige localement beaucoup de dégâts, voire élimine un worm à chaque tir, on évitera d'en abuser au cours d'une partie.
- Si l'arme inflige beaucoup de dégâts sur une vaste zone et/ou si les effets durent longtemps (surfragmentation persistante), on ne l'utilisera au maximum qu'une seule fois au cours de la partie. L'utiliser davantage fera perdre de l'intérêt à la partie.
- Si l'arme est qualifée "d'arme ultime", on ne l'utilisera que si l'on est sur le point de perdre, afin de potentiellement retourner la situation. L'utiliser dans d'autres circonstances reviendrait à s'assurer immédiatement la victoire, et rendra la partie sans intérêt.

Introduction au tweaking:

Le "tweaking" est une discipline pratiquée des joueurs de Worms 4 Mayhem, qui consiste à modifier manuellement les fichiers du jeu, afin de faire (presque) tout ce qu'on veut. Aucun logiciel complexe n'est nécessaire, tout est faisable au bloc-notes.

/!\ Attention!Je le répette cette discipline n'est pas sans risque!
Avant de modifier un quelconque fichier, faites-en une copie et stockez-la en lieu sûr.
Au passage, copiez également le fichier data/SaveGame.xom (fichier de sauvegarde).


Le tweaking est divisé en quatre grandes parties. Donc avant de tweaker, il faut d'abord savoir ce qu'on veut faire, car chaque partie concerne un groupe spécifique de fichiers à modifier.

¤ Armes classiques
- data/Tweak/WeapTwk.xml
- data/Tweak/PartTwk.xml
- data/Tweak/Tweak.xml

¤ Armes d'équipe
- data/Tweak/Local.xml
Suite à de nombreux abus, les tutoriels et créations d'armes d'équipe ont été retirés.

¤ Maps
- data/Tweak/Scripts.xml

¤ Styles de partie
- data/Tweak/Local.xml


/!\ Lorsque le jeu est "tweaké", il n'est possible d'affronter un adversaire online que s'il a exactement les mêmes fichiers que vous (sauf pour les armes d'équipe et la sauvegarde). Il faut donc copier les fichiers modifiés et remettre les fichiers originaux (sauf armes d'équipe et sauvegarde) pour pouvoir jouer en ligne.

Le tweaking pour cux qui ne comprennent pas:

)— Introduction au tweaking
C'est quoi le tweaking?
Le tweaking est la modification manuelle des fichiers du jeu, afin d'en modifier les différents éléments (armes, maps, styles, costumes…emoji ou d'en créer de nouveaux.

C'est dangeureux?
Oui: une mauvaise manipulation peut empêcher le jeu de se lancer. Mais rassurez-vous, il y a toujours moyen de le refaire marcher.

Qu'est-ce que je dois télécharger?
Rien: vous n'avez besoin que d'un traitement de texte. Le Bloc-notes suffit déjà largement.

Qu'est-ce qu'il faut faire alors?
Il faut juste ouvrir les fichiers du jeu avec un traitement de texte, et modifier soi-même le code qu'ils contiennent.

Par où je commence?
Tout d'abord, il faut savoir ce que vous voulez faire, car tous les fichiers ne vont pas servir.
–> Introduction au tweaking

C'est parti!
/!\ Pas si vite! Avant de modifier un fichier, copiez-le et mettez-le en lieu sûr. Il vous servira si le jeu plante.


)— Manipulation des fichiers
Je ne trouve pas les fichiers du jeu!
Faites Démarrer > Rechercher > Des fichiers ou des dossiers…
Cherchez Worms 4 Mayhem.exe, vous devriez avoir une réponse.
Sur ce fichier, faites (Clic droit) > Ouvrir le dossier contenant.
Le fichier contenant les fichiers du jeu s'ouvre. Mémorisez l'adresse de ce dossier, pour ne pas avoir à le chercher à chaque fois!

J'arrive pas à modifier les fichiers!
Sur le fichier que vous voulez modifier, faites (Clic droit) > Modifier.
Le fichier devrait s'ouvrir dans un traitement de texte.

Oh non! Du code!
Ne vous inquiétez pas, les tutoriels expliquent comment se servir de ce code.

Il y a trop de code! Impossible de retrouver le code du tutoriel!
Servez-vous de l'outil de recherche pour trouver rapidement et simplement le code.
Faites Edition > Rechercher, et tapez le code que vous voulez retrouver.


)— Utilisation des tutoriels
Il y a du code, j'y comprends rien!
Ce code n'est pas là par hasard, les tutoriels ne font que reprendre le code utilisé dans les fichiers du jeu afin de mieux les expliquer.

Ca ne m'aide pas tant que ça…
Pour mieux comprendre, ouvrez le fichier correspondant au tutoriel et recherchez le code qui vous pose problème.

C'est fiable au moins?
Il se peut que quelques tutoriels contiennent des erreurs, mais nous veillons à ce qu'il y en ait le moins possible. D'ailleurs, rien ne vous empêche de chercher de votre côté ce qui marche et de nous le faire partager par la suite!


)— Tweaking
Comment vérifier que mon code marche?
Testez-le, tout simplement! Sauvegardez votre fichier, puis lancez le jeu.

Mon arme ne fait pas ce que j'ai envie qu'elle fasse!
Une arme tweakée est rarement parfaite du premier coup. Après un test, corrigez le code de l'arme en fonction de votre attente et du défaut constaté.

Je modifie mon arme, mais rien ne change!
Pour que les modifications soient prises en compte, sauvegardez le fichier modifié et relancez le jeu.

Quand j'améliore d'un côté, j'ai un défaut qui apparait…
Parfois, une partie du code affecte une autre partie. Il faudra alors faire un compromis entre l'amélioration et le défaut, et trouver le juste milieu.

Bon voici l'introduction au tweaking.Pour la suite, je vous expliquerais le codage.
PS:Vous n'êtes pas obliger de tout lire, lisez seulement la partie qui vous interesse ou celle qui va vous servir!

Bon comme promis le codage:

Première partie: WeapTwk.xmlemojiou le tweaking des armes classiques)


Démarer avec WeapTwk:

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 base

Dégâts

Ce 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.

Taille

Peut ê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 tir

Vous 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.


Fragmentation:

La manière dont la fragmentation d'arme est définie dans Worms 4 est principalement ce qui rend le tweaking aussi puissant. Avec elle, vous pouvez simuler à peu près tout ce que vous voulez, d'une fragmentation simple à de spectaculaires effets de lumière et de feux d'artifice, en passant par des pluies de météorites, des flammes ou des tremblements de terre avec un peu d'expérience.

Explication du système de fragmentation

Pour cet exemple, nous allons utiliser kWeaponClusterGrenade, qui correspond à la bombe à fragmentation.
Faites une recherche de kWeaponClusterGrenade jusqu'à parvenir à cette partie:

Code:
<XContainerResourceDetails id='kWeaponClusterGrenade'>
<Value href='kWeaponClusterGrenade-0'/>
<Name>kWeaponClusterGrenade</Name>
<Flags>81</Flags>
</XContainerResourceDetails>
<PayloadWeaponPropertiesContainer id='kWeaponClusterGrenade-0'>
<IsAimedWeapon>true</IsAimedWeapon>
<IsPoweredWeapon>true</IsPoweredWeapon>
<IsTargetingWeapon>false</IsTargetingWeapon>
<IsControlledBomber>false</IsControlledBomber>
<IsBomberWeapon>false</IsBomberWeapon>
<IsDirectionalWeapon>true</IsDirectionalWeapon>


Cherchez ensuite les propriétés suivantes:

Code:
<NumBomblets>4</NumBomblets>
<BombletMaxConeAngle>0.28</BombletMaxConeAngle>
<BombletMaxSpeed>0.24</BombletMaxSpeed>
<BombletMinSpeed>0.12</BombletMinSpeed>
<BombletWeaponName>kWeaponClusterBomb</BombletWeaponName>


Rien de très compliqué à comprendre.
NumBomblets correspond au nombre de fragments.
BombletMaxConeAngle est l'angle maximum (en radians) dans lequel les fragments vont se répandre.
BombletMaxSpeed et BombletMinSpeed sont les vitesses maximale et minimale avec laquelle les fragments sortent de l'explosion.

La propriété qui nous intéresse le plus est BombletWeaponName, qui est ici égale à kWeaponClusterBomb.
Allons regarder à quoi cela correspond. Faites une recherche de kWeaponClusterBomb dans le fichier, jusqu'à trouver ceci.

Surtout, ne confondez pas kWeaponClusterGrenade et kWeaponClusterBomb !

Code:
<XContainerResourceDetails id='kWeaponClusterBomb'>
<Value href='kWeaponClusterBomb-0'/>
<Name>kWeaponClusterBomb</Name>
<Flags>81</Flags>
</XContainerResourceDetails>
<PayloadWeaponPropertiesContainer id='kWeaponClusterBomb-0'>
<IsAimedWeapon>false</IsAimedWeapon>
<IsPoweredWeapon>false</IsPoweredWeapon>
<IsTargetingWeapon>false</IsTargetingWeapon>
<IsControlledBomber>false</IsControlledBomber>
<IsBomberWeapon>false</IsBomberWeapon>
<IsDirectionalWeapon>false</IsDirectionalWeapon>


Vous tombez sur ce qui devrait être les données des fragments produits par la bombe à fragmentation, d'après le code précédent.

Si vous avez bien suivi, vous devriez vous rendre compte que ces données ressemblent étrangement à celles d'une arme tout à fait ordinaire, comme kWeaponBazooka ou kWeaponGrenade. Tout simplement parce qu'il s'agit bien d'une arme. Bien qu'elles n'apparaissent pas dans l'inventaire, le jeu considère les fragmentations comme des armes à part entière, et c'est la raison pour laquelle le tweaking est aussi puissant. Vous pouvez créer autant d'armes que vous pouvez, qui ne peuvent pas utiliser en tant qu'armes, mais qui peuvent quand même être utilisées comme fragments.

N'importe quelle arme peut être utilisée comme fragmentation d'une autre arme.
Par exemple, retournez dans kWeaponClusterGrenade, et changez sa propriété BombletWeaponName (kWeaponClusterBomb) en kWeaponHolyGrenade. Sauvegardez, lancez le jeu, et admirez !

Comme une fragmentation est une arme à part entière, vous pouvez la fragmenter à nouveau et créer plusieurs niveaux de fragmentation.
Vous pouvez même faire en sorte qu'une arme se fragmente en elle même, ce qui la fera se diviser indéfiniment.
Dans ce cas, il est fortement conseillé de mettre un nombre de fragments de 1. Si vous mettez un nombre supérieur, l'arme se divisera en plusieurs fragments, qui se diviseront à leur tour, et ainsi de suite, ce qui a une forte chance de faire planter votre jeu au bout d'un moment.

Evidemment, vous ne pouvez pas utiliser une arme de corps à corps comme fragmentation, ni une arme à feu (fusil à pompe), ni la tourelle défensive.
Les armes animales perdront leur capacité à marcher, sauter ou voler, et les armes à tête chercheuse perdront leur tête chercheuse en question.

Allez, maintenant quelque chose de plus complexe

Créer des fragments

Pour créer des fragments, il faut d'abord savoir exactement comment les armes sont définies exactement.
Chaque arme est définie de la façon suivante:

1: Une déclaration dans le bloc XDatabank, dans le début du fichier:

Code:

<ContainerResources href='kWeaponSentryGunPayload'/>
<ContainerResources href='kWeaponSheep'/>
<ContainerResources href='kWeaponShotgun'/>
<ContainerResources href='kWeaponSniperRifle'/>
<ContainerResources href='kWeaponStarburst'/>
<ContainerResources href='kWeaponSuperAirstrike'/>
<ContainerResources href='kWeaponSuperSheep'/>

—–> On peut ajouter une nouvelle arme ici

<ColorResources href='Payload.FuseTimerInitialColor'/>


Par exemple, on veut créer un fragment nommé kWeaponFragment. La déclaration sera donc:

Code:
<ContainerResources href='kWeaponFragment'/>


Plutôt simple non ? Cette déclaration est nécessaire pour que le jeu puisse charger votre nouvelle fragmentation.
Le kWeapon est une convention, vous n'êtes pas obligé d'appeler votre fragmentation comme ça, mais c'est quand même recommandé pour des raisons pratiques.

2: Un bloc XContainerResourceDetails. Vous pouvez le mettre où vous voulez, mais il est conseillé de le placer vers la fin du fichier, avant </xomObjects> pour que vous puissiez le trouver facilement plus tard.

Code:
<XColorResourceDetails id='Payload.FuseTimerUrgentColor'>
<Value r='255' g='255' b='255' a='255' />
<Name>Payload.FuseTimerUrgentColor</Name>
<Flags>64</Flags>
</XColorResourceDetails>

—> Ajouter le bloc XContainerResourceDetails ici

</xomObjects>
</xomArchive>


Voici la structure d'un bloc XContainerResourceDetails:

Code:
<XContainerResourceDetails id='NOM'>
<Value href='NOM-0'/>
<Name>NOM</Name>
<Flags>81</Flags>
</XContainerResourceDetails>


Remplacez simplement NOM par le nom de votre arme, kWeaponFragment en suivant l'exemple précédent.
N'oubliez pas d'ajouter le "-0" dans la propriété Value, il est indispensable pour faire la différence entre le bloc XContainerResourceDetails et le bloc PayloadWeaponPropertiesContainer suivant.

3: Un bloc PayloadWeaponPropertiesContainer, juste après le bloc XContainerResourceDetails que vous avez créé. Voici la structure qu'il devrait avoir:

Code:
<PayloadWeaponPropertiesContainer id='NOM-0'>
(propriétés)
</PayloadWeaponPropertiesContainer>


Au lieu de copier les blocs XContainerResourceDetails et PayloadWeaponPropertiesContainer, vous pouvez simplement les copier à partir d'une arme simple (Bazooka, par exemple), changer les noms et modifier les propriétés voulues.

Et voilà, vous avez créé votre propre fragment, et vous pouvez l'utiliser dans n'importe quelle arme en mettant la propriété BombletWeaponName au nom de votre fragment (ici, kWeaponFragment).


Apparence et bruitage:


Maintenant que vous avez le bases pour faire des armes intéressantes, vous voudrez certainement donner à votre arme une apparence unique.
Voici les principes de bases à connaître pour modifier l'apparence de votre arme.

Modèle 3D et animation

La première chose que vous pouvez modifier dans une arme, c'est le modèle 3D du projectile, et du lanceur s'il y en a un.

Le modèle 3D d'un objet est son apparence telle que vous la voyez dans le jeu. Chaque modèle a des animations qui lui sont propres, comme le mouton qui marche par exemple.

Pour toutes les armes, y compris les armes de corps à corps et quelques utilitaires, vous aurez toujours les propriétés suivantes:

Code:
<PayloadGraphicsResourceID>Bazooka.Payload</PayloadGraphicsResourceID>
<Payload2ndGraphicsResourceID></Payload2ndGraphicsResourceID>

<WeaponGraphicsResourceID>Bazooka.Weapon</WeaponGraphicsResourceID>


PayloadGraphicsResourceID est le modèle du projectile, alors que WeaponGraphicsResourceID est le modèle que le worm tient dans sa main. Pour les armes lancées ou posées telles que la grenade ou la dynamite, WeaponGraphicsResourceID doit toujours avoir la même valeur que PayloadGraphicsResourceID, à l'exception de la grenade, qui a deux valeurs différentes pour une raison inconnue.
C'est bien normal, puisque si le worm pose une dynamite, il doit bien avoir une dynamite en main. Si vous mettiez le modèle d'une mine uniquement comme projectile, votre worm tiendrait une dynamite, mais poserait une mine, ce qui n'est pas très cohérent.

Les noms de modèles sont des identifiants prédéfinis. Si vous entrez un identifiant qui n'est pas reconnu par le jeu, celui ci plantera dès qu'il essaiera d'afficher le modèle correspondant.

Consultez l'Annexe 1 pour obtenir la liste des noms de modèles valides.


Payload2ndGraphicsResourceID est une propriété uniquement utilisée pour le British gonflable, lorsqu'il est dans son état "gonflé".


Une fois que vous avez mis un modèle différent, vous aurez peut être besoin de changer aussi les animations.

Voici les propriétés qui contrôlent les animations du projectile selon le contexte:

Code:
<AnimTravel></AnimTravel>
<AnimSmallJump></AnimSmallJump>
<AnimBigJump></AnimBigJump>
<AnimArm></AnimArm>
<AnimSplashdown></AnimSplashdown>
<AnimSink></AnimSink>
<AnimIntermediate></AnimIntermediate>
<AnimImpact></AnimImpact>


AnimTravel est l'animation par défaut lorsque le projectile ne fait rien de particulier.
AnimSmallJump et AnimBigJump sont utilisées pour des armes telles que le mouton lorsqu'il saute.
AnimArm est l'animation jouée lorsque l'arme est déclenchée, par exemple, la mine qui clignote lorsqu'un worm passe à côté.
AnimSplashdown est l'animation jouée lorsque le projectile tombe à l'eau, et AnimSink est ensuite jouée pendant que celui-ci coule.
AnimIntermediate est uniquement utilisée pour la Vieille femme, lorsqu'elle touche un worm et lui vole une arme.
AnimImpact est uniquement utilisée pour la Flèche empoisonnée, lorsqu'elle se plante dans le terrain.

Ces propriétés doivent recevoir un identifiant d'animation, qui correspond à l'animation qui doit être jouée.
Il n'y a pas encore de méthode connue pour obtenir toutes les animations valides pour un modèle donné, mais vous pouvez les trouver en général dans le code d'autres armes.

Si un identifiant non valide est donné, ou si la propriété est laissée vide, aucune animation ne sera jouée.


Et finalement, vous pouvez modifier la manière dont le worm tient l'arme en main en modifiant les propriétés suivantes:

Code:
<WXAnimDraw>DrawBazooka</WXAnimDraw>
<WXAnimAim>AimBazooka</WXAnimAim>
<WXAnimFire>FireBazooka</WXAnimFire>
<WXAnimHolding>HoldBazooka</WXAnimHolding>
<WXAnimEndFire></WXAnimEndFire>
<WXAnimTaunt>TauntBazooka</WXAnimTaunt>
<WXAnimTargetSelected></WXAnimTargetSelected>


WXAnimDraw est l'animation jouée lorsque le worm déploie l'arme.
WXAnimAim correspond à la posture du worm selon l'angle avec lequel il vise.
WXAnimFire est jouée lorsque le worm tire ou lance son arme.
WXAnimHolding correspond à l'animation du worm pendant qu'il tient son arme.
WXAnimEndFire est jouée par le worm juste après avoir utilisé son arme.
WXAnimTaunt est l'animation de moquerie visible lorsque vous appuyez sur la touche Charrier (T par défaut).
WXAnimTargetSelected est l'animation du worm lorsque vous avez sélectionné une cible (pour le missile à tête chercheuse par exemple.

Comme pour les animations de projectile, ce sont des identifiants d'animation, et il n'a pas de méthode sûre pour en obtenir la liste complète. A nouveau, cherchez dans le code d'autres armes.

Notez que ces animations peuvent parfois affecter l'arme que le worm tient en main, comme le mouton qui se débat alors que le worm le maintient.

Il semblerait que ces animations ne puissent pas être modifiées pour les armes de type grenade (Grenade, Bombe à fragmentation, Bombe lacrymogène, Bombe banane, Sainte grenade).

Effets

A présent, si vous voulez allez plus loin, vous pouvez aussi changer les effets "spéciaux" produits par votre arme (traînée de fumée, explosion, etc…emoji.

Voici les propriétés qui contrôlent les différents effets spéciaux liés à l'arme.:

Code:
<FxLocator>bazookarocket</FxLocator>
<ArielFx>WXP_BazookaTrailPack</ArielFx>
<DetonationFx>WXP_ExplosionX_Med</DetonationFx>

<ExpiryFx></ExpiryFx>
<SplashFx>WXP_WaterSplash</SplashFx>
<SplishFx>WXP_WaterSmallSplash</SplishFx>
<SinkingFx>WXP_UnderWaterBubbles</SinkingFx>
<BounceFx></BounceFx>
<StopFxAtRest>true</StopFxAtRest>

<HoldParticleFX></HoldParticleFX>


FxLocator est un identifiant de position qui indique l'endroit où les effets de traînée sont générés. Pour le bazooka, il correspond à l'arrière de l'obus, d'où la fumée sort, et pour la dynamite, il correspond à la mèche.
Comme les identifiants d'animation, il n'y a pas de moyen d'obtenir tous les identifiants de position d'un modèle, et certains modèles en sont même dépourvus, ce qui les rend incapables d'afficher des effets de traînée.
Si un mauvais identifiant de position est donné, aucun effet de traînée ne sera visible, cette propriété est donc à prendre en compte si vous modifiez le modèle de votre projectile.
Par contre, si aucun identifiant n'est donné, la traînée sera placée par défaut au centre du projectile.

ArielFx correspond à l'effet de traînée de l'arme, et est fortement lié à FxLocator. Elle permet de mettre un effet de traînée de fumée, un halo lumineux, des étincelles, toutes sortes d'effets devant être attachés à l'arme. Cette propriété reçoit un identifiant d'effet, commençant généralement par WXP.
La liste des identifiants d'effets peut être trouvée dans le fichier PartTwk.xml.
Si un identifiant non valide est donné, ou si la propriété est laissée vide, aucune traînée ne sera visible.

DetonationFx est l'effet visible lorsque le projectile explose, à ne pas confondre avec ExpiryFx, qui correspond à l'effet visible lorsque le projectile expire.
Un projectile peut tout à fait expirer sans exploser lorsque sa durée de vie est écoulée, lorsque la propriété DetonateOnExpiry est "false".

Notez que les effets de particules ont entre autres la capacité d'empoisonner les worms à proximité.
Il n'y a pas de paramètre Poison pour l'arme, elle provient des effets spéciaux, vous pouvez donc par exemple copier l'effet d'explosion de la bombe lacrymogène ou de la flèche empoisonnée pour rendre votre arme toxique.

SplashFx et SplishFx sont les effets visibles lorsque la particule touche la surface de l'eau. Splash est visible lorsque le projectile tombe dans l'eau, Splish est visible lorsqu'il ricoche dessus.
Contrairement aux autres effets, laisser ces propriétés vides ou leur donner un identifiant non valide peut donner des résultats inattendus, comme des têtes de mort apparaissant sur l'eau lorsque le projectile tombe à l'eau.

SinkingFx est l'effet visible lorsque la particule coule (en général, un effet de bulles).
BounceFx et l'effet visible à chaque fois que le projectile rebondit contre quelque chose.

StopFxAtRest définit si l'effet de traînée doit s'arrêter lorsque le projectile ne bouge plus. A moins que votre arme ne soit du genre Sainte grenade et explose lorsqu'elle est immobile, cette propriété devrait être "false".

Enfin, HoldParticleFX est l'effet visible sur l'arme elle-même pendant que le worm la tient.


Quelques propriétés mineures pourraient être utiles pour obtenir des effets intéressants, mais elles n'ont jamais été utilisées, soit parce qu'elles n'ont pas l'air de fonctionner, soit parce qu'elles sont trop limitées.

Code:
<TrailBitmap></TrailBitmap>
<TrailLocator1></TrailLocator1>
<TrailLocator2></TrailLocator2>
<TrailLength>0</TrailLength>
<AttachedMesh>Bazooka.Flames</AttachedMesh>
<AttachedMeshScale>1</AttachedMeshScale>


AttachedMesh est un modèle attaché au projectile, dont la taille peut être modifiée en changeant la valeur de AttachedMeshScale.
C'est une propriété facile à utiliser, mais elle semble trop limitée, et uniquement adaptée au bazooka (la petite flamme visible derrière l'obus).

Personne n'a encore trouvé comment les 4 autres propriétés marchent, si vous avez fait quelques expériences et obtenu des résultats intéressants, n'hésitez pas à nous en faire part !

Bruitages

Vous pouvez facilement ajouter des bruitages à vos armes en utilisant les propriétés suivantes.
Pensez bien à ne pas confondre Fx (effet), avec Sfx (bruitage).

Code:
<DetonationSfx>ExplosionRegular</DetonationSfx>

<BounceSfx></BounceSfx>
<PreDetonationSfx></PreDetonationSfx>
<ArmSfx1Shot></ArmSfx1Shot>
<ArmSfxLoop></ArmSfxLoop>
<LaunchSfx>RocketRelease</LaunchSfx>
<LoopSfx>BombWhistle</LoopSfx>
<BigJumpSfx></BigJumpSfx>
<WalkSfx></WalkSfx>


DetonationSfx est le son entendu lorsque l'arme explose.
BounceSfx est le son produit l'arme lorsqu'elle rebondit contre quelque chose.
PreDetonationSfx est entendu avant que l'arme n'explose (comme le "Alléluia" de la Sainte grenade).
ArmSfx1Shot semble être le son joué lorsque l'arme vient d'être déclenchée. Il n'est utilisé que pour le British gonflable.
ArmSfxLoop est joué en boucle une fois que l'arme est déclenchée (le bip produit par la mine, par exemple).
LaunchSfx est le son produit par le projectile dès qu'il est tiré ou lancé.
LoopSfx est joué en boucle tant que le projectile est actif.
BigJumpSfx est utilisé pour les armes telles que le mouton, lorsqu'il fait un saut, et WalkSfx est joué pendant que celui-ci marche.

Et quelques propriétés spécifiques au Super mouton et au Feu d'artifice:

Code:
<FlyingLaunchSfx></FlyingLaunchSfx>
<FlyingLoopSfx></FlyingLoopSfx>


FlyingLaunchSfx est le son joué lorsque le projectile décolle, et FlyingLoopSfx pendant qu'il vole.


Ces propriétés reçoivent un identifiant de son. Si un identifiant non valide est donné, ou si la propriété est laissée vide, aucun son n'est joué.


Propriétés avancées:


Maintenant que vous connaissez tous les principes de base, vous pouvez tenter de faire des modifications un peu plus majeures qui influent sur le comportement de votre arme.

Conditions d'explosion

Tout d'abord, vous pouvez décider dans quelles circonstances l'arme peut exploser.
Les propriétés qui vous permettent de contrôler cela sont les suivantes:

Code:
<HasAdjustableFuse>false</HasAdjustableFuse>

<DetonatesOnLandImpact>true</DetonatesOnLandImpact>
<DetonatesOnExpiry>false</DetonatesOnExpiry>
<DetonatesOnObjectImpact>true</DetonatesOnObjectImpact>
<DetonatesOnWormImpact>true</DetonatesOnWormImpact>
<DetonatesAtRest>false</DetonatesAtRest>
<DetonatesOnFirePress>false</DetonatesOnFirePress>
<DetonatesWhenCantJump>false</DetonatesWhenCantJump>

<LifeTime>-1</LifeTime>

<PreDetonationTime>0</PreDetonationTime>


Tout d'abord, LifeTime définit la stricte durée de vie de l'arme. Une fois que cette durée est écoulée, on dit que l'arme "expire", ce qui peut la mener à exploser, ou tout simplement disparaître.
Elle est exprimée en millisecondes, 1000 correspond donc à une seconde.
-1 signifie que l'arme a une durée de vie infinie, ce qui est le cas pour la plupart des armes qui explosent au contact.

Dans le cas où HasAdjustableFuse a une valeur "true", LifeTime n'est pas pris en compte car la durée de vie de vie de l'arme est réglable de 1 à 5 secondes pendant le jeu.

DetonatesOnLandImpact détermine si le projectile doit exploser au contact du terrain ou pas.
DetonatesOnObjectImpact et DetonatesOnWormImpact déterminent si elle doit exploser au contact d'un objet (caisse, baril), ou au contact d'un worm.
DetonatesOnExpiry détermine si le projectile doit exploser lorsqu'il expire (lorsque la durée correspondant à LifeTime est écoulée).
Si cette propriété est "false", alors le projectile disparaît simplement sans produire d'explosion.
DetonatesAtRest détermine si le projectile explose lorsqu'il arrête de bouger
DetonatesOnFirePress détermine si le projectile explose lorsqu'on clique une seconde fois après avoir tiré.
DetonatesWhenCantJump semble être ce qui reste de la Vache folle de Worms 3D, cette propriété détermine pour les armes animales si elles doivent exploser lorsqu'elles rencontre un mur par dessus lequel elles ne peuvent pas sauter.

PreDetonationTime est le retardement de l'explosion du projectile. Par exemple, pour la sainte grenade, on ajoute 2 secondes avant l'explosion, le temps d'entendre le son "Alléluia".
Comme LifeTime, cette propriété est exprimée en millisecondes.


Dans le cas où votre arme a une durée de vie limitée, vous pouvez afficher le nombre de secondes avant l'explosion, comme pour les grenades.

Code:
<FuseTimerGraphicOffset>10</FuseTimerGraphicOffset>
<FuseTimerScale>0</FuseTimerScale>


FuseTimerScale détermine la taille de l'affichage des secondes. Il est à 0 si les secondes ne sont pas affichées, et en en général à 8 pour les armes de type grenades.
FuseTimerGraphicOffset détermine le décalage de l'afficheur par rapport au projectile. Il est généralement égal à 6 pour les grenades, et sa valeur n'a pas d'importance si FuseTimerScale est égal à 0.


Vous pouvez aussi faire en sorte que votre arme se comporte comme une mine, et se déclenche lorsqu'un worm passe à proximité. Dans ce cas, utilisez les propriétés suivantes:

Code:
<Mass>0</Mass>

<StartsArmed>true</StartsArmed>
<ArmOnImpact>false</ArmOnImpact>
<ArmingCourtesyTime>0</ArmingCourtesyTime>

<ArmingRadius>0</ArmingRadius>


StartsArmed définit si l'arme est active lorsqu'elle est lancée ou pas. Pour une arme normale, cette propriété est "true", pour une arme se comportant comme une mine, elle devrait être "false".
Dans le cas où cette valeur est false, il semblerait que la propriété Mass doive être supérieure à 0, sans quoi le projectile peut parfois avoir des comportements étranges. Dans ce cas, une valeur de 1 suffit.

Lorsqu'une arme n'est pas active, sa durée de vie ne diminue pas avec le temps. C'est seulement lorsqu'elle est activée que le décompte de LifeTime démarre.

ArmingRadius donne le rayon de détection de la mine, c'est à dire la distance minimum entre un worm et la mine permettant de l'activer.
ArmingCourtesyTime est la durée pendant laquelle la mine ne peut rien détecter. C'est un paramètre important à prendre en compte, pour que la mine ne détecte pas immédiatement le worm qui vient de la poser.
ArmOnImpact est une propriété qui semble n'être utilisé que pour la flèche empoisonnée. Apparemment, elle détermine si le projectile devient actif lorsqu'il touche le terrain, mais elle ne semble pas fonctionner sur les autres armes.

Notez que cette méthode permet aussi de créer des bombes à retardement qui restent sur le terrain pendant plusieurs tours avant d'exploser. Il suffit de mettre une valeur très grande à ArmingRadius, et le temps de retardement voulu à ArmingCourtesyTime.
Il n'est pas possible d'obtenir le même effet en mettant le retardement à LifeTime, car dans ce cas, le tour ne se termine pas avant que LifeTime ne soit écoulé.

Physique et mouvement

Vous pouvez aussi modifier la physique du projectile, c'est à dire la force avec laquelle il rebondit, dans le cas où il n'explose pas à l'impact, et la façon dont il ricoche sur l'eau.

Code:
<TangentialMinBounceDamping>0</TangentialMinBounceDamping>
<ParallelMinBounceDamping>0</ParallelMinBounceDamping>
<TangentialMaxBounceDamping>0</TangentialMaxBounceDamping>
<ParallelMaxBounceDamping>0</ParallelMaxBounceDamping>
<SkimsOnWater>true</SkimsOnWater>
<MinSpeedForSkim>0.1</MinSpeedForSkim>
<MaxAngleForSkim>-0.4</MaxAngleForSkim>
<SkimDamping x='0.5' y='-0.5' z='0.5' />


Les quatre premiers paramètres définissent la force avec laquelle le projectile rebondit. On ne connaît pas encore exactement l'influence de ces propriétés sur les rebonds, mais à titre de référence, voici leurs valeur pour la Grenade.

Code:
<TangentialMinBounceDamping>0.7</TangentialMinBounceDamping>
<ParallelMinBounceDamping>0.35</ParallelMinBounceDamping>
<TangentialMaxBounceDamping>0.8</TangentialMaxBounceDamping>
<ParallelMaxBounceDamping>0.8</ParallelMaxBounceDamping>


Il semblerait que ces valeurs soient des multiplicateurs de force, c'est à dire qu'une valeur de 1 à toutes les propriétés donne au projectile la capacité de rebondir indéfiniment, sans jamais perdre de sa vitesse, et qu'une valeur de 0 ne donne absolument aucun rebond.

Il est possible de faire coller un projectile au terrain en mettant une valeur de -1 à toutes ces propriétés.

SkimsOnWater détermine si le projectile peut ricocher sur l'eau.
Dans ce cas, MinSpeedForSkim correspond à la vitesse minimum requise pour faire un ricochet, et MaxAngleForSkim à l'angle maximum (en radians) requis.
Notez qu'en mettant une valeur de -90° (-1.57 radians) à MaxAngleForSkim, le projectile ricoche quelque soit l'angle l'impact.

Type d'arme

Finalement, vous pouvez modifier le type de votre arme, et quelques paramètres mineurs à travers les propriétés suivantes:

Code:
<IsAimedWeapon>true</IsAimedWeapon>
<IsPoweredWeapon>true</IsPoweredWeapon>
<IsTargetingWeapon>false</IsTargetingWeapon>
<IsControlledBomber>false</IsControlledBomber>
<IsBomberWeapon>false</IsBomberWeapon>
<IsDirectionalWeapon>true</IsDirectionalWeapon>
<IsHoming>false</IsHoming>
<IsLowGravity>true</IsLowGravity>
<IsLaunchedFromWorm>true</IsLaunchedFromWorm>


je vous propose une étude d'arme sur le Bazooka, cela vous permettra de comprendre les moindres lignes de cette arme et ainsi de la modifier convenablement.

Commençons Smile :
Code:
<XContainerResourceDetails id='kWeaponBazooka'>
<Value href='kWeaponBazooka-0'/>
<Name>kWeaponBazooka</Name>
<Flags>81</Flags>
</XContainerResourceDetails>

Comme pour chaque arme (et même chaque container), nous avons ici la déclaration de toute la liste de variables rattachés au bazooka. Il n'y a rien de vraiment modifiable ici.

Code:
<PayloadWeaponPropertiesContainer id='kWeaponBazooka-0'>

</PayloadWeaponPropertiesContainer>

L'ouverture et la fermeture de la liste de variable, ils définissent le type général de l'arme dont l'ID est spécifié.
Il en éxiste différents types :

PayloadWeaponPropertiesContainer : Type d'arme que l'on peut appellé "Newtoniens", il s'agit d'une arme qui lance un objet (depuis un worm, une arme ou un élico) et qui est inactif. C'est à dire qu'il n'est pas dirigé par quoi que ce soit à part par la gravité (accéssoirement).
HomingPayloadWeaponPropertiesContainer : Type d'arme télécomandée, les propriétés sont semblables types d'armes Newtoniens.
JumpingPayloadWeaponPropertiesContainer : Type d'arme vivante, pouvant se déplacer.
FlyingPayloadWeaponPropertiesContainer : Type d'arme vivante et volante.
MeleeWeaponPropertiesContainer : Type d'arme de corps-à-corps.
GunWeaponPropertiesContainer : Type d'arme à feu qui produit un vecteur dans la direction de l'arme jusqu'a l'objet le plus proche. Le tire se fait dans un interval de temps nul.
SentryGunWeaponPropertiesContainer : Type d'arme spécifique à la tourelle défensive.
BaseWeaponContainer :Type d'arme non-définie dans ce fichier (D'ailleur c'est le seul type d'arme dont le nom ne possède pas Properties ^^).



/!\ Si vous voulez changer un type d'arme, il faudra aussi changer toutes les propriétés qu'il contient de façon à ce qu'elles soient compatibles avec ce nouveau type d'arme.

Code:
<IsAimedWeapon>true</IsAimedWeapon>

Type : Booléan (True/False).
Déscription : Défini si le viseur doit être affiché lorsqu'on vise à la première personne avec cet arme.

Code:
<IsPoweredWeapon>true</IsPoweredWeapon>

Type : Booléan (True/False).
Déscription : Défini si la puissance de l'arme peut-être réglé en maintenant le click au moment du tire ou non.

Code:
<IsTargetingWeapon>false</IsTargetingWeapon>

Type : Booléan (True/False).
Déscription : Défini si un viseur cible doit apparaitre avant le viseur de tire, il sert à localiser une zone avant le tire (comme le missile téléguidé). Cependant, le missile ne se dirigera pas obligatoirement vers la zone localisée.
Conditions de fonctionnement : IsAimedWeapon = true.

Code:
<IsControlledBomber>false</IsControlledBomber>

Type : Booléan (True/False).
Déscription : A définir.

Code:
<IsBomberWeapon>false</IsBomberWeapon>

Type : Booléan (True/False).
Déscription : A définir.

/!\ Cette valeur changée True seule ralentit CONSIDERABLEMENT le jeu.

Code:
<IsDirectionalWeapon>true</IsDirectionalWeapon>

Type : Booléan (True/False).
Déscription : Défini si l'arme tire dans la direction de la vue à la première personne (True) ou dans la direction du worms (False).

Code:
<IsHoming>false</IsHoming>

Type : Booléan (True/False).
Déscription : Déini si l'arme est téléguidé.
Conditions de fonctionnement : Type d'arme = HomingPayloadWeaponPropertiesContainer.

Code:
<IsLowGravity>true</IsLowGravity>

Type : Booléan (True/False).
Déscription : Déini si le projectile est affecté par l'effet de "faible gravitée" lorsque celui-ci est activé dans le Wormpot.
Conditions de fonctionnement : IsAffectedByGravity = true.

Code:
<IsLaunchedFromWorm>true</IsLaunchedFromWorm>

Type : Booléan (True/False).
Déscription : Déini si le projectile est lancée depuis un worm (True) ou si le mode de lancement est différent (False).
Astuce : Si la valeur de cette variable est false et qu'aucune autre variable ne défini un point de lancement de ce projectile, il apparaitra directement à l'endroit ou il est censé exploser.

Code:
<HasAdjustableFuse>false</HasAdjustableFuse>

Type : Booléan (True/False).
Déscription : Déini si le joueur peut régler le temps de détonation de l'arme (entre 1 et 5 secondes).

Code:
<HasAdjustableBounce>false</HasAdjustableBounce>

Type : Booléan (True/False).
Déscription : Semble déinir si le joueur peut régler un paramètre lié au rebond. Son effet reste indéfini.

Code:
<HasAdjustableHerd>false</HasAdjustableHerd>

Type : Booléan (True/False).
Déscription : Déini si le joueur peut régler le nombre de projectile avant le tire (1 à 5).

Code:
<IsAffectedByGravity>true</IsAffectedByGravity>

Type : Booléan (True/False).
Déscription : Déini si l'arme est affecté par la gravité.

Code:
<IsAffectedByWind>true</IsAffectedByWind>

Type : Booléan (True/False).
Déscription : Déini si l'arme est affecté par le vent.

Code:
<EndTurnImmediate>true</EndTurnImmediate>

Type : Booléan (True/False).
Déscription : Déini si le tour doit se finir juste après l'utilisation de l'arme.

Code:
<ColliderFlags>0</ColliderFlags>

Type : Numérique indéfini.
Déscription : A définir.

Code:
<CameraId>PayloadTrackCamera</CameraId>

Type : ID de Camera.
Déscription : Défini le type de camera qui suivra le projectile.
Astuce : Laissez cette balise vide pour que la camera reste dans la position du tire et ne suive pas le projectile.
Tutorial : Apprennez à maitriser les camera grace à ce tutorial rédigé par Easytwk.

Code:
<PayloadGraphicsResourceID>Bazooka.Payload</PayloadGraphicsResourceID>
<Payload2ndGraphicsResourceID></Payload2ndGraphicsResourceID>

Type : ID de Modèl 3D.
Déscription : Défini le modèl 3D du projectile et du projectile secondaire (S'il y a projectile secondaire).

Code:
<Scale>1</Scale>
<Radius>5</Radius>

Type : Numérique positive ou nulle.
Déscription : Défini la taille du projectile (Scale) et le rayon de collision autour du centre de ce projectile (Radius).

Code:
<AnimTravel></AnimTravel>
<AnimSmallJump></AnimSmallJump>
<AnimBigJump></AnimBigJump>
<AnimArm></AnimArm>
<AnimSplashdown></AnimSplashdown>
<AnimSink></AnimSink>
<AnimIntermediate></AnimIntermediate>
<AnimImpact></AnimImpact>

Type : ID d'animations du modèl 3D désigné dans <PayloadGraphicsResourceID>.
Description : Défini l'animation du modèl 3D du projectile qui doit être lu pendant un moment précis.
Informations individuels :

Travel = "Voyage", Animation pendant le mouvement "normal" du projectile.
SmallJump = "Petit Saut", Animation lors d'un saut basique du projectile.
BigJump = "Grand Saut", Animation lors d'un double saut du projectile.
Arm = "Armement", Animation lorsque le projectile s'arme (ex : le moment ou la mine est posé).
Splashdown = "Chute dans l'eau", Animation lorsque le projectile entre en contacte avec l'eau.
Sink = "Couler", Animation lorsque le projectile coule.
Intermediate = "Intermédiaire", Animation lors du changement de modèl 3D du projectile.
Impact = "Impacte", Animation lors de l'impacte du projectile.



Code:
<DirectionBlend>1</DirectionBlend>

Type : Numérique positive ou nulle.
Déscription : Défini le type de rotation du projectile une fois lancé.
Valeurs :

Valeur = 0 : Le projectile reste dans l'angle d'origine, il ne tourne pas ça.
Valeur = 1 : Le projecile suit l'orientation de sa trajectoire.
Valeur >= 2 : Le projectile tourne plus ou moins en fonction de son angle de rebond.



Code:
<FuseTimerGraphicOffset>10</FuseTimerGraphicOffset>
<FuseTimerScale>0</FuseTimerScale>

Type : Numérique positive ou nulle.
Déscription : Défini la taille (Scale) et la hauteur (Offset) à laquelle est placé le décompte par rapport au projectile.
Conditions de fonctionnement : IsFuseDisplayed = true et LifeTime != -1.

Code:
<BasePower>0.125</BasePower>
<MaxPower>0.475</MaxPower>

Type : Pourcentage décimal.
Description : Défini la puissance du tire minimal (Base) et la puissance de tire maximal (Max). Si le joueur ne peux pas régler la puissance de tire (IsPoweredWeapon=false), la puissance de tire sera direcetment la puissance maximal.

Code:
<MinTerminalVelocity>0</MinTerminalVelocity>
<MaxTerminalVelocity>0</MaxTerminalVelocity>

Type : Numérique Indéfini.
Description : À définir.

Code:
<LogicalLaunchZOffset>0</LogicalLaunchZOffset>
<LogicalLaunchYOffset>0</LogicalLaunchYOffset>

Type : Numérique.
Description : Défini la monté (Z) et le recule (Y) de la camera au moment du tire.
Astuce : Choississez des valeurs négatives pour que la camera déscende ou avance.

Code:
<OrientationOption>2</OrientationOption>

Type : Numérique 0 à 2 inclus.
Description : Défini le type de rotation de l'arme au moment de son lancement.
Tutorial : Découvrez à quoi correspond chaque valeur en suivant ce tutorial rédigé par _Kilburn.

Code:
<SpinSpeed>0</SpinSpeed>

Type : Angle en radians.
Description : Défini la vitesse angulaire de rotation (Axe Z) du projectile pendant sa durée de vie total.

Code:
<InterPayloadDelay>0</InterPayloadDelay>

Type : Temps en millisecondes.
Description : Défini le temps de changement de modèl 3D entre le modèl défini dans PayloadGraphicsResourceID et celui défini dans Payload2ndGraphicsResourceID.

Code:
<MinAimAngle>-1.57</MinAimAngle>
<MaxAimAngle>1.57</MaxAimAngle>

Type : Angle en radians.
Description : Défini la hauteur d'angle minimal (Min) et maximal (Max) jusqu'à laquelle le joueur peut viser à la première personne.

Code:
<DetonatesOnLandImpact>false</DetonatesOnLandImpact>
<DetonatesOnExpiry>false</DetonatesOnExpiry>
<DetonatesOnObjectImpact>false</DetonatesOnObjectImpact>
<DetonatesOnWormImpact>false</DetonatesOnWormImpact>
<DetonatesAtRest>true</DetonatesAtRest>
<DetonatesOnFirePress>false</DetonatesOnFirePress>
<DetonatesWhenCantJump>false</DetonatesWhenCantJump>

Type : Booléan (True/False).
Description : Défini si le projectile doit exploser dans la condition donnée.
Informations individuels :

OnLandImpact : "Au contacte du sol", Explosion au contacte du terrain.
OnExpiry : "A l'expiration", Explosion à la fin du temps défini dans LifeTime.
OnObjectImpact : "Au contacte d'un objet", Explosion au contacte d'un objet.
OnWormImpact : "Au contacte d'un Worm", Explosion au contacte d'un worm.
AtRest : "Au repos", Explosion quand le projectile est à l'arret.
OnFirePress : "A l'appuis de la touche de tire", Explosion lorsque le joueur appuis sur Tire.
WhenCantJump : "Quand l'on ne peut sauter", Semble être une valeur teste que les programmeurs n'ont pas supprimé.


exercice 1:bazooka sacré:je vous propose de créer une arme:un bazooka qui tire des grenades sacrés.


Prérequis:
- Propriétés de base
- Fragmentation simple
________________________________________________

Le but de ce premier exercice est de modifier le bazooka de telle sorte qu'il projette des grenades sacrées à l'explosion.

Voici les conditions à respecter:
- Le missile doit être deux fois plus grand que l'original
- Lorsqu'il explose, il doit projeter 5 grenades sacrées, à une vitesse située entre 0.1 et 0.35, se propageant dans un angle d'environ 0.45 radians

Solution
Spoiler:

L'arme à modifier est bien évidemment kWeaponBazooka.

Nous allons tout d'abord modifier la taille du missile.

Code:
<Scale>2</Scale>
<Radius>10</Radius>


Comme le missile est deux fois plus grand, on doit multiplier Scale et aussi Radius par 2 pour obtenir des résultats convenables. Pensez toujours à changer Radius en fonction de Scale pour éviter les mauvaises surprises.

Ensuite, il suffit de mettre la grenade sacrée comme fragmentation du bazooka, avec les paramètres voulus.

Code:
<NumBomblets>5</NumBomblets>
<BombletMaxConeAngle>0.45</BombletMaxConeAngle>
<BombletMaxSpeed>0.35</BombletMaxSpeed>
<BombletMinSpeed>0.1</BombletMinSpeed>
<BombletWeaponName>kWeaponHolyHandGrenade</BombletWeaponName>


Et voilà, c'est aussi simple que ça !


Pour aller plus loin…
- Essayez de faire en sorte que les fragments du bazooka soient toujours des grenades sacrées ordinaires, quels que soient les modifications effectuées sur la grenade sacrée originale.
- Donnez à votre bazooka une traînée et un effet d'explosion de sainte grenade.



Deuxième partie à venir…
PS:pareil qu'au premier sujet, lisez ce qui vous sert!!!

Alors ça c'est cool. Bon c'est dommage j'ai Worms 4 sur PS2 (à ce propos je n'ai jamais réussi à terminer tous les défis, très difficiles par moments). J'ai toujours voulu avoir la possibilité de créer des armes sans limites mais le créateur d'arme du jeu ne le permettait pas. De plus l'avantage se tournait toujours pour le joueur car l'IA n'était pas assez poussée pour utiliser une arme créée par le joueur. Dommage, un bombardement de bananes c'est toujours magique emoji !

bon 2éme partie:

Tweak.xml:caractéristiques générales, outils…


tuto tweak.xml:


Commençons par le commençement.(je vais mettre ce que je connais)

<XIntResourceDetails id='Jetpack.InitFuel'>
carburant du jetpack

<XIntResourceDetails id='Ninja.NumShots'>
nombre de tirs de la corde ninja

<XUintResourceDetails id='Worm.Poison.Default'>
nombre de dégats du poison par tour

<XFloatResourceDetails id='Crate.ImpulseMagnitude'>
<Value>0.45</Value>
<Name>Crate.ImpulseMagnitude</Name>
<Flags>64</Flags>
</XFloatResourceDetails>
<XFloatResourceDetails id='Crate.ImpulseRadius'>
<Value>75</Value>
<Name>Crate.ImpulseRadius</Name>
<Flags>64</Flags>
</XFloatResourceDetails>
<XFloatResourceDetails id='Crate.LandDamageRadius'>
<Value>60</Value>
<Name>Crate.LandDamageRadius</Name>
<Flags>64</Flags>
</XFloatResourceDetails>
<XFloatResourceDetails id='Crate.WormDamageMagnitude'>
<Value>60</Value>
<Name>Crate.WormDamageMagnitude</Name>
<Flags>64</Flags>
</XFloatResourceDetails>
<XFloatResourceDetails id='Crate.WormDamageRadius'>
<Value>70</Value>
<Name>Crate.WormDamageRadius</Name>
<Flags>64</Flags>
</XFloatResourceDetails>
tout ça,c'est les dégats max,si ça evoie loin…des caisses.comme les armes(je crois).

<XFloatResourceDetails id='Jetpack.MaxAltitude'>
vous l'avez deviné,c'est l'altitude max du jetpack

<XFloatResourceDetails id='Land.OverrideScale'>
la taille du terrain


<XFloatResourceDetails id='Low.Gravity.GameDefault'>
gravité.

<XFloatResourceDetails id='Ninja.MaxLength'>
longeur de la corde.

<XFloatResourceDetails id='OilDrum.DamageMagnitude'>
<Value>55</Value>
<Name>OilDrum.DamageMagnitude</Name>
<Flags>64</Flags>
</XFloatResourceDetails>
<XFloatResourceDetails id='OilDrum.ImpulseMagnitude'>
<Value>0.4</Value>
<Name>OilDrum.ImpulseMagnitude</Name>
<Flags>64</Flags>
</XFloatResourceDetails>
<XFloatResourceDetails id='OilDrum.ImpulseRadius'>
<Value>75</Value>
<Name>OilDrum.ImpulseRadius</Name>
<Flags>64</Flags>
</XFloatResourceDetails>
<XFloatResourceDetails id='OilDrum.LandDamageRadius'>
<Value>45</Value>
<Name>OilDrum.LandDamageRadius</Name>
<Flags>64</Flags>
</XFloatResourceDetails>
<XFloatResourceDetails id='OilDrum.WormDamageRadius'>
<Value>75</Value>
<Name>OilDrum.WormDamageRadius</Name>
<Flags>64</Flags>
</XFloatResourceDetails>
même chose que les caisses…et les armes.


<XFloatResourceDetails id='WXWorm.BackflipDistance'>
<Value>80</Value>
<Name>WXWorm.BackflipDistance</Name>
<Flags>64</Flags>
</XFloatResourceDetails>
distance du double saut.

<XFloatResourceDetails id='WXWorm.JumpDistance'>
<Value>80</Value>
<Name>WXWorm.JumpDistance</Name>
<Flags>64</Flags>
</XFloatResourceDetails>
distance du saut.

<XFloatResourceDetails id='Worm.DeathImpulseMagnitude'>
<Value>0.6</Value>
<Name>Worm.DeathImpulseMagnitude</Name>
<Flags>64</Flags>
</XFloatResourceDetails>
<XFloatResourceDetails id='Worm.DeathImpulseRadius'>
<Value>45</Value>
<Name>Worm.DeathImpulseRadius</Name>
<Flags>64</Flags>
</XFloatResourceDetails>
<XFloatResourceDetails id='Worm.DeathLandDamageRadius'>
<Value>35</Value>
<Name>Worm.DeathLandDamageRadius</Name>
<Flags>64</Flags>
</XFloatResourceDetails>
<XFloatResourceDetails id='Worm.DeathWormDamageMagnitude'>
<Value>35</Value>
<Name>Worm.DeathWormDamageMagnitude</Name>
<Flags>64</Flags>
</XFloatResourceDetails>
même chose que devinez!(a la difference près que c'est quand le worm explose)(je crois)

<XFloatResourceDetails id='Worm.Scale'>
<Value>150</Value>
<Name>Worm.Scale</Name>
<Flags>64</Flags>
</XFloatResourceDetails>
taille du worm


<XContainerResourceDetails id='Water.ARABIAN.DAY'>
<Value href='Water.ARABIAN.DAY-0'/>
<Name>Water.ARABIAN.DAY</Name>
<Flags>81</Flags>
</XContainerResourceDetails>
<WaterPlaneTweaks id='Water.ARABIAN.DAY-0'>
<GlintCentreColor r='109' g='123' b='190' a='255' />
<GlintInnerColor r='150' g='150' b='150' a='255' />
<GlintMiddleColor r='45' g='45' b='45' a='255' />
<GlintOuterColor r='0' g='0' b='0' a='255' />
<GlintRimColor r='200' g='200' b='200' a='255' />
<ShadowCentreColor r='70' g='70' b='70' a='100' />
<ShadowInnerColor r='70' g='70' b='70' a='100' />
<ShadowMiddleColor r='50' g='50' b='50' a='200' />
<ShadowOuterColor r='15' g='15' b='15' a='250' />
<ShadowRimColor r='0' g='0' b='0' a='255' />
<BlendCentreColor r='34' g='39' b='49' a='80' />
<BlendInnerColor r='111' g='125' b='166' a='210' />
<BlendMiddleColor r='139' g='164' b='201' a='240' />
<BlendOuterColor r='184' g='197' b='222' a='255' />
<BlendRimColor r='215' g='207' b='189' a='10' />
<DetailCentreColor r='35' g='35' b='35' a='0' />
<DetailInnerColor r='45' g='45' b='45' a='0' />
<DetailMiddleColor r='55' g='55' b='55' a='0' />
<DetailOuterColor r='20' g='20' b='20' a='0' />
<DetailRimColor r='0' g='0' b='0' a='0' />
<ExtraGlintCentreColor r='0' g='0' b='0' a='0' />
<ExtraGlintInnerColor r='0' g='0' b='0' a='0' />
<ExtraGlintMiddleColor r='0' g='0' b='0' a='0' />
<ExtraGlintOuterColor r='0' g='0' b='0' a='0' />
<ExtraGlintRimColor r='0' g='0' b='0' a='0' />
<GlintResource>ARABIAN.DAYWater</GlintResource>
<ShadowResource>ARABIAN.DAYWaterDim</ShadowResource>
<SkyBlendResource>ARABIAN.DAYWaterBlend</SkyBlendResource>
<DetailResource>ARABIAN.DAYDetail</DetailResource>
<SkyBlendColor r='106' g='121' b='193' a='245' />
<GlintTextureScaleA>35</GlintTextureScaleA>
<GlintTextureScaleB>65</GlintTextureScaleB>
<ShadowTextureScaleA>4</ShadowTextureScaleA>
<ShadowTextureScaleB>10</ShadowTextureScaleB>
<DetailTextureScaleA>20</DetailTextureScaleA>
<DetailTextureScaleB>90</DetailTextureScaleB>
</WaterPlaneTweaks>
<XContainerResourceDetails id='Water.ARABIAN.EVENING'>
<Value href='Water.ARABIAN.EVENING-0'/>
<Name>Water.ARABIAN.EVENING</Name>
<Flags>81</Flags>
</XContainerResourceDetails>
<WaterPlaneTweaks id='Water.ARABIAN.EVENING-0'>
<GlintCentreColor r='148' g='109' b='95' a='255' />
<GlintInnerColor r='142' g='97' b='81' a='255' />
<GlintMiddleColor r='205' g='140' b='97' a='255' />
<GlintOuterColor r='239' g='163' b='58' a='255' />
<GlintRimColor r='0' g='0' b='0' a='255' />
<ShadowCentreColor r='108' g='108' b='108' a='100' />
<ShadowInnerColor r='120' g='120' b='120' a='100' />
<ShadowMiddleColor r='50' g='50' b='50' a='100' />
<ShadowOuterColor r='30' g='30' b='30' a='100' />
<ShadowRimColor r='0' g='0' b='0' a='255' />
<BlendCentreColor r='70' g='54' b='84' a='80' />
<BlendInnerColor r='118' g='91' b='121' a='210' />
<BlendMiddleColor r='136' g='87' b='102' a='240' />
<BlendOuterColor r='158' g='86' b='114' a='255' />
<BlendRimColor r='160' g='82' b='103' a='10' />
<DetailCentreColor r='152' g='98' b='172' a='0' />
<DetailInnerColor r='140' g='98' b='174' a='100' />
<DetailMiddleColor r='40' g='20' b='5' a='0' />
<DetailOuterColor r='30' g='15' b='2' a='0' />
<DetailRimColor r='0' g='0' b='0' a='0' />
<ExtraGlintCentreColor r='184' g='108' b='52' a='0' />
<ExtraGlintInnerColor r='103' g='55' b='35' a='0' />
<ExtraGlintMiddleColor r='20' g='20' b='0' a='0' />
<ExtraGlintOuterColor r='0' g='0' b='0' a='0' />
<ExtraGlintRimColor r='0' g='0' b='0' a='0' />
<GlintResource>ARABIAN.EVENINGWater</GlintResource>
<ShadowResource>ARABIAN.EVENINGWaterDim</ShadowResource>
<SkyBlendResource>ARABIAN.EVENINGWaterBlend</SkyBlendResource>
<DetailResource>ARABIAN.EVENINGDetail</DetailResource>
<SkyBlendColor r='53' g='53' b='77' a='255' />
<GlintTextureScaleA>35</GlintTextureScaleA>
<GlintTextureScaleB>65</GlintTextureScaleB>
<ShadowTextureScaleA>4</ShadowTextureScaleA>
<ShadowTextureScaleB>10</ShadowTextureScaleB>
<DetailTextureScaleA>20</DetailTextureScaleA>
<DetailTextureScaleB>90</DetailTextureScaleB>
</WaterPlaneTweaks>
<XContainerResourceDetails id='Water.ARABIAN.NIGHT'>
<Value href='Water.ARABIAN.NIGHT-0'/>
<Name>Water.ARABIAN.NIGHT</Name>
<Flags>81</Flags>
</XContainerResourceDetails>
<WaterPlaneTweaks id='Water.ARABIAN.NIGHT-0'>
<GlintCentreColor r='166' g='166' b='166' a='255' />
<GlintInnerColor r='115' g='115' b='115' a='255' />
<GlintMiddleColor r='100' g='100' b='100' a='255' />
<GlintOuterColor r='20' g='35' b='39' a='255' />
<GlintRimColor r='50' g='50' b='100' a='255' />
<ShadowCentreColor r='130' g='130' b='130' a='100' />
<ShadowInnerColor r='130' g='130' b='130' a='100' />
<ShadowMiddleColor r='72' g='72' b='72' a='200' />
<ShadowOuterColor r='59' g='59' b='59' a='250' />
<ShadowRimColor r='0' g='0' b='0' a='255' />
<BlendCentreColor r='23' g='15' b='26' a='80' />
<BlendInnerColor r='84' g='67' b='92' a='210' />
<BlendMiddleColor r='71' g='68' b='111' a='240' />
<BlendOuterColor r='95' g='89' b='159' a='255' />
<BlendRimColor r='108' g='85' b='157' a='10' />
<DetailCentreColor r='30' g='30' b='30' a='0' />
<DetailInnerColor r='70' g='70' b='70' a='0' />
<DetailMiddleColor r='100' g='100' b='100' a='0' />
<DetailOuterColor r='60' g='60' b='60' a='0' />
<DetailRimColor r='30' g='30' b='30' a='0' />
<ExtraGlintCentreColor r='0' g='0' b='0' a='0' />
<ExtraGlintInnerColor r='0' g='0' b='0' a='0' />
<ExtraGlintMiddleColor r='0' g='0' b='0' a='0' />
<ExtraGlintOuterColor r='0' g='0' b='0' a='0' />
<ExtraGlintRimColor r='0' g='0' b='0' a='0' />
<GlintResource>ARABIAN.NIGHTWater</GlintResource>
<ShadowResource>ARABIAN.NIGHTWaterDim</ShadowResource>
<SkyBlendResource>ARABIAN.NIGHTWaterBlend</SkyBlendResource>
<DetailResource>ARABIAN.NIGHTDetail</DetailResource>
<SkyBlendColor r='64' g='43' b='70' a='255' />
<GlintTextureScaleA>50</GlintTextureScaleA>
<GlintTextureScaleB>80</GlintTextureScaleB>
<ShadowTextureScaleA>2</ShadowTextureScaleA>
<ShadowTextureScaleB>5</ShadowTextureScaleB>
<DetailTextureScaleA>40</DetailTextureScaleA>
<DetailTextureScaleB>65</DetailTextureScaleB>
</WaterPlaneTweaks>
(compliqué)l'eau,le ciel du thème ARABIEN:tout se tient ici.(1.je crois
(2.les autres thèmes sont plus bas)

<XColorResourceDetails id='Water.CentreColour'>
<Value r='160' g='160' b='160' a='240' />
<Name>Water.CentreColour</Name>
<Flags>64</Flags>
</XColorResourceDetails>
<XColorResourceDetails id='Water.InnerColour'>
<Value r='160' g='160' b='160' a='210' />
<Name>Water.InnerColour</Name>
<Flags>64</Flags>
</XColorResourceDetails>
<XColorResourceDetails id='Water.MiddleColour'>
<Value r='160' g='160' b='160' a='128' />
<Name>Water.MiddleColour</Name>
<Flags>64</Flags>
</XColorResourceDetails>
<XColorResourceDetails id='Water.OuterColour'>
<Value r='160' g='160' b='160' a='100' />
<Name>Water.OuterColour</Name>
<Flags>64</Flags>
</XColorResourceDetails>
<XColorResourceDetails id='Water.RimColour'>
<Value r='160' g='160' b='160' a='0' />
<Name>Water.RimColour</Name>
<Flags>64</Flags>
</XColorResourceDetails>

Choisissez votre code pour modifier votre arme…


[Effets]changer la couleur des worms:alien, malade,etc…


Pour commencer ouvrez le fichier tweak.xml ligne 2246 :
Code:
<XColorResourceDetails id='Abducted.Colour'>
<Value r='0' g='0' b='0' a='255' />
<Name>Abducted.Colour</Name>
<Flags>64</Flags>
</XColorResourceDetails>


(Les valeurs r g et b ne corresponde pas, c'est normale c'est elles que l'on va modifier.)

A la ligne <Value…/> vous avez juste à changer les valeur R (Rouge) G (Vert) B (Bleu) et si vous le voulez A (Alpha = Transparence) pour changer la couleur du worm Alien.



changer la taille du terrain:[tweak.xml]:


je vais vous apprendre à changer la taille du terrain grace à une propriété du tweak.xml.

Alors commençons Smile, Ouvrez votre fichier "Tweak.xml" et rechercher la ligne :
Code:
<XFloatResourceDetails id='Land.OverrideScale'>
<Value>20</Value>
<Name>Land.OverrideScale</Name>
<Flags>64</Flags>
</XFloatResourceDetails>

C'est CETTE balise qui va nous permettre de changer la taille du terrain.

la valeur de base étant 20, nous allons l'augmenter de façon à ce que nos worms ne puisse que se comparer à des Shtroumf, montez donc cette valeur à 190.

N'oubliez pas d'enregistrer et lancez votre jeu, faite une parite et regardez bien TADAM le terrain est gigantissime, de la même façon si vous voulez des worms géants changer la valeur à 10 (A NE SURTOUT PAS FAIRE EN PLEINE PARTIE).

Vous remarquerez peut-être un petit bug : seul la plateforme change de taille, pas le sol.


Quelques petites propriétés intéréssantes:


Il existe certaines propriétés interessantes dont j'ai été surpris que personne n'en a encore parlé. Je me permet donc de vous faire part de mes connaissances.

- La propriété WormCollideResponse est une propriété qui défini la manière dont le projectile doit réagir lorsqu'il touche un worm. Il y a trois valeurs : 0 , 1 et 2.
Lorsqu'elle est de 0, si vous avez mis true à DetonatesOnWormImpact , le projectile explose. Sinon, le projectile rebondit et se retourne.
Lorsqu'elle est de 1 , le projectile vous vole une arme puis se retourne (vieille dame).
Lorsqu'elle est de 2 , le projectile change de forme (modèle 3D=Payload2ndGraphicsResourceID) , s'envole dans les airs avec le worm et explose au bout de 5 secondes (British gonflable).

- Les propriétés RumbleLight et RumbleHeavy. Il s'agit de grondements, de bruits qui ressemblent à des morceaux de terrain qui tombe, roulent et s'entrechoquent qu'on peut entendre lorsque le projectile explose sur le terrain.
RumbleLight corespond à un bruit léger alors que RumbleHeavy est un grondement plus fort. Une valeur moyenne est 150.


WormsActing.xml:


Je vais commencer avec le worms malade.Malade = Sick (ou Ill)


Donc je cherche Sick dans WormsActing.xml et je trouve:

Code:
<ContainerResources href='Sick10a'/>
<ContainerResources href='Sick10b'/>
<ContainerResources href='Sick10c'/>



Il s'agit des balises d'introduction que l'on trouve partout.
On se rend compte qu'il y en a trois!

On continue notre recherche jusqu'à arriver à:


Code:
<XContainerResourceDetails id='Sick10a'>
<Value href='Sick10a-0'/>
<Name>Sick10a</Name>
<Flags>81</Flags>
</XContainerResourceDetails>
<EFMV_MovieContainer id='Sick10a-0'>
<Tag></Tag>
<Track href='Sick10a-1'/>
<Track href='Sick10a-11'/>
<Track href='Sick10a-27'/>
</EFMV_MovieContainer>



Nous sommes au début du groupe annoncer par la balise:

Code:
<ContainerResources href='Sick10a'/>


On se rend compte qu'il y a a nouveau trois partie qui sont annoncées.

Dans la balises suivantes on trouve:

Code:
<EFMV_TrackContainer id='Sick10a-1'>
<Tag>Sick Idle</Tag>
<Event href='Sick10a-2'/>
<Event href='Sick10a-3'/>
<Event href='Sick10a-4'/>
<Event href='Sick10a-5'/>
<Event href='Sick10a-6'/>
<Event href='Sick10a-7'/>
<Event href='Sick10a-8'/>
<Event href='Sick10a-9'/>
<Event href='Sick10a-10'/>
</EFMV_TrackContainer>


C'est une fois de plus une énumération. On va toutes les passer une par une pour essayer de les comprendre.


Pour commencer, on a:


Code:
<EFMV_CastActorEventContainer id='Sick10a-2'>
<ActorName>WORM0</ActorName>
<Tag>&lt;Untitled&gt;</Tag>
<Time>20</Time>
<Critical>false</Critical>
</EFMV_CastActorEventContainer>



Pour l'instant je ne sais pas comment le modifier et ce que cela donne.

Ensuite on a:

Code:

<EFMV_WormEmoteEventContainer id='Sick10a-3'>
<Emote>Ill</Emote>
<PermittedEyeMovement>0</PermittedEyeMovement>
<BlendTime>0.3</BlendTime>
<Coyness>0</Coyness>
<AllowBlink>true</AllowBlink>
<Tag>&lt;Untitled&gt;</Tag>
<Time>80</Time>
<Critical>false</Critical>
</EFMV_WormEmoteEventContainer>


Les choses commences a devenir intéressante.

Emote est l'animation que fait le worms tout le temps. L'émotion que l'on peut voir sur son visage.
Ici Ill est l'animation où le worms est penché en avant, l'ai triste.
On peut le remplacer par des animations que vous trouvez ici:
http://w4-tweaking.bb-fr.com/divers-f4/animations-descriptions-t1270.htm

Surtout dans la 2ème partie, au passage un grand merci à Wormss pour cette liste, à partir
Citation:
Ill: a envie de vomir
Happy: regarde devant lui avec un sourire en coin[…]



Ensuite on trouve:
Code:
<EFMV_PlayAnimationEventContainer id='Sick10a-4'>
<Animation>Vomit</Animation>
<Tag>&lt;Untitled&gt;</Tag>
<Time>1260</Time>
<Critical>false</Critical>
</EFMV_PlayAnimationEventContainer>


L'animation est … une animation!
Là l'animation est le vomit! Il nous suffit de la changer par n'importe laquelle et elle se jouera a un moment précis ici 12secondes (Je n'en suis pas sûr). Les animations sont dans la 1er partie de la listes de wormss

Citation:
Vomit: vomit
Doh: se tape le front avec sa main[…]



Puis il y a:

Code:
<EFMV_SpawnParticleEventContainer id='Sick10a-5'>
<ResourceId>WXP_Vomit_Fluid</ResourceId>
<AttachmentPoint>VomitLocator</AttachmentPoint>
<Tag>&lt;Untitled&gt;</Tag>
<Time>1270</Time>
<Critical>false</Critical>
</EFMV_SpawnParticleEventContainer>


<ResourceId>est la particule qui rentre en action. Ici le vomi.
On peut le remplacer par n'importe quelle particule.

<AttachmentPoint>est le point d'ancrage de la particule. Ici la bouche.
Je les énumèrerait plus tard.
<Time>Doit être le même qu'au groupe précédent sinon le worms vomi dans le vide et ensuite du vomi part tout seul.

Code:
<EFMV_PlayAnimationEventContainer id='Sick10a-6'>
<Animation>Sneeze2</Animation>
<Tag>&lt;Untitled&gt;</Tag>
<Time>8890</Time>
<Critical>false</Critical>
</EFMV_PlayAnimationEventContainer>


Encore une animation. Voir plus haut.

Code:
<EFMV_TriggerSpeechEventContainer id='Sick10a-7'>
<Speech>Sneeze</Speech>
<FullVolume>false</FullVolume>
<Tag>&lt;Untitled&gt;</Tag>
<Time>9070</Time>
<Critical>false</Critical>
</EFMV_TriggerSpeechEventContainer>


Ici c'est le bruit que produit le worms encore à un moment prècis.

Code:
<EFMV_PlayAnimationEventContainer id='Sick10a-8'>
<Animation>Sneeze</Animation>
<Tag>&lt;Untitled&gt;</Tag>
<Time>17940</Time>
<Critical>false</Critical>
</EFMV_PlayAnimationEventContainer>


Animation…
Code:

<EFMV_SpawnParticleEventContainer id='Sick10a-9'>
<ResourceId>WXP_Sneeze</ResourceId>
<AttachmentPoint>VomitLocator</AttachmentPoint>
<Tag>&lt;Untitled&gt;</Tag>
<Time>18910</Time>
<Critical>false</Critical>
</EFMV_SpawnParticleEventContainer>


Particule attaché…

Code:
<EFMV_TriggerSpeechEventContainer id='Sick10a-10'>
<Speech>Sneeze</Speech>
<FullVolume>false</FullVolume>
<Tag>&lt;Untitled&gt;</Tag>
<Time>19080</Time>
<Critical>false</Critical>
</EFMV_TriggerSpeechEventContainer>


Bruit…

Et on recommence depuis le début avec:

Code:
<EFMV_TrackContainer id='Sick10a-11'>
<Tag>Friend0 Near0 Idle</Tag>
<Event href='Sick10a-12'/>
<Event href='Sick10a-13'/>
<Event href='Sick10a-14'/>
<Event href='Sick10a-15'/>
<Event href='Sick10a-16'/>
<Event href='Sick10a-17'/>
<Event href='Sick10a-18'/>
<Event href='Sick10a-19'/>
<Event href='Sick10a-20'/>
<Event href='Sick10a-21'/>
<Event href='Sick10a-22'/>
<Event href='Sick10a-23'/>
<Event href='Sick10a-24'/>
<Event href='Sick10a-25'/>
<Event href='Sick10a-26'/>
</EFMV_TrackContainer>


Il ne reste plus qu'à recommencer avec toutes les autres suivantes jusqu'à finir:

Code:
<ContainerResources href='Sick10c'/>


Si vous ne remplissaient pas tout certains worms se conduiront normalement et d'autres avec l'animation que vous avez changé.


Liste des </AttachmentPoint>:

HatLocator Le chapeau
VomitLocator La bouche


Bon!C'est tout pour l'instant!Je rajouterais des "bidoullages" si j'aurais le temps parceque j'ai quand même bien écrit!Pour le tweak c'est compliquer, mais avec de l'entrainnement, on peut y arriver.Merci de m'avoir lu(si vous avez eu le courage
)emoji

Bon maintenant retour au sujet, c'est a dire la saga worms!emoji
Alors ça c'est cool. Bon c'est dommage j'ai Worms 4 sur PS2 (à ce propos je n'ai jamais réussi à terminer tous les défis, très difficiles par moments). J'ai toujours voulu avoir la possibilité de créer des armes sans limites mais le créateur d'arme du jeu ne le permettait pas. De plus l'avantage se tournait toujours pour le joueur car l'IA n'était pas assez poussée pour utiliser une arme créée par le joueur. Dommage, un bombardement de bananes c'est toujours magique emoji !


Oui il est vrai que l'usine d'armes est assez

chiante

à manipuler car le compteur ne permet pas d'aller très haut.Mais sinon, j'ai une astuce pour jetter plein de grenades, missiles, bref beaucoup de chose qui devrait marcher sur ps2 normalement:Tu cliques sur la potion d'icare, tu la boies, et au moment ou tu l'as bois ouvre très rapidement le menu d'armes et clique sur une arme (celle que tu veut )comme sa ce que tu jettes se multiplies.Mais attention!Je te déconseille,l'attaque aérienne et tous les trucs aériens, missile auto, et quelques armes…mais quand tu réalises ce bug pour ne pas que sa plante, quand tu balances plein de truc, appuie sur la touche de tire pour que le bug se stop (sa t'évite de planter!)

Ah worms mon tout premier jeux video !! Que de souvenire <3

Topic déplacé car situé dans la mauvaise section du forum emoji

Ah oui les jeux worms , que de très bon souvenirs emoji
Dommage que ce topic soit aussi mort , Qwartastique a eu une bonne idée de le creer emoji
Je crois que quelques jeux Worms sortent sur le PSN .
J'ai pleins de chose à dire sur ces jeux .
J'ai le 4 où je jouais avec mes potes (j'avais 7ans à l'époque) , on utilisait souvent les bombes qui faisaient un max de dégats emoji
Et on avait tous des lunettes de soleils et une coupe afro emoji
Supers souvenirs emoji

Worms révolution est pas mal pour ce qui est de la gestion de l'eau par contre certains défis sont assez durs a comprendre emoji

Ah je me rappelle de quelques parties avec des cousins sur je sais plus quoi mais surtout des parties entre coupains sur Ipad. Magique ! emoji

Comme d'hab, je vois pas en quoi Worms est une "saga". Mais ce sont d'excellents jeux pour la plupart, surtout les premiers, j'y ai passé des heures en solo comme en multi.

Je kif le "Ultimate Mayehm" sur PS3 !emoji
Je vous le conseil ! emoji

Moi le Battle Island sur Wii m'avait asser plu ^^
Mais mon préféré reste sans aucun doute Worms 4 Mayhem sur PC emoji
Rien que jouer en "3D" m'a convaincue car les premiers worms se jouaient en 2D ^^
Des parties endiablés en multijoueur, des lags à cause des explosions, des gros funtages , que de souvenirs emoji

J'adore le 3 et le 4 et le dernier sur le PS store, j'ai oublié le nom. ^^

Moi le seul Worms que j'ai c'est Worms 4 mayhem ! C’était bien les Worms en 3D ! Pourquoi ils n'ont font plus ? Laissait moi deviné : fan blasé en colère qui disait "c’était mieux avant" ?