Moteur de spawn — DM.utils¶
sources/DynamicMission.lua:230-1281.
Reconstruction de la base de mission¶
scanMissionDBs() reconstruit deux tables au chargement (scan unique, non rafraîchi en cours de
mission) directement depuis env.mission : zonesByName (zones trigger, avec .radius calculé
comme la distance max au sommet le plus éloigné pour un quad) et groupsByName (tout groupe
avion/hélico/navire/véhicule/statique, toutes coalitions/pays confondus, à plat).
makeUnitTable(tbl, exclude) : grammaire complète des tags¶
| Tag | Effet |
|---|---|
<nom d'unité exact> |
Inclut cette unité précise |
[-u]<nom> |
Exclut cette unité précise |
[g]<groupe> |
Inclut toutes les unités du groupe |
[-g]<groupe> |
Exclut toutes les unités du groupe |
[c][catégorie]Pays |
Inclut toutes les unités du pays (filtrable par catégorie) |
[-c][catégorie]Pays |
Exclut de même |
[all][catégorie] |
Inclut toutes les unités (filtrable par catégorie) |
[-all][catégorie] |
Exclut toutes les unités (filtrable par catégorie) |
Catégories reconnues : [helicopter], [plane], [ship], [vehicle], [static].
Particularité confirmée
Toute étiquette de catégorie non reconnue (ex. [air]) n'est pas identifiée et retombe
silencieusement sur category = "", qui correspond à toutes les catégories —
[all][air] se comporterait donc exactement comme [all]. checkEnemiesProximityForDefenses()
(voir Bases aériennes) appelait auparavant makeUnitTable({'[all][air]'}) ;
l'appel a depuis été simplifié en makeUnitTable({'[all]'}), strictement équivalent — le
code assume désormais explicitement (commentaire à l'appui) qu'il scrute aussi bien l'air que
le sol, au lieu de le faire implicitement via un tag mal interprété.
Un paramètre exclude (chaîne ou tableau) peut en plus supprimer des catégories entières des
branches [c]/[all], indépendamment du tag utilisé.
cloneInZone(gpName, zone, disperse, maxDisp, v)¶
Clone la disposition d'unités d'un gabarit dans une zone cible : point de terrain valide choisi
aléatoirement dans le rayon de la zone (jusqu'à 100 tentatives), types de terrain valides
déterminés par catégorie (navires → eau seule ; véhicules → terre/route ; aérien → terre/route/
eau peu profonde/eau/piste), dispersion individuelle des unités si demandée, altitude aléatoire
dans une bande adaptée à la catégorie pour l'aérien, puis réattachement de la route d'origine du
gabarit avant spawn effectif. Les gabarits de catégorie static sont explicitement rejetés
(jamais utilisés par DynamicMission).