Alliance Francophone Sudden Strike

Modding Fusion · UNITS / AVIA / LAND/DOM / ANIMAT / EXPLOSIONS

English

Règles globales (misc\misc)

lang/MISC/MISC, lu par le jeu comme misc\misc, contient les règles communes à toutes les unités : dégâts minimaux et dégâts restants par type de tir, étoiles de score, couleurs des soldats neutres, attentes des renforts. Le jeu le lit au chargement d’une mission, après les listes de noms (lang2/hitsnames pour les types de tir) et avant misc\engine.

Chaque règle est une ligne clé valeur.... Un tiret en première position désactive la ligne (voir la syntaxe). Les fiches d’unités (propriétés) fournissent les valeurs de blindage et de dégâts que ces règles interprètent.

Les copies du fichier

Plusieurs archives portent leur propre MISC/MISC. Modifiez toutes les copies concernées.

CopieContenu
lang/MISC/MISC (lang.aps)Le jeu : toutes les règles.
MISC/MISC de winter_unit, sud_unit, wuste_unit, wuste_unit_s1Copies par terrain. Elles reprennent les règles de tir de lang, mais ont leurs propres SoldClr et tanksonarmorprotection (mine 200 et mine_at 100 au lieu de 3 et 1).
APRM WW II_Edit/<environnement>/misc/MISCL’éditeur : 11 copies identiques, sans règle de tir. Les SoldClr de russian et de 7 y diffèrent du jeu.

Syntaxe

reinforcement_flagbusy_wait 400
StarScore	1	25001
SoldClr	german	163	190	179
shot_damage	pierce	6	1200
shot_armor	pierce	1	200
shot_delta	pierce	150
tanksonarmorprotection pierce	3 3 3 3 3 3
  • Clé inconnue : le jeu signale une erreur Error in "desc\misc\misc" key et lit la suite du fichier.
  • Type de tir inconnu : le jeu signale Invalid HitID. La valeur ne s’applique à aucun type.
  • Clé absente : la valeur par défaut du moteur s’applique, donnée dans les tableaux ci-dessous.
  • Les types de tir sont ceux de lang2/hitsnames : abjective, air, explosive, fire, machine, mine, pierce, transpierce, mine_at, piat, sniper, none.
  • Les règles shot_ricochet et shot_calibre (moteur AF) sont décrites dans Réglages du moteur.

Dégâts et blindage par type de tir

Trois lignes par type de tir définissent comment un tir de dégâts D traverse un blindage A.

CléValeursRôle
shot_armor <type> <a0> <a1>deux blindagesAbscisses des deux points de la droite.
shot_damage <type> <d0> <d1>deux dégâtsOrdonnées : les dégâts qui correspondent à a0 et à a1.
shot_delta <type> <delta>un entierDiviseur des dégâts restants. Défaut 1.

Le jeu calcule, en entiers, une pente (d1 - d0) / (a1 - a0) et une ordonnée à l’origine (d0 × a1 - a0 × d1) / (a1 - a0). Les divisions arrondissent vers zéro. Un tir perce si D dépasse pente × blindage de la fiche + ordonnée. Ce seuil est noté T.

Un tir qui perce fait min(D, (D − T) × D / delta) de dégâts. Un tir qui ne perce pas fait 0. Le type qui a une règle shot_calibre utilise sa propre formule (voir Réglages du moteur).

Valeurs de Fusion :

Typeshot_armorshot_damageshot_deltaPenteOrdonnée
piat1 2004 120016−2
pierce1 2006 120015060
explosive2 1813 299950016−30
mine1 1815 92425050
transpierce1 2006 12005060
machine1 101 102010
sniper1 101 101610
fire1 1817 250050013−6
air1 101 10210
abjective1 101 102010
mine_at50 18140 102410007−335

Exemple : pierce a le seuil 6 × blindage. Un obus de 120 dégâts contre un blindage de 15 (seuil 90) perce et fait min(120, 30 × 120 / 150) = 24 dégâts. Pour pierce et transpierce, la règle shot_calibre de Fusion remplace ce dernier calcul.

Un type sans ligne shot_armor ni shot_damage a les points (0, 0) et (1, 0) : la pente et l’ordonnée valent 0, donc le seuil T vaut 0 et tout tir perce. Une ligne shot_armor, shot_damage ou shot_delta sans assez de valeurs fait écrire to few params au jeu.

Protection par type de tir (tanksonarmorprotection)

tanksonarmorprotection pierce	3 3 3 3 3 3
tanksonarmorprotection abjective 10 10 10 10 10 10

Une ligne par type de tir, puis six nombres : trois paires, une par face de blindage. Le jeu garde pour chaque nombre 256 − n (borné entre 0 et 256). Pour la première paire, il tire au hasard une valeur entre les deux limites, puis la multiplie par un montant et divise par 256. Avec deux nombres égaux, le résultat est constant : 3 donne 253/256, soit 98,8 %.

Valeurs de lang : abjective 10 ; fire, mine, piat, pierce, transpierce 3 ; explosive 2 ; machine, mine_at, sniper 1. Les archives de terrain donnent 200 à mine et 100 à mine_at. Le comportement des deuxième et troisième paires n’est pas confirmé.

Étoiles de score (StarScore)

StarScore <étoile> <score> donne le score à atteindre pour chacune des 10 étoiles. Le jeu compte les seuils que le score du joueur atteint ou dépasse : ce nombre, de 0 à 10, est le nombre d’étoiles enregistré dans les résultats du joueur. Sous le seuil de l’étoile 1, le joueur n’a aucune étoile. Sans ligne, le seuil vaut 0.

Étoile12345678910
Score2500160001100001150001200001250001275001300001375001400001

Les copies de l’éditeur définissent les mêmes dix seuils. Le chargeur accepte aussi winscore <score> et loosescore <score> (absents de Fusion, défaut 0).

Couleurs des soldats neutres (SoldClr)

SoldClr <nation> <rouge> <vert> <bleu> teinte la palette du soldat neutre (SOLD.PL) pour une nation. Pour chaque couleur grise ou presque de la palette, le jeu multiplie le niveau de gris par valeur / 250 sur chaque canal : 250 laisse le gris inchangé, une valeur plus grande l’éclaircit (le canal plafonne à 255). Les autres couleurs ne changent pas. La clé d’unité camouflage choisit la nation d’un soldat.

  • Nation par nom : german, japanese, british, american, russian.
  • Nation par numéro : SoldClr <n> ... avec n de 1 à 11 pour les palettes supplémentaires.
  • Nation sans ligne : la palette reste celle de SOLD.PL. Un numéro hors de 1 à 11 est une erreur de clé.
NationRougeVertBleu
russian19214086
german163190179
british19015050
american20018060
japanese275275200
1188188188
2350350350
3200200200
4150150275
5150150275
6400400300
722213872
8210200166
9150150150
10152172111
11144188136

Les archives de terrain ont leurs propres valeurs. Par exemple, winter_unit donne 400 400 300 à russian, et wuste_unit donne 209 209 12.

Attentes et animations

CléRôleValeur de FusionDéfaut
reinforcement_flagbusy_waitAttente en tours d’un renfort dont l’emplacement est occupé. Un tour dure 40 ms à la vitesse habituelle : 400 tours font 16 s.4000
hell_maxgointimeDurée maximale d’entrée (hélicoptère d’après le nom).2502147483647
hell_maxpickuptimeDurée maximale de ramassage (hélicoptère d’après le nom).2502147483647
onturretanitimeDurée d’animation liée à la tourelle.8−1
onarmoranitimeDurée d’animation liée au blindage.10−1
shipboomtypeNom de l’explosion d’un navire détruit (none : aucune). Le nom doit exister dans les types d’explosion ou de sol.ship_radaucune

Seule reinforcement_flagbusy_wait a un effet confirmé : quand le jeu ne trouve pas de place pour le renfort, il copie cette valeur dans le compteur d’attente du renfort. Aucune lecture de hell_maxgointime ni de hell_maxpickuptime n’a été trouvée dans la DLL d’origine en dehors du chargeur. Leur effet reste à confirmer. Il en va de même pour le détail de onturretanitime et de onarmoranitime.

Le chargeur accepte aussi des attentes de l’IA : ai_soldwait…, ai_tankwait…, ai_katyawait…, ai_planewaittozonemove et ai_trainwaitrndmove. Chacune prend deux valeurs, minimum et maximum, en tours. Il accepte ai_katyaminfireunits et ai_domwaitunload (une valeur). Ces lignes sont absentes de Fusion.

Vérifier une modification

  1. Modifiez la copie dans lang/MISC/MISC et, si la règle existe là, dans les archives de terrain.
  2. Gardez les fins de ligne CRLF et l’ASCII.
  3. Recompilez l’archive (lang.aps, et les archives de terrain modifiées).
  4. Lancez une mission : le jeu signale toute clé ou tout type de tir inconnu.
  5. En multijoueur, tous les joueurs doivent avoir les mêmes fichiers.